1 <?php
2 /*
3  * Copyright 2014 Google Inc.
4  *
5  * Licensed under the Apache License, Version 2.0 (the "License"); you may not
6  * use this file except in compliance with the License. You may obtain a copy of
7  * the License at
8  *
9  * http://www.apache.org/licenses/LICENSE-2.0
10  *
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
13  * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
14  * License for the specific language governing permissions and limitations under
15  * the License.
16  */
17 
18 namespace Google\Service\ServiceConsumerManagement\Resource;
19 
20 use Google\Service\ServiceConsumerManagement\AddTenantProjectRequest;
21 use Google\Service\ServiceConsumerManagement\ApplyTenantProjectConfigRequest;
22 use Google\Service\ServiceConsumerManagement\AttachTenantProjectRequest;
23 use Google\Service\ServiceConsumerManagement\CreateTenancyUnitRequest;
24 use Google\Service\ServiceConsumerManagement\DeleteTenantProjectRequest;
25 use Google\Service\ServiceConsumerManagement\ListTenancyUnitsResponse;
26 use Google\Service\ServiceConsumerManagement\Operation;
27 use Google\Service\ServiceConsumerManagement\RemoveTenantProjectRequest;
28 use Google\Service\ServiceConsumerManagement\TenancyUnit;
29 use Google\Service\ServiceConsumerManagement\UndeleteTenantProjectRequest;
30 
31 /**
32  * The "tenancyUnits" collection of methods.
33  * Typical usage is:
34  *  <code>
35  *   $serviceconsumermanagementService = new Google\Service\ServiceConsumerManagement(...);
36  *   $tenancyUnits = $serviceconsumermanagementService->tenancyUnits;
37  *  </code>
38  */
39 class ServicesTenancyUnits extends \Google\Service\Resource
40 {
41   /**
42    * Add a new tenant project to the tenancy unit. There can be a maximum of 1024
43    * tenant projects in a tenancy unit. If there are previously failed
44    * `AddTenantProject` calls, you might need to call `RemoveTenantProject` first
45    * to resolve them before you can make another call to `AddTenantProject` with
46    * the same tag. Operation. (tenancyUnits.addProject)
47    *
48    * @param string $parent Required. Name of the tenancy unit. Such as
49    * 'services/service.googleapis.com/projects/12345/tenancyUnits/abcd'.
50    * @param AddTenantProjectRequest $postBody
51    * @param array $optParams Optional parameters.
52    * @return Operation
53    */
54   public function addProject($parent, AddTenantProjectRequest $postBody, $optParams = [])
55   {
56     $params = ['parent' => $parent, 'postBody' => $postBody];
57     $params = array_merge($params, $optParams);
58     return $this->call('addProject', [$params], Operation::class);
59   }
60   /**
61    * Apply a configuration to an existing tenant project. This project must exist
62    * in an active state and have the original owner account. The caller must have
63    * permission to add a project to the given tenancy unit. The configuration is
64    * applied, but any existing settings on the project aren't modified. Specified
65    * policy bindings are applied. Existing bindings aren't modified. Specified
66    * services are activated. No service is deactivated. If specified, new billing
67    * configuration is applied. Omit a billing configuration to keep the existing
68    * one. A service account in the project is created if previously non existed.
69    * Specified labels will be appended to tenant project, note that the value of
70    * existing label key will be updated if the same label key is requested. The
71    * specified folder is ignored, as moving a tenant project to a different folder
72    * isn't supported. The operation fails if any of the steps fail, but no
73    * rollback of already applied configuration changes is attempted. Operation.
74    * (tenancyUnits.applyProjectConfig)
75    *
76    * @param string $name Required. Name of the tenancy unit. Such as
77    * 'services/service.googleapis.com/projects/12345/tenancyUnits/abcd'.
78    * @param ApplyTenantProjectConfigRequest $postBody
79    * @param array $optParams Optional parameters.
80    * @return Operation
81    */
82   public function applyProjectConfig($name, ApplyTenantProjectConfigRequest $postBody, $optParams = [])
83   {
84     $params = ['name' => $name, 'postBody' => $postBody];
85     $params = array_merge($params, $optParams);
86     return $this->call('applyProjectConfig', [$params], Operation::class);
87   }
88   /**
89    * Attach an existing project to the tenancy unit as a new tenant resource. The
90    * project could either be the tenant project reserved by calling
91    * `AddTenantProject` under a tenancy unit of a service producer's project of a
92    * managed service, or from a separate project. The caller is checked against a
93    * set of permissions as if calling `AddTenantProject` on the same service
94    * consumer. To trigger the attachment, the targeted tenant project must be in a
95    * folder. Make sure the ServiceConsumerManagement service account is the owner
96    * of that project. These two requirements are already met if the project is
97    * reserved by calling `AddTenantProject`. Operation.
98    * (tenancyUnits.attachProject)
99    *
100    * @param string $name Required. Name of the tenancy unit that the project will
101    * be attached to. Such as
102    * 'services/service.googleapis.com/projects/12345/tenancyUnits/abcd'.
103    * @param AttachTenantProjectRequest $postBody
104    * @param array $optParams Optional parameters.
105    * @return Operation
106    */
107   public function attachProject($name, AttachTenantProjectRequest $postBody, $optParams = [])
108   {
109     $params = ['name' => $name, 'postBody' => $postBody];
110     $params = array_merge($params, $optParams);
111     return $this->call('attachProject', [$params], Operation::class);
112   }
113   /**
114    * Creates a tenancy unit with no tenant resources. If tenancy unit already
115    * exists, it will be returned, however, in this case, returned TenancyUnit does
116    * not have tenant_resources field set and ListTenancyUnits has to be used to
117    * get a complete TenancyUnit with all fields populated. (tenancyUnits.create)
118    *
119    * @param string $parent Required. services/{service}/{collection id}/{resource
120    * id} {collection id} is the cloud resource collection type representing the
121    * service consumer, for example 'projects', or 'organizations'. {resource id}
122    * is the consumer numeric id, such as project number: '123456'. {service} the
123    * name of a managed service, such as 'service.googleapis.com'. Enables service
124    * binding using the new tenancy unit.
125    * @param CreateTenancyUnitRequest $postBody
126    * @param array $optParams Optional parameters.
127    * @return TenancyUnit
128    */
129   public function create($parent, CreateTenancyUnitRequest $postBody, $optParams = [])
130   {
131     $params = ['parent' => $parent, 'postBody' => $postBody];
132     $params = array_merge($params, $optParams);
133     return $this->call('create', [$params], TenancyUnit::class);
134   }
135   /**
136    * Delete a tenancy unit. Before you delete the tenancy unit, there should be no
137    * tenant resources in it that aren't in a DELETED state. Operation.
138    * (tenancyUnits.delete)
139    *
140    * @param string $name Required. Name of the tenancy unit to be deleted.
141    * @param array $optParams Optional parameters.
142    * @return Operation
143    */
144   public function delete($name, $optParams = [])
145   {
146     $params = ['name' => $name];
147     $params = array_merge($params, $optParams);
148     return $this->call('delete', [$params], Operation::class);
149   }
150   /**
151    * Deletes the specified project resource identified by a tenant resource tag.
152    * The mothod removes a project lien with a 'TenantManager' origin if that was
153    * added. It will then attempt to delete the project. If that operation fails,
154    * this method also fails. After the project has been deleted, the tenant
155    * resource state is set to DELETED. To permanently remove resource metadata,
156    * call the `RemoveTenantProject` method. New resources with the same tag can't
157    * be added if there are existing resources in a DELETED state. Operation.
158    * (tenancyUnits.deleteProject)
159    *
160    * @param string $name Required. Name of the tenancy unit. Such as
161    * 'services/service.googleapis.com/projects/12345/tenancyUnits/abcd'.
162    * @param DeleteTenantProjectRequest $postBody
163    * @param array $optParams Optional parameters.
164    * @return Operation
165    */
166   public function deleteProject($name, DeleteTenantProjectRequest $postBody, $optParams = [])
167   {
168     $params = ['name' => $name, 'postBody' => $postBody];
169     $params = array_merge($params, $optParams);
170     return $this->call('deleteProject', [$params], Operation::class);
171   }
172   /**
173    * Find the tenancy unit for a managed service and service consumer. This method
174    * shouldn't be used in a service producer's runtime path, for example to find
175    * the tenant project number when creating VMs. Service producers must persist
176    * the tenant project's information after the project is created.
177    * (tenancyUnits.listServicesTenancyUnits)
178    *
179    * @param string $parent Required. Managed service and service consumer.
180    * Required. services/{service}/{collection id}/{resource id} {collection id} is
181    * the cloud resource collection type representing the service consumer, for
182    * example 'projects', or 'organizations'. {resource id} is the consumer numeric
183    * id, such as project number: '123456'. {service} the name of a service, such
184    * as 'service.googleapis.com'.
185    * @param array $optParams Optional parameters.
186    *
187    * @opt_param string filter Optional. Filter expression over tenancy resources
188    * field. Optional.
189    * @opt_param int pageSize Optional. The maximum number of results returned by
190    * this request.
191    * @opt_param string pageToken Optional. The continuation token, which is used
192    * to page through large result sets. To get the next page of results, set this
193    * parameter to the value of `nextPageToken` from the previous response.
194    * @return ListTenancyUnitsResponse
195    */
196   public function listServicesTenancyUnits($parent, $optParams = [])
197   {
198     $params = ['parent' => $parent];
199     $params = array_merge($params, $optParams);
200     return $this->call('list', [$params], ListTenancyUnitsResponse::class);
201   }
202   /**
203    * Removes the specified project resource identified by a tenant resource tag.
204    * The method removes the project lien with 'TenantManager' origin if that was
205    * added. It then attempts to delete the project. If that operation fails, this
206    * method also fails. Calls to remove already removed or non-existent tenant
207    * project succeed. After the project has been deleted, or if was already in a
208    * DELETED state, resource metadata is permanently removed from the tenancy
209    * unit. Operation. (tenancyUnits.removeProject)
210    *
211    * @param string $name Required. Name of the tenancy unit. Such as
212    * 'services/service.googleapis.com/projects/12345/tenancyUnits/abcd'.
213    * @param RemoveTenantProjectRequest $postBody
214    * @param array $optParams Optional parameters.
215    * @return Operation
216    */
217   public function removeProject($name, RemoveTenantProjectRequest $postBody, $optParams = [])
218   {
219     $params = ['name' => $name, 'postBody' => $postBody];
220     $params = array_merge($params, $optParams);
221     return $this->call('removeProject', [$params], Operation::class);
222   }
223   /**
224    * Attempts to undelete a previously deleted tenant project. The project must be
225    * in a DELETED state. There are no guarantees that an undeleted project will be
226    * in a fully restored and functional state. Call the `ApplyTenantProjectConfig`
227    * method to update its configuration and then validate all managed service
228    * resources. Operation. (tenancyUnits.undeleteProject)
229    *
230    * @param string $name Required. Name of the tenancy unit. Such as
231    * 'services/service.googleapis.com/projects/12345/tenancyUnits/abcd'.
232    * @param UndeleteTenantProjectRequest $postBody
233    * @param array $optParams Optional parameters.
234    * @return Operation
235    */
236   public function undeleteProject($name, UndeleteTenantProjectRequest $postBody, $optParams = [])
237   {
238     $params = ['name' => $name, 'postBody' => $postBody];
239     $params = array_merge($params, $optParams);
240     return $this->call('undeleteProject', [$params], Operation::class);
241   }
242 }
243 
244 // Adding a class alias for backwards compatibility with the previous class name.
245 class_alias(ServicesTenancyUnits::class, 'Google_Service_ServiceConsumerManagement_Resource_ServicesTenancyUnits');
246