class Google::Cloud::ResourceManager::Manager
# Manager
Provides methods for creating, retrieving, and updating projects.
@example
require "google/cloud/resource_manager" resource_manager = Google::Cloud::ResourceManager.new resource_manager.projects.each do |project| puts projects.project_id end
See {Google::Cloud#resource_manager}
Attributes
@private The Service
object.
Public Class Methods
@private Creates a new Service
instance.
See {Google::Cloud.resource_manager}
# File lib/google/cloud/resource_manager/manager.rb, line 48 def initialize service @service = service end
Public Instance Methods
Creates a project resource.
Initially, the project resource is owned by its creator exclusively. The creator can later grant permission to others to read or update the project.
Several APIs are activated automatically for the project, including Google
Cloud
Storage.
@param [String] project_id The unique, user-assigned ID of the
project. It must be 6 to 30 lowercase letters, digits, or hyphens. It must start with a letter. Trailing hyphens are prohibited.
@param [String] name The user-assigned name of the project. This field
is optional and can remain unset. Allowed characters are: lowercase and uppercase letters, numbers, hyphen, single-quote, double-quote, space, and exclamation point.
@param [Hash] labels The labels associated with this project.
Label keys must be between 1 and 63 characters long and must conform to the following regular expression: `[a-z]([-a-z0-9]*[a-z0-9])?`. Label values must be between 0 and 63 characters long and must conform to the regular expression `([a-z]([-a-z0-9]*[a-z0-9])?)?`. No more than 256 labels can be associated with a given resource.
@param [Resource] parent A parent Resource
. Optional.
Supported parent types include "organization" and "folder". Once set, the parent can be updated but cannot be cleared. The end user must have the `resourcemanager.projects.create` permission on the parent. (See {#resource} and {Resource}.)
@return [Google::Cloud::ResourceManager::Project]
@example
require "google/cloud/resource_manager" resource_manager = Google::Cloud::ResourceManager.new project = resource_manager.create_project "tokyo-rain-123"
@example A project can also be created with a `name` and `labels`:
require "google/cloud/resource_manager" resource_manager = Google::Cloud::ResourceManager.new project = resource_manager.create_project "tokyo-rain-123", name: "Todos Development", labels: {env: :development}
@example A project can also be created with a `name` and `parent`:
require "google/cloud/resource_manager" resource_manager = Google::Cloud::ResourceManager.new folder = resource_manager.resource "folder", "1234" project = resource_manager.create_project "tokyo-rain-123", name: "Todos Development", parent: folder
# File lib/google/cloud/resource_manager/manager.rb, line 203 def create_project project_id, name: nil, labels: nil, parent: nil gapi = service.create_project project_id, name, labels, parent Project.from_gapi gapi, service end
Marks the project for deletion. This method will only affect the project if the following criteria are met:
-
The project does not have a billing account associated with it.
-
The project has a lifecycle state of `ACTIVE`.
-
This method changes the project's lifecycle state from `ACTIVE` to `DELETE_REQUESTED`. The deletion starts at an unspecified time, at which point the lifecycle state changes to `DELETE_IN_PROGRESS`.
Until the deletion completes, you can check the lifecycle state by retrieving the project with Manager#project
. The project remains visible to Manager#project
and Manager#projects
, but cannot be updated.
After the deletion completes, the project is not retrievable by the Manager#project
and Manager#projects
methods.
The caller must have modify permissions for this project.
@param [String] project_id The ID of the project.
@example
require "google/cloud/resource_manager" resource_manager = Google::Cloud::ResourceManager.new resource_manager.delete "tokyo-rain-123"
# File lib/google/cloud/resource_manager/manager.rb, line 236 def delete project_id service.delete_project project_id true end
Retrieves the project identified by the specified `project_id`.
@param [String] project_id The ID of the project.
@return [Google::Cloud::ResourceManager::Project, nil] Returns `nil`
if the project does not exist
@example
require "google/cloud/resource_manager" resource_manager = Google::Cloud::ResourceManager.new project = resource_manager.project "tokyo-rain-123" project.project_id #=> "tokyo-rain-123"
# File lib/google/cloud/resource_manager/manager.rb, line 134 def project project_id gapi = service.get_project project_id Project.from_gapi gapi, service rescue NotFoundError nil end
Retrieves the projects that are visible to the user and satisfy the specified filter. This method returns projects in an unspecified order. New projects do not necessarily appear at the end of the list.
@param [String] filter An expression for filtering the results of the
request. Filter rules are case insensitive. The fields eligible for filtering are: * `name` * `id` * `labels.key` - where `key` is the name of a label Some examples of using labels as filters: * `name:*` - The project has a name. * `name:Howl` - The project's name is Howl or howl. * `name:HOWL` - Equivalent to above. * `NAME:howl` - Equivalent to above. * `labels.color:*` - The project has the label color. * `labels.color:red` - The project's label color has the value red. * `labels.color:red labels.size:big` - The project's label color has the value red and its label size has the value big.
@param [String] token A previously-returned page token representing
part of the larger set of results to view.
@param [Integer] max Maximum number of projects to return.
@return [Array<Google::Cloud::ResourceManager::Project>] (See
{Google::Cloud::ResourceManager::Project::List})
@example
require "google/cloud/resource_manager" resource_manager = Google::Cloud::ResourceManager.new projects = resource_manager.projects projects.each do |project| puts project.project_id end
@example Projects can be filtered using the `filter` option:
require "google/cloud/resource_manager" resource_manager = Google::Cloud::ResourceManager.new projects = resource_manager.projects filter: "labels.env:production" projects.each do |project| puts project.project_id end
@example Retrieve all projects: (See {Project::List#all})
require "google/cloud/resource_manager" resource_manager = Google::Cloud::ResourceManager.new projects = resource_manager.projects projects.all do |project| puts project.project_id end
# File lib/google/cloud/resource_manager/manager.rb, line 114 def projects filter: nil, token: nil, max: nil gapi = service.list_project filter: filter, token: token, max: max Project::List.from_gapi gapi, self, filter, max end
Create a Resource
object. (See {Resource}.)
@param [String] type The resource type this id is for. At present, the
valid types are: "organization" and "folder".
@param [String] id The type-specific id. This should correspond to the
id used in the type-specific API's.
@return [resource]
@example
require "google/cloud/resource_manager" resource_manager = Google::Cloud::ResourceManager.new project = resource_manager.project "tokyo-rain-123" folder = resource_manager.resource "folder", "1234" project.parent = folder
# File lib/google/cloud/resource_manager/manager.rb, line 279 def resource type, id Resource.new type, id end
Restores the project. You can only use this method for a project that has a lifecycle state of `DELETE_REQUESTED`. After deletion starts, as indicated by a lifecycle state of `DELETE_IN_PROGRESS`, the project cannot be restored.
The caller must have modify permissions for this project.
@param [String] project_id The ID of the project.
@example
require "google/cloud/resource_manager" resource_manager = Google::Cloud::ResourceManager.new resource_manager.undelete "tokyo-rain-123"
# File lib/google/cloud/resource_manager/manager.rb, line 257 def undelete project_id service.undelete_project project_id true end
Protected Instance Methods
Create an options hash from the projects parameters.
# File lib/google/cloud/resource_manager/manager.rb, line 287 def list_projects_options filter, options # Handle only sending in options if filter.is_a?(::Hash) && options.empty? options = filter filter = nil end # Give named parameter priority options[:filter] = filter || options[:filter] options end