xref: /aosp_15_r20/external/googleapis/google/cloud/telcoautomation/v1/telcoautomation.proto (revision d5c09012810ac0c9f33fe448fb6da8260d444cc9)
1// Copyright 2023 Google LLC
2//
3// Licensed under the Apache License, Version 2.0 (the "License");
4// you may not use this file except in compliance with the License.
5// You may obtain a copy of the License at
6//
7//     http://www.apache.org/licenses/LICENSE-2.0
8//
9// Unless required by applicable law or agreed to in writing, software
10// distributed under the License is distributed on an "AS IS" BASIS,
11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12// See the License for the specific language governing permissions and
13// limitations under the License.
14
15syntax = "proto3";
16
17package google.cloud.telcoautomation.v1;
18
19import "google/api/annotations.proto";
20import "google/api/client.proto";
21import "google/api/field_behavior.proto";
22import "google/api/resource.proto";
23import "google/longrunning/operations.proto";
24import "google/protobuf/empty.proto";
25import "google/protobuf/field_mask.proto";
26import "google/protobuf/timestamp.proto";
27
28option csharp_namespace = "Google.Cloud.TelcoAutomation.V1";
29option go_package = "cloud.google.com/go/telcoautomation/apiv1/telcoautomationpb;telcoautomationpb";
30option java_multiple_files = true;
31option java_outer_classname = "TelcoautomationProto";
32option java_package = "com.google.cloud.telcoautomation.v1";
33option php_namespace = "Google\\Cloud\\TelcoAutomation\\V1";
34option ruby_package = "Google::Cloud::TelcoAutomation::V1";
35
36// TelcoAutomation Service manages the control plane cluster a.k.a.
37// Orchestration Cluster (GKE cluster with config controller) of TNA. It also
38// exposes blueprint APIs which manages the lifecycle of blueprints that control
39// the infrastructure setup (e.g GDCE clusters) and deployment of network
40// functions.
41service TelcoAutomation {
42  option (google.api.default_host) = "telcoautomation.googleapis.com";
43  option (google.api.oauth_scopes) =
44      "https://www.googleapis.com/auth/cloud-platform";
45
46  // Lists OrchestrationClusters in a given project and location.
47  rpc ListOrchestrationClusters(ListOrchestrationClustersRequest)
48      returns (ListOrchestrationClustersResponse) {
49    option (google.api.http) = {
50      get: "/v1/{parent=projects/*/locations/*}/orchestrationClusters"
51    };
52    option (google.api.method_signature) = "parent";
53  }
54
55  // Gets details of a single OrchestrationCluster.
56  rpc GetOrchestrationCluster(GetOrchestrationClusterRequest)
57      returns (OrchestrationCluster) {
58    option (google.api.http) = {
59      get: "/v1/{name=projects/*/locations/*/orchestrationClusters/*}"
60    };
61    option (google.api.method_signature) = "name";
62  }
63
64  // Creates a new OrchestrationCluster in a given project and location.
65  rpc CreateOrchestrationCluster(CreateOrchestrationClusterRequest)
66      returns (google.longrunning.Operation) {
67    option (google.api.http) = {
68      post: "/v1/{parent=projects/*/locations/*}/orchestrationClusters"
69      body: "orchestration_cluster"
70    };
71    option (google.api.method_signature) =
72        "parent,orchestration_cluster,orchestration_cluster_id";
73    option (google.longrunning.operation_info) = {
74      response_type: "OrchestrationCluster"
75      metadata_type: "OperationMetadata"
76    };
77  }
78
79  // Deletes a single OrchestrationCluster.
80  rpc DeleteOrchestrationCluster(DeleteOrchestrationClusterRequest)
81      returns (google.longrunning.Operation) {
82    option (google.api.http) = {
83      delete: "/v1/{name=projects/*/locations/*/orchestrationClusters/*}"
84    };
85    option (google.api.method_signature) = "name";
86    option (google.longrunning.operation_info) = {
87      response_type: "google.protobuf.Empty"
88      metadata_type: "OperationMetadata"
89    };
90  }
91
92  // Lists EdgeSlms in a given project and location.
93  rpc ListEdgeSlms(ListEdgeSlmsRequest) returns (ListEdgeSlmsResponse) {
94    option (google.api.http) = {
95      get: "/v1/{parent=projects/*/locations/*}/edgeSlms"
96    };
97    option (google.api.method_signature) = "parent";
98  }
99
100  // Gets details of a single EdgeSlm.
101  rpc GetEdgeSlm(GetEdgeSlmRequest) returns (EdgeSlm) {
102    option (google.api.http) = {
103      get: "/v1/{name=projects/*/locations/*/edgeSlms/*}"
104    };
105    option (google.api.method_signature) = "name";
106  }
107
108  // Creates a new EdgeSlm in a given project and location.
109  rpc CreateEdgeSlm(CreateEdgeSlmRequest)
110      returns (google.longrunning.Operation) {
111    option (google.api.http) = {
112      post: "/v1/{parent=projects/*/locations/*}/edgeSlms"
113      body: "edge_slm"
114    };
115    option (google.api.method_signature) = "parent,edge_slm,edge_slm_id";
116    option (google.longrunning.operation_info) = {
117      response_type: "EdgeSlm"
118      metadata_type: "OperationMetadata"
119    };
120  }
121
122  // Deletes a single EdgeSlm.
123  rpc DeleteEdgeSlm(DeleteEdgeSlmRequest)
124      returns (google.longrunning.Operation) {
125    option (google.api.http) = {
126      delete: "/v1/{name=projects/*/locations/*/edgeSlms/*}"
127    };
128    option (google.api.method_signature) = "name";
129    option (google.longrunning.operation_info) = {
130      response_type: "google.protobuf.Empty"
131      metadata_type: "OperationMetadata"
132    };
133  }
134
135  // Creates a blueprint.
136  rpc CreateBlueprint(CreateBlueprintRequest) returns (Blueprint) {
137    option (google.api.http) = {
138      post: "/v1/{parent=projects/*/locations/*/orchestrationClusters/*}/blueprints"
139      body: "blueprint"
140    };
141    option (google.api.method_signature) = "parent,blueprint,blueprint_id";
142  }
143
144  // Updates a blueprint.
145  rpc UpdateBlueprint(UpdateBlueprintRequest) returns (Blueprint) {
146    option (google.api.http) = {
147      patch: "/v1/{blueprint.name=projects/*/locations/*/orchestrationClusters/*/blueprints/*}"
148      body: "blueprint"
149    };
150    option (google.api.method_signature) = "blueprint,update_mask";
151  }
152
153  // Returns the requested blueprint.
154  rpc GetBlueprint(GetBlueprintRequest) returns (Blueprint) {
155    option (google.api.http) = {
156      get: "/v1/{name=projects/*/locations/*/orchestrationClusters/*/blueprints/*}"
157    };
158    option (google.api.method_signature) = "name";
159  }
160
161  // Deletes a blueprint and all its revisions.
162  rpc DeleteBlueprint(DeleteBlueprintRequest) returns (google.protobuf.Empty) {
163    option (google.api.http) = {
164      delete: "/v1/{name=projects/*/locations/*/orchestrationClusters/*/blueprints/*}"
165    };
166    option (google.api.method_signature) = "name";
167  }
168
169  // List all blueprints.
170  rpc ListBlueprints(ListBlueprintsRequest) returns (ListBlueprintsResponse) {
171    option (google.api.http) = {
172      get: "/v1/{parent=projects/*/locations/*/orchestrationClusters/*}/blueprints"
173    };
174    option (google.api.method_signature) = "parent";
175  }
176
177  // Approves a blueprint and commits a new revision.
178  rpc ApproveBlueprint(ApproveBlueprintRequest) returns (Blueprint) {
179    option (google.api.http) = {
180      post: "/v1/{name=projects/*/locations/*/orchestrationClusters/*/blueprints/*}:approve"
181      body: "*"
182    };
183    option (google.api.method_signature) = "name";
184  }
185
186  // Proposes a blueprint for approval of changes.
187  rpc ProposeBlueprint(ProposeBlueprintRequest) returns (Blueprint) {
188    option (google.api.http) = {
189      post: "/v1/{name=projects/*/locations/*/orchestrationClusters/*/blueprints/*}:propose"
190      body: "*"
191    };
192    option (google.api.method_signature) = "name";
193  }
194
195  // Rejects a blueprint revision proposal and flips it back to Draft state.
196  rpc RejectBlueprint(RejectBlueprintRequest) returns (Blueprint) {
197    option (google.api.http) = {
198      post: "/v1/{name=projects/*/locations/*/orchestrationClusters/*/blueprints/*}:reject"
199      body: "*"
200    };
201    option (google.api.method_signature) = "name";
202  }
203
204  // List blueprint revisions of a given blueprint.
205  rpc ListBlueprintRevisions(ListBlueprintRevisionsRequest)
206      returns (ListBlueprintRevisionsResponse) {
207    option (google.api.http) = {
208      get: "/v1/{name=projects/*/locations/*/orchestrationClusters/*/blueprints/*}:listRevisions"
209    };
210    option (google.api.method_signature) = "name";
211  }
212
213  // Searches across blueprint revisions.
214  rpc SearchBlueprintRevisions(SearchBlueprintRevisionsRequest)
215      returns (SearchBlueprintRevisionsResponse) {
216    option (google.api.http) = {
217      get: "/v1/{parent=projects/*/locations/*/orchestrationClusters/*}/blueprints:searchRevisions"
218    };
219    option (google.api.method_signature) = "parent,query";
220  }
221
222  // Searches across deployment revisions.
223  rpc SearchDeploymentRevisions(SearchDeploymentRevisionsRequest)
224      returns (SearchDeploymentRevisionsResponse) {
225    option (google.api.http) = {
226      get: "/v1/{parent=projects/*/locations/*/orchestrationClusters/*}/deployments:searchRevisions"
227    };
228    option (google.api.method_signature) = "parent,query";
229  }
230
231  // Discards the changes in a blueprint and reverts the blueprint to the last
232  // approved blueprint revision. No changes take place if a blueprint does not
233  // have revisions.
234  rpc DiscardBlueprintChanges(DiscardBlueprintChangesRequest)
235      returns (DiscardBlueprintChangesResponse) {
236    option (google.api.http) = {
237      post: "/v1/{name=projects/*/locations/*/orchestrationClusters/*/blueprints/*}:discard"
238      body: "*"
239    };
240    option (google.api.method_signature) = "name";
241  }
242
243  // Lists the blueprints in TNA's public catalog. Default page size = 20,
244  // Max Page Size = 100.
245  rpc ListPublicBlueprints(ListPublicBlueprintsRequest)
246      returns (ListPublicBlueprintsResponse) {
247    option (google.api.http) = {
248      get: "/v1/{parent=projects/*/locations/*}/publicBlueprints"
249    };
250    option (google.api.method_signature) = "parent";
251  }
252
253  // Returns the requested public blueprint.
254  rpc GetPublicBlueprint(GetPublicBlueprintRequest) returns (PublicBlueprint) {
255    option (google.api.http) = {
256      get: "/v1/{name=projects/*/locations/*/publicBlueprints/*}"
257    };
258    option (google.api.method_signature) = "name";
259  }
260
261  // Creates a deployment.
262  rpc CreateDeployment(CreateDeploymentRequest) returns (Deployment) {
263    option (google.api.http) = {
264      post: "/v1/{parent=projects/*/locations/*/orchestrationClusters/*}/deployments"
265      body: "deployment"
266    };
267    option (google.api.method_signature) = "parent,deployment,deployment_id";
268  }
269
270  // Updates a deployment.
271  rpc UpdateDeployment(UpdateDeploymentRequest) returns (Deployment) {
272    option (google.api.http) = {
273      patch: "/v1/{deployment.name=projects/*/locations/*/orchestrationClusters/*/deployments/*}"
274      body: "deployment"
275    };
276    option (google.api.method_signature) = "deployment,update_mask";
277  }
278
279  // Returns the requested deployment.
280  rpc GetDeployment(GetDeploymentRequest) returns (Deployment) {
281    option (google.api.http) = {
282      get: "/v1/{name=projects/*/locations/*/orchestrationClusters/*/deployments/*}"
283    };
284    option (google.api.method_signature) = "name";
285  }
286
287  // Removes the deployment by marking it as DELETING. Post which deployment and
288  // it's revisions gets deleted.
289  rpc RemoveDeployment(RemoveDeploymentRequest)
290      returns (google.protobuf.Empty) {
291    option (google.api.http) = {
292      post: "/v1/{name=projects/*/locations/*/orchestrationClusters/*/deployments/*}:remove"
293      body: "*"
294    };
295    option (google.api.method_signature) = "name";
296  }
297
298  // List all deployments.
299  rpc ListDeployments(ListDeploymentsRequest)
300      returns (ListDeploymentsResponse) {
301    option (google.api.http) = {
302      get: "/v1/{parent=projects/*/locations/*/orchestrationClusters/*}/deployments"
303    };
304    option (google.api.method_signature) = "parent";
305  }
306
307  // List deployment revisions of a given deployment.
308  rpc ListDeploymentRevisions(ListDeploymentRevisionsRequest)
309      returns (ListDeploymentRevisionsResponse) {
310    option (google.api.http) = {
311      get: "/v1/{name=projects/*/locations/*/orchestrationClusters/*/deployments/*}:listRevisions"
312    };
313    option (google.api.method_signature) = "name";
314  }
315
316  // Discards the changes in a deployment and reverts the deployment to the last
317  // approved deployment revision. No changes take place if a deployment does
318  // not have revisions.
319  rpc DiscardDeploymentChanges(DiscardDeploymentChangesRequest)
320      returns (DiscardDeploymentChangesResponse) {
321    option (google.api.http) = {
322      post: "/v1/{name=projects/*/locations/*/orchestrationClusters/*/deployments/*}:discard"
323      body: "*"
324    };
325    option (google.api.method_signature) = "name";
326  }
327
328  // Applies the deployment's YAML files to the parent orchestration cluster.
329  rpc ApplyDeployment(ApplyDeploymentRequest) returns (Deployment) {
330    option (google.api.http) = {
331      post: "/v1/{name=projects/*/locations/*/orchestrationClusters/*/deployments/*}:apply"
332      body: "*"
333    };
334    option (google.api.method_signature) = "name";
335  }
336
337  // Returns the requested deployment status.
338  rpc ComputeDeploymentStatus(ComputeDeploymentStatusRequest)
339      returns (ComputeDeploymentStatusResponse) {
340    option (google.api.http) = {
341      get: "/v1/{name=projects/*/locations/*/orchestrationClusters/*/deployments/*}:computeDeploymentStatus"
342    };
343    option (google.api.method_signature) = "name";
344  }
345
346  // Rollback the active deployment to the given past approved deployment
347  // revision.
348  rpc RollbackDeployment(RollbackDeploymentRequest) returns (Deployment) {
349    option (google.api.http) = {
350      post: "/v1/{name=projects/*/locations/*/orchestrationClusters/*/deployments/*}:rollback"
351      body: "*"
352    };
353    option (google.api.method_signature) = "name,revision_id";
354  }
355
356  // Returns the requested hydrated deployment.
357  rpc GetHydratedDeployment(GetHydratedDeploymentRequest)
358      returns (HydratedDeployment) {
359    option (google.api.http) = {
360      get: "/v1/{name=projects/*/locations/*/orchestrationClusters/*/deployments/*/hydratedDeployments/*}"
361    };
362    option (google.api.method_signature) = "name";
363  }
364
365  // List all hydrated deployments present under a deployment.
366  rpc ListHydratedDeployments(ListHydratedDeploymentsRequest)
367      returns (ListHydratedDeploymentsResponse) {
368    option (google.api.http) = {
369      get: "/v1/{parent=projects/*/locations/*/orchestrationClusters/*/deployments/*}/hydratedDeployments"
370    };
371    option (google.api.method_signature) = "parent";
372  }
373
374  // Updates a hydrated deployment.
375  rpc UpdateHydratedDeployment(UpdateHydratedDeploymentRequest)
376      returns (HydratedDeployment) {
377    option (google.api.http) = {
378      patch: "/v1/{hydrated_deployment.name=projects/*/locations/*/orchestrationClusters/*/deployments/*/hydratedDeployments/*}"
379      body: "hydrated_deployment"
380    };
381    option (google.api.method_signature) = "hydrated_deployment,update_mask";
382  }
383
384  // Applies a hydrated deployment to a workload cluster.
385  rpc ApplyHydratedDeployment(ApplyHydratedDeploymentRequest)
386      returns (HydratedDeployment) {
387    option (google.api.http) = {
388      post: "/v1/{name=projects/*/locations/*/orchestrationClusters/*/deployments/*/hydratedDeployments/*}:apply"
389      body: "*"
390    };
391    option (google.api.method_signature) = "name";
392  }
393}
394
395// BlueprintView defines the type of view of the blueprint.
396enum BlueprintView {
397  // Unspecified enum value.
398  BLUEPRINT_VIEW_UNSPECIFIED = 0;
399
400  // View which only contains metadata.
401  BLUEPRINT_VIEW_BASIC = 1;
402
403  // View which contains metadata and files it encapsulates.
404  BLUEPRINT_VIEW_FULL = 2;
405}
406
407// DeploymentView defines the type of view of the deployment.
408enum DeploymentView {
409  // Unspecified enum value.
410  DEPLOYMENT_VIEW_UNSPECIFIED = 0;
411
412  // View which only contains metadata.
413  DEPLOYMENT_VIEW_BASIC = 1;
414
415  // View which contains metadata and files it encapsulates.
416  DEPLOYMENT_VIEW_FULL = 2;
417}
418
419// Represent type of CR.
420enum ResourceType {
421  // Unspecified resource type.
422  RESOURCE_TYPE_UNSPECIFIED = 0;
423
424  // User specified NF Deploy CR.
425  NF_DEPLOY_RESOURCE = 1;
426
427  // CRs that are part of a blueprint.
428  DEPLOYMENT_RESOURCE = 2;
429}
430
431// Status of an entity (resource, deployment).
432enum Status {
433  // Unknown state.
434  STATUS_UNSPECIFIED = 0;
435
436  // Under progress.
437  STATUS_IN_PROGRESS = 1;
438
439  // Running and ready to serve traffic.
440  STATUS_ACTIVE = 2;
441
442  // Failed or stalled.
443  STATUS_FAILED = 3;
444
445  // Delete in progress.
446  STATUS_DELETING = 4;
447
448  // Deleted deployment.
449  STATUS_DELETED = 5;
450
451  // NFDeploy specific status. Peering in progress.
452  STATUS_PEERING = 10;
453
454  // K8s objects such as NetworkAttachmentDefinition don't have a defined
455  // status.
456  STATUS_NOT_APPLICABLE = 11;
457}
458
459// DeploymentLevel of a blueprint signifies where the blueprint will be
460// applied.
461enum DeploymentLevel {
462  // Default unspecified deployment level.
463  DEPLOYMENT_LEVEL_UNSPECIFIED = 0;
464
465  // Blueprints at HYDRATION level cannot be used to create a Deployment
466  // (A user cannot manually initate deployment of these blueprints on
467  // orchestration or workload cluster).
468  // These blueprints stay in a user's private catalog and are configured and
469  // deployed by TNA automation.
470  HYDRATION = 1;
471
472  // Blueprints at SINGLE_DEPLOYMENT level can be
473  // a) Modified in private catalog.
474  // b) Used to create a deployment on orchestration cluster by the user, once
475  // approved.
476  SINGLE_DEPLOYMENT = 2;
477
478  // Blueprints at MULTI_DEPLOYMENT level can be
479  // a) Modified in private catalog.
480  // b) Used to create a deployment on orchestration cluster which will create
481  // further hydrated deployments.
482  MULTI_DEPLOYMENT = 3;
483
484  // Blueprints at WORKLOAD_CLUSTER_DEPLOYMENT level can be
485  // a) Modified in private catalog.
486  // b) Used to create a deployment on workload cluster by the user, once
487  // approved.
488  WORKLOAD_CLUSTER_DEPLOYMENT = 4;
489}
490
491// Orchestration cluster represents a GKE cluster with config controller and
492// TNA specific components installed on it.
493message OrchestrationCluster {
494  option (google.api.resource) = {
495    type: "telcoautomation.googleapis.com/OrchestrationCluster"
496    pattern: "projects/{project}/locations/{location}/orchestrationClusters/{orchestration_cluster}"
497  };
498
499  // Possible states that the Orchestration Cluster can be in.
500  enum State {
501    // Unspecified state.
502    STATE_UNSPECIFIED = 0;
503
504    // OrchestrationCluster is being created.
505    CREATING = 1;
506
507    // OrchestrationCluster has been created and is ready for use.
508    ACTIVE = 2;
509
510    // OrchestrationCluster is being deleted.
511    DELETING = 3;
512
513    // OrchestrationCluster encountered an error and is in an indeterministic
514    // state. User can still initiate a delete operation on this state.
515    FAILED = 4;
516  }
517
518  // Name of the orchestration cluster. The name of orchestration cluster cannot
519  // be more than 24 characters.
520  string name = 1;
521
522  // Management configuration of the underlying GKE cluster.
523  ManagementConfig management_config = 5;
524
525  // Output only. [Output only] Create time stamp.
526  google.protobuf.Timestamp create_time = 2
527      [(google.api.field_behavior) = OUTPUT_ONLY];
528
529  // Output only. [Output only] Update time stamp.
530  google.protobuf.Timestamp update_time = 3
531      [(google.api.field_behavior) = OUTPUT_ONLY];
532
533  // Labels as key value pairs.
534  map<string, string> labels = 4;
535
536  // Output only. Provides the TNA version installed on the cluster.
537  string tna_version = 6 [(google.api.field_behavior) = OUTPUT_ONLY];
538
539  // Output only. State of the Orchestration Cluster.
540  State state = 7 [(google.api.field_behavior) = OUTPUT_ONLY];
541}
542
543// EdgeSlm represents an SLM instance which manages the lifecycle of edge
544// components installed on Workload clusters managed by an Orchestration
545// Cluster.
546message EdgeSlm {
547  option (google.api.resource) = {
548    type: "telcoautomation.googleapis.com/EdgeSlm"
549    pattern: "projects/{project}/locations/{location}/edgeSlms/{edge_slm}"
550    plural: "edgeSlms"
551    singular: "edgeSlm"
552  };
553
554  // Possible states of the resource.
555  enum State {
556    // Unspecified state.
557    STATE_UNSPECIFIED = 0;
558
559    // EdgeSlm is being created.
560    CREATING = 1;
561
562    // EdgeSlm has been created and is ready for use.
563    ACTIVE = 2;
564
565    // EdgeSlm is being deleted.
566    DELETING = 3;
567
568    // EdgeSlm encountered an error and is in an indeterministic
569    // state. User can still initiate a delete operation on this state.
570    FAILED = 4;
571  }
572
573  // Workload clusters supported by TNA. New values will be added to the enum
574  // list as TNA adds supports for new workload clusters in future.
575  enum WorkloadClusterType {
576    // Unspecified workload cluster.
577    WORKLOAD_CLUSTER_TYPE_UNSPECIFIED = 0;
578
579    // Workload cluster is a GDCE cluster.
580    GDCE = 1;
581
582    // Workload cluster is a GKE cluster.
583    GKE = 2;
584  }
585
586  // Name of the EdgeSlm resource.
587  string name = 1;
588
589  // Immutable. Reference to the orchestration cluster on which templates for
590  // this resources will be applied. This should be of format
591  // projects/{project}/locations/{location}/orchestrationClusters/{orchestration_cluster}.
592  string orchestration_cluster = 5 [
593    (google.api.field_behavior) = IMMUTABLE,
594    (google.api.resource_reference) = {
595      type: "telcoautomation.googleapis.com/OrchestrationCluster"
596    }
597  ];
598
599  // Output only. [Output only] Create time stamp.
600  google.protobuf.Timestamp create_time = 2
601      [(google.api.field_behavior) = OUTPUT_ONLY];
602
603  // Output only. [Output only] Update time stamp.
604  google.protobuf.Timestamp update_time = 3
605      [(google.api.field_behavior) = OUTPUT_ONLY];
606
607  // Optional. Labels as key value pairs. The key and value should contain
608  // characters which are UTF-8 compliant and less than 50 characters.
609  map<string, string> labels = 4 [(google.api.field_behavior) = OPTIONAL];
610
611  // Output only. Provides the active TNA version for this resource.
612  string tna_version = 6 [(google.api.field_behavior) = OUTPUT_ONLY];
613
614  // Output only. State of the EdgeSlm resource.
615  State state = 7 [(google.api.field_behavior) = OUTPUT_ONLY];
616
617  // Optional. Type of workload cluster for which an EdgeSLM resource is
618  // created.
619  WorkloadClusterType workload_cluster_type = 8
620      [(google.api.field_behavior) = OPTIONAL];
621}
622
623// A Blueprint contains a collection of kubernetes resources in the form of
624// YAML files. The file contents of a blueprint are collectively known as
625// package. A blueprint can be
626// a) imported from TNA's public catalog
627// b) modified as per a user's need
628// c) proposed and approved.
629// On approval, a revision of blueprint is created which can be used to
630// create a deployment on Orchestration or Workload Cluster.
631message Blueprint {
632  option (google.api.resource) = {
633    type: "telcoautomation.googleapis.com/Blueprint"
634    pattern: "projects/{project}/locations/{location}/orchestrationClusters/{orchestration_cluster}/blueprints/{blueprint}"
635    plural: "blueprints"
636    singular: "blueprint"
637  };
638
639  // Approval state indicates the state of a Blueprint in its approval
640  // lifecycle.
641  enum ApprovalState {
642    // Unspecified state.
643    APPROVAL_STATE_UNSPECIFIED = 0;
644
645    // A blueprint starts in DRAFT state once it is created. All edits are made
646    // to the blueprint in DRAFT state.
647    DRAFT = 1;
648
649    // When the edits are ready for review, blueprint can be proposed and moves
650    // to PROPOSED state. Edits cannot be made to a blueprint in PROPOSED state.
651    PROPOSED = 2;
652
653    // When a proposed blueprint is approved, it moves to APPROVED state. A new
654    // revision is committed. The latest committed revision can be used to
655    // create a deployment on Orchestration or Workload Cluster. Edits to an
656    // APPROVED blueprint changes its state back to DRAFT. The last committed
657    // revision of a blueprint represents its latest APPROVED state.
658    APPROVED = 3;
659  }
660
661  // The name of the blueprint. If unspecified, the name will be autogenerated
662  // from server side. Name of the blueprint must not contain `@` character.
663  string name = 1;
664
665  // Output only. Immutable. The revision ID of the blueprint.
666  // A new revision is committed whenever a blueprint is approved.
667  string revision_id = 2 [
668    (google.api.field_behavior) = IMMUTABLE,
669    (google.api.field_behavior) = OUTPUT_ONLY
670  ];
671
672  // Required. Immutable. The public blueprint ID from which this blueprint was
673  // created.
674  string source_blueprint = 3 [
675    (google.api.field_behavior) = REQUIRED,
676    (google.api.field_behavior) = IMMUTABLE
677  ];
678
679  // Output only. The timestamp that the revision was created.
680  google.protobuf.Timestamp revision_create_time = 5
681      [(google.api.field_behavior) = OUTPUT_ONLY];
682
683  // Output only. Approval state of the blueprint (DRAFT, PROPOSED, APPROVED)
684  ApprovalState approval_state = 6 [(google.api.field_behavior) = OUTPUT_ONLY];
685
686  // Optional. Human readable name of a Blueprint.
687  string display_name = 7 [(google.api.field_behavior) = OPTIONAL];
688
689  // Output only. Name of the repository where the blueprint files are stored.
690  string repository = 8 [(google.api.field_behavior) = OUTPUT_ONLY];
691
692  // Optional. Files present in a blueprint.
693  // When invoking UpdateBlueprint API, only the modified files should be
694  // included in this. Files that are not included in the update of a blueprint
695  // will not be changed.
696  repeated File files = 9 [(google.api.field_behavior) = OPTIONAL];
697
698  // Optional. Labels are key-value attributes that can be set on a blueprint
699  // resource by the user.
700  map<string, string> labels = 10 [(google.api.field_behavior) = OPTIONAL];
701
702  // Output only. Blueprint creation time.
703  google.protobuf.Timestamp create_time = 11
704      [(google.api.field_behavior) = OUTPUT_ONLY];
705
706  // Output only. The timestamp when the blueprint was updated.
707  google.protobuf.Timestamp update_time = 12
708      [(google.api.field_behavior) = OUTPUT_ONLY];
709
710  // Output only. Source provider is the author of a public blueprint, from
711  // which this blueprint is created.
712  string source_provider = 13 [(google.api.field_behavior) = OUTPUT_ONLY];
713
714  // Output only. DeploymentLevel of a blueprint signifies where the blueprint
715  // will be applied. e.g. [HYDRATION, SINGLE_DEPLOYMENT, MULTI_DEPLOYMENT]
716  DeploymentLevel deployment_level = 14
717      [(google.api.field_behavior) = OUTPUT_ONLY];
718
719  // Output only. Indicates if the deployment created from this blueprint can be
720  // rolled back.
721  bool rollback_support = 15 [(google.api.field_behavior) = OUTPUT_ONLY];
722}
723
724// A Blueprint contains a collection of kubernetes resources in the form of
725// YAML files. The file contents of a blueprint are collectively known as
726// package.
727// Public blueprint is a TNA provided blueprint that in present in TNA's public
728// catalog. A user can copy the public blueprint to their private catalog for
729// further modifications.
730message PublicBlueprint {
731  option (google.api.resource) = {
732    type: "telcoautomation.googleapis.com/PublicBlueprint"
733    pattern: "projects/{project}/locations/{location}/publicBlueprints/{public_lueprint}"
734    plural: "publicBlueprints"
735    singular: "publicBlueprint"
736  };
737
738  // Name of the public blueprint.
739  string name = 1;
740
741  // The display name of the public blueprint.
742  string display_name = 2;
743
744  // The description of the public blueprint.
745  string description = 3;
746
747  // DeploymentLevel of a blueprint signifies where the blueprint will be
748  // applied. e.g. [HYDRATION, SINGLE_DEPLOYMENT, MULTI_DEPLOYMENT]
749  DeploymentLevel deployment_level = 4;
750
751  // Source provider is the author of a public blueprint. e.g. Google, vendors
752  string source_provider = 5;
753
754  // Output only. Indicates if the deployment created from this blueprint can be
755  // rolled back.
756  bool rollback_support = 15 [(google.api.field_behavior) = OUTPUT_ONLY];
757}
758
759// Deployment contains a collection of YAML files (This collection is also known
760// as package) that can to applied on an orchestration cluster (GKE cluster with
761// TNA addons) or a workload cluster.
762message Deployment {
763  option (google.api.resource) = {
764    type: "telcoautomation.googleapis.com/Deployment"
765    pattern: "projects/{project}/locations/{location}/orchestrationClusters/{orchestration_cluster}/deployments/{deployment}"
766    plural: "deployments"
767    singular: "deployment"
768  };
769
770  // State defines which state the current deployment is in.
771  enum State {
772    // Unspecified state.
773    STATE_UNSPECIFIED = 0;
774
775    // A deployment starts in DRAFT state. All edits are made in DRAFT state. A
776    // deployment opened for editing after applying will be in draft state,
777    // while its prevision revision will be its current applied version.
778    DRAFT = 1;
779
780    // This state means that the contents (YAML files containing kubernetes
781    // resources) of the deployment have been applied to an Orchestration or
782    // Workload Cluster. A revision is created when a deployment is applied.
783    // This revision will represent the latest view of what is applied on the
784    // cluster until the deployment is modified and applied again, which will
785    // create a new revision.
786    APPLIED = 2;
787
788    // A deployment in DELETING state has been marked for deletion. Its
789    // deletion status can be queried using `ComputeDeploymentStatus` API. No
790    // updates are allowed to a deployment in DELETING state.
791    DELETING = 3;
792  }
793
794  // The name of the deployment.
795  string name = 1;
796
797  // Output only. Immutable. The revision ID of the deployment.
798  // A new revision is committed whenever a change in deployment is applied.
799  string revision_id = 2 [
800    (google.api.field_behavior) = IMMUTABLE,
801    (google.api.field_behavior) = OUTPUT_ONLY
802  ];
803
804  // Required. The blueprint revision from which this deployment was created.
805  string source_blueprint_revision = 3 [(google.api.field_behavior) = REQUIRED];
806
807  // Output only. The timestamp that the revision was created.
808  google.protobuf.Timestamp revision_create_time = 4
809      [(google.api.field_behavior) = OUTPUT_ONLY];
810
811  // Output only. State of the deployment (DRAFT, APPLIED, DELETING).
812  State state = 5 [(google.api.field_behavior) = OUTPUT_ONLY];
813
814  // Optional. Human readable name of a Deployment.
815  string display_name = 6 [(google.api.field_behavior) = OPTIONAL];
816
817  // Output only. Name of the repository where the deployment package files are
818  // stored.
819  string repository = 7 [(google.api.field_behavior) = OUTPUT_ONLY];
820
821  // Optional. Files present in a deployment.
822  // When invoking UpdateDeployment API, only the modified files should be
823  // included in this. Files that are not included in the update of a deployment
824  // will not be changed.
825  repeated File files = 8 [(google.api.field_behavior) = OPTIONAL];
826
827  // Optional. Labels are key-value attributes that can be set on a deployment
828  // resource by the user.
829  map<string, string> labels = 9 [(google.api.field_behavior) = OPTIONAL];
830
831  // Output only. Deployment creation time.
832  google.protobuf.Timestamp create_time = 10
833      [(google.api.field_behavior) = OUTPUT_ONLY];
834
835  // Output only. The timestamp when the deployment was updated.
836  google.protobuf.Timestamp update_time = 11
837      [(google.api.field_behavior) = OUTPUT_ONLY];
838
839  // Output only. Source provider is the author of a public blueprint, from
840  // which this deployment is created.
841  string source_provider = 12 [(google.api.field_behavior) = OUTPUT_ONLY];
842
843  // Optional. Immutable. The WorkloadCluster on which to create the Deployment.
844  // This field should only be passed when the deployment_level of the source
845  // blueprint specifies deployments on workload clusters e.g.
846  // WORKLOAD_CLUSTER_DEPLOYMENT.
847  string workload_cluster = 13 [
848    (google.api.field_behavior) = IMMUTABLE,
849    (google.api.field_behavior) = OPTIONAL
850  ];
851
852  // Output only. Attributes to where the deployment can inflict changes. The
853  // value can only be [SINGLE_DEPLOYMENT, MULTI_DEPLOYMENT].
854  DeploymentLevel deployment_level = 14
855      [(google.api.field_behavior) = OUTPUT_ONLY];
856
857  // Output only. Indicates if the deployment can be rolled back, exported from
858  // public blueprint.
859  bool rollback_support = 15 [(google.api.field_behavior) = OUTPUT_ONLY];
860}
861
862// A collection of kubernetes yaml files which are deployed on a Workload
863// Cluster. Hydrated Deployments are created by TNA intent based automation.
864message HydratedDeployment {
865  option (google.api.resource) = {
866    type: "telcoautomation.googleapis.com/HydratedDeployment"
867    pattern: "projects/{project}/locations/{location}/orchestrationClusters/{orchestration_cluster}/deployments/{deployment}/hydratedDeployments/{hydrated_deployment}"
868    plural: "hydratedDeployments"
869    singular: "hydratedDeployment"
870  };
871
872  // State defines which state the current hydrated deployment is in.
873  enum State {
874    // Unspecified state.
875    STATE_UNSPECIFIED = 0;
876
877    // A hydrated deployment starts in DRAFT state. All edits are made in DRAFT
878    // state.
879    DRAFT = 1;
880
881    // When the edit is applied, the hydrated deployment moves to APPLIED
882    // state. No changes can be made once a hydrated deployment is applied.
883    APPLIED = 2;
884  }
885
886  // Output only. The name of the hydrated deployment.
887  string name = 1 [(google.api.field_behavior) = OUTPUT_ONLY];
888
889  // Output only. State of the hydrated deployment (DRAFT, APPLIED).
890  State state = 2 [(google.api.field_behavior) = OUTPUT_ONLY];
891
892  // Optional. File contents of a hydrated deployment.
893  // When invoking UpdateHydratedBlueprint API, only the modified files should
894  // be included in this. Files that are not included in the update of a
895  // hydrated deployment will not be changed.
896  repeated File files = 3 [(google.api.field_behavior) = OPTIONAL];
897
898  // Output only. WorkloadCluster identifies which workload cluster will the
899  // hydrated deployment will be deployed on.
900  string workload_cluster = 4 [(google.api.field_behavior) = OUTPUT_ONLY];
901}
902
903// Message for requesting list of OrchestrationClusters.
904message ListOrchestrationClustersRequest {
905  // Required. Parent value for ListOrchestrationClustersRequest
906  string parent = 1 [
907    (google.api.field_behavior) = REQUIRED,
908    (google.api.resource_reference) = {
909      child_type: "telcoautomation.googleapis.com/OrchestrationCluster"
910    }
911  ];
912
913  // Requested page size. Server may return fewer items than requested.
914  // If unspecified, server will pick an appropriate default.
915  int32 page_size = 2;
916
917  // A token identifying a page of results the server should return.
918  string page_token = 3;
919
920  // Filtering results.
921  string filter = 4;
922
923  // Hint for how to order the results.
924  string order_by = 5;
925}
926
927// Message for response to listing OrchestrationClusters.
928message ListOrchestrationClustersResponse {
929  // The list of OrchestrationCluster
930  repeated OrchestrationCluster orchestration_clusters = 1;
931
932  // A token identifying a page of results the server should return.
933  string next_page_token = 2;
934
935  // Locations that could not be reached.
936  repeated string unreachable = 3;
937}
938
939// Message for getting a OrchestrationCluster.
940message GetOrchestrationClusterRequest {
941  // Required. Name of the resource
942  string name = 1 [
943    (google.api.field_behavior) = REQUIRED,
944    (google.api.resource_reference) = {
945      type: "telcoautomation.googleapis.com/OrchestrationCluster"
946    }
947  ];
948}
949
950// Message for creating a OrchestrationCluster.
951message CreateOrchestrationClusterRequest {
952  // Required. Value for parent.
953  string parent = 1 [
954    (google.api.field_behavior) = REQUIRED,
955    (google.api.resource_reference) = {
956      child_type: "telcoautomation.googleapis.com/OrchestrationCluster"
957    }
958  ];
959
960  // Required. Id of the requesting object
961  // If auto-generating Id server-side, remove this field and
962  // orchestration_cluster_id from the method_signature of Create RPC
963  string orchestration_cluster_id = 2 [(google.api.field_behavior) = REQUIRED];
964
965  // Required. The resource being created
966  OrchestrationCluster orchestration_cluster = 3
967      [(google.api.field_behavior) = REQUIRED];
968
969  // Optional. An optional request ID to identify requests. Specify a unique
970  // request ID so that if you must retry your request, the server will know to
971  // ignore the request if it has already been completed. The server will
972  // guarantee that for at least 60 minutes since the first request.
973  //
974  // For example, consider a situation where you make an initial request and
975  // the request times out. If you make the request again with the same request
976  // ID, the server can check if original operation with the same request ID
977  // was received, and if so, will ignore the second request. This prevents
978  // clients from accidentally creating duplicate commitments.
979  //
980  // The request ID must be a valid UUID with the exception that zero UUID is
981  // not supported (00000000-0000-0000-0000-000000000000).
982  string request_id = 4 [(google.api.field_behavior) = OPTIONAL];
983}
984
985// Message for deleting a OrchestrationCluster.
986message DeleteOrchestrationClusterRequest {
987  // Required. Name of the resource
988  string name = 1 [
989    (google.api.field_behavior) = REQUIRED,
990    (google.api.resource_reference) = {
991      type: "telcoautomation.googleapis.com/OrchestrationCluster"
992    }
993  ];
994
995  // Optional. An optional request ID to identify requests. Specify a unique
996  // request ID so that if you must retry your request, the server will know to
997  // ignore the request if it has already been completed. The server will
998  // guarantee that for at least 60 minutes after the first request.
999  //
1000  // For example, consider a situation where you make an initial request and
1001  // the request times out. If you make the request again with the same request
1002  // ID, the server can check if original operation with the same request ID
1003  // was received, and if so, will ignore the second request. This prevents
1004  // clients from accidentally creating duplicate commitments.
1005  //
1006  // The request ID must be a valid UUID with the exception that zero UUID is
1007  // not supported (00000000-0000-0000-0000-000000000000).
1008  string request_id = 2 [(google.api.field_behavior) = OPTIONAL];
1009}
1010
1011// Message for requesting list of EdgeSlms
1012message ListEdgeSlmsRequest {
1013  // Required. Parent value for ListEdgeSlmsRequest
1014  string parent = 1 [
1015    (google.api.field_behavior) = REQUIRED,
1016    (google.api.resource_reference) = {
1017      child_type: "telcoautomation.googleapis.com/EdgeSlm"
1018    }
1019  ];
1020
1021  // Requested page size. Server may return fewer items than requested.
1022  // If unspecified, server will pick an appropriate default.
1023  int32 page_size = 2;
1024
1025  // A token identifying a page of results the server should return.
1026  string page_token = 3;
1027
1028  // Filtering results
1029  string filter = 4;
1030
1031  // Hint for how to order the results
1032  string order_by = 5;
1033}
1034
1035// Message for response to listing EdgeSlms.
1036message ListEdgeSlmsResponse {
1037  // The list of EdgeSlm
1038  repeated EdgeSlm edge_slms = 1;
1039
1040  // A token identifying a page of results the server should return.
1041  string next_page_token = 2;
1042
1043  // Locations that could not be reached.
1044  repeated string unreachable = 3;
1045}
1046
1047// Message for getting a EdgeSlm.
1048message GetEdgeSlmRequest {
1049  // Required. Name of the resource
1050  string name = 1 [
1051    (google.api.field_behavior) = REQUIRED,
1052    (google.api.resource_reference) = {
1053      type: "telcoautomation.googleapis.com/EdgeSlm"
1054    }
1055  ];
1056}
1057
1058// Message for creating a EdgeSlm.
1059message CreateEdgeSlmRequest {
1060  // Required. Value for parent.
1061  string parent = 1 [
1062    (google.api.field_behavior) = REQUIRED,
1063    (google.api.resource_reference) = {
1064      child_type: "telcoautomation.googleapis.com/EdgeSlm"
1065    }
1066  ];
1067
1068  // Required. Id of the requesting object
1069  // If auto-generating Id server-side, remove this field and
1070  // edge_slm_id from the method_signature of Create RPC
1071  string edge_slm_id = 2 [(google.api.field_behavior) = REQUIRED];
1072
1073  // Required. The resource being created
1074  EdgeSlm edge_slm = 3 [(google.api.field_behavior) = REQUIRED];
1075
1076  // Optional. An optional request ID to identify requests. Specify a unique
1077  // request ID so that if you must retry your request, the server will know to
1078  // ignore the request if it has already been completed. The server will
1079  // guarantee that for at least 60 minutes since the first request.
1080  //
1081  // For example, consider a situation where you make an initial request and
1082  // the request times out. If you make the request again with the same request
1083  // ID, the server can check if original operation with the same request ID
1084  // was received, and if so, will ignore the second request. This prevents
1085  // clients from accidentally creating duplicate commitments.
1086  //
1087  // The request ID must be a valid UUID with the exception that zero UUID is
1088  // not supported (00000000-0000-0000-0000-000000000000).
1089  string request_id = 4 [(google.api.field_behavior) = OPTIONAL];
1090}
1091
1092// Message for deleting a EdgeSlm.
1093message DeleteEdgeSlmRequest {
1094  // Required. Name of the resource
1095  string name = 1 [
1096    (google.api.field_behavior) = REQUIRED,
1097    (google.api.resource_reference) = {
1098      type: "telcoautomation.googleapis.com/EdgeSlm"
1099    }
1100  ];
1101
1102  // Optional. An optional request ID to identify requests. Specify a unique
1103  // request ID so that if you must retry your request, the server will know to
1104  // ignore the request if it has already been completed. The server will
1105  // guarantee that for at least 60 minutes after the first request.
1106  //
1107  // For example, consider a situation where you make an initial request and
1108  // the request times out. If you make the request again with the same request
1109  // ID, the server can check if original operation with the same request ID
1110  // was received, and if so, will ignore the second request. This prevents
1111  // clients from accidentally creating duplicate commitments.
1112  //
1113  // The request ID must be a valid UUID with the exception that zero UUID is
1114  // not supported (00000000-0000-0000-0000-000000000000).
1115  string request_id = 2 [(google.api.field_behavior) = OPTIONAL];
1116}
1117
1118// Request object for `CreateBlueprint`.
1119message CreateBlueprintRequest {
1120  // Required. The name of parent resource.
1121  // Format should be -
1122  // "projects/{project_id}/locations/{location_name}/orchestrationClusters/{orchestration_cluster}".
1123  string parent = 1 [
1124    (google.api.field_behavior) = REQUIRED,
1125    (google.api.resource_reference) = {
1126      child_type: "telcoautomation.googleapis.com/Blueprint"
1127    }
1128  ];
1129
1130  // Optional. The name of the blueprint.
1131  string blueprint_id = 2 [(google.api.field_behavior) = OPTIONAL];
1132
1133  // Required. The `Blueprint` to create.
1134  Blueprint blueprint = 3 [(google.api.field_behavior) = REQUIRED];
1135}
1136
1137// Request object for `UpdateBlueprint`.
1138message UpdateBlueprintRequest {
1139  // Required. The `blueprint` to update.
1140  Blueprint blueprint = 1 [(google.api.field_behavior) = REQUIRED];
1141
1142  // Required. Update mask is used to specify the fields to be overwritten in
1143  // the `blueprint` resource by the update.
1144  google.protobuf.FieldMask update_mask = 2
1145      [(google.api.field_behavior) = REQUIRED];
1146}
1147
1148// Request object for `GetBlueprint`.
1149message GetBlueprintRequest {
1150  // Required. The name of the blueprint.
1151  // Case 1: If the name provided in the request is
1152  // {blueprint_id}@{revision_id}, then the revision with revision_id will be
1153  // returned. Case 2: If the name provided in the request is {blueprint}, then
1154  // the current state of the blueprint is returned.
1155  string name = 1 [
1156    (google.api.field_behavior) = REQUIRED,
1157    (google.api.resource_reference) = {
1158      type: "telcoautomation.googleapis.com/Blueprint"
1159    }
1160  ];
1161
1162  // Optional. Defines the type of view of the blueprint.
1163  // When field is not present BLUEPRINT_VIEW_BASIC is considered as default.
1164  BlueprintView view = 2 [(google.api.field_behavior) = OPTIONAL];
1165}
1166
1167// Request object for `DeleteBlueprint`.
1168message DeleteBlueprintRequest {
1169  // Required. The name of blueprint to delete.
1170  // Blueprint name should be in the format {blueprint_id}, if
1171  // {blueprint_id}@{revision_id} is passed then the API throws invalid
1172  // argument.
1173  string name = 1 [
1174    (google.api.field_behavior) = REQUIRED,
1175    (google.api.resource_reference) = {
1176      type: "telcoautomation.googleapis.com/Blueprint"
1177    }
1178  ];
1179}
1180
1181// Request object for `ListBlueprints`.
1182message ListBlueprintsRequest {
1183  // Required. The name of parent orchestration cluster resource.
1184  // Format should be -
1185  // "projects/{project_id}/locations/{location_name}/orchestrationClusters/{orchestration_cluster}".
1186  string parent = 1 [
1187    (google.api.field_behavior) = REQUIRED,
1188    (google.api.resource_reference) = {
1189      child_type: "telcoautomation.googleapis.com/Blueprint"
1190    }
1191  ];
1192
1193  // Optional. Filtering only supports equality on blueprint state.
1194  // It should be in the form: "state = DRAFT". `OR` operator can be used to
1195  // get response for multiple states. e.g. "state = DRAFT OR state = PROPOSED".
1196  string filter = 4 [(google.api.field_behavior) = OPTIONAL];
1197
1198  // Optional. The maximum number of blueprints to return per page.
1199  int32 page_size = 2 [(google.api.field_behavior) = OPTIONAL];
1200
1201  // Optional. The page token, received from a previous ListBlueprints call.
1202  // It can be provided to retrieve the subsequent page.
1203  string page_token = 3 [(google.api.field_behavior) = OPTIONAL];
1204}
1205
1206// Response object for `ListBlueprints`.
1207message ListBlueprintsResponse {
1208  // The list of requested blueprints.
1209  repeated Blueprint blueprints = 1;
1210
1211  // A token that can be sent as `page_token` to retrieve the next page.
1212  // If this field is omitted, there are no subsequent pages.
1213  string next_page_token = 2;
1214}
1215
1216// Request object for `ApproveBlueprint`.
1217message ApproveBlueprintRequest {
1218  // Required. The name of the blueprint to approve. The blueprint must be in
1219  // Proposed state. A new revision is committed on approval.
1220  string name = 1 [
1221    (google.api.field_behavior) = REQUIRED,
1222    (google.api.resource_reference) = {
1223      type: "telcoautomation.googleapis.com/Blueprint"
1224    }
1225  ];
1226}
1227
1228// Request object for `ProposeBlueprint`.
1229message ProposeBlueprintRequest {
1230  // Required. The name of the blueprint being proposed.
1231  string name = 1 [
1232    (google.api.field_behavior) = REQUIRED,
1233    (google.api.resource_reference) = {
1234      type: "telcoautomation.googleapis.com/Blueprint"
1235    }
1236  ];
1237}
1238
1239// Request object for `RejectBlueprint`.
1240message RejectBlueprintRequest {
1241  // Required. The name of the blueprint being rejected.
1242  string name = 1 [
1243    (google.api.field_behavior) = REQUIRED,
1244    (google.api.resource_reference) = {
1245      type: "telcoautomation.googleapis.com/Blueprint"
1246    }
1247  ];
1248}
1249
1250// Request object for `ListBlueprintRevisions`.
1251message ListBlueprintRevisionsRequest {
1252  // Required. The name of the blueprint to list revisions for.
1253  string name = 1 [
1254    (google.api.field_behavior) = REQUIRED,
1255    (google.api.resource_reference) = {
1256      type: "telcoautomation.googleapis.com/Blueprint"
1257    }
1258  ];
1259
1260  // The maximum number of revisions to return per page.
1261  int32 page_size = 2;
1262
1263  // The page token, received from a previous ListBlueprintRevisions call
1264  // It can be provided to retrieve the subsequent page.
1265  string page_token = 3;
1266}
1267
1268// Response object for `ListBlueprintRevisions`.
1269message ListBlueprintRevisionsResponse {
1270  // The revisions of the blueprint.
1271  repeated Blueprint blueprints = 1;
1272
1273  // A token that can be sent as `page_token` to retrieve the next page.
1274  // If this field is omitted, there are no subsequent pages.
1275  string next_page_token = 2;
1276}
1277
1278// Request object for `SearchBlueprintRevisions`.
1279message SearchBlueprintRevisionsRequest {
1280  // Required. The name of parent orchestration cluster resource.
1281  // Format should be -
1282  // "projects/{project_id}/locations/{location_name}/orchestrationClusters/{orchestration_cluster}".
1283  string parent = 1 [
1284    (google.api.field_behavior) = REQUIRED,
1285    (google.api.resource_reference) = {
1286      child_type: "telcoautomation.googleapis.com/Blueprint"
1287    }
1288  ];
1289
1290  // Required. Supported queries:
1291  // 1. ""                       : Lists all revisions across all blueprints.
1292  // 2. "latest=true"            : Lists latest revisions across all blueprints.
1293  // 3. "name={name}"            : Lists all revisions of blueprint with name
1294  // {name}.
1295  // 4. "name={name} latest=true": Lists latest revision of blueprint with name
1296  // {name}
1297  string query = 2 [(google.api.field_behavior) = REQUIRED];
1298
1299  // Optional. The maximum number of blueprints revisions to return per page.
1300  // max page size = 100, default page size = 20.
1301  int32 page_size = 3 [(google.api.field_behavior) = OPTIONAL];
1302
1303  // Optional. The page token, received from a previous search call.
1304  // It can be provided to retrieve the subsequent page.
1305  string page_token = 4 [(google.api.field_behavior) = OPTIONAL];
1306}
1307
1308// Response object for `SearchBlueprintRevisions`.
1309message SearchBlueprintRevisionsResponse {
1310  // The list of requested blueprint revisions.
1311  repeated Blueprint blueprints = 1;
1312
1313  // A token that can be sent as `page_token` to retrieve the next page.
1314  // If this field is omitted, there are no subsequent pages.
1315  string next_page_token = 2;
1316}
1317
1318// Request object for `DiscardBlueprintChanges`.
1319message DiscardBlueprintChangesRequest {
1320  // Required. The name of the blueprint of which changes are being discarded.
1321  string name = 1 [
1322    (google.api.field_behavior) = REQUIRED,
1323    (google.api.resource_reference) = {
1324      type: "telcoautomation.googleapis.com/Blueprint"
1325    }
1326  ];
1327}
1328
1329// Response object for `DiscardBlueprintChanges`.
1330message DiscardBlueprintChangesResponse {}
1331
1332// Request object for `ListPublicBlueprints`.
1333message ListPublicBlueprintsRequest {
1334  // Required. Parent value of public blueprint.
1335  // Format should be -
1336  // "projects/{project_id}/locations/{location_name}".
1337  string parent = 1 [
1338    (google.api.field_behavior) = REQUIRED,
1339    (google.api.resource_reference) = {
1340      child_type: "telcoautomation.googleapis.com/PublicBlueprint"
1341    }
1342  ];
1343
1344  // Optional. Requested page size. Server may return fewer items than
1345  // requested. If unspecified, server will pick an appropriate default.
1346  int32 page_size = 2 [(google.api.field_behavior) = OPTIONAL];
1347
1348  // Optional. A token identifying a page of results the server should return.
1349  string page_token = 3 [(google.api.field_behavior) = OPTIONAL];
1350}
1351
1352// Response object for `ListPublicBlueprints`.
1353message ListPublicBlueprintsResponse {
1354  // The list of public blueprints to return.
1355  repeated PublicBlueprint public_blueprints = 1;
1356
1357  // Output only. A token identifying a page of results the server should
1358  // return.
1359  string next_page_token = 2 [(google.api.field_behavior) = OUTPUT_ONLY];
1360}
1361
1362// Request object for `GetPublicBlueprint`.
1363message GetPublicBlueprintRequest {
1364  // Required. The name of the public blueprint.
1365  string name = 1 [
1366    (google.api.field_behavior) = REQUIRED,
1367    (google.api.resource_reference) = {
1368      type: "telcoautomation.googleapis.com/PublicBlueprint"
1369    }
1370  ];
1371}
1372
1373// Request object for `CreateDeployment`.
1374message CreateDeploymentRequest {
1375  // Required. The name of parent resource.
1376  // Format should be -
1377  // "projects/{project_id}/locations/{location_name}/orchestrationClusters/{orchestration_cluster}".
1378  string parent = 1 [
1379    (google.api.field_behavior) = REQUIRED,
1380    (google.api.resource_reference) = {
1381      child_type: "telcoautomation.googleapis.com/Deployment"
1382    }
1383  ];
1384
1385  // Optional. The name of the deployment.
1386  string deployment_id = 2 [(google.api.field_behavior) = OPTIONAL];
1387
1388  // Required. The `Deployment` to create.
1389  Deployment deployment = 3 [(google.api.field_behavior) = REQUIRED];
1390}
1391
1392// Request object for `UpdateDeployment`.
1393message UpdateDeploymentRequest {
1394  // Required. The `deployment` to update.
1395  Deployment deployment = 1 [(google.api.field_behavior) = REQUIRED];
1396
1397  // Required. Update mask is used to specify the fields to be overwritten in
1398  // the `deployment` resource by the update.
1399  google.protobuf.FieldMask update_mask = 2
1400      [(google.api.field_behavior) = REQUIRED];
1401}
1402
1403// Request object for `GetDeployment`.
1404message GetDeploymentRequest {
1405  // Required. The name of the deployment.
1406  // Case 1: If the name provided in the request is
1407  // {deployment_id}@{revision_id}, then the revision with revision_id will be
1408  // returned.
1409  // Case 2: If the name provided in the request is {deployment}, then
1410  // the current state of the deployment is returned.
1411  string name = 1 [
1412    (google.api.field_behavior) = REQUIRED,
1413    (google.api.resource_reference) = {
1414      type: "telcoautomation.googleapis.com/Deployment"
1415    }
1416  ];
1417
1418  // Optional. Defines the type of view of the deployment.
1419  // When field is not present VIEW_BASIC is considered as default.
1420  DeploymentView view = 2 [(google.api.field_behavior) = OPTIONAL];
1421}
1422
1423// Request object for `RemoveDeployment`.
1424message RemoveDeploymentRequest {
1425  // Required. The name of deployment to initiate delete.
1426  string name = 1 [
1427    (google.api.field_behavior) = REQUIRED,
1428    (google.api.resource_reference) = {
1429      type: "telcoautomation.googleapis.com/Deployment"
1430    }
1431  ];
1432}
1433
1434// Request object for `ListDeployments`.
1435message ListDeploymentsRequest {
1436  // Required. The name of parent orchestration cluster resource.
1437  // Format should be -
1438  // "projects/{project_id}/locations/{location_name}/orchestrationClusters/{orchestration_cluster}".
1439  string parent = 1 [
1440    (google.api.field_behavior) = REQUIRED,
1441    (google.api.resource_reference) = {
1442      child_type: "telcoautomation.googleapis.com/Deployment"
1443    }
1444  ];
1445
1446  // Optional. Filtering only supports equality on deployment state.
1447  // It should be in the form: "state = DRAFT". `OR` operator can be used to
1448  // get response for multiple states. e.g. "state = DRAFT OR state = APPLIED".
1449  string filter = 4 [(google.api.field_behavior) = OPTIONAL];
1450
1451  // Optional. The maximum number of deployments to return per page.
1452  int32 page_size = 2 [(google.api.field_behavior) = OPTIONAL];
1453
1454  // Optional. The page token, received from a previous ListDeployments call.
1455  // It can be provided to retrieve the subsequent page.
1456  string page_token = 3 [(google.api.field_behavior) = OPTIONAL];
1457}
1458
1459// Response object for `ListDeployments`.
1460message ListDeploymentsResponse {
1461  // The list of requested deployments.
1462  repeated Deployment deployments = 1;
1463
1464  // A token that can be sent as `page_token` to retrieve the next page.
1465  // If this field is omitted, there are no subsequent pages.
1466  string next_page_token = 2;
1467}
1468
1469// Request for listing all revisions of a deployment.
1470message ListDeploymentRevisionsRequest {
1471  // Required. The name of the deployment to list revisions for.
1472  string name = 1 [
1473    (google.api.field_behavior) = REQUIRED,
1474    (google.api.resource_reference) = {
1475      type: "telcoautomation.googleapis.com/Deployment"
1476    }
1477  ];
1478
1479  // Optional. The maximum number of revisions to return per page.
1480  int32 page_size = 2 [(google.api.field_behavior) = OPTIONAL];
1481
1482  // Optional. The page token, received from a previous ListDeploymentRevisions
1483  // call Provide this to retrieve the subsequent page.
1484  string page_token = 3 [(google.api.field_behavior) = OPTIONAL];
1485}
1486
1487// List of deployment revisions for a given deployment.
1488message ListDeploymentRevisionsResponse {
1489  // The revisions of the deployment.
1490  repeated Deployment deployments = 1;
1491
1492  // A token that can be sent as `page_token` to retrieve the next page.
1493  // If this field is omitted, there are no subsequent pages.
1494  string next_page_token = 2;
1495}
1496
1497// Request object for `SearchDeploymentRevisions`.
1498message SearchDeploymentRevisionsRequest {
1499  // Required. The name of parent orchestration cluster resource.
1500  // Format should be -
1501  // "projects/{project_id}/locations/{location_name}/orchestrationClusters/{orchestration_cluster}".
1502  string parent = 1 [
1503    (google.api.field_behavior) = REQUIRED,
1504    (google.api.resource_reference) = {
1505      child_type: "telcoautomation.googleapis.com/Blueprint"
1506    }
1507  ];
1508
1509  // Required. Supported queries:
1510  // 1. ""                       : Lists all revisions across all deployments.
1511  // 2. "latest=true"            : Lists latest revisions across all
1512  // deployments.
1513  // 3. "name={name}"            : Lists all revisions of deployment with name
1514  // {name}.
1515  // 4. "name={name} latest=true": Lists latest revision of deployment with name
1516  // {name}
1517  string query = 2 [(google.api.field_behavior) = REQUIRED];
1518
1519  // Optional. The maximum number of deployment revisions to return per page.
1520  // max page size = 100, default page size = 20.
1521  int32 page_size = 3 [(google.api.field_behavior) = OPTIONAL];
1522
1523  // Optional. The page token, received from a previous search call.
1524  // It can be provided to retrieve the subsequent page.
1525  string page_token = 4 [(google.api.field_behavior) = OPTIONAL];
1526}
1527
1528// Response object for `SearchDeploymentRevisions`.
1529message SearchDeploymentRevisionsResponse {
1530  // The list of requested deployment revisions.
1531  repeated Deployment deployments = 1;
1532
1533  // A token that can be sent as `page_token` to retrieve the next page.
1534  // If this field is omitted, there are no subsequent pages.
1535  string next_page_token = 2;
1536}
1537
1538// Request object for `DiscardDeploymentChanges`.
1539message DiscardDeploymentChangesRequest {
1540  // Required. The name of the deployment of which changes are being discarded.
1541  string name = 1 [
1542    (google.api.field_behavior) = REQUIRED,
1543    (google.api.resource_reference) = {
1544      type: "telcoautomation.googleapis.com/Deployment"
1545    }
1546  ];
1547}
1548
1549// Response object for `DiscardDeploymentChanges`.
1550message DiscardDeploymentChangesResponse {}
1551
1552// Request object for `ApplyDeployment`. The resources in given deployment
1553// gets applied to Orchestration Cluster. A new revision is created when a
1554// deployment is applied.
1555message ApplyDeploymentRequest {
1556  // Required. The name of the deployment to apply to orchestration cluster.
1557  string name = 1 [
1558    (google.api.field_behavior) = REQUIRED,
1559    (google.api.resource_reference) = {
1560      type: "telcoautomation.googleapis.com/Deployment"
1561    }
1562  ];
1563}
1564
1565// Request object for `ComputeDeploymentStatus`.
1566message ComputeDeploymentStatusRequest {
1567  // Required. The name of the deployment without revisionID.
1568  string name = 1 [
1569    (google.api.field_behavior) = REQUIRED,
1570    (google.api.resource_reference) = {
1571      type: "telcoautomation.googleapis.com/Deployment"
1572    }
1573  ];
1574}
1575
1576// Response object for `ComputeDeploymentStatus`.
1577message ComputeDeploymentStatusResponse {
1578  // The name of the deployment.
1579  string name = 1;
1580
1581  // Output only. Aggregated status of a deployment.
1582  Status aggregated_status = 2 [(google.api.field_behavior) = OUTPUT_ONLY];
1583
1584  // Output only. Resource level status details in deployments.
1585  repeated ResourceStatus resource_statuses = 3
1586      [(google.api.field_behavior) = OUTPUT_ONLY];
1587}
1588
1589// Request object for `RollbackDeployment`.
1590message RollbackDeploymentRequest {
1591  // Required. Name of the deployment.
1592  string name = 1 [
1593    (google.api.field_behavior) = REQUIRED,
1594    (google.api.resource_reference) = {
1595      type: "telcoautomation.googleapis.com/Deployment"
1596    }
1597  ];
1598
1599  // Required. The revision id of deployment to roll back to.
1600  string revision_id = 2 [(google.api.field_behavior) = REQUIRED];
1601}
1602
1603// Represents the metadata of the long-running operation.
1604message OperationMetadata {
1605  // Output only. The time the operation was created.
1606  google.protobuf.Timestamp create_time = 1
1607      [(google.api.field_behavior) = OUTPUT_ONLY];
1608
1609  // Output only. The time the operation finished running.
1610  google.protobuf.Timestamp end_time = 2
1611      [(google.api.field_behavior) = OUTPUT_ONLY];
1612
1613  // Output only. Server-defined resource path for the target of the operation.
1614  string target = 3 [(google.api.field_behavior) = OUTPUT_ONLY];
1615
1616  // Output only. Name of the verb executed by the operation.
1617  string verb = 4 [(google.api.field_behavior) = OUTPUT_ONLY];
1618
1619  // Output only. Human-readable status of the operation, if any.
1620  string status_message = 5 [(google.api.field_behavior) = OUTPUT_ONLY];
1621
1622  // Output only. Identifies whether the user has requested cancellation
1623  // of the operation. Operations that have been cancelled successfully
1624  // have [Operation.error][] value with a
1625  // [google.rpc.Status.code][google.rpc.Status.code] of 1, corresponding to
1626  // `Code.CANCELLED`.
1627  bool requested_cancellation = 6 [(google.api.field_behavior) = OUTPUT_ONLY];
1628
1629  // Output only. API version used to start the operation.
1630  string api_version = 7 [(google.api.field_behavior) = OUTPUT_ONLY];
1631}
1632
1633// Request object for `GetHydratedDeployment`.
1634message GetHydratedDeploymentRequest {
1635  // Required. Name of the hydrated deployment.
1636  string name = 1 [
1637    (google.api.field_behavior) = REQUIRED,
1638    (google.api.resource_reference) = {
1639      type: "telcoautomation.googleapis.com/HydratedDeployment"
1640    }
1641  ];
1642}
1643
1644// Request object for `ListHydratedDeployments`.
1645message ListHydratedDeploymentsRequest {
1646  // Required. The deployment managing the hydrated deployments.
1647  string parent = 1 [
1648    (google.api.field_behavior) = REQUIRED,
1649    (google.api.resource_reference) = {
1650      child_type: "telcoautomation.googleapis.com/HydratedDeployment"
1651    }
1652  ];
1653
1654  // Optional. The maximum number of hydrated deployments to return. The service
1655  // may return fewer than this value. If unspecified, at most 50 hydrated
1656  // deployments will be returned. The maximum value is 1000. Values above 1000
1657  // will be set to 1000.
1658  int32 page_size = 2 [(google.api.field_behavior) = OPTIONAL];
1659
1660  // Optional. The page token, received from a previous ListHydratedDeployments
1661  // call. Provide this to retrieve the subsequent page.
1662  string page_token = 3 [(google.api.field_behavior) = OPTIONAL];
1663}
1664
1665// Response object for `ListHydratedDeployments`.
1666message ListHydratedDeploymentsResponse {
1667  // The list of hydrated deployments.
1668  repeated HydratedDeployment hydrated_deployments = 1;
1669
1670  // A token that can be sent as `page_token` to retrieve the next page.
1671  // If this field is omitted, there are no subsequent pages.
1672  string next_page_token = 2;
1673}
1674
1675// Request object for `UpdateHydratedDeployment`.
1676message UpdateHydratedDeploymentRequest {
1677  // Required. The hydrated deployment to update.
1678  HydratedDeployment hydrated_deployment = 1
1679      [(google.api.field_behavior) = REQUIRED];
1680
1681  // Required. The list of fields to update. Update mask supports a special
1682  // value `*` which fully replaces (equivalent to PUT) the resource provided.
1683  google.protobuf.FieldMask update_mask = 2
1684      [(google.api.field_behavior) = REQUIRED];
1685}
1686
1687// Request for applying a hydrated deployment.
1688message ApplyHydratedDeploymentRequest {
1689  // Required. The name of the hydrated deployment to apply.
1690  string name = 1 [
1691    (google.api.field_behavior) = REQUIRED,
1692    (google.api.resource_reference) = {
1693      type: "telcoautomation.googleapis.com/HydratedDeployment"
1694    }
1695  ];
1696}
1697
1698// Configuration of the cluster management
1699message ManagementConfig {
1700  // The configuration can be one of StandardManagementConfig
1701  // and FullManagementConfig
1702  oneof oneof_config {
1703    // Configuration of the standard (GKE) cluster management
1704    StandardManagementConfig standard_management_config = 1;
1705
1706    // Configuration of the full (Autopilot) cluster management. Full cluster
1707    // management is a preview feature.
1708    FullManagementConfig full_management_config = 2;
1709  }
1710}
1711
1712// Configuration of the standard (GKE) cluster management.
1713message StandardManagementConfig {
1714  // Optional. Name of the VPC Network to put the GKE cluster and nodes in. The
1715  // VPC will be created if it doesn't exist.
1716  string network = 1 [(google.api.field_behavior) = OPTIONAL];
1717
1718  // Optional. Specifies the subnet that the interface will be part of. Network
1719  // key must be specified and the subnet must be a subnetwork of the specified
1720  // network.
1721  string subnet = 2 [(google.api.field_behavior) = OPTIONAL];
1722
1723  // Optional. The /28 network that the masters will use. It should be free
1724  // within the network.
1725  string master_ipv4_cidr_block = 3 [(google.api.field_behavior) = OPTIONAL];
1726
1727  // Optional. The IP address range for the cluster pod IPs. Set to blank to
1728  // have a range chosen with the default size. Set to /netmask (e.g. /14) to
1729  // have a range chosen with a specific netmask. Set to a CIDR notation
1730  // (e.g. 10.96.0.0/14) from the RFC-1918 private networks (e.g. 10.0.0.0/8,
1731  // 172.16.0.0/12, 192.168.0.0/16) to pick a specific range to use.
1732  string cluster_cidr_block = 4 [(google.api.field_behavior) = OPTIONAL];
1733
1734  // Optional. The IP address range for the cluster service IPs. Set to blank to
1735  // have a range chosen with the default size. Set to /netmask (e.g. /14) to
1736  // have a range chosen with a specific netmask. Set to a CIDR notation (e.g.
1737  // 10.96.0.0/14) from the RFC-1918 private networks (e.g. 10.0.0.0/8,
1738  // 172.16.0.0/12, 192.168.0.0/16) to pick a specific range to use.
1739  string services_cidr_block = 5 [(google.api.field_behavior) = OPTIONAL];
1740
1741  // Optional. The name of the existing secondary range in the cluster's
1742  // subnetwork to use for pod IP addresses. Alternatively, cluster_cidr_block
1743  // can be used to automatically create a GKE-managed one.
1744  string cluster_named_range = 6 [(google.api.field_behavior) = OPTIONAL];
1745
1746  // Optional. The name of the existing secondary range in the cluster's
1747  // subnetwork to use for service ClusterIPs. Alternatively,
1748  // services_cidr_block can be used to automatically create a GKE-managed one.
1749  string services_named_range = 7 [(google.api.field_behavior) = OPTIONAL];
1750
1751  // Optional. Master Authorized Network that supports multiple CIDR blocks.
1752  // Allows access to the k8s master from multiple blocks. It cannot be set at
1753  // the same time with the field man_block.
1754  MasterAuthorizedNetworksConfig master_authorized_networks_config = 8
1755      [(google.api.field_behavior) = OPTIONAL];
1756}
1757
1758// Configuration of the full (Autopilot) cluster management
1759message FullManagementConfig {
1760  // Optional. Name of the VPC Network to put the GKE cluster and nodes in. The
1761  // VPC will be created if it doesn't exist.
1762  string network = 1 [(google.api.field_behavior) = OPTIONAL];
1763
1764  // Optional. Specifies the subnet that the interface will be part of. Network
1765  // key must be specified and the subnet must be a subnetwork of the specified
1766  // network.
1767  string subnet = 2 [(google.api.field_behavior) = OPTIONAL];
1768
1769  // Optional. The /28 network that the masters will use.
1770  string master_ipv4_cidr_block = 3 [(google.api.field_behavior) = OPTIONAL];
1771
1772  // Optional. The IP address range for the cluster pod IPs. Set to blank to
1773  // have a range chosen with the default size. Set to /netmask (e.g. /14) to
1774  // have a range chosen with a specific netmask. Set to a CIDR notation
1775  // (e.g. 10.96.0.0/14) from the RFC-1918 private networks (e.g. 10.0.0.0/8,
1776  // 172.16.0.0/12, 192.168.0.0/16) to pick a specific range to use.
1777  string cluster_cidr_block = 4 [(google.api.field_behavior) = OPTIONAL];
1778
1779  // Optional. The IP address range for the cluster service IPs. Set to blank to
1780  // have a range chosen with the default size. Set to /netmask (e.g. /14) to
1781  // have a range chosen with a specific netmask. Set to a CIDR notation (e.g.
1782  // 10.96.0.0/14) from the RFC-1918 private networks (e.g. 10.0.0.0/8,
1783  // 172.16.0.0/12, 192.168.0.0/16) to pick a specific range to use.
1784  string services_cidr_block = 5 [(google.api.field_behavior) = OPTIONAL];
1785
1786  // Optional. The name of the existing secondary range in the cluster's
1787  // subnetwork to use for pod IP addresses. Alternatively, cluster_cidr_block
1788  // can be used to automatically create a GKE-managed one.
1789  string cluster_named_range = 6 [(google.api.field_behavior) = OPTIONAL];
1790
1791  // Optional. The name of the existing secondary range in the cluster's
1792  // subnetwork to use for service ClusterIPs. Alternatively,
1793  // services_cidr_block can be used to automatically create a GKE-managed one.
1794  string services_named_range = 7 [(google.api.field_behavior) = OPTIONAL];
1795
1796  // Optional. Master Authorized Network that supports multiple CIDR blocks.
1797  // Allows access to the k8s master from multiple blocks. It cannot be set at
1798  // the same time with the field man_block.
1799  MasterAuthorizedNetworksConfig master_authorized_networks_config = 8
1800      [(google.api.field_behavior) = OPTIONAL];
1801}
1802
1803// Configuration of the Master Authorized Network that support multiple CIDRs
1804message MasterAuthorizedNetworksConfig {
1805  // CidrBlock contains an optional name and one CIDR block.
1806  message CidrBlock {
1807    // Optional. display_name is an optional field for users to identify CIDR
1808    // blocks.
1809    string display_name = 1 [(google.api.field_behavior) = OPTIONAL];
1810
1811    // Optional. cidr_block must be specified in CIDR notation when using
1812    // master_authorized_networks_config. Currently, the user could still use
1813    // the deprecated man_block field, so this field is currently optional, but
1814    // will be required in the future.
1815    string cidr_block = 2 [(google.api.field_behavior) = OPTIONAL];
1816  }
1817
1818  // Optional. cidr_blocks define up to 50 external networks that could access
1819  // Kubernetes master through HTTPS.
1820  repeated CidrBlock cidr_blocks = 1 [(google.api.field_behavior) = OPTIONAL];
1821}
1822
1823// File represents a yaml file present in a blueprint's package.
1824message File {
1825  // Required. Path of the file in package.
1826  // e.g. `gdce/v1/cluster.yaml`
1827  string path = 1 [(google.api.field_behavior) = REQUIRED];
1828
1829  // Optional. The contents of a file in string format.
1830  string content = 2 [(google.api.field_behavior) = OPTIONAL];
1831
1832  // Optional. Signifies whether a file is marked for deletion.
1833  bool deleted = 3 [(google.api.field_behavior) = OPTIONAL];
1834
1835  // Optional. Indicates whether changes are allowed to a file. If the field is
1836  // not set, the file cannot be edited.
1837  bool editable = 4 [(google.api.field_behavior) = OPTIONAL];
1838}
1839
1840// Status of a deployment resource.
1841message ResourceStatus {
1842  // Name of the resource.
1843  string name = 1;
1844
1845  // Namespace of the resource.
1846  string resource_namespace = 2;
1847
1848  // Group to which the resource belongs to.
1849  string group = 3;
1850
1851  // Version of the resource.
1852  string version = 4;
1853
1854  // Kind of the resource.
1855  string kind = 5;
1856
1857  // Output only. Resource type.
1858  ResourceType resource_type = 6 [(google.api.field_behavior) = OUTPUT_ONLY];
1859
1860  // Output only. Status of the resource.
1861  Status status = 7 [(google.api.field_behavior) = OUTPUT_ONLY];
1862
1863  // Output only. Detailed status of NFDeploy.
1864  NFDeployStatus nf_deploy_status = 8
1865      [(google.api.field_behavior) = OUTPUT_ONLY];
1866}
1867
1868// Deployment status of NFDeploy.
1869message NFDeployStatus {
1870  // Output only. Total number of NFs targeted by this deployment
1871  int32 targeted_nfs = 1 [(google.api.field_behavior) = OUTPUT_ONLY];
1872
1873  // Output only. Total number of NFs targeted by this deployment with a Ready
1874  // Condition set.
1875  int32 ready_nfs = 2 [(google.api.field_behavior) = OUTPUT_ONLY];
1876
1877  // Output only. Per-Site Status.
1878  repeated NFDeploySiteStatus sites = 3
1879      [(google.api.field_behavior) = OUTPUT_ONLY];
1880}
1881
1882// Per-Site Status.
1883message NFDeploySiteStatus {
1884  // Output only. Site id.
1885  string site = 1 [(google.api.field_behavior) = OUTPUT_ONLY];
1886
1887  // Output only. If true, the Site Deletion is in progress.
1888  bool pending_deletion = 2 [(google.api.field_behavior) = OUTPUT_ONLY];
1889
1890  // Output only. Hydration status.
1891  HydrationStatus hydration = 3 [(google.api.field_behavior) = OUTPUT_ONLY];
1892
1893  // Output only. Workload status.
1894  WorkloadStatus workload = 4 [(google.api.field_behavior) = OUTPUT_ONLY];
1895}
1896
1897// Hydration status.
1898message HydrationStatus {
1899  // Output only. SiteVersion Hydration is targeting.
1900  SiteVersion site_version = 1 [(google.api.field_behavior) = OUTPUT_ONLY];
1901
1902  // Output only. Status.
1903  string status = 2 [(google.api.field_behavior) = OUTPUT_ONLY];
1904}
1905
1906// SiteVersion Hydration is targeting.
1907message SiteVersion {
1908  // Output only. NF vendor.
1909  string nf_vendor = 1 [(google.api.field_behavior) = OUTPUT_ONLY];
1910
1911  // Output only. NF vendor type.
1912  string nf_type = 2 [(google.api.field_behavior) = OUTPUT_ONLY];
1913
1914  // Output only. NF version.
1915  string nf_version = 3 [(google.api.field_behavior) = OUTPUT_ONLY];
1916}
1917
1918// Workload status.
1919message WorkloadStatus {
1920  // Output only. SiteVersion running in the workload cluster.
1921  SiteVersion site_version = 1 [(google.api.field_behavior) = OUTPUT_ONLY];
1922
1923  // Output only. Status.
1924  string status = 2 [(google.api.field_behavior) = OUTPUT_ONLY];
1925}
1926