From 641a2eec3d00a6f987f546597fb67044beec9322 Mon Sep 17 00:00:00 2001 From: Ziyue Yan Date: Tue, 5 Nov 2024 01:08:49 +0000 Subject: [PATCH] Add PoCo test. --- mockgcp/Makefile | 1 + .../v1beta/policycontroller.pb.go | 1854 +++++++++++++++ .../configmanagement/configmanagement.pb.go | 4 +- .../mockgcp/cloud/gkehub/v1beta/feature.pb.go | 435 ++-- mockgcp/mockserviceusage/knownservices.go | 1 + .../direct/gkehub/pococonversion.go | 2 +- ...sicpocogkehubfeaturemembership.golden.yaml | 47 + .../_http.log | 2007 +++++++++++++++++ .../create.yaml | 31 + .../dependencies.yaml | 113 + .../update.yaml | 44 + ...ullpocogkehubfeaturemembership.golden.yaml | 47 + .../fullpocogkehubfeaturemembership/_http.log | 1991 ++++++++++++++++ .../create.yaml | 45 + .../dependencies.yaml | 105 + .../update.yaml | 44 + 16 files changed, 6578 insertions(+), 193 deletions(-) create mode 100644 mockgcp/generated/mockgcp/cloud/gkehub/policycontroller/v1beta/policycontroller.pb.go create mode 100644 pkg/test/resourcefixture/testdata/basic/gkehub/v1beta1/gkehubfeaturemembership/basicpocogkehubfeaturemembership/_generated_object_basicpocogkehubfeaturemembership.golden.yaml create mode 100644 pkg/test/resourcefixture/testdata/basic/gkehub/v1beta1/gkehubfeaturemembership/basicpocogkehubfeaturemembership/_http.log create mode 100644 pkg/test/resourcefixture/testdata/basic/gkehub/v1beta1/gkehubfeaturemembership/basicpocogkehubfeaturemembership/create.yaml create mode 100644 pkg/test/resourcefixture/testdata/basic/gkehub/v1beta1/gkehubfeaturemembership/basicpocogkehubfeaturemembership/dependencies.yaml create mode 100644 pkg/test/resourcefixture/testdata/basic/gkehub/v1beta1/gkehubfeaturemembership/basicpocogkehubfeaturemembership/update.yaml create mode 100644 pkg/test/resourcefixture/testdata/basic/gkehub/v1beta1/gkehubfeaturemembership/fullpocogkehubfeaturemembership/_generated_object_fullpocogkehubfeaturemembership.golden.yaml create mode 100644 pkg/test/resourcefixture/testdata/basic/gkehub/v1beta1/gkehubfeaturemembership/fullpocogkehubfeaturemembership/_http.log create mode 100644 pkg/test/resourcefixture/testdata/basic/gkehub/v1beta1/gkehubfeaturemembership/fullpocogkehubfeaturemembership/create.yaml create mode 100644 pkg/test/resourcefixture/testdata/basic/gkehub/v1beta1/gkehubfeaturemembership/fullpocogkehubfeaturemembership/dependencies.yaml create mode 100644 pkg/test/resourcefixture/testdata/basic/gkehub/v1beta1/gkehubfeaturemembership/fullpocogkehubfeaturemembership/update.yaml diff --git a/mockgcp/Makefile b/mockgcp/Makefile index da783d3cfa..5b9da53b5c 100644 --- a/mockgcp/Makefile +++ b/mockgcp/Makefile @@ -75,6 +75,7 @@ gen-proto-no-fixup: ./third_party/googleapis/mockgcp/cloud/edgenetwork/v1/*.proto \ ./third_party/googleapis/mockgcp/cloud/functions/v1/*.proto \ ./third_party/googleapis/mockgcp/cloud/gkehub/v1beta/*.proto \ + ./third_party/googleapis/mockgcp/cloud/gkehub/policycontroller/v1beta/*.proto \ ./third_party/googleapis/mockgcp/cloud/gkehub/v1beta/configmanagement/*.proto \ ./third_party/googleapis/mockgcp/cloud/gkehub/v1beta/metering/*.proto \ ./third_party/googleapis/mockgcp/cloud/gkehub/v1beta/multiclusteringress/*.proto \ diff --git a/mockgcp/generated/mockgcp/cloud/gkehub/policycontroller/v1beta/policycontroller.pb.go b/mockgcp/generated/mockgcp/cloud/gkehub/policycontroller/v1beta/policycontroller.pb.go new file mode 100644 index 0000000000..c1a6c492ad --- /dev/null +++ b/mockgcp/generated/mockgcp/cloud/gkehub/policycontroller/v1beta/policycontroller.pb.go @@ -0,0 +1,1854 @@ +// Copyright 2024 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.28.1 +// protoc v3.12.4 +// source: mockgcp/cloud/gkehub/policycontroller/v1beta/policycontroller.proto + +package policycontrollerpb + +import ( + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +// The set of states Policy Controller can exist in. +type MembershipState_LifecycleState int32 + +const ( + // The lifecycle state is unspecified. + MembershipState_LIFECYCLE_STATE_UNSPECIFIED MembershipState_LifecycleState = 0 + // The PC does not exist on the given cluster, and no k8s resources of any + // type that are associated with the PC should exist there. The cluster + // does not possess a membership with the PCH. + MembershipState_NOT_INSTALLED MembershipState_LifecycleState = 1 + // The PCH possesses a Membership, however the PC is not fully installed + // on the cluster. + // In this state the hub can be expected to be taking actions to + // install the PC on the cluster. + MembershipState_INSTALLING MembershipState_LifecycleState = 2 + // The PC is fully installed on the cluster and in an operational mode. + // In this state PCH will be reconciling state with the PC, and + // the PC will be performing it's operational tasks per that software. + // Entering a READY state requires that the hub has confirmed the PC is + // installed and its pods are operational with the version of + // the PC the PCH expects. + MembershipState_ACTIVE MembershipState_LifecycleState = 3 + // The PC is fully installed, but in the process of changing the + // configuration (including changing the version of PC either up and down, + // or modifying the manifests of PC) of the resources running on the + // cluster. The PCH has a Membership, is aware of the version the cluster + // should be running in, but has not confirmed for itself that the PC is + // running with that version. + MembershipState_UPDATING MembershipState_LifecycleState = 4 + // The PC may have resources on the cluster, + // but the PCH wishes to remove the Membership. + // The Membership still exists. + MembershipState_DECOMMISSIONING MembershipState_LifecycleState = 5 + // The PC is not operational, and the PCH is unable to act to make it + // operational. + // Entering a CLUSTER_ERROR state happens automatically when the PCH + // determines that a PC installed on the cluster is non-operative or + // that the cluster does not meet requirements set for the PCH to + // administer the cluster but has nevertheless been given an instruction to + // do so (such as 'install'). + MembershipState_CLUSTER_ERROR MembershipState_LifecycleState = 6 + // In this state, the PC may still be operational, + // and only the PCH is unable to act. + // The hub should not issue instructions to change the PC state, + // or otherwise interfere with the on-cluster resources. + // Entering a HUB_ERROR state happens automatically when the PCH determines + // the hub is in an unhealthy state and it wishes to 'take hands off' to + // avoid corrupting the PC or other data. + MembershipState_HUB_ERROR MembershipState_LifecycleState = 7 + // Policy Controller (PC) is installed but suspended. This means that the + // policies are not enforced, but violations are still recorded (through + // audit). + MembershipState_SUSPENDED MembershipState_LifecycleState = 8 + // PoCo Hub is not taking any action to reconcile cluster objects. Changes + // to those objects will not be overwritten by PoCo Hub. + MembershipState_DETACHED MembershipState_LifecycleState = 9 +) + +// Enum value maps for MembershipState_LifecycleState. +var ( + MembershipState_LifecycleState_name = map[int32]string{ + 0: "LIFECYCLE_STATE_UNSPECIFIED", + 1: "NOT_INSTALLED", + 2: "INSTALLING", + 3: "ACTIVE", + 4: "UPDATING", + 5: "DECOMMISSIONING", + 6: "CLUSTER_ERROR", + 7: "HUB_ERROR", + 8: "SUSPENDED", + 9: "DETACHED", + } + MembershipState_LifecycleState_value = map[string]int32{ + "LIFECYCLE_STATE_UNSPECIFIED": 0, + "NOT_INSTALLED": 1, + "INSTALLING": 2, + "ACTIVE": 3, + "UPDATING": 4, + "DECOMMISSIONING": 5, + "CLUSTER_ERROR": 6, + "HUB_ERROR": 7, + "SUSPENDED": 8, + "DETACHED": 9, + } +) + +func (x MembershipState_LifecycleState) Enum() *MembershipState_LifecycleState { + p := new(MembershipState_LifecycleState) + *p = x + return p +} + +func (x MembershipState_LifecycleState) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (MembershipState_LifecycleState) Descriptor() protoreflect.EnumDescriptor { + return file_mockgcp_cloud_gkehub_policycontroller_v1beta_policycontroller_proto_enumTypes[0].Descriptor() +} + +func (MembershipState_LifecycleState) Type() protoreflect.EnumType { + return &file_mockgcp_cloud_gkehub_policycontroller_v1beta_policycontroller_proto_enumTypes[0] +} + +func (x MembershipState_LifecycleState) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use MembershipState_LifecycleState.Descriptor instead. +func (MembershipState_LifecycleState) EnumDescriptor() ([]byte, []int) { + return file_mockgcp_cloud_gkehub_policycontroller_v1beta_policycontroller_proto_rawDescGZIP(), []int{0, 0} +} + +// The set of installation specs that the Hub Feature controller may +// actuate. +type HubConfig_InstallSpec int32 + +const ( + // Spec is unknown. + HubConfig_INSTALL_SPEC_UNSPECIFIED HubConfig_InstallSpec = 0 + // Request to uninstall Policy Controller. + HubConfig_INSTALL_SPEC_NOT_INSTALLED HubConfig_InstallSpec = 1 + // Request to install and enable Policy Controller. + HubConfig_INSTALL_SPEC_ENABLED HubConfig_InstallSpec = 2 + // Request to suspend Policy Controller i.e. its webhooks. If Policy + // Controller is not installed, it will be installed but suspended. + HubConfig_INSTALL_SPEC_SUSPENDED HubConfig_InstallSpec = 3 + // Request to stop all reconciliation actions by PoCo Hub controller. + // This is a breakglass mechanism to stop PoCo Hub from affecting + // cluster resources. + HubConfig_INSTALL_SPEC_DETACHED HubConfig_InstallSpec = 4 +) + +// Enum value maps for HubConfig_InstallSpec. +var ( + HubConfig_InstallSpec_name = map[int32]string{ + 0: "INSTALL_SPEC_UNSPECIFIED", + 1: "INSTALL_SPEC_NOT_INSTALLED", + 2: "INSTALL_SPEC_ENABLED", + 3: "INSTALL_SPEC_SUSPENDED", + 4: "INSTALL_SPEC_DETACHED", + } + HubConfig_InstallSpec_value = map[string]int32{ + "INSTALL_SPEC_UNSPECIFIED": 0, + "INSTALL_SPEC_NOT_INSTALLED": 1, + "INSTALL_SPEC_ENABLED": 2, + "INSTALL_SPEC_SUSPENDED": 3, + "INSTALL_SPEC_DETACHED": 4, + } +) + +func (x HubConfig_InstallSpec) Enum() *HubConfig_InstallSpec { + p := new(HubConfig_InstallSpec) + *p = x + return p +} + +func (x HubConfig_InstallSpec) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (HubConfig_InstallSpec) Descriptor() protoreflect.EnumDescriptor { + return file_mockgcp_cloud_gkehub_policycontroller_v1beta_policycontroller_proto_enumTypes[1].Descriptor() +} + +func (HubConfig_InstallSpec) Type() protoreflect.EnumType { + return &file_mockgcp_cloud_gkehub_policycontroller_v1beta_policycontroller_proto_enumTypes[1] +} + +func (x HubConfig_InstallSpec) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use HubConfig_InstallSpec.Descriptor instead. +func (HubConfig_InstallSpec) EnumDescriptor() ([]byte, []int) { + return file_mockgcp_cloud_gkehub_policycontroller_v1beta_policycontroller_proto_rawDescGZIP(), []int{3, 0} +} + +// The pod affinity configuration used by a deployment. +type PolicyControllerDeploymentConfig_Affinity int32 + +const ( + // No affinity configuration has been specified. + PolicyControllerDeploymentConfig_AFFINITY_UNSPECIFIED PolicyControllerDeploymentConfig_Affinity = 0 + // Affinity configurations will be removed from the deployment. + PolicyControllerDeploymentConfig_NO_AFFINITY PolicyControllerDeploymentConfig_Affinity = 1 + // Anti-affinity configuration will be applied to this deployment. + // Default for admissions deployment. + PolicyControllerDeploymentConfig_ANTI_AFFINITY PolicyControllerDeploymentConfig_Affinity = 2 +) + +// Enum value maps for PolicyControllerDeploymentConfig_Affinity. +var ( + PolicyControllerDeploymentConfig_Affinity_name = map[int32]string{ + 0: "AFFINITY_UNSPECIFIED", + 1: "NO_AFFINITY", + 2: "ANTI_AFFINITY", + } + PolicyControllerDeploymentConfig_Affinity_value = map[string]int32{ + "AFFINITY_UNSPECIFIED": 0, + "NO_AFFINITY": 1, + "ANTI_AFFINITY": 2, + } +) + +func (x PolicyControllerDeploymentConfig_Affinity) Enum() *PolicyControllerDeploymentConfig_Affinity { + p := new(PolicyControllerDeploymentConfig_Affinity) + *p = x + return p +} + +func (x PolicyControllerDeploymentConfig_Affinity) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (PolicyControllerDeploymentConfig_Affinity) Descriptor() protoreflect.EnumDescriptor { + return file_mockgcp_cloud_gkehub_policycontroller_v1beta_policycontroller_proto_enumTypes[2].Descriptor() +} + +func (PolicyControllerDeploymentConfig_Affinity) Type() protoreflect.EnumType { + return &file_mockgcp_cloud_gkehub_policycontroller_v1beta_policycontroller_proto_enumTypes[2] +} + +func (x PolicyControllerDeploymentConfig_Affinity) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use PolicyControllerDeploymentConfig_Affinity.Descriptor instead. +func (PolicyControllerDeploymentConfig_Affinity) EnumDescriptor() ([]byte, []int) { + return file_mockgcp_cloud_gkehub_policycontroller_v1beta_policycontroller_proto_rawDescGZIP(), []int{4, 0} +} + +// How the template library should be installed +type TemplateLibraryConfig_Installation int32 + +const ( + // No installation strategy has been specified. + TemplateLibraryConfig_INSTALLATION_UNSPECIFIED TemplateLibraryConfig_Installation = 0 + // Do not install the template library. + TemplateLibraryConfig_NOT_INSTALLED TemplateLibraryConfig_Installation = 1 + // Install the entire template library. + TemplateLibraryConfig_ALL TemplateLibraryConfig_Installation = 2 +) + +// Enum value maps for TemplateLibraryConfig_Installation. +var ( + TemplateLibraryConfig_Installation_name = map[int32]string{ + 0: "INSTALLATION_UNSPECIFIED", + 1: "NOT_INSTALLED", + 2: "ALL", + } + TemplateLibraryConfig_Installation_value = map[string]int32{ + "INSTALLATION_UNSPECIFIED": 0, + "NOT_INSTALLED": 1, + "ALL": 2, + } +) + +func (x TemplateLibraryConfig_Installation) Enum() *TemplateLibraryConfig_Installation { + p := new(TemplateLibraryConfig_Installation) + *p = x + return p +} + +func (x TemplateLibraryConfig_Installation) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (TemplateLibraryConfig_Installation) Descriptor() protoreflect.EnumDescriptor { + return file_mockgcp_cloud_gkehub_policycontroller_v1beta_policycontroller_proto_enumTypes[3].Descriptor() +} + +func (TemplateLibraryConfig_Installation) Type() protoreflect.EnumType { + return &file_mockgcp_cloud_gkehub_policycontroller_v1beta_policycontroller_proto_enumTypes[3] +} + +func (x TemplateLibraryConfig_Installation) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use TemplateLibraryConfig_Installation.Descriptor instead. +func (TemplateLibraryConfig_Installation) EnumDescriptor() ([]byte, []int) { + return file_mockgcp_cloud_gkehub_policycontroller_v1beta_policycontroller_proto_rawDescGZIP(), []int{7, 0} +} + +// Supported backend options for monitoring +type MonitoringConfig_MonitoringBackend int32 + +const ( + // Backend cannot be determined + MonitoringConfig_MONITORING_BACKEND_UNSPECIFIED MonitoringConfig_MonitoringBackend = 0 + // Prometheus backend for monitoring + MonitoringConfig_PROMETHEUS MonitoringConfig_MonitoringBackend = 1 + // Stackdriver/Cloud Monitoring backend for monitoring + MonitoringConfig_CLOUD_MONITORING MonitoringConfig_MonitoringBackend = 2 +) + +// Enum value maps for MonitoringConfig_MonitoringBackend. +var ( + MonitoringConfig_MonitoringBackend_name = map[int32]string{ + 0: "MONITORING_BACKEND_UNSPECIFIED", + 1: "PROMETHEUS", + 2: "CLOUD_MONITORING", + } + MonitoringConfig_MonitoringBackend_value = map[string]int32{ + "MONITORING_BACKEND_UNSPECIFIED": 0, + "PROMETHEUS": 1, + "CLOUD_MONITORING": 2, + } +) + +func (x MonitoringConfig_MonitoringBackend) Enum() *MonitoringConfig_MonitoringBackend { + p := new(MonitoringConfig_MonitoringBackend) + *p = x + return p +} + +func (x MonitoringConfig_MonitoringBackend) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (MonitoringConfig_MonitoringBackend) Descriptor() protoreflect.EnumDescriptor { + return file_mockgcp_cloud_gkehub_policycontroller_v1beta_policycontroller_proto_enumTypes[4].Descriptor() +} + +func (MonitoringConfig_MonitoringBackend) Type() protoreflect.EnumType { + return &file_mockgcp_cloud_gkehub_policycontroller_v1beta_policycontroller_proto_enumTypes[4] +} + +func (x MonitoringConfig_MonitoringBackend) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use MonitoringConfig_MonitoringBackend.Descriptor instead. +func (MonitoringConfig_MonitoringBackend) EnumDescriptor() ([]byte, []int) { + return file_mockgcp_cloud_gkehub_policycontroller_v1beta_policycontroller_proto_rawDescGZIP(), []int{8, 0} +} + +// **Policy Controller**: State for a single cluster. +type MembershipState struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Currently these include (also serving as map keys): + // 1. "admission" + // 2. "audit" + // 3. "mutation" + ComponentStates map[string]*OnClusterState `protobuf:"bytes,3,rep,name=component_states,json=componentStates,proto3" json:"component_states,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + // The overall Policy Controller lifecycle state observed by the Hub Feature + // controller. + State MembershipState_LifecycleState `protobuf:"varint,4,opt,name=state,proto3,enum=mockgcp.cloud.gkehub.policycontroller.v1beta.MembershipState_LifecycleState" json:"state,omitempty"` + // The overall content state observed by the Hub Feature controller. + PolicyContentState *PolicyContentState `protobuf:"bytes,6,opt,name=policy_content_state,json=policyContentState,proto3" json:"policy_content_state,omitempty"` +} + +func (x *MembershipState) Reset() { + *x = MembershipState{} + if protoimpl.UnsafeEnabled { + mi := &file_mockgcp_cloud_gkehub_policycontroller_v1beta_policycontroller_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *MembershipState) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MembershipState) ProtoMessage() {} + +func (x *MembershipState) ProtoReflect() protoreflect.Message { + mi := &file_mockgcp_cloud_gkehub_policycontroller_v1beta_policycontroller_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use MembershipState.ProtoReflect.Descriptor instead. +func (*MembershipState) Descriptor() ([]byte, []int) { + return file_mockgcp_cloud_gkehub_policycontroller_v1beta_policycontroller_proto_rawDescGZIP(), []int{0} +} + +func (x *MembershipState) GetComponentStates() map[string]*OnClusterState { + if x != nil { + return x.ComponentStates + } + return nil +} + +func (x *MembershipState) GetState() MembershipState_LifecycleState { + if x != nil { + return x.State + } + return MembershipState_LIFECYCLE_STATE_UNSPECIFIED +} + +func (x *MembershipState) GetPolicyContentState() *PolicyContentState { + if x != nil { + return x.PolicyContentState + } + return nil +} + +// The state of the policy controller policy content +type PolicyContentState struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The state of the template library + TemplateLibraryState *OnClusterState `protobuf:"bytes,1,opt,name=template_library_state,json=templateLibraryState,proto3" json:"template_library_state,omitempty"` + // The state of the any bundles included in the chosen + // version of the manifest + BundleStates map[string]*OnClusterState `protobuf:"bytes,2,rep,name=bundle_states,json=bundleStates,proto3" json:"bundle_states,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + // The state of the referential data sync configuration. This could + // represent the state of either the syncSet object(s) or the config + // object, depending on the version of PoCo configured by the user. + ReferentialSyncConfigState *OnClusterState `protobuf:"bytes,3,opt,name=referential_sync_config_state,json=referentialSyncConfigState,proto3" json:"referential_sync_config_state,omitempty"` +} + +func (x *PolicyContentState) Reset() { + *x = PolicyContentState{} + if protoimpl.UnsafeEnabled { + mi := &file_mockgcp_cloud_gkehub_policycontroller_v1beta_policycontroller_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PolicyContentState) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PolicyContentState) ProtoMessage() {} + +func (x *PolicyContentState) ProtoReflect() protoreflect.Message { + mi := &file_mockgcp_cloud_gkehub_policycontroller_v1beta_policycontroller_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PolicyContentState.ProtoReflect.Descriptor instead. +func (*PolicyContentState) Descriptor() ([]byte, []int) { + return file_mockgcp_cloud_gkehub_policycontroller_v1beta_policycontroller_proto_rawDescGZIP(), []int{1} +} + +func (x *PolicyContentState) GetTemplateLibraryState() *OnClusterState { + if x != nil { + return x.TemplateLibraryState + } + return nil +} + +func (x *PolicyContentState) GetBundleStates() map[string]*OnClusterState { + if x != nil { + return x.BundleStates + } + return nil +} + +func (x *PolicyContentState) GetReferentialSyncConfigState() *OnClusterState { + if x != nil { + return x.ReferentialSyncConfigState + } + return nil +} + +// **Policy Controller**: Configuration for a single cluster. +// Intended to parallel the PolicyController CR. +type MembershipSpec struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Policy Controller configuration for the cluster. + PolicyControllerHubConfig *HubConfig `protobuf:"bytes,1,opt,name=policy_controller_hub_config,json=policyControllerHubConfig,proto3" json:"policy_controller_hub_config,omitempty"` + // Version of Policy Controller installed. + Version string `protobuf:"bytes,2,opt,name=version,proto3" json:"version,omitempty"` +} + +func (x *MembershipSpec) Reset() { + *x = MembershipSpec{} + if protoimpl.UnsafeEnabled { + mi := &file_mockgcp_cloud_gkehub_policycontroller_v1beta_policycontroller_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *MembershipSpec) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MembershipSpec) ProtoMessage() {} + +func (x *MembershipSpec) ProtoReflect() protoreflect.Message { + mi := &file_mockgcp_cloud_gkehub_policycontroller_v1beta_policycontroller_proto_msgTypes[2] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use MembershipSpec.ProtoReflect.Descriptor instead. +func (*MembershipSpec) Descriptor() ([]byte, []int) { + return file_mockgcp_cloud_gkehub_policycontroller_v1beta_policycontroller_proto_rawDescGZIP(), []int{2} +} + +func (x *MembershipSpec) GetPolicyControllerHubConfig() *HubConfig { + if x != nil { + return x.PolicyControllerHubConfig + } + return nil +} + +func (x *MembershipSpec) GetVersion() string { + if x != nil { + return x.Version + } + return "" +} + +// Configuration for Policy Controller +type HubConfig struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The install_spec represents the intended state specified by the + // latest request that mutated install_spec in the feature spec, + // not the lifecycle state of the + // feature observed by the Hub feature controller + // that is reported in the feature state. + InstallSpec HubConfig_InstallSpec `protobuf:"varint,1,opt,name=install_spec,json=installSpec,proto3,enum=mockgcp.cloud.gkehub.policycontroller.v1beta.HubConfig_InstallSpec" json:"install_spec,omitempty"` + // Sets the interval for Policy Controller Audit Scans (in seconds). + // When set to 0, this disables audit functionality altogether. + AuditIntervalSeconds *int64 `protobuf:"varint,2,opt,name=audit_interval_seconds,json=auditIntervalSeconds,proto3,oneof" json:"audit_interval_seconds,omitempty"` + // The set of namespaces that are excluded from Policy Controller checks. + // Namespaces do not need to currently exist on the cluster. + ExemptableNamespaces []string `protobuf:"bytes,3,rep,name=exemptable_namespaces,json=exemptableNamespaces,proto3" json:"exemptable_namespaces,omitempty"` + // Enables the ability to use Constraint Templates that reference to objects + // other than the object currently being evaluated. + ReferentialRulesEnabled bool `protobuf:"varint,4,opt,name=referential_rules_enabled,json=referentialRulesEnabled,proto3" json:"referential_rules_enabled,omitempty"` + // Logs all denies and dry run failures. + LogDeniesEnabled bool `protobuf:"varint,5,opt,name=log_denies_enabled,json=logDeniesEnabled,proto3" json:"log_denies_enabled,omitempty"` + // Enables the ability to mutate resources using Policy Controller. + MutationEnabled bool `protobuf:"varint,6,opt,name=mutation_enabled,json=mutationEnabled,proto3" json:"mutation_enabled,omitempty"` + // Monitoring specifies the configuration of monitoring. + Monitoring *MonitoringConfig `protobuf:"bytes,8,opt,name=monitoring,proto3,oneof" json:"monitoring,omitempty"` + // Specifies the desired policy content on the cluster + PolicyContent *PolicyContentSpec `protobuf:"bytes,9,opt,name=policy_content,json=policyContent,proto3,oneof" json:"policy_content,omitempty"` + // The maximum number of audit violations to be stored in a constraint. + // If not set, the internal default (currently 20) will be used. + ConstraintViolationLimit *int64 `protobuf:"varint,10,opt,name=constraint_violation_limit,json=constraintViolationLimit,proto3,oneof" json:"constraint_violation_limit,omitempty"` + // Map of deployment configs to deployments ("admission", "audit", + // "mutation'). + DeploymentConfigs map[string]*PolicyControllerDeploymentConfig `protobuf:"bytes,11,rep,name=deployment_configs,json=deploymentConfigs,proto3" json:"deployment_configs,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` +} + +func (x *HubConfig) Reset() { + *x = HubConfig{} + if protoimpl.UnsafeEnabled { + mi := &file_mockgcp_cloud_gkehub_policycontroller_v1beta_policycontroller_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *HubConfig) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*HubConfig) ProtoMessage() {} + +func (x *HubConfig) ProtoReflect() protoreflect.Message { + mi := &file_mockgcp_cloud_gkehub_policycontroller_v1beta_policycontroller_proto_msgTypes[3] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use HubConfig.ProtoReflect.Descriptor instead. +func (*HubConfig) Descriptor() ([]byte, []int) { + return file_mockgcp_cloud_gkehub_policycontroller_v1beta_policycontroller_proto_rawDescGZIP(), []int{3} +} + +func (x *HubConfig) GetInstallSpec() HubConfig_InstallSpec { + if x != nil { + return x.InstallSpec + } + return HubConfig_INSTALL_SPEC_UNSPECIFIED +} + +func (x *HubConfig) GetAuditIntervalSeconds() int64 { + if x != nil && x.AuditIntervalSeconds != nil { + return *x.AuditIntervalSeconds + } + return 0 +} + +func (x *HubConfig) GetExemptableNamespaces() []string { + if x != nil { + return x.ExemptableNamespaces + } + return nil +} + +func (x *HubConfig) GetReferentialRulesEnabled() bool { + if x != nil { + return x.ReferentialRulesEnabled + } + return false +} + +func (x *HubConfig) GetLogDeniesEnabled() bool { + if x != nil { + return x.LogDeniesEnabled + } + return false +} + +func (x *HubConfig) GetMutationEnabled() bool { + if x != nil { + return x.MutationEnabled + } + return false +} + +func (x *HubConfig) GetMonitoring() *MonitoringConfig { + if x != nil { + return x.Monitoring + } + return nil +} + +func (x *HubConfig) GetPolicyContent() *PolicyContentSpec { + if x != nil { + return x.PolicyContent + } + return nil +} + +func (x *HubConfig) GetConstraintViolationLimit() int64 { + if x != nil && x.ConstraintViolationLimit != nil { + return *x.ConstraintViolationLimit + } + return 0 +} + +func (x *HubConfig) GetDeploymentConfigs() map[string]*PolicyControllerDeploymentConfig { + if x != nil { + return x.DeploymentConfigs + } + return nil +} + +// Deployment-specific configuration. +type PolicyControllerDeploymentConfig struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Pod replica count. + ReplicaCount *int64 `protobuf:"varint,1,opt,name=replica_count,json=replicaCount,proto3,oneof" json:"replica_count,omitempty"` + // Container resource requirements. + ContainerResources *ResourceRequirements `protobuf:"bytes,2,opt,name=container_resources,json=containerResources,proto3,oneof" json:"container_resources,omitempty"` + // Pod anti-affinity enablement. Deprecated: use `pod_affinity` instead. + // + // Deprecated: Do not use. + PodAntiAffinity *bool `protobuf:"varint,3,opt,name=pod_anti_affinity,json=podAntiAffinity,proto3,oneof" json:"pod_anti_affinity,omitempty"` + // Pod tolerations of node taints. + PodTolerations []*PolicyControllerDeploymentConfig_Toleration `protobuf:"bytes,4,rep,name=pod_tolerations,json=podTolerations,proto3" json:"pod_tolerations,omitempty"` + // Pod affinity configuration. + PodAffinity PolicyControllerDeploymentConfig_Affinity `protobuf:"varint,5,opt,name=pod_affinity,json=podAffinity,proto3,enum=mockgcp.cloud.gkehub.policycontroller.v1beta.PolicyControllerDeploymentConfig_Affinity" json:"pod_affinity,omitempty"` +} + +func (x *PolicyControllerDeploymentConfig) Reset() { + *x = PolicyControllerDeploymentConfig{} + if protoimpl.UnsafeEnabled { + mi := &file_mockgcp_cloud_gkehub_policycontroller_v1beta_policycontroller_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PolicyControllerDeploymentConfig) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PolicyControllerDeploymentConfig) ProtoMessage() {} + +func (x *PolicyControllerDeploymentConfig) ProtoReflect() protoreflect.Message { + mi := &file_mockgcp_cloud_gkehub_policycontroller_v1beta_policycontroller_proto_msgTypes[4] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PolicyControllerDeploymentConfig.ProtoReflect.Descriptor instead. +func (*PolicyControllerDeploymentConfig) Descriptor() ([]byte, []int) { + return file_mockgcp_cloud_gkehub_policycontroller_v1beta_policycontroller_proto_rawDescGZIP(), []int{4} +} + +func (x *PolicyControllerDeploymentConfig) GetReplicaCount() int64 { + if x != nil && x.ReplicaCount != nil { + return *x.ReplicaCount + } + return 0 +} + +func (x *PolicyControllerDeploymentConfig) GetContainerResources() *ResourceRequirements { + if x != nil { + return x.ContainerResources + } + return nil +} + +// Deprecated: Do not use. +func (x *PolicyControllerDeploymentConfig) GetPodAntiAffinity() bool { + if x != nil && x.PodAntiAffinity != nil { + return *x.PodAntiAffinity + } + return false +} + +func (x *PolicyControllerDeploymentConfig) GetPodTolerations() []*PolicyControllerDeploymentConfig_Toleration { + if x != nil { + return x.PodTolerations + } + return nil +} + +func (x *PolicyControllerDeploymentConfig) GetPodAffinity() PolicyControllerDeploymentConfig_Affinity { + if x != nil { + return x.PodAffinity + } + return PolicyControllerDeploymentConfig_AFFINITY_UNSPECIFIED +} + +// ResourceRequirements describes the compute resource requirements. +type ResourceRequirements struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Limits describes the maximum amount of compute resources allowed for use by + // the running container. + Limits *ResourceList `protobuf:"bytes,1,opt,name=limits,proto3,oneof" json:"limits,omitempty"` + // Requests describes the amount of compute resources reserved for the + // container by the kube-scheduler. + Requests *ResourceList `protobuf:"bytes,2,opt,name=requests,proto3,oneof" json:"requests,omitempty"` +} + +func (x *ResourceRequirements) Reset() { + *x = ResourceRequirements{} + if protoimpl.UnsafeEnabled { + mi := &file_mockgcp_cloud_gkehub_policycontroller_v1beta_policycontroller_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ResourceRequirements) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ResourceRequirements) ProtoMessage() {} + +func (x *ResourceRequirements) ProtoReflect() protoreflect.Message { + mi := &file_mockgcp_cloud_gkehub_policycontroller_v1beta_policycontroller_proto_msgTypes[5] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ResourceRequirements.ProtoReflect.Descriptor instead. +func (*ResourceRequirements) Descriptor() ([]byte, []int) { + return file_mockgcp_cloud_gkehub_policycontroller_v1beta_policycontroller_proto_rawDescGZIP(), []int{5} +} + +func (x *ResourceRequirements) GetLimits() *ResourceList { + if x != nil { + return x.Limits + } + return nil +} + +func (x *ResourceRequirements) GetRequests() *ResourceList { + if x != nil { + return x.Requests + } + return nil +} + +// ResourceList contains container resource requirements. +type ResourceList struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Memory requirement expressed in Kubernetes resource units. + Memory *string `protobuf:"bytes,1,opt,name=memory,proto3,oneof" json:"memory,omitempty"` + // CPU requirement expressed in Kubernetes resource units. + Cpu *string `protobuf:"bytes,2,opt,name=cpu,proto3,oneof" json:"cpu,omitempty"` +} + +func (x *ResourceList) Reset() { + *x = ResourceList{} + if protoimpl.UnsafeEnabled { + mi := &file_mockgcp_cloud_gkehub_policycontroller_v1beta_policycontroller_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ResourceList) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ResourceList) ProtoMessage() {} + +func (x *ResourceList) ProtoReflect() protoreflect.Message { + mi := &file_mockgcp_cloud_gkehub_policycontroller_v1beta_policycontroller_proto_msgTypes[6] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ResourceList.ProtoReflect.Descriptor instead. +func (*ResourceList) Descriptor() ([]byte, []int) { + return file_mockgcp_cloud_gkehub_policycontroller_v1beta_policycontroller_proto_rawDescGZIP(), []int{6} +} + +func (x *ResourceList) GetMemory() string { + if x != nil && x.Memory != nil { + return *x.Memory + } + return "" +} + +func (x *ResourceList) GetCpu() string { + if x != nil && x.Cpu != nil { + return *x.Cpu + } + return "" +} + +// The config specifying which default library templates to install. +type TemplateLibraryConfig struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Configures the manner in which the template library is installed on the + // cluster. + Installation TemplateLibraryConfig_Installation `protobuf:"varint,2,opt,name=installation,proto3,enum=mockgcp.cloud.gkehub.policycontroller.v1beta.TemplateLibraryConfig_Installation" json:"installation,omitempty"` +} + +func (x *TemplateLibraryConfig) Reset() { + *x = TemplateLibraryConfig{} + if protoimpl.UnsafeEnabled { + mi := &file_mockgcp_cloud_gkehub_policycontroller_v1beta_policycontroller_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *TemplateLibraryConfig) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TemplateLibraryConfig) ProtoMessage() {} + +func (x *TemplateLibraryConfig) ProtoReflect() protoreflect.Message { + mi := &file_mockgcp_cloud_gkehub_policycontroller_v1beta_policycontroller_proto_msgTypes[7] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use TemplateLibraryConfig.ProtoReflect.Descriptor instead. +func (*TemplateLibraryConfig) Descriptor() ([]byte, []int) { + return file_mockgcp_cloud_gkehub_policycontroller_v1beta_policycontroller_proto_rawDescGZIP(), []int{7} +} + +func (x *TemplateLibraryConfig) GetInstallation() TemplateLibraryConfig_Installation { + if x != nil { + return x.Installation + } + return TemplateLibraryConfig_INSTALLATION_UNSPECIFIED +} + +// MonitoringConfig specifies the backends Policy Controller should +// export metrics to. For example, to specify metrics should be exported to +// Cloud Monitoring and Prometheus, specify +// backends: ["cloudmonitoring", "prometheus"] +type MonitoringConfig struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Specifies the list of backends Policy Controller will export to. + // An empty list would effectively disable metrics export. + Backends []MonitoringConfig_MonitoringBackend `protobuf:"varint,1,rep,packed,name=backends,proto3,enum=mockgcp.cloud.gkehub.policycontroller.v1beta.MonitoringConfig_MonitoringBackend" json:"backends,omitempty"` +} + +func (x *MonitoringConfig) Reset() { + *x = MonitoringConfig{} + if protoimpl.UnsafeEnabled { + mi := &file_mockgcp_cloud_gkehub_policycontroller_v1beta_policycontroller_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *MonitoringConfig) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MonitoringConfig) ProtoMessage() {} + +func (x *MonitoringConfig) ProtoReflect() protoreflect.Message { + mi := &file_mockgcp_cloud_gkehub_policycontroller_v1beta_policycontroller_proto_msgTypes[8] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use MonitoringConfig.ProtoReflect.Descriptor instead. +func (*MonitoringConfig) Descriptor() ([]byte, []int) { + return file_mockgcp_cloud_gkehub_policycontroller_v1beta_policycontroller_proto_rawDescGZIP(), []int{8} +} + +func (x *MonitoringConfig) GetBackends() []MonitoringConfig_MonitoringBackend { + if x != nil { + return x.Backends + } + return nil +} + +// OnClusterState represents the state of a sub-component of Policy Controller. +type OnClusterState struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The lifecycle state of this component. + State MembershipState_LifecycleState `protobuf:"varint,1,opt,name=state,proto3,enum=mockgcp.cloud.gkehub.policycontroller.v1beta.MembershipState_LifecycleState" json:"state,omitempty"` + // Surface potential errors or information logs. + Details string `protobuf:"bytes,2,opt,name=details,proto3" json:"details,omitempty"` +} + +func (x *OnClusterState) Reset() { + *x = OnClusterState{} + if protoimpl.UnsafeEnabled { + mi := &file_mockgcp_cloud_gkehub_policycontroller_v1beta_policycontroller_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *OnClusterState) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*OnClusterState) ProtoMessage() {} + +func (x *OnClusterState) ProtoReflect() protoreflect.Message { + mi := &file_mockgcp_cloud_gkehub_policycontroller_v1beta_policycontroller_proto_msgTypes[9] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use OnClusterState.ProtoReflect.Descriptor instead. +func (*OnClusterState) Descriptor() ([]byte, []int) { + return file_mockgcp_cloud_gkehub_policycontroller_v1beta_policycontroller_proto_rawDescGZIP(), []int{9} +} + +func (x *OnClusterState) GetState() MembershipState_LifecycleState { + if x != nil { + return x.State + } + return MembershipState_LIFECYCLE_STATE_UNSPECIFIED +} + +func (x *OnClusterState) GetDetails() string { + if x != nil { + return x.Details + } + return "" +} + +// BundleInstallSpec is the specification configuration for a single managed +// bundle. +type BundleInstallSpec struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The set of namespaces to be exempted from the bundle. + ExemptedNamespaces []string `protobuf:"bytes,2,rep,name=exempted_namespaces,json=exemptedNamespaces,proto3" json:"exempted_namespaces,omitempty"` +} + +func (x *BundleInstallSpec) Reset() { + *x = BundleInstallSpec{} + if protoimpl.UnsafeEnabled { + mi := &file_mockgcp_cloud_gkehub_policycontroller_v1beta_policycontroller_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *BundleInstallSpec) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BundleInstallSpec) ProtoMessage() {} + +func (x *BundleInstallSpec) ProtoReflect() protoreflect.Message { + mi := &file_mockgcp_cloud_gkehub_policycontroller_v1beta_policycontroller_proto_msgTypes[10] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use BundleInstallSpec.ProtoReflect.Descriptor instead. +func (*BundleInstallSpec) Descriptor() ([]byte, []int) { + return file_mockgcp_cloud_gkehub_policycontroller_v1beta_policycontroller_proto_rawDescGZIP(), []int{10} +} + +func (x *BundleInstallSpec) GetExemptedNamespaces() []string { + if x != nil { + return x.ExemptedNamespaces + } + return nil +} + +// PolicyContentSpec defines the user's desired content configuration on the +// cluster. +type PolicyContentSpec struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // map of bundle name to BundleInstallSpec. The bundle name maps to the + // `bundleName` key in the `policycontroller.gke.io/constraintData` annotation + // on a constraint. + Bundles map[string]*BundleInstallSpec `protobuf:"bytes,1,rep,name=bundles,proto3" json:"bundles,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + // Configures the installation of the Template Library. + TemplateLibrary *TemplateLibraryConfig `protobuf:"bytes,2,opt,name=template_library,json=templateLibrary,proto3" json:"template_library,omitempty"` +} + +func (x *PolicyContentSpec) Reset() { + *x = PolicyContentSpec{} + if protoimpl.UnsafeEnabled { + mi := &file_mockgcp_cloud_gkehub_policycontroller_v1beta_policycontroller_proto_msgTypes[11] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PolicyContentSpec) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PolicyContentSpec) ProtoMessage() {} + +func (x *PolicyContentSpec) ProtoReflect() protoreflect.Message { + mi := &file_mockgcp_cloud_gkehub_policycontroller_v1beta_policycontroller_proto_msgTypes[11] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PolicyContentSpec.ProtoReflect.Descriptor instead. +func (*PolicyContentSpec) Descriptor() ([]byte, []int) { + return file_mockgcp_cloud_gkehub_policycontroller_v1beta_policycontroller_proto_rawDescGZIP(), []int{11} +} + +func (x *PolicyContentSpec) GetBundles() map[string]*BundleInstallSpec { + if x != nil { + return x.Bundles + } + return nil +} + +func (x *PolicyContentSpec) GetTemplateLibrary() *TemplateLibraryConfig { + if x != nil { + return x.TemplateLibrary + } + return nil +} + +// Toleration of a node taint. +type PolicyControllerDeploymentConfig_Toleration struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Matches a taint key (not necessarily unique). + Key *string `protobuf:"bytes,1,opt,name=key,proto3,oneof" json:"key,omitempty"` + // Matches a taint operator. + Operator *string `protobuf:"bytes,2,opt,name=operator,proto3,oneof" json:"operator,omitempty"` + // Matches a taint value. + Value *string `protobuf:"bytes,3,opt,name=value,proto3,oneof" json:"value,omitempty"` + // Matches a taint effect. + Effect *string `protobuf:"bytes,4,opt,name=effect,proto3,oneof" json:"effect,omitempty"` +} + +func (x *PolicyControllerDeploymentConfig_Toleration) Reset() { + *x = PolicyControllerDeploymentConfig_Toleration{} + if protoimpl.UnsafeEnabled { + mi := &file_mockgcp_cloud_gkehub_policycontroller_v1beta_policycontroller_proto_msgTypes[15] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PolicyControllerDeploymentConfig_Toleration) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PolicyControllerDeploymentConfig_Toleration) ProtoMessage() {} + +func (x *PolicyControllerDeploymentConfig_Toleration) ProtoReflect() protoreflect.Message { + mi := &file_mockgcp_cloud_gkehub_policycontroller_v1beta_policycontroller_proto_msgTypes[15] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PolicyControllerDeploymentConfig_Toleration.ProtoReflect.Descriptor instead. +func (*PolicyControllerDeploymentConfig_Toleration) Descriptor() ([]byte, []int) { + return file_mockgcp_cloud_gkehub_policycontroller_v1beta_policycontroller_proto_rawDescGZIP(), []int{4, 0} +} + +func (x *PolicyControllerDeploymentConfig_Toleration) GetKey() string { + if x != nil && x.Key != nil { + return *x.Key + } + return "" +} + +func (x *PolicyControllerDeploymentConfig_Toleration) GetOperator() string { + if x != nil && x.Operator != nil { + return *x.Operator + } + return "" +} + +func (x *PolicyControllerDeploymentConfig_Toleration) GetValue() string { + if x != nil && x.Value != nil { + return *x.Value + } + return "" +} + +func (x *PolicyControllerDeploymentConfig_Toleration) GetEffect() string { + if x != nil && x.Effect != nil { + return *x.Effect + } + return "" +} + +var File_mockgcp_cloud_gkehub_policycontroller_v1beta_policycontroller_proto protoreflect.FileDescriptor + +var file_mockgcp_cloud_gkehub_policycontroller_v1beta_policycontroller_proto_rawDesc = []byte{ + 0x0a, 0x43, 0x6d, 0x6f, 0x63, 0x6b, 0x67, 0x63, 0x70, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2f, + 0x67, 0x6b, 0x65, 0x68, 0x75, 0x62, 0x2f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x63, 0x6f, 0x6e, + 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x2f, 0x70, + 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x2c, 0x6d, 0x6f, 0x63, 0x6b, 0x67, 0x63, 0x70, 0x2e, 0x63, + 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x67, 0x6b, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x70, 0x6f, 0x6c, 0x69, + 0x63, 0x79, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x62, + 0x65, 0x74, 0x61, 0x22, 0xb0, 0x05, 0x0a, 0x0f, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, + 0x69, 0x70, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x7d, 0x0a, 0x10, 0x63, 0x6f, 0x6d, 0x70, 0x6f, + 0x6e, 0x65, 0x6e, 0x74, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x52, 0x2e, 0x6d, 0x6f, 0x63, 0x6b, 0x67, 0x63, 0x70, 0x2e, 0x63, 0x6c, 0x6f, 0x75, + 0x64, 0x2e, 0x67, 0x6b, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x63, + 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, + 0x2e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x53, 0x74, 0x61, 0x74, 0x65, + 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x65, 0x73, + 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0f, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, + 0x53, 0x74, 0x61, 0x74, 0x65, 0x73, 0x12, 0x62, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x4c, 0x2e, 0x6d, 0x6f, 0x63, 0x6b, 0x67, 0x63, 0x70, 0x2e, + 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x67, 0x6b, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x70, 0x6f, 0x6c, + 0x69, 0x63, 0x79, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x2e, 0x76, 0x31, + 0x62, 0x65, 0x74, 0x61, 0x2e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x53, + 0x74, 0x61, 0x74, 0x65, 0x2e, 0x4c, 0x69, 0x66, 0x65, 0x63, 0x79, 0x63, 0x6c, 0x65, 0x53, 0x74, + 0x61, 0x74, 0x65, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x72, 0x0a, 0x14, 0x70, 0x6f, + 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x5f, 0x73, 0x74, 0x61, + 0x74, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x40, 0x2e, 0x6d, 0x6f, 0x63, 0x6b, 0x67, + 0x63, 0x70, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x67, 0x6b, 0x65, 0x68, 0x75, 0x62, 0x2e, + 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, + 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x43, 0x6f, + 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x12, 0x70, 0x6f, 0x6c, 0x69, + 0x63, 0x79, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x65, 0x1a, 0x80, + 0x01, 0x0a, 0x14, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, + 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x52, 0x0a, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3c, 0x2e, 0x6d, 0x6f, 0x63, 0x6b, 0x67, + 0x63, 0x70, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x67, 0x6b, 0x65, 0x68, 0x75, 0x62, 0x2e, + 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, + 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x4f, 0x6e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, + 0x72, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, + 0x01, 0x22, 0xc2, 0x01, 0x0a, 0x0e, 0x4c, 0x69, 0x66, 0x65, 0x63, 0x79, 0x63, 0x6c, 0x65, 0x53, + 0x74, 0x61, 0x74, 0x65, 0x12, 0x1f, 0x0a, 0x1b, 0x4c, 0x49, 0x46, 0x45, 0x43, 0x59, 0x43, 0x4c, + 0x45, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, + 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x11, 0x0a, 0x0d, 0x4e, 0x4f, 0x54, 0x5f, 0x49, 0x4e, 0x53, + 0x54, 0x41, 0x4c, 0x4c, 0x45, 0x44, 0x10, 0x01, 0x12, 0x0e, 0x0a, 0x0a, 0x49, 0x4e, 0x53, 0x54, + 0x41, 0x4c, 0x4c, 0x49, 0x4e, 0x47, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x41, 0x43, 0x54, 0x49, + 0x56, 0x45, 0x10, 0x03, 0x12, 0x0c, 0x0a, 0x08, 0x55, 0x50, 0x44, 0x41, 0x54, 0x49, 0x4e, 0x47, + 0x10, 0x04, 0x12, 0x13, 0x0a, 0x0f, 0x44, 0x45, 0x43, 0x4f, 0x4d, 0x4d, 0x49, 0x53, 0x53, 0x49, + 0x4f, 0x4e, 0x49, 0x4e, 0x47, 0x10, 0x05, 0x12, 0x11, 0x0a, 0x0d, 0x43, 0x4c, 0x55, 0x53, 0x54, + 0x45, 0x52, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x06, 0x12, 0x0d, 0x0a, 0x09, 0x48, 0x55, + 0x42, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x07, 0x12, 0x0d, 0x0a, 0x09, 0x53, 0x55, 0x53, + 0x50, 0x45, 0x4e, 0x44, 0x45, 0x44, 0x10, 0x08, 0x12, 0x0c, 0x0a, 0x08, 0x44, 0x45, 0x54, 0x41, + 0x43, 0x48, 0x45, 0x44, 0x10, 0x09, 0x22, 0x81, 0x04, 0x0a, 0x12, 0x50, 0x6f, 0x6c, 0x69, 0x63, + 0x79, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x72, 0x0a, + 0x16, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x6c, 0x69, 0x62, 0x72, 0x61, 0x72, + 0x79, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3c, 0x2e, + 0x6d, 0x6f, 0x63, 0x6b, 0x67, 0x63, 0x70, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x67, 0x6b, + 0x65, 0x68, 0x75, 0x62, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x63, 0x6f, 0x6e, 0x74, 0x72, + 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x4f, 0x6e, 0x43, + 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x14, 0x74, 0x65, 0x6d, + 0x70, 0x6c, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x62, 0x72, 0x61, 0x72, 0x79, 0x53, 0x74, 0x61, 0x74, + 0x65, 0x12, 0x77, 0x0a, 0x0d, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x5f, 0x73, 0x74, 0x61, 0x74, + 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x52, 0x2e, 0x6d, 0x6f, 0x63, 0x6b, 0x67, + 0x63, 0x70, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x67, 0x6b, 0x65, 0x68, 0x75, 0x62, 0x2e, + 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, + 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x43, 0x6f, + 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x42, 0x75, 0x6e, 0x64, 0x6c, + 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0c, 0x62, 0x75, + 0x6e, 0x64, 0x6c, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x73, 0x12, 0x7f, 0x0a, 0x1d, 0x72, 0x65, + 0x66, 0x65, 0x72, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x5f, 0x73, 0x79, 0x6e, 0x63, 0x5f, 0x63, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x3c, 0x2e, 0x6d, 0x6f, 0x63, 0x6b, 0x67, 0x63, 0x70, 0x2e, 0x63, 0x6c, 0x6f, 0x75, + 0x64, 0x2e, 0x67, 0x6b, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x63, + 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, + 0x2e, 0x4f, 0x6e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, + 0x1a, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x53, 0x79, 0x6e, 0x63, + 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x53, 0x74, 0x61, 0x74, 0x65, 0x1a, 0x7d, 0x0a, 0x11, 0x42, + 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, + 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, + 0x65, 0x79, 0x12, 0x52, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x3c, 0x2e, 0x6d, 0x6f, 0x63, 0x6b, 0x67, 0x63, 0x70, 0x2e, 0x63, 0x6c, 0x6f, 0x75, + 0x64, 0x2e, 0x67, 0x6b, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x63, + 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, + 0x2e, 0x4f, 0x6e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xa4, 0x01, 0x0a, 0x0e, 0x4d, + 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x53, 0x70, 0x65, 0x63, 0x12, 0x78, 0x0a, + 0x1c, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, + 0x65, 0x72, 0x5f, 0x68, 0x75, 0x62, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x6d, 0x6f, 0x63, 0x6b, 0x67, 0x63, 0x70, 0x2e, 0x63, 0x6c, + 0x6f, 0x75, 0x64, 0x2e, 0x67, 0x6b, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, + 0x79, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x62, 0x65, + 0x74, 0x61, 0x2e, 0x48, 0x75, 0x62, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x19, 0x70, 0x6f, + 0x6c, 0x69, 0x63, 0x79, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x48, 0x75, + 0x62, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, + 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, + 0x6e, 0x22, 0x9e, 0x09, 0x0a, 0x09, 0x48, 0x75, 0x62, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, + 0x66, 0x0a, 0x0c, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x43, 0x2e, 0x6d, 0x6f, 0x63, 0x6b, 0x67, 0x63, 0x70, 0x2e, + 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x67, 0x6b, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x70, 0x6f, 0x6c, + 0x69, 0x63, 0x79, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x2e, 0x76, 0x31, + 0x62, 0x65, 0x74, 0x61, 0x2e, 0x48, 0x75, 0x62, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x49, + 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x53, 0x70, 0x65, 0x63, 0x52, 0x0b, 0x69, 0x6e, 0x73, 0x74, + 0x61, 0x6c, 0x6c, 0x53, 0x70, 0x65, 0x63, 0x12, 0x39, 0x0a, 0x16, 0x61, 0x75, 0x64, 0x69, 0x74, + 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x5f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, + 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x48, 0x00, 0x52, 0x14, 0x61, 0x75, 0x64, 0x69, 0x74, + 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x88, + 0x01, 0x01, 0x12, 0x33, 0x0a, 0x15, 0x65, 0x78, 0x65, 0x6d, 0x70, 0x74, 0x61, 0x62, 0x6c, 0x65, + 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, + 0x09, 0x52, 0x14, 0x65, 0x78, 0x65, 0x6d, 0x70, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x4e, 0x61, 0x6d, + 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x12, 0x3a, 0x0a, 0x19, 0x72, 0x65, 0x66, 0x65, 0x72, + 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x5f, 0x72, 0x75, 0x6c, 0x65, 0x73, 0x5f, 0x65, 0x6e, 0x61, + 0x62, 0x6c, 0x65, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x17, 0x72, 0x65, 0x66, 0x65, + 0x72, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x52, 0x75, 0x6c, 0x65, 0x73, 0x45, 0x6e, 0x61, 0x62, + 0x6c, 0x65, 0x64, 0x12, 0x2c, 0x0a, 0x12, 0x6c, 0x6f, 0x67, 0x5f, 0x64, 0x65, 0x6e, 0x69, 0x65, + 0x73, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x10, 0x6c, 0x6f, 0x67, 0x44, 0x65, 0x6e, 0x69, 0x65, 0x73, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, + 0x64, 0x12, 0x29, 0x0a, 0x10, 0x6d, 0x75, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x65, 0x6e, + 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x6d, 0x75, 0x74, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x63, 0x0a, 0x0a, + 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x3e, 0x2e, 0x6d, 0x6f, 0x63, 0x6b, 0x67, 0x63, 0x70, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, + 0x2e, 0x67, 0x6b, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x63, 0x6f, + 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x2e, + 0x4d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x48, 0x01, 0x52, 0x0a, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x69, 0x6e, 0x67, 0x88, 0x01, + 0x01, 0x12, 0x6b, 0x0a, 0x0e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74, + 0x65, 0x6e, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3f, 0x2e, 0x6d, 0x6f, 0x63, 0x6b, + 0x67, 0x63, 0x70, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x67, 0x6b, 0x65, 0x68, 0x75, 0x62, + 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, + 0x72, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x43, + 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x53, 0x70, 0x65, 0x63, 0x48, 0x02, 0x52, 0x0d, 0x70, 0x6f, + 0x6c, 0x69, 0x63, 0x79, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x12, 0x41, + 0x0a, 0x1a, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x74, 0x5f, 0x76, 0x69, 0x6f, + 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x0a, 0x20, 0x01, + 0x28, 0x03, 0x48, 0x03, 0x52, 0x18, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x74, + 0x56, 0x69, 0x6f, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x88, 0x01, + 0x01, 0x12, 0x7d, 0x0a, 0x12, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x5f, + 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x4e, 0x2e, + 0x6d, 0x6f, 0x63, 0x6b, 0x67, 0x63, 0x70, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x67, 0x6b, + 0x65, 0x68, 0x75, 0x62, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x63, 0x6f, 0x6e, 0x74, 0x72, + 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x48, 0x75, 0x62, + 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, + 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x11, 0x64, + 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, + 0x1a, 0x94, 0x01, 0x0a, 0x16, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x43, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, + 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x64, 0x0a, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x4e, 0x2e, 0x6d, + 0x6f, 0x63, 0x6b, 0x67, 0x63, 0x70, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x67, 0x6b, 0x65, + 0x68, 0x75, 0x62, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, + 0x6c, 0x6c, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x50, 0x6f, 0x6c, 0x69, + 0x63, 0x79, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x44, 0x65, 0x70, 0x6c, + 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x9c, 0x01, 0x0a, 0x0b, 0x49, 0x6e, 0x73, 0x74, + 0x61, 0x6c, 0x6c, 0x53, 0x70, 0x65, 0x63, 0x12, 0x1c, 0x0a, 0x18, 0x49, 0x4e, 0x53, 0x54, 0x41, + 0x4c, 0x4c, 0x5f, 0x53, 0x50, 0x45, 0x43, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, + 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1e, 0x0a, 0x1a, 0x49, 0x4e, 0x53, 0x54, 0x41, 0x4c, 0x4c, + 0x5f, 0x53, 0x50, 0x45, 0x43, 0x5f, 0x4e, 0x4f, 0x54, 0x5f, 0x49, 0x4e, 0x53, 0x54, 0x41, 0x4c, + 0x4c, 0x45, 0x44, 0x10, 0x01, 0x12, 0x18, 0x0a, 0x14, 0x49, 0x4e, 0x53, 0x54, 0x41, 0x4c, 0x4c, + 0x5f, 0x53, 0x50, 0x45, 0x43, 0x5f, 0x45, 0x4e, 0x41, 0x42, 0x4c, 0x45, 0x44, 0x10, 0x02, 0x12, + 0x1a, 0x0a, 0x16, 0x49, 0x4e, 0x53, 0x54, 0x41, 0x4c, 0x4c, 0x5f, 0x53, 0x50, 0x45, 0x43, 0x5f, + 0x53, 0x55, 0x53, 0x50, 0x45, 0x4e, 0x44, 0x45, 0x44, 0x10, 0x03, 0x12, 0x19, 0x0a, 0x15, 0x49, + 0x4e, 0x53, 0x54, 0x41, 0x4c, 0x4c, 0x5f, 0x53, 0x50, 0x45, 0x43, 0x5f, 0x44, 0x45, 0x54, 0x41, + 0x43, 0x48, 0x45, 0x44, 0x10, 0x04, 0x42, 0x19, 0x0a, 0x17, 0x5f, 0x61, 0x75, 0x64, 0x69, 0x74, + 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x5f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, + 0x73, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x69, 0x6e, 0x67, + 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74, + 0x65, 0x6e, 0x74, 0x42, 0x1d, 0x0a, 0x1b, 0x5f, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x72, 0x61, 0x69, + 0x6e, 0x74, 0x5f, 0x76, 0x69, 0x6f, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6c, 0x69, 0x6d, + 0x69, 0x74, 0x22, 0xaf, 0x06, 0x0a, 0x20, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x43, 0x6f, 0x6e, + 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, + 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x28, 0x0a, 0x0d, 0x72, 0x65, 0x70, 0x6c, 0x69, + 0x63, 0x61, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x48, 0x00, + 0x52, 0x0c, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, + 0x01, 0x12, 0x78, 0x0a, 0x13, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x72, + 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x42, + 0x2e, 0x6d, 0x6f, 0x63, 0x6b, 0x67, 0x63, 0x70, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x67, + 0x6b, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x63, 0x6f, 0x6e, 0x74, + 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x52, 0x65, + 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x6d, 0x65, 0x6e, + 0x74, 0x73, 0x48, 0x01, 0x52, 0x12, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x52, + 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x88, 0x01, 0x01, 0x12, 0x33, 0x0a, 0x11, 0x70, + 0x6f, 0x64, 0x5f, 0x61, 0x6e, 0x74, 0x69, 0x5f, 0x61, 0x66, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x79, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x42, 0x02, 0x18, 0x01, 0x48, 0x02, 0x52, 0x0f, 0x70, 0x6f, + 0x64, 0x41, 0x6e, 0x74, 0x69, 0x41, 0x66, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x79, 0x88, 0x01, 0x01, + 0x12, 0x82, 0x01, 0x0a, 0x0f, 0x70, 0x6f, 0x64, 0x5f, 0x74, 0x6f, 0x6c, 0x65, 0x72, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x59, 0x2e, 0x6d, 0x6f, 0x63, + 0x6b, 0x67, 0x63, 0x70, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x67, 0x6b, 0x65, 0x68, 0x75, + 0x62, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, + 0x65, 0x72, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, + 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, + 0x6d, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x54, 0x6f, 0x6c, 0x65, 0x72, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0e, 0x70, 0x6f, 0x64, 0x54, 0x6f, 0x6c, 0x65, 0x72, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x7a, 0x0a, 0x0c, 0x70, 0x6f, 0x64, 0x5f, 0x61, 0x66, 0x66, + 0x69, 0x6e, 0x69, 0x74, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x57, 0x2e, 0x6d, 0x6f, + 0x63, 0x6b, 0x67, 0x63, 0x70, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x67, 0x6b, 0x65, 0x68, + 0x75, 0x62, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, + 0x6c, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x50, 0x6f, 0x6c, 0x69, 0x63, + 0x79, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x44, 0x65, 0x70, 0x6c, 0x6f, + 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x41, 0x66, 0x66, 0x69, + 0x6e, 0x69, 0x74, 0x79, 0x52, 0x0b, 0x70, 0x6f, 0x64, 0x41, 0x66, 0x66, 0x69, 0x6e, 0x69, 0x74, + 0x79, 0x1a, 0xa6, 0x01, 0x0a, 0x0a, 0x54, 0x6f, 0x6c, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x12, 0x15, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, + 0x03, 0x6b, 0x65, 0x79, 0x88, 0x01, 0x01, 0x12, 0x1f, 0x0a, 0x08, 0x6f, 0x70, 0x65, 0x72, 0x61, + 0x74, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x08, 0x6f, 0x70, 0x65, + 0x72, 0x61, 0x74, 0x6f, 0x72, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x02, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x65, 0x66, 0x66, 0x65, 0x63, 0x74, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x09, 0x48, 0x03, 0x52, 0x06, 0x65, 0x66, 0x66, 0x65, 0x63, 0x74, 0x88, 0x01, 0x01, + 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x6b, 0x65, 0x79, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x6f, 0x70, 0x65, + 0x72, 0x61, 0x74, 0x6f, 0x72, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x42, + 0x09, 0x0a, 0x07, 0x5f, 0x65, 0x66, 0x66, 0x65, 0x63, 0x74, 0x22, 0x48, 0x0a, 0x08, 0x41, 0x66, + 0x66, 0x69, 0x6e, 0x69, 0x74, 0x79, 0x12, 0x18, 0x0a, 0x14, 0x41, 0x46, 0x46, 0x49, 0x4e, 0x49, + 0x54, 0x59, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, + 0x12, 0x0f, 0x0a, 0x0b, 0x4e, 0x4f, 0x5f, 0x41, 0x46, 0x46, 0x49, 0x4e, 0x49, 0x54, 0x59, 0x10, + 0x01, 0x12, 0x11, 0x0a, 0x0d, 0x41, 0x4e, 0x54, 0x49, 0x5f, 0x41, 0x46, 0x46, 0x49, 0x4e, 0x49, + 0x54, 0x59, 0x10, 0x02, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, + 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x61, + 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x42, 0x14, + 0x0a, 0x12, 0x5f, 0x70, 0x6f, 0x64, 0x5f, 0x61, 0x6e, 0x74, 0x69, 0x5f, 0x61, 0x66, 0x66, 0x69, + 0x6e, 0x69, 0x74, 0x79, 0x22, 0xe4, 0x01, 0x0a, 0x14, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, + 0x65, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x57, 0x0a, + 0x06, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3a, 0x2e, + 0x6d, 0x6f, 0x63, 0x6b, 0x67, 0x63, 0x70, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x67, 0x6b, + 0x65, 0x68, 0x75, 0x62, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x63, 0x6f, 0x6e, 0x74, 0x72, + 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x52, 0x65, 0x73, + 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x48, 0x00, 0x52, 0x06, 0x6c, 0x69, 0x6d, + 0x69, 0x74, 0x73, 0x88, 0x01, 0x01, 0x12, 0x5b, 0x0a, 0x08, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3a, 0x2e, 0x6d, 0x6f, 0x63, 0x6b, 0x67, + 0x63, 0x70, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x67, 0x6b, 0x65, 0x68, 0x75, 0x62, 0x2e, + 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, + 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, + 0x4c, 0x69, 0x73, 0x74, 0x48, 0x01, 0x52, 0x08, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, + 0x88, 0x01, 0x01, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x42, 0x0b, + 0x0a, 0x09, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x22, 0x55, 0x0a, 0x0c, 0x52, + 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x06, 0x6d, + 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x06, 0x6d, + 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x88, 0x01, 0x01, 0x12, 0x15, 0x0a, 0x03, 0x63, 0x70, 0x75, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x03, 0x63, 0x70, 0x75, 0x88, 0x01, 0x01, 0x42, + 0x09, 0x0a, 0x07, 0x5f, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x63, + 0x70, 0x75, 0x22, 0xd7, 0x01, 0x0a, 0x15, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x4c, + 0x69, 0x62, 0x72, 0x61, 0x72, 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x74, 0x0a, 0x0c, + 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0e, 0x32, 0x50, 0x2e, 0x6d, 0x6f, 0x63, 0x6b, 0x67, 0x63, 0x70, 0x2e, 0x63, 0x6c, 0x6f, + 0x75, 0x64, 0x2e, 0x67, 0x6b, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, + 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, + 0x61, 0x2e, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x62, 0x72, 0x61, 0x72, + 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0c, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x22, 0x48, 0x0a, 0x0c, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x12, 0x1c, 0x0a, 0x18, 0x49, 0x4e, 0x53, 0x54, 0x41, 0x4c, 0x4c, 0x41, 0x54, 0x49, + 0x4f, 0x4e, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, + 0x12, 0x11, 0x0a, 0x0d, 0x4e, 0x4f, 0x54, 0x5f, 0x49, 0x4e, 0x53, 0x54, 0x41, 0x4c, 0x4c, 0x45, + 0x44, 0x10, 0x01, 0x12, 0x07, 0x0a, 0x03, 0x41, 0x4c, 0x4c, 0x10, 0x02, 0x22, 0xdf, 0x01, 0x0a, + 0x10, 0x4d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x12, 0x6c, 0x0a, 0x08, 0x62, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x73, 0x18, 0x01, 0x20, + 0x03, 0x28, 0x0e, 0x32, 0x50, 0x2e, 0x6d, 0x6f, 0x63, 0x6b, 0x67, 0x63, 0x70, 0x2e, 0x63, 0x6c, + 0x6f, 0x75, 0x64, 0x2e, 0x67, 0x6b, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, + 0x79, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x62, 0x65, + 0x74, 0x61, 0x2e, 0x4d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x2e, 0x4d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x69, 0x6e, 0x67, 0x42, 0x61, + 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x52, 0x08, 0x62, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x73, 0x22, + 0x5d, 0x0a, 0x11, 0x4d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x69, 0x6e, 0x67, 0x42, 0x61, 0x63, + 0x6b, 0x65, 0x6e, 0x64, 0x12, 0x22, 0x0a, 0x1e, 0x4d, 0x4f, 0x4e, 0x49, 0x54, 0x4f, 0x52, 0x49, + 0x4e, 0x47, 0x5f, 0x42, 0x41, 0x43, 0x4b, 0x45, 0x4e, 0x44, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, + 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0e, 0x0a, 0x0a, 0x50, 0x52, 0x4f, 0x4d, + 0x45, 0x54, 0x48, 0x45, 0x55, 0x53, 0x10, 0x01, 0x12, 0x14, 0x0a, 0x10, 0x43, 0x4c, 0x4f, 0x55, + 0x44, 0x5f, 0x4d, 0x4f, 0x4e, 0x49, 0x54, 0x4f, 0x52, 0x49, 0x4e, 0x47, 0x10, 0x02, 0x22, 0x8e, + 0x01, 0x0a, 0x0e, 0x4f, 0x6e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, + 0x65, 0x12, 0x62, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, + 0x32, 0x4c, 0x2e, 0x6d, 0x6f, 0x63, 0x6b, 0x67, 0x63, 0x70, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, + 0x2e, 0x67, 0x6b, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x63, 0x6f, + 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x2e, + 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x53, 0x74, 0x61, 0x74, 0x65, 0x2e, + 0x4c, 0x69, 0x66, 0x65, 0x63, 0x79, 0x63, 0x6c, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x05, + 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x22, + 0x44, 0x0a, 0x11, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, + 0x53, 0x70, 0x65, 0x63, 0x12, 0x2f, 0x0a, 0x13, 0x65, 0x78, 0x65, 0x6d, 0x70, 0x74, 0x65, 0x64, + 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, + 0x09, 0x52, 0x12, 0x65, 0x78, 0x65, 0x6d, 0x70, 0x74, 0x65, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x73, + 0x70, 0x61, 0x63, 0x65, 0x73, 0x22, 0xe8, 0x02, 0x0a, 0x11, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, + 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x53, 0x70, 0x65, 0x63, 0x12, 0x66, 0x0a, 0x07, 0x62, + 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x4c, 0x2e, 0x6d, + 0x6f, 0x63, 0x6b, 0x67, 0x63, 0x70, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x67, 0x6b, 0x65, + 0x68, 0x75, 0x62, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, + 0x6c, 0x6c, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x50, 0x6f, 0x6c, 0x69, + 0x63, 0x79, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x42, 0x75, + 0x6e, 0x64, 0x6c, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x62, 0x75, 0x6e, 0x64, + 0x6c, 0x65, 0x73, 0x12, 0x6e, 0x0a, 0x10, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, + 0x6c, 0x69, 0x62, 0x72, 0x61, 0x72, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x43, 0x2e, + 0x6d, 0x6f, 0x63, 0x6b, 0x67, 0x63, 0x70, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x67, 0x6b, + 0x65, 0x68, 0x75, 0x62, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x63, 0x6f, 0x6e, 0x74, 0x72, + 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x54, 0x65, 0x6d, + 0x70, 0x6c, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x62, 0x72, 0x61, 0x72, 0x79, 0x43, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x52, 0x0f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x62, 0x72, + 0x61, 0x72, 0x79, 0x1a, 0x7b, 0x0a, 0x0c, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x73, 0x45, 0x6e, + 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x55, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3f, 0x2e, 0x6d, 0x6f, 0x63, 0x6b, 0x67, 0x63, 0x70, 0x2e, 0x63, + 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x67, 0x6b, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x70, 0x6f, 0x6c, 0x69, + 0x63, 0x79, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x62, + 0x65, 0x74, 0x61, 0x2e, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, + 0x6c, 0x53, 0x70, 0x65, 0x63, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, + 0x42, 0xb6, 0x02, 0x0a, 0x30, 0x63, 0x6f, 0x6d, 0x2e, 0x6d, 0x6f, 0x63, 0x6b, 0x67, 0x63, 0x70, + 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x67, 0x6b, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x70, 0x6f, + 0x6c, 0x69, 0x63, 0x79, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x2e, 0x76, + 0x31, 0x62, 0x65, 0x74, 0x61, 0x42, 0x15, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x43, 0x6f, 0x6e, + 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x5b, + 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6f, 0x6d, + 0x2f, 0x67, 0x6f, 0x2f, 0x67, 0x6b, 0x65, 0x68, 0x75, 0x62, 0x2f, 0x70, 0x6f, 0x6c, 0x69, 0x63, + 0x79, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x2f, 0x61, 0x70, 0x69, 0x76, + 0x31, 0x62, 0x65, 0x74, 0x61, 0x2f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x63, 0x6f, 0x6e, 0x74, + 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x70, 0x62, 0x3b, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x63, + 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x70, 0x62, 0xaa, 0x02, 0x2b, 0x47, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x47, 0x6b, 0x65, 0x48, 0x75, + 0x62, 0x2e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, + 0x65, 0x72, 0x2e, 0x56, 0x31, 0x42, 0x65, 0x74, 0x61, 0xca, 0x02, 0x2b, 0x47, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x5c, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x5c, 0x47, 0x6b, 0x65, 0x48, 0x75, 0x62, 0x5c, + 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, + 0x5c, 0x56, 0x31, 0x62, 0x65, 0x74, 0x61, 0xea, 0x02, 0x2f, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x3a, 0x3a, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x3a, 0x3a, 0x47, 0x6b, 0x65, 0x48, 0x75, 0x62, 0x3a, + 0x3a, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, + 0x72, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x65, 0x74, 0x61, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x33, +} + +var ( + file_mockgcp_cloud_gkehub_policycontroller_v1beta_policycontroller_proto_rawDescOnce sync.Once + file_mockgcp_cloud_gkehub_policycontroller_v1beta_policycontroller_proto_rawDescData = file_mockgcp_cloud_gkehub_policycontroller_v1beta_policycontroller_proto_rawDesc +) + +func file_mockgcp_cloud_gkehub_policycontroller_v1beta_policycontroller_proto_rawDescGZIP() []byte { + file_mockgcp_cloud_gkehub_policycontroller_v1beta_policycontroller_proto_rawDescOnce.Do(func() { + file_mockgcp_cloud_gkehub_policycontroller_v1beta_policycontroller_proto_rawDescData = protoimpl.X.CompressGZIP(file_mockgcp_cloud_gkehub_policycontroller_v1beta_policycontroller_proto_rawDescData) + }) + return file_mockgcp_cloud_gkehub_policycontroller_v1beta_policycontroller_proto_rawDescData +} + +var file_mockgcp_cloud_gkehub_policycontroller_v1beta_policycontroller_proto_enumTypes = make([]protoimpl.EnumInfo, 5) +var file_mockgcp_cloud_gkehub_policycontroller_v1beta_policycontroller_proto_msgTypes = make([]protoimpl.MessageInfo, 17) +var file_mockgcp_cloud_gkehub_policycontroller_v1beta_policycontroller_proto_goTypes = []interface{}{ + (MembershipState_LifecycleState)(0), // 0: mockgcp.cloud.gkehub.policycontroller.v1beta.MembershipState.LifecycleState + (HubConfig_InstallSpec)(0), // 1: mockgcp.cloud.gkehub.policycontroller.v1beta.HubConfig.InstallSpec + (PolicyControllerDeploymentConfig_Affinity)(0), // 2: mockgcp.cloud.gkehub.policycontroller.v1beta.PolicyControllerDeploymentConfig.Affinity + (TemplateLibraryConfig_Installation)(0), // 3: mockgcp.cloud.gkehub.policycontroller.v1beta.TemplateLibraryConfig.Installation + (MonitoringConfig_MonitoringBackend)(0), // 4: mockgcp.cloud.gkehub.policycontroller.v1beta.MonitoringConfig.MonitoringBackend + (*MembershipState)(nil), // 5: mockgcp.cloud.gkehub.policycontroller.v1beta.MembershipState + (*PolicyContentState)(nil), // 6: mockgcp.cloud.gkehub.policycontroller.v1beta.PolicyContentState + (*MembershipSpec)(nil), // 7: mockgcp.cloud.gkehub.policycontroller.v1beta.MembershipSpec + (*HubConfig)(nil), // 8: mockgcp.cloud.gkehub.policycontroller.v1beta.HubConfig + (*PolicyControllerDeploymentConfig)(nil), // 9: mockgcp.cloud.gkehub.policycontroller.v1beta.PolicyControllerDeploymentConfig + (*ResourceRequirements)(nil), // 10: mockgcp.cloud.gkehub.policycontroller.v1beta.ResourceRequirements + (*ResourceList)(nil), // 11: mockgcp.cloud.gkehub.policycontroller.v1beta.ResourceList + (*TemplateLibraryConfig)(nil), // 12: mockgcp.cloud.gkehub.policycontroller.v1beta.TemplateLibraryConfig + (*MonitoringConfig)(nil), // 13: mockgcp.cloud.gkehub.policycontroller.v1beta.MonitoringConfig + (*OnClusterState)(nil), // 14: mockgcp.cloud.gkehub.policycontroller.v1beta.OnClusterState + (*BundleInstallSpec)(nil), // 15: mockgcp.cloud.gkehub.policycontroller.v1beta.BundleInstallSpec + (*PolicyContentSpec)(nil), // 16: mockgcp.cloud.gkehub.policycontroller.v1beta.PolicyContentSpec + nil, // 17: mockgcp.cloud.gkehub.policycontroller.v1beta.MembershipState.ComponentStatesEntry + nil, // 18: mockgcp.cloud.gkehub.policycontroller.v1beta.PolicyContentState.BundleStatesEntry + nil, // 19: mockgcp.cloud.gkehub.policycontroller.v1beta.HubConfig.DeploymentConfigsEntry + (*PolicyControllerDeploymentConfig_Toleration)(nil), // 20: mockgcp.cloud.gkehub.policycontroller.v1beta.PolicyControllerDeploymentConfig.Toleration + nil, // 21: mockgcp.cloud.gkehub.policycontroller.v1beta.PolicyContentSpec.BundlesEntry +} +var file_mockgcp_cloud_gkehub_policycontroller_v1beta_policycontroller_proto_depIdxs = []int32{ + 17, // 0: mockgcp.cloud.gkehub.policycontroller.v1beta.MembershipState.component_states:type_name -> mockgcp.cloud.gkehub.policycontroller.v1beta.MembershipState.ComponentStatesEntry + 0, // 1: mockgcp.cloud.gkehub.policycontroller.v1beta.MembershipState.state:type_name -> mockgcp.cloud.gkehub.policycontroller.v1beta.MembershipState.LifecycleState + 6, // 2: mockgcp.cloud.gkehub.policycontroller.v1beta.MembershipState.policy_content_state:type_name -> mockgcp.cloud.gkehub.policycontroller.v1beta.PolicyContentState + 14, // 3: mockgcp.cloud.gkehub.policycontroller.v1beta.PolicyContentState.template_library_state:type_name -> mockgcp.cloud.gkehub.policycontroller.v1beta.OnClusterState + 18, // 4: mockgcp.cloud.gkehub.policycontroller.v1beta.PolicyContentState.bundle_states:type_name -> mockgcp.cloud.gkehub.policycontroller.v1beta.PolicyContentState.BundleStatesEntry + 14, // 5: mockgcp.cloud.gkehub.policycontroller.v1beta.PolicyContentState.referential_sync_config_state:type_name -> mockgcp.cloud.gkehub.policycontroller.v1beta.OnClusterState + 8, // 6: mockgcp.cloud.gkehub.policycontroller.v1beta.MembershipSpec.policy_controller_hub_config:type_name -> mockgcp.cloud.gkehub.policycontroller.v1beta.HubConfig + 1, // 7: mockgcp.cloud.gkehub.policycontroller.v1beta.HubConfig.install_spec:type_name -> mockgcp.cloud.gkehub.policycontroller.v1beta.HubConfig.InstallSpec + 13, // 8: mockgcp.cloud.gkehub.policycontroller.v1beta.HubConfig.monitoring:type_name -> mockgcp.cloud.gkehub.policycontroller.v1beta.MonitoringConfig + 16, // 9: mockgcp.cloud.gkehub.policycontroller.v1beta.HubConfig.policy_content:type_name -> mockgcp.cloud.gkehub.policycontroller.v1beta.PolicyContentSpec + 19, // 10: mockgcp.cloud.gkehub.policycontroller.v1beta.HubConfig.deployment_configs:type_name -> mockgcp.cloud.gkehub.policycontroller.v1beta.HubConfig.DeploymentConfigsEntry + 10, // 11: mockgcp.cloud.gkehub.policycontroller.v1beta.PolicyControllerDeploymentConfig.container_resources:type_name -> mockgcp.cloud.gkehub.policycontroller.v1beta.ResourceRequirements + 20, // 12: mockgcp.cloud.gkehub.policycontroller.v1beta.PolicyControllerDeploymentConfig.pod_tolerations:type_name -> mockgcp.cloud.gkehub.policycontroller.v1beta.PolicyControllerDeploymentConfig.Toleration + 2, // 13: mockgcp.cloud.gkehub.policycontroller.v1beta.PolicyControllerDeploymentConfig.pod_affinity:type_name -> mockgcp.cloud.gkehub.policycontroller.v1beta.PolicyControllerDeploymentConfig.Affinity + 11, // 14: mockgcp.cloud.gkehub.policycontroller.v1beta.ResourceRequirements.limits:type_name -> mockgcp.cloud.gkehub.policycontroller.v1beta.ResourceList + 11, // 15: mockgcp.cloud.gkehub.policycontroller.v1beta.ResourceRequirements.requests:type_name -> mockgcp.cloud.gkehub.policycontroller.v1beta.ResourceList + 3, // 16: mockgcp.cloud.gkehub.policycontroller.v1beta.TemplateLibraryConfig.installation:type_name -> mockgcp.cloud.gkehub.policycontroller.v1beta.TemplateLibraryConfig.Installation + 4, // 17: mockgcp.cloud.gkehub.policycontroller.v1beta.MonitoringConfig.backends:type_name -> mockgcp.cloud.gkehub.policycontroller.v1beta.MonitoringConfig.MonitoringBackend + 0, // 18: mockgcp.cloud.gkehub.policycontroller.v1beta.OnClusterState.state:type_name -> mockgcp.cloud.gkehub.policycontroller.v1beta.MembershipState.LifecycleState + 21, // 19: mockgcp.cloud.gkehub.policycontroller.v1beta.PolicyContentSpec.bundles:type_name -> mockgcp.cloud.gkehub.policycontroller.v1beta.PolicyContentSpec.BundlesEntry + 12, // 20: mockgcp.cloud.gkehub.policycontroller.v1beta.PolicyContentSpec.template_library:type_name -> mockgcp.cloud.gkehub.policycontroller.v1beta.TemplateLibraryConfig + 14, // 21: mockgcp.cloud.gkehub.policycontroller.v1beta.MembershipState.ComponentStatesEntry.value:type_name -> mockgcp.cloud.gkehub.policycontroller.v1beta.OnClusterState + 14, // 22: mockgcp.cloud.gkehub.policycontroller.v1beta.PolicyContentState.BundleStatesEntry.value:type_name -> mockgcp.cloud.gkehub.policycontroller.v1beta.OnClusterState + 9, // 23: mockgcp.cloud.gkehub.policycontroller.v1beta.HubConfig.DeploymentConfigsEntry.value:type_name -> mockgcp.cloud.gkehub.policycontroller.v1beta.PolicyControllerDeploymentConfig + 15, // 24: mockgcp.cloud.gkehub.policycontroller.v1beta.PolicyContentSpec.BundlesEntry.value:type_name -> mockgcp.cloud.gkehub.policycontroller.v1beta.BundleInstallSpec + 25, // [25:25] is the sub-list for method output_type + 25, // [25:25] is the sub-list for method input_type + 25, // [25:25] is the sub-list for extension type_name + 25, // [25:25] is the sub-list for extension extendee + 0, // [0:25] is the sub-list for field type_name +} + +func init() { file_mockgcp_cloud_gkehub_policycontroller_v1beta_policycontroller_proto_init() } +func file_mockgcp_cloud_gkehub_policycontroller_v1beta_policycontroller_proto_init() { + if File_mockgcp_cloud_gkehub_policycontroller_v1beta_policycontroller_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_mockgcp_cloud_gkehub_policycontroller_v1beta_policycontroller_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MembershipState); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_mockgcp_cloud_gkehub_policycontroller_v1beta_policycontroller_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PolicyContentState); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_mockgcp_cloud_gkehub_policycontroller_v1beta_policycontroller_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MembershipSpec); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_mockgcp_cloud_gkehub_policycontroller_v1beta_policycontroller_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*HubConfig); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_mockgcp_cloud_gkehub_policycontroller_v1beta_policycontroller_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PolicyControllerDeploymentConfig); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_mockgcp_cloud_gkehub_policycontroller_v1beta_policycontroller_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ResourceRequirements); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_mockgcp_cloud_gkehub_policycontroller_v1beta_policycontroller_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ResourceList); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_mockgcp_cloud_gkehub_policycontroller_v1beta_policycontroller_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*TemplateLibraryConfig); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_mockgcp_cloud_gkehub_policycontroller_v1beta_policycontroller_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MonitoringConfig); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_mockgcp_cloud_gkehub_policycontroller_v1beta_policycontroller_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*OnClusterState); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_mockgcp_cloud_gkehub_policycontroller_v1beta_policycontroller_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BundleInstallSpec); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_mockgcp_cloud_gkehub_policycontroller_v1beta_policycontroller_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PolicyContentSpec); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_mockgcp_cloud_gkehub_policycontroller_v1beta_policycontroller_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PolicyControllerDeploymentConfig_Toleration); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + file_mockgcp_cloud_gkehub_policycontroller_v1beta_policycontroller_proto_msgTypes[3].OneofWrappers = []interface{}{} + file_mockgcp_cloud_gkehub_policycontroller_v1beta_policycontroller_proto_msgTypes[4].OneofWrappers = []interface{}{} + file_mockgcp_cloud_gkehub_policycontroller_v1beta_policycontroller_proto_msgTypes[5].OneofWrappers = []interface{}{} + file_mockgcp_cloud_gkehub_policycontroller_v1beta_policycontroller_proto_msgTypes[6].OneofWrappers = []interface{}{} + file_mockgcp_cloud_gkehub_policycontroller_v1beta_policycontroller_proto_msgTypes[15].OneofWrappers = []interface{}{} + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_mockgcp_cloud_gkehub_policycontroller_v1beta_policycontroller_proto_rawDesc, + NumEnums: 5, + NumMessages: 17, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_mockgcp_cloud_gkehub_policycontroller_v1beta_policycontroller_proto_goTypes, + DependencyIndexes: file_mockgcp_cloud_gkehub_policycontroller_v1beta_policycontroller_proto_depIdxs, + EnumInfos: file_mockgcp_cloud_gkehub_policycontroller_v1beta_policycontroller_proto_enumTypes, + MessageInfos: file_mockgcp_cloud_gkehub_policycontroller_v1beta_policycontroller_proto_msgTypes, + }.Build() + File_mockgcp_cloud_gkehub_policycontroller_v1beta_policycontroller_proto = out.File + file_mockgcp_cloud_gkehub_policycontroller_v1beta_policycontroller_proto_rawDesc = nil + file_mockgcp_cloud_gkehub_policycontroller_v1beta_policycontroller_proto_goTypes = nil + file_mockgcp_cloud_gkehub_policycontroller_v1beta_policycontroller_proto_depIdxs = nil +} diff --git a/mockgcp/generated/mockgcp/cloud/gkehub/v1beta/configmanagement/configmanagement.pb.go b/mockgcp/generated/mockgcp/cloud/gkehub/v1beta/configmanagement/configmanagement.pb.go index f09564ec6a..6a8b45787f 100644 --- a/mockgcp/generated/mockgcp/cloud/gkehub/v1beta/configmanagement/configmanagement.pb.go +++ b/mockgcp/generated/mockgcp/cloud/gkehub/v1beta/configmanagement/configmanagement.pb.go @@ -284,11 +284,11 @@ type MembershipSpec struct { // Config Sync configuration for the cluster. ConfigSync *ConfigSync `protobuf:"bytes,1,opt,name=config_sync,json=configSync,proto3" json:"config_sync,omitempty"` - // **DEPRECATED** Configuring Policy Controller through the configmanagement feature is no longer recommended. Use the policycontroller feature instead. + // Policy Controller configuration for the cluster. PolicyController *PolicyController `protobuf:"bytes,2,opt,name=policy_controller,json=policyController,proto3" json:"policy_controller,omitempty"` // Binauthz conifguration for the cluster. Binauthz *BinauthzConfig `protobuf:"bytes,3,opt,name=binauthz,proto3" json:"binauthz,omitempty"` - // Hierarchy Controller is no longer available. Use https://github.com/kubernetes-sigs/hierarchical-namespaces instead. + // Hierarchy Controller configuration for the cluster. HierarchyController *HierarchyControllerConfig `protobuf:"bytes,4,opt,name=hierarchy_controller,json=hierarchyController,proto3" json:"hierarchy_controller,omitempty"` // Version of ACM installed. Version string `protobuf:"bytes,10,opt,name=version,proto3" json:"version,omitempty"` diff --git a/mockgcp/generated/mockgcp/cloud/gkehub/v1beta/feature.pb.go b/mockgcp/generated/mockgcp/cloud/gkehub/v1beta/feature.pb.go index 87e2451ec8..dea6e3ba54 100644 --- a/mockgcp/generated/mockgcp/cloud/gkehub/v1beta/feature.pb.go +++ b/mockgcp/generated/mockgcp/cloud/gkehub/v1beta/feature.pb.go @@ -25,6 +25,7 @@ import ( meteringpb "github.com/GoogleCloudPlatform/k8s-config-connector/mockgcp/generated/mockgcp/cloud/gkehub/v1beta/metering" multiclusteringresspb "github.com/GoogleCloudPlatform/k8s-config-connector/mockgcp/generated/mockgcp/cloud/gkehub/v1beta/multiclusteringress" servicemeshpb "github.com/GoogleCloudPlatform/k8s-config-connector/mockgcp/generated/mockgcp/cloud/gkehub/servicemesh/v1beta" + policycontrollerpb "github.com/GoogleCloudPlatform/k8s-config-connector/mockgcp/generated/mockgcp/cloud/gkehub/policycontroller/v1beta" timestamp "github.com/golang/protobuf/ptypes/timestamp" _ "google.golang.org/genproto/googleapis/api/annotations" protoreflect "google.golang.org/protobuf/reflect/protoreflect" @@ -579,6 +580,7 @@ type MembershipFeatureSpec struct { // // *MembershipFeatureSpec_Configmanagement // *MembershipFeatureSpec_Mesh + // *MembershipFeatureSpec_Policycontroller FeatureSpec isMembershipFeatureSpec_FeatureSpec `protobuf_oneof:"feature_spec"` } @@ -635,6 +637,13 @@ func (x *MembershipFeatureSpec) GetMesh() *servicemeshpb.MembershipSpec { return nil } +func (x *MembershipFeatureSpec) GetPolicycontroller() *policycontrollerpb.MembershipSpec { + if x, ok := x.GetFeatureSpec().(*MembershipFeatureSpec_Policycontroller); ok { + return x.Policycontroller + } + return nil +} + type isMembershipFeatureSpec_FeatureSpec interface { isMembershipFeatureSpec_FeatureSpec() } @@ -649,10 +658,17 @@ type MembershipFeatureSpec_Mesh struct { Mesh *servicemeshpb.MembershipSpec `protobuf:"bytes,116,opt,name=mesh,proto3,oneof"` } +type MembershipFeatureSpec_Policycontroller struct { + // Policy Controller spec. + Policycontroller *policycontrollerpb.MembershipSpec `protobuf:"bytes,118,opt,name=policycontroller,proto3,oneof"` +} + func (*MembershipFeatureSpec_Configmanagement) isMembershipFeatureSpec_FeatureSpec() {} func (*MembershipFeatureSpec_Mesh) isMembershipFeatureSpec_FeatureSpec() {} +func (*MembershipFeatureSpec_Policycontroller) isMembershipFeatureSpec_FeatureSpec() {} + // MembershipFeatureState contains Feature status information for a single // Membership. type MembershipFeatureState struct { @@ -665,6 +681,7 @@ type MembershipFeatureState struct { // *MembershipFeatureState_Servicemesh // *MembershipFeatureState_Metering // *MembershipFeatureState_Configmanagement + // *MembershipFeatureState_Policycontroller FeatureState isMembershipFeatureState_FeatureState `protobuf_oneof:"feature_state"` // The high-level state of this Feature for a single membership. State *FeatureState `protobuf:"bytes,1,opt,name=state,proto3" json:"state,omitempty"` @@ -730,6 +747,13 @@ func (x *MembershipFeatureState) GetConfigmanagement() *configmanagementpb.Membe return nil } +func (x *MembershipFeatureState) GetPolicycontroller() *policycontrollerpb.MembershipState { + if x, ok := x.GetFeatureState().(*MembershipFeatureState_Policycontroller); ok { + return x.Policycontroller + } + return nil +} + func (x *MembershipFeatureState) GetState() *FeatureState { if x != nil { return x.State @@ -756,12 +780,19 @@ type MembershipFeatureState_Configmanagement struct { Configmanagement *configmanagementpb.MembershipState `protobuf:"bytes,106,opt,name=configmanagement,proto3,oneof"` } +type MembershipFeatureState_Policycontroller struct { + // Policycontroller-specific state. + Policycontroller *policycontrollerpb.MembershipState `protobuf:"bytes,116,opt,name=policycontroller,proto3,oneof"` +} + func (*MembershipFeatureState_Servicemesh) isMembershipFeatureState_FeatureState() {} func (*MembershipFeatureState_Metering) isMembershipFeatureState_FeatureState() {} func (*MembershipFeatureState_Configmanagement) isMembershipFeatureState_FeatureState() {} +func (*MembershipFeatureState_Policycontroller) isMembershipFeatureState_FeatureState() {} + var File_mockgcp_cloud_gkehub_v1beta_feature_proto protoreflect.FileDescriptor var file_mockgcp_cloud_gkehub_v1beta_feature_proto_rawDesc = []byte{ @@ -773,193 +804,211 @@ var file_mockgcp_cloud_gkehub_v1beta_feature_proto_rawDesc = []byte{ 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x62, 0x65, 0x68, 0x61, 0x76, 0x69, 0x6f, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x19, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x39, 0x6d, 0x6f, 0x63, 0x6b, 0x67, 0x63, 0x70, 0x2f, 0x63, 0x6c, - 0x6f, 0x75, 0x64, 0x2f, 0x67, 0x6b, 0x65, 0x68, 0x75, 0x62, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x69, - 0x63, 0x65, 0x6d, 0x65, 0x73, 0x68, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x2f, 0x73, 0x65, - 0x72, 0x76, 0x69, 0x63, 0x65, 0x6d, 0x65, 0x73, 0x68, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, - 0x43, 0x6d, 0x6f, 0x63, 0x6b, 0x67, 0x63, 0x70, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2f, 0x67, - 0x6b, 0x65, 0x68, 0x75, 0x62, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x2f, 0x63, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2f, 0x63, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x33, 0x6d, 0x6f, 0x63, 0x6b, 0x67, 0x63, 0x70, 0x2f, 0x63, 0x6c, + 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x43, 0x6d, 0x6f, 0x63, 0x6b, 0x67, 0x63, 0x70, 0x2f, 0x63, 0x6c, + 0x6f, 0x75, 0x64, 0x2f, 0x67, 0x6b, 0x65, 0x68, 0x75, 0x62, 0x2f, 0x70, 0x6f, 0x6c, 0x69, 0x63, + 0x79, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x2f, 0x76, 0x31, 0x62, 0x65, + 0x74, 0x61, 0x2f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, + 0x6c, 0x65, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x39, 0x6d, 0x6f, 0x63, 0x6b, 0x67, + 0x63, 0x70, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2f, 0x67, 0x6b, 0x65, 0x68, 0x75, 0x62, 0x2f, + 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x6d, 0x65, 0x73, 0x68, 0x2f, 0x76, 0x31, 0x62, 0x65, + 0x74, 0x61, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x6d, 0x65, 0x73, 0x68, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x43, 0x6d, 0x6f, 0x63, 0x6b, 0x67, 0x63, 0x70, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2f, 0x67, 0x6b, 0x65, 0x68, 0x75, 0x62, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, - 0x61, 0x2f, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x2f, 0x6d, 0x65, 0x74, 0x65, 0x72, - 0x69, 0x6e, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x49, 0x6d, 0x6f, 0x63, 0x6b, 0x67, + 0x61, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, + 0x6e, 0x74, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, + 0x65, 0x6e, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x33, 0x6d, 0x6f, 0x63, 0x6b, 0x67, 0x63, 0x70, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2f, 0x67, 0x6b, 0x65, 0x68, 0x75, 0x62, 0x2f, - 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x2f, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x63, 0x6c, 0x75, 0x73, - 0x74, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x2f, 0x6d, 0x75, 0x6c, 0x74, 0x69, - 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x8c, 0x09, 0x0a, 0x07, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, - 0x65, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, - 0x03, 0xe0, 0x41, 0x03, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x48, 0x0a, 0x06, 0x6c, 0x61, - 0x62, 0x65, 0x6c, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x6d, 0x6f, 0x63, - 0x6b, 0x67, 0x63, 0x70, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x67, 0x6b, 0x65, 0x68, 0x75, - 0x62, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, - 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x6c, 0x61, - 0x62, 0x65, 0x6c, 0x73, 0x12, 0x5d, 0x0a, 0x0e, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, - 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x6d, - 0x6f, 0x63, 0x6b, 0x67, 0x63, 0x70, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x67, 0x6b, 0x65, - 0x68, 0x75, 0x62, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x46, 0x65, 0x61, 0x74, 0x75, - 0x72, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x42, - 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0d, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53, 0x74, - 0x61, 0x74, 0x65, 0x12, 0x47, 0x0a, 0x04, 0x73, 0x70, 0x65, 0x63, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x2e, 0x2e, 0x6d, 0x6f, 0x63, 0x6b, 0x67, 0x63, 0x70, 0x2e, 0x63, 0x6c, 0x6f, 0x75, + 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x2f, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x2f, + 0x6d, 0x65, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x49, + 0x6d, 0x6f, 0x63, 0x6b, 0x67, 0x63, 0x70, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2f, 0x67, 0x6b, + 0x65, 0x68, 0x75, 0x62, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x2f, 0x6d, 0x75, 0x6c, 0x74, + 0x69, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x2f, + 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x72, + 0x65, 0x73, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, + 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x8c, 0x09, 0x0a, 0x07, 0x46, + 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, + 0x48, 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x30, 0x2e, 0x6d, 0x6f, 0x63, 0x6b, 0x67, 0x63, 0x70, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, + 0x67, 0x6b, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x46, 0x65, + 0x61, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, + 0x79, 0x52, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x5d, 0x0a, 0x0e, 0x72, 0x65, 0x73, + 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x31, 0x2e, 0x6d, 0x6f, 0x63, 0x6b, 0x67, 0x63, 0x70, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x67, 0x6b, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x2e, - 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x53, 0x70, 0x65, - 0x63, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x04, 0x73, 0x70, 0x65, 0x63, 0x12, 0x69, 0x0a, 0x10, - 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x73, - 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x39, 0x2e, 0x6d, 0x6f, 0x63, 0x6b, 0x67, 0x63, 0x70, - 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x67, 0x6b, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x76, 0x31, - 0x62, 0x65, 0x74, 0x61, 0x2e, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x4d, 0x65, 0x6d, - 0x62, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x53, 0x70, 0x65, 0x63, 0x73, 0x45, 0x6e, 0x74, 0x72, - 0x79, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0f, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, - 0x69, 0x70, 0x53, 0x70, 0x65, 0x63, 0x73, 0x12, 0x4a, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, - 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x6d, 0x6f, 0x63, 0x6b, 0x67, 0x63, 0x70, + 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53, + 0x74, 0x61, 0x74, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0d, 0x72, 0x65, 0x73, 0x6f, 0x75, + 0x72, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x47, 0x0a, 0x04, 0x73, 0x70, 0x65, 0x63, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x6d, 0x6f, 0x63, 0x6b, 0x67, 0x63, 0x70, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x67, 0x6b, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x46, 0x65, 0x61, 0x74, 0x75, - 0x72, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x05, 0x73, 0x74, - 0x61, 0x74, 0x65, 0x12, 0x6c, 0x0a, 0x11, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, 0x69, - 0x70, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3a, - 0x2e, 0x6d, 0x6f, 0x63, 0x6b, 0x67, 0x63, 0x70, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x67, - 0x6b, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x46, 0x65, 0x61, - 0x74, 0x75, 0x72, 0x65, 0x2e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x53, - 0x74, 0x61, 0x74, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, - 0x10, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x53, 0x74, 0x61, 0x74, 0x65, - 0x73, 0x12, 0x40, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, - 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, - 0x6d, 0x70, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, - 0x69, 0x6d, 0x65, 0x12, 0x40, 0x0a, 0x0b, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, - 0x6d, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, - 0x74, 0x61, 0x6d, 0x70, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x40, 0x0a, 0x0b, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x5f, - 0x74, 0x69, 0x6d, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, - 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0a, 0x64, 0x65, 0x6c, - 0x65, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x1a, 0x39, 0x0a, 0x0b, 0x4c, 0x61, 0x62, 0x65, 0x6c, - 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, - 0x38, 0x01, 0x1a, 0x76, 0x0a, 0x14, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, - 0x53, 0x70, 0x65, 0x63, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, - 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x48, 0x0a, 0x05, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x6d, 0x6f, + 0x72, 0x65, 0x53, 0x70, 0x65, 0x63, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x04, 0x73, 0x70, 0x65, + 0x63, 0x12, 0x69, 0x0a, 0x10, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x5f, + 0x73, 0x70, 0x65, 0x63, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x39, 0x2e, 0x6d, 0x6f, 0x63, 0x6b, 0x67, 0x63, 0x70, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x67, 0x6b, 0x65, 0x68, - 0x75, 0x62, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, - 0x73, 0x68, 0x69, 0x70, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x53, 0x70, 0x65, 0x63, 0x52, - 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x78, 0x0a, 0x15, 0x4d, 0x65, - 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x53, 0x74, 0x61, 0x74, 0x65, 0x73, 0x45, 0x6e, - 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x49, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x6d, 0x6f, 0x63, 0x6b, 0x67, 0x63, 0x70, 0x2e, 0x63, - 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x67, 0x6b, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x76, 0x31, 0x62, 0x65, - 0x74, 0x61, 0x2e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x46, 0x65, 0x61, - 0x74, 0x75, 0x72, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x3a, 0x02, 0x38, 0x01, 0x3a, 0x5e, 0xea, 0x41, 0x5b, 0x0a, 0x1d, 0x67, 0x6b, 0x65, 0x68, 0x75, - 0x62, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, - 0x2f, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x12, 0x3a, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, - 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x6c, 0x6f, 0x63, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x7d, 0x2f, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2f, 0x7b, 0x66, 0x65, 0x61, 0x74, - 0x75, 0x72, 0x65, 0x7d, 0x22, 0xd2, 0x01, 0x0a, 0x14, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, - 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x4d, 0x0a, - 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x37, 0x2e, 0x6d, - 0x6f, 0x63, 0x6b, 0x67, 0x63, 0x70, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x67, 0x6b, 0x65, - 0x68, 0x75, 0x62, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x46, 0x65, 0x61, 0x74, 0x75, - 0x72, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x2e, - 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x22, 0x6b, 0x0a, 0x05, - 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x15, 0x0a, 0x11, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x55, - 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0c, 0x0a, 0x08, - 0x45, 0x4e, 0x41, 0x42, 0x4c, 0x49, 0x4e, 0x47, 0x10, 0x01, 0x12, 0x0a, 0x0a, 0x06, 0x41, 0x43, - 0x54, 0x49, 0x56, 0x45, 0x10, 0x02, 0x12, 0x0d, 0x0a, 0x09, 0x44, 0x49, 0x53, 0x41, 0x42, 0x4c, - 0x49, 0x4e, 0x47, 0x10, 0x03, 0x12, 0x0c, 0x0a, 0x08, 0x55, 0x50, 0x44, 0x41, 0x54, 0x49, 0x4e, - 0x47, 0x10, 0x04, 0x12, 0x14, 0x0a, 0x10, 0x53, 0x45, 0x52, 0x56, 0x49, 0x43, 0x45, 0x5f, 0x55, - 0x50, 0x44, 0x41, 0x54, 0x49, 0x4e, 0x47, 0x10, 0x05, 0x22, 0xef, 0x01, 0x0a, 0x0c, 0x46, 0x65, - 0x61, 0x74, 0x75, 0x72, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x42, 0x0a, 0x04, 0x63, 0x6f, - 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2e, 0x2e, 0x6d, 0x6f, 0x63, 0x6b, 0x67, + 0x75, 0x62, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, + 0x65, 0x2e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x53, 0x70, 0x65, 0x63, + 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0f, 0x6d, 0x65, 0x6d, + 0x62, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x53, 0x70, 0x65, 0x63, 0x73, 0x12, 0x4a, 0x0a, 0x05, + 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x6d, 0x6f, + 0x63, 0x6b, 0x67, 0x63, 0x70, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x67, 0x6b, 0x65, 0x68, + 0x75, 0x62, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, + 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x42, 0x03, 0xe0, 0x41, + 0x03, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x6c, 0x0a, 0x11, 0x6d, 0x65, 0x6d, 0x62, + 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x73, 0x18, 0x07, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x3a, 0x2e, 0x6d, 0x6f, 0x63, 0x6b, 0x67, 0x63, 0x70, 0x2e, 0x63, 0x6c, + 0x6f, 0x75, 0x64, 0x2e, 0x67, 0x6b, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, + 0x61, 0x2e, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, + 0x73, 0x68, 0x69, 0x70, 0x53, 0x74, 0x61, 0x74, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, + 0x03, 0xe0, 0x41, 0x03, 0x52, 0x10, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, + 0x53, 0x74, 0x61, 0x74, 0x65, 0x73, 0x12, 0x40, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, + 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0a, 0x63, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x40, 0x0a, 0x0b, 0x75, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, + 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0a, + 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x40, 0x0a, 0x0b, 0x64, 0x65, + 0x6c, 0x65, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x03, 0xe0, 0x41, 0x03, + 0x52, 0x0a, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x1a, 0x39, 0x0a, 0x0b, + 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, + 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x76, 0x0a, 0x14, 0x4d, 0x65, 0x6d, 0x62, 0x65, + 0x72, 0x73, 0x68, 0x69, 0x70, 0x53, 0x70, 0x65, 0x63, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, + 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, + 0x79, 0x12, 0x48, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x32, 0x2e, 0x6d, 0x6f, 0x63, 0x6b, 0x67, 0x63, 0x70, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, + 0x2e, 0x67, 0x6b, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x4d, + 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, + 0x53, 0x70, 0x65, 0x63, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, + 0x78, 0x0a, 0x15, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x53, 0x74, 0x61, + 0x74, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x49, 0x0a, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x6d, 0x6f, 0x63, 0x6b, + 0x67, 0x63, 0x70, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x67, 0x6b, 0x65, 0x68, 0x75, 0x62, + 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, + 0x69, 0x70, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x3a, 0x5e, 0xea, 0x41, 0x5b, 0x0a, 0x1d, + 0x67, 0x6b, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, + 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x12, 0x3a, 0x70, + 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, + 0x7d, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6c, 0x6f, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2f, + 0x7b, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x7d, 0x22, 0xd2, 0x01, 0x0a, 0x14, 0x46, 0x65, + 0x61, 0x74, 0x75, 0x72, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53, 0x74, 0x61, + 0x74, 0x65, 0x12, 0x4d, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0e, 0x32, 0x37, 0x2e, 0x6d, 0x6f, 0x63, 0x6b, 0x67, 0x63, 0x70, 0x2e, 0x63, 0x6c, 0x6f, 0x75, + 0x64, 0x2e, 0x67, 0x6b, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x2e, + 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53, + 0x74, 0x61, 0x74, 0x65, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, + 0x65, 0x22, 0x6b, 0x0a, 0x05, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x15, 0x0a, 0x11, 0x53, 0x54, + 0x41, 0x54, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, + 0x00, 0x12, 0x0c, 0x0a, 0x08, 0x45, 0x4e, 0x41, 0x42, 0x4c, 0x49, 0x4e, 0x47, 0x10, 0x01, 0x12, + 0x0a, 0x0a, 0x06, 0x41, 0x43, 0x54, 0x49, 0x56, 0x45, 0x10, 0x02, 0x12, 0x0d, 0x0a, 0x09, 0x44, + 0x49, 0x53, 0x41, 0x42, 0x4c, 0x49, 0x4e, 0x47, 0x10, 0x03, 0x12, 0x0c, 0x0a, 0x08, 0x55, 0x50, + 0x44, 0x41, 0x54, 0x49, 0x4e, 0x47, 0x10, 0x04, 0x12, 0x14, 0x0a, 0x10, 0x53, 0x45, 0x52, 0x56, + 0x49, 0x43, 0x45, 0x5f, 0x55, 0x50, 0x44, 0x41, 0x54, 0x49, 0x4e, 0x47, 0x10, 0x05, 0x22, 0xef, + 0x01, 0x0a, 0x0c, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, + 0x42, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2e, 0x2e, + 0x6d, 0x6f, 0x63, 0x6b, 0x67, 0x63, 0x70, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x67, 0x6b, + 0x65, 0x68, 0x75, 0x62, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x46, 0x65, 0x61, 0x74, + 0x75, 0x72, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x04, 0x63, + 0x6f, 0x64, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3b, 0x0a, 0x0b, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, + 0x74, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, + 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, + 0x6d, 0x65, 0x22, 0x3c, 0x0a, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x14, 0x0a, 0x10, 0x43, 0x4f, + 0x44, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, + 0x12, 0x06, 0x0a, 0x02, 0x4f, 0x4b, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x57, 0x41, 0x52, 0x4e, + 0x49, 0x4e, 0x47, 0x10, 0x02, 0x12, 0x09, 0x0a, 0x05, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x03, + 0x22, 0x95, 0x01, 0x0a, 0x11, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x46, 0x65, 0x61, 0x74, 0x75, + 0x72, 0x65, 0x53, 0x70, 0x65, 0x63, 0x12, 0x70, 0x0a, 0x13, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x63, + 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x18, 0x66, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x3c, 0x2e, 0x6d, 0x6f, 0x63, 0x6b, 0x67, 0x63, 0x70, 0x2e, 0x63, 0x6c, + 0x6f, 0x75, 0x64, 0x2e, 0x67, 0x6b, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x6d, 0x75, 0x6c, 0x74, 0x69, + 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x2e, 0x76, + 0x31, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x53, 0x70, 0x65, + 0x63, 0x48, 0x00, 0x52, 0x13, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, + 0x72, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x42, 0x0e, 0x0a, 0x0c, 0x66, 0x65, 0x61, 0x74, + 0x75, 0x72, 0x65, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x22, 0x5a, 0x0a, 0x12, 0x43, 0x6f, 0x6d, 0x6d, + 0x6f, 0x6e, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x44, + 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, + 0x6d, 0x6f, 0x63, 0x6b, 0x67, 0x63, 0x70, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x67, 0x6b, + 0x65, 0x68, 0x75, 0x62, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x46, 0x65, 0x61, 0x74, + 0x75, 0x72, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x05, 0x73, + 0x74, 0x61, 0x74, 0x65, 0x22, 0xce, 0x02, 0x0a, 0x15, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, + 0x68, 0x69, 0x70, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x53, 0x70, 0x65, 0x63, 0x12, 0x6a, + 0x0a, 0x10, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, + 0x6e, 0x74, 0x18, 0x6a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3c, 0x2e, 0x6d, 0x6f, 0x63, 0x6b, 0x67, 0x63, 0x70, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x67, 0x6b, 0x65, 0x68, 0x75, 0x62, 0x2e, - 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x53, 0x74, - 0x61, 0x74, 0x65, 0x2e, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x20, - 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, - 0x12, 0x3b, 0x0a, 0x0b, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, - 0x70, 0x52, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x22, 0x3c, 0x0a, - 0x04, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x14, 0x0a, 0x10, 0x43, 0x4f, 0x44, 0x45, 0x5f, 0x55, 0x4e, - 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x06, 0x0a, 0x02, 0x4f, - 0x4b, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x57, 0x41, 0x52, 0x4e, 0x49, 0x4e, 0x47, 0x10, 0x02, - 0x12, 0x09, 0x0a, 0x05, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x03, 0x22, 0x95, 0x01, 0x0a, 0x11, - 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x53, 0x70, 0x65, - 0x63, 0x12, 0x70, 0x0a, 0x13, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, - 0x72, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x18, 0x66, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3c, - 0x2e, 0x6d, 0x6f, 0x63, 0x6b, 0x67, 0x63, 0x70, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x67, - 0x6b, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x63, 0x6c, 0x75, 0x73, 0x74, - 0x65, 0x72, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, - 0x2e, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x53, 0x70, 0x65, 0x63, 0x48, 0x00, 0x52, 0x13, - 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x72, - 0x65, 0x73, 0x73, 0x42, 0x0e, 0x0a, 0x0c, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x5f, 0x73, - 0x70, 0x65, 0x63, 0x22, 0x5a, 0x0a, 0x12, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x46, 0x65, 0x61, - 0x74, 0x75, 0x72, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x44, 0x0a, 0x05, 0x73, 0x74, 0x61, - 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x6d, 0x6f, 0x63, 0x6b, 0x67, + 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, + 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, + 0x69, 0x70, 0x53, 0x70, 0x65, 0x63, 0x48, 0x00, 0x52, 0x10, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x4d, 0x0a, 0x04, 0x6d, 0x65, + 0x73, 0x68, 0x18, 0x74, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x6d, 0x6f, 0x63, 0x6b, 0x67, 0x63, 0x70, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x67, 0x6b, 0x65, 0x68, 0x75, 0x62, 0x2e, - 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x53, 0x74, - 0x61, 0x74, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x22, - 0xe2, 0x01, 0x0a, 0x15, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x46, 0x65, - 0x61, 0x74, 0x75, 0x72, 0x65, 0x53, 0x70, 0x65, 0x63, 0x12, 0x6a, 0x0a, 0x10, 0x63, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x6a, 0x20, + 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x6d, 0x65, 0x73, 0x68, 0x2e, 0x76, 0x31, 0x62, 0x65, + 0x74, 0x61, 0x2e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x53, 0x70, 0x65, + 0x63, 0x48, 0x00, 0x52, 0x04, 0x6d, 0x65, 0x73, 0x68, 0x12, 0x6a, 0x0a, 0x10, 0x70, 0x6f, 0x6c, + 0x69, 0x63, 0x79, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x18, 0x76, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3c, 0x2e, 0x6d, 0x6f, 0x63, 0x6b, 0x67, 0x63, 0x70, 0x2e, 0x63, 0x6c, - 0x6f, 0x75, 0x64, 0x2e, 0x67, 0x6b, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x62, 0x65, + 0x6f, 0x75, 0x64, 0x2e, 0x67, 0x6b, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, + 0x79, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x53, 0x70, 0x65, - 0x63, 0x48, 0x00, 0x52, 0x10, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x6d, 0x61, 0x6e, 0x61, 0x67, - 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x4d, 0x0a, 0x04, 0x6d, 0x65, 0x73, 0x68, 0x18, 0x74, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x6d, 0x6f, 0x63, 0x6b, 0x67, 0x63, 0x70, 0x2e, 0x63, 0x6c, - 0x6f, 0x75, 0x64, 0x2e, 0x67, 0x6b, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, - 0x63, 0x65, 0x6d, 0x65, 0x73, 0x68, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x4d, 0x65, - 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x53, 0x70, 0x65, 0x63, 0x48, 0x00, 0x52, 0x04, - 0x6d, 0x65, 0x73, 0x68, 0x42, 0x0e, 0x0a, 0x0c, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x5f, - 0x73, 0x70, 0x65, 0x63, 0x22, 0x8a, 0x03, 0x0a, 0x16, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, - 0x68, 0x69, 0x70, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, - 0x5c, 0x0a, 0x0b, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x6d, 0x65, 0x73, 0x68, 0x18, 0x64, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x6d, 0x6f, 0x63, 0x6b, 0x67, 0x63, 0x70, 0x2e, 0x63, - 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x67, 0x6b, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x73, 0x65, 0x72, 0x76, - 0x69, 0x63, 0x65, 0x6d, 0x65, 0x73, 0x68, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x4d, - 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x53, 0x74, 0x61, 0x74, 0x65, 0x48, 0x00, - 0x52, 0x0b, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x6d, 0x65, 0x73, 0x68, 0x12, 0x53, 0x0a, - 0x08, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x68, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x35, 0x2e, 0x6d, 0x6f, 0x63, 0x6b, 0x67, 0x63, 0x70, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, - 0x67, 0x6b, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x2e, - 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, 0x69, - 0x70, 0x53, 0x74, 0x61, 0x74, 0x65, 0x48, 0x00, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x69, - 0x6e, 0x67, 0x12, 0x6b, 0x0a, 0x10, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x6d, 0x61, 0x6e, 0x61, - 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x6a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3d, 0x2e, 0x6d, + 0x63, 0x48, 0x00, 0x52, 0x10, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x63, 0x6f, 0x6e, 0x74, 0x72, + 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x42, 0x0e, 0x0a, 0x0c, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, + 0x5f, 0x73, 0x70, 0x65, 0x63, 0x22, 0xf7, 0x03, 0x0a, 0x16, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, + 0x73, 0x68, 0x69, 0x70, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, + 0x12, 0x5c, 0x0a, 0x0b, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x6d, 0x65, 0x73, 0x68, 0x18, + 0x64, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x6d, 0x6f, 0x63, 0x6b, 0x67, 0x63, 0x70, 0x2e, + 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x67, 0x6b, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x73, 0x65, 0x72, + 0x76, 0x69, 0x63, 0x65, 0x6d, 0x65, 0x73, 0x68, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x2e, + 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x53, 0x74, 0x61, 0x74, 0x65, 0x48, + 0x00, 0x52, 0x0b, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x6d, 0x65, 0x73, 0x68, 0x12, 0x53, + 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x68, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x35, 0x2e, 0x6d, 0x6f, 0x63, 0x6b, 0x67, 0x63, 0x70, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, + 0x2e, 0x67, 0x6b, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x67, + 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, + 0x69, 0x70, 0x53, 0x74, 0x61, 0x74, 0x65, 0x48, 0x00, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x65, 0x72, + 0x69, 0x6e, 0x67, 0x12, 0x6b, 0x0a, 0x10, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x6d, 0x61, 0x6e, + 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x6a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3d, 0x2e, + 0x6d, 0x6f, 0x63, 0x6b, 0x67, 0x63, 0x70, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x67, 0x6b, + 0x65, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x6d, 0x61, 0x6e, 0x61, 0x67, + 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x4d, 0x65, 0x6d, + 0x62, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x53, 0x74, 0x61, 0x74, 0x65, 0x48, 0x00, 0x52, 0x10, + 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, + 0x12, 0x6b, 0x0a, 0x10, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, + 0x6c, 0x6c, 0x65, 0x72, 0x18, 0x74, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3d, 0x2e, 0x6d, 0x6f, 0x63, + 0x6b, 0x67, 0x63, 0x70, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x67, 0x6b, 0x65, 0x68, 0x75, + 0x62, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, + 0x65, 0x72, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, + 0x73, 0x68, 0x69, 0x70, 0x53, 0x74, 0x61, 0x74, 0x65, 0x48, 0x00, 0x52, 0x10, 0x70, 0x6f, 0x6c, + 0x69, 0x63, 0x79, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x12, 0x3f, 0x0a, + 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x6d, 0x6f, 0x63, 0x6b, 0x67, 0x63, 0x70, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x67, 0x6b, 0x65, - 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, - 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x4d, 0x65, 0x6d, 0x62, - 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x53, 0x74, 0x61, 0x74, 0x65, 0x48, 0x00, 0x52, 0x10, 0x63, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, - 0x3f, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, - 0x2e, 0x6d, 0x6f, 0x63, 0x6b, 0x67, 0x63, 0x70, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x67, - 0x6b, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x46, 0x65, 0x61, - 0x74, 0x75, 0x72, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, - 0x42, 0x0f, 0x0a, 0x0d, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x5f, 0x73, 0x74, 0x61, 0x74, - 0x65, 0x42, 0xc3, 0x01, 0x0a, 0x1f, 0x63, 0x6f, 0x6d, 0x2e, 0x6d, 0x6f, 0x63, 0x6b, 0x67, 0x63, - 0x70, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x67, 0x6b, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x76, - 0x31, 0x62, 0x65, 0x74, 0x61, 0x42, 0x0c, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x50, 0x72, - 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x36, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x6f, 0x2f, 0x67, 0x6b, 0x65, 0x68, 0x75, - 0x62, 0x2f, 0x61, 0x70, 0x69, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x2f, 0x67, 0x6b, 0x65, 0x68, - 0x75, 0x62, 0x70, 0x62, 0x3b, 0x67, 0x6b, 0x65, 0x68, 0x75, 0x62, 0x70, 0x62, 0xaa, 0x02, 0x1a, - 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x47, 0x6b, 0x65, - 0x48, 0x75, 0x62, 0x2e, 0x56, 0x31, 0x42, 0x65, 0x74, 0x61, 0xca, 0x02, 0x1a, 0x47, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x5c, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x5c, 0x47, 0x6b, 0x65, 0x48, 0x75, 0x62, - 0x5c, 0x56, 0x31, 0x62, 0x65, 0x74, 0x61, 0xea, 0x02, 0x1d, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x3a, 0x3a, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x3a, 0x3a, 0x47, 0x6b, 0x65, 0x48, 0x75, 0x62, 0x3a, - 0x3a, 0x56, 0x31, 0x62, 0x65, 0x74, 0x61, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x68, 0x75, 0x62, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x46, 0x65, 0x61, 0x74, 0x75, + 0x72, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x42, 0x0f, + 0x0a, 0x0d, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x42, + 0xc3, 0x01, 0x0a, 0x1f, 0x63, 0x6f, 0x6d, 0x2e, 0x6d, 0x6f, 0x63, 0x6b, 0x67, 0x63, 0x70, 0x2e, + 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x67, 0x6b, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x76, 0x31, 0x62, + 0x65, 0x74, 0x61, 0x42, 0x0c, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x50, 0x72, 0x6f, 0x74, + 0x6f, 0x50, 0x01, 0x5a, 0x36, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x6f, 0x2f, 0x67, 0x6b, 0x65, 0x68, 0x75, 0x62, 0x2f, + 0x61, 0x70, 0x69, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x2f, 0x67, 0x6b, 0x65, 0x68, 0x75, 0x62, + 0x70, 0x62, 0x3b, 0x67, 0x6b, 0x65, 0x68, 0x75, 0x62, 0x70, 0x62, 0xaa, 0x02, 0x1a, 0x47, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x47, 0x6b, 0x65, 0x48, 0x75, + 0x62, 0x2e, 0x56, 0x31, 0x42, 0x65, 0x74, 0x61, 0xca, 0x02, 0x1a, 0x47, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x5c, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x5c, 0x47, 0x6b, 0x65, 0x48, 0x75, 0x62, 0x5c, 0x56, + 0x31, 0x62, 0x65, 0x74, 0x61, 0xea, 0x02, 0x1d, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x3a, 0x3a, + 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x3a, 0x3a, 0x47, 0x6b, 0x65, 0x48, 0x75, 0x62, 0x3a, 0x3a, 0x56, + 0x31, 0x62, 0x65, 0x74, 0x61, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -993,9 +1042,11 @@ var file_mockgcp_cloud_gkehub_v1beta_feature_proto_goTypes = []interface{}{ (*multiclusteringresspb.FeatureSpec)(nil), // 13: mockgcp.cloud.gkehub.multiclusteringress.v1beta.FeatureSpec (*configmanagementpb.MembershipSpec)(nil), // 14: mockgcp.cloud.gkehub.configmanagement.v1beta.MembershipSpec (*servicemeshpb.MembershipSpec)(nil), // 15: mockgcp.cloud.gkehub.servicemesh.v1beta.MembershipSpec - (*servicemeshpb.MembershipState)(nil), // 16: mockgcp.cloud.gkehub.servicemesh.v1beta.MembershipState - (*meteringpb.MembershipState)(nil), // 17: mockgcp.cloud.gkehub.metering.v1beta.MembershipState - (*configmanagementpb.MembershipState)(nil), // 18: mockgcp.cloud.gkehub.configmanagement.v1beta.MembershipState + (*policycontrollerpb.MembershipSpec)(nil), // 16: mockgcp.cloud.gkehub.policycontroller.v1beta.MembershipSpec + (*servicemeshpb.MembershipState)(nil), // 17: mockgcp.cloud.gkehub.servicemesh.v1beta.MembershipState + (*meteringpb.MembershipState)(nil), // 18: mockgcp.cloud.gkehub.metering.v1beta.MembershipState + (*configmanagementpb.MembershipState)(nil), // 19: mockgcp.cloud.gkehub.configmanagement.v1beta.MembershipState + (*policycontrollerpb.MembershipState)(nil), // 20: mockgcp.cloud.gkehub.policycontroller.v1beta.MembershipState } var file_mockgcp_cloud_gkehub_v1beta_feature_proto_depIdxs = []int32{ 9, // 0: mockgcp.cloud.gkehub.v1beta.Feature.labels:type_name -> mockgcp.cloud.gkehub.v1beta.Feature.LabelsEntry @@ -1014,17 +1065,19 @@ var file_mockgcp_cloud_gkehub_v1beta_feature_proto_depIdxs = []int32{ 4, // 13: mockgcp.cloud.gkehub.v1beta.CommonFeatureState.state:type_name -> mockgcp.cloud.gkehub.v1beta.FeatureState 14, // 14: mockgcp.cloud.gkehub.v1beta.MembershipFeatureSpec.configmanagement:type_name -> mockgcp.cloud.gkehub.configmanagement.v1beta.MembershipSpec 15, // 15: mockgcp.cloud.gkehub.v1beta.MembershipFeatureSpec.mesh:type_name -> mockgcp.cloud.gkehub.servicemesh.v1beta.MembershipSpec - 16, // 16: mockgcp.cloud.gkehub.v1beta.MembershipFeatureState.servicemesh:type_name -> mockgcp.cloud.gkehub.servicemesh.v1beta.MembershipState - 17, // 17: mockgcp.cloud.gkehub.v1beta.MembershipFeatureState.metering:type_name -> mockgcp.cloud.gkehub.metering.v1beta.MembershipState - 18, // 18: mockgcp.cloud.gkehub.v1beta.MembershipFeatureState.configmanagement:type_name -> mockgcp.cloud.gkehub.configmanagement.v1beta.MembershipState - 4, // 19: mockgcp.cloud.gkehub.v1beta.MembershipFeatureState.state:type_name -> mockgcp.cloud.gkehub.v1beta.FeatureState - 7, // 20: mockgcp.cloud.gkehub.v1beta.Feature.MembershipSpecsEntry.value:type_name -> mockgcp.cloud.gkehub.v1beta.MembershipFeatureSpec - 8, // 21: mockgcp.cloud.gkehub.v1beta.Feature.MembershipStatesEntry.value:type_name -> mockgcp.cloud.gkehub.v1beta.MembershipFeatureState - 22, // [22:22] is the sub-list for method output_type - 22, // [22:22] is the sub-list for method input_type - 22, // [22:22] is the sub-list for extension type_name - 22, // [22:22] is the sub-list for extension extendee - 0, // [0:22] is the sub-list for field type_name + 16, // 16: mockgcp.cloud.gkehub.v1beta.MembershipFeatureSpec.policycontroller:type_name -> mockgcp.cloud.gkehub.policycontroller.v1beta.MembershipSpec + 17, // 17: mockgcp.cloud.gkehub.v1beta.MembershipFeatureState.servicemesh:type_name -> mockgcp.cloud.gkehub.servicemesh.v1beta.MembershipState + 18, // 18: mockgcp.cloud.gkehub.v1beta.MembershipFeatureState.metering:type_name -> mockgcp.cloud.gkehub.metering.v1beta.MembershipState + 19, // 19: mockgcp.cloud.gkehub.v1beta.MembershipFeatureState.configmanagement:type_name -> mockgcp.cloud.gkehub.configmanagement.v1beta.MembershipState + 20, // 20: mockgcp.cloud.gkehub.v1beta.MembershipFeatureState.policycontroller:type_name -> mockgcp.cloud.gkehub.policycontroller.v1beta.MembershipState + 4, // 21: mockgcp.cloud.gkehub.v1beta.MembershipFeatureState.state:type_name -> mockgcp.cloud.gkehub.v1beta.FeatureState + 7, // 22: mockgcp.cloud.gkehub.v1beta.Feature.MembershipSpecsEntry.value:type_name -> mockgcp.cloud.gkehub.v1beta.MembershipFeatureSpec + 8, // 23: mockgcp.cloud.gkehub.v1beta.Feature.MembershipStatesEntry.value:type_name -> mockgcp.cloud.gkehub.v1beta.MembershipFeatureState + 24, // [24:24] is the sub-list for method output_type + 24, // [24:24] is the sub-list for method input_type + 24, // [24:24] is the sub-list for extension type_name + 24, // [24:24] is the sub-list for extension extendee + 0, // [0:24] is the sub-list for field type_name } func init() { file_mockgcp_cloud_gkehub_v1beta_feature_proto_init() } @@ -1124,11 +1177,13 @@ func file_mockgcp_cloud_gkehub_v1beta_feature_proto_init() { file_mockgcp_cloud_gkehub_v1beta_feature_proto_msgTypes[5].OneofWrappers = []interface{}{ (*MembershipFeatureSpec_Configmanagement)(nil), (*MembershipFeatureSpec_Mesh)(nil), + (*MembershipFeatureSpec_Policycontroller)(nil), } file_mockgcp_cloud_gkehub_v1beta_feature_proto_msgTypes[6].OneofWrappers = []interface{}{ (*MembershipFeatureState_Servicemesh)(nil), (*MembershipFeatureState_Metering)(nil), (*MembershipFeatureState_Configmanagement)(nil), + (*MembershipFeatureState_Policycontroller)(nil), } type x struct{} out := protoimpl.TypeBuilder{ diff --git a/mockgcp/mockserviceusage/knownservices.go b/mockgcp/mockserviceusage/knownservices.go index f7aea5f2c3..73486adf8b 100644 --- a/mockgcp/mockserviceusage/knownservices.go +++ b/mockgcp/mockserviceusage/knownservices.go @@ -23,6 +23,7 @@ var allServices = []string{ "gkehub.googleapis.com", "anthos.googleapis.com", "anthosconfigmanagement.googleapis.com", + "anthospolicycontroller.googleapis.com", "multiclusteringress.googleapis.com", "multiclusterservicediscovery.googleapis.com", "mesh.googleapis.com", diff --git a/pkg/controller/direct/gkehub/pococonversion.go b/pkg/controller/direct/gkehub/pococonversion.go index e4e0b5db16..751ac478f3 100644 --- a/pkg/controller/direct/gkehub/pococonversion.go +++ b/pkg/controller/direct/gkehub/pococonversion.go @@ -59,7 +59,7 @@ func convertKRMtoAPI_PolicycontrollerHubConfig(r krm.FeaturemembershipPolicyCont if r.ReferentialRulesEnabled != nil { apiObj.ReferentialRulesEnabled = *r.ReferentialRulesEnabled } - return nil + return apiObj } func convertKRMtoAPI_FeaturemembershipMonitoring(r *krm.FeaturemembershipMonitoring) *featureapi.PolicyControllerMonitoringConfig { diff --git a/pkg/test/resourcefixture/testdata/basic/gkehub/v1beta1/gkehubfeaturemembership/basicpocogkehubfeaturemembership/_generated_object_basicpocogkehubfeaturemembership.golden.yaml b/pkg/test/resourcefixture/testdata/basic/gkehub/v1beta1/gkehubfeaturemembership/basicpocogkehubfeaturemembership/_generated_object_basicpocogkehubfeaturemembership.golden.yaml new file mode 100644 index 0000000000..c22b129cdd --- /dev/null +++ b/pkg/test/resourcefixture/testdata/basic/gkehub/v1beta1/gkehubfeaturemembership/basicpocogkehubfeaturemembership/_generated_object_basicpocogkehubfeaturemembership.golden.yaml @@ -0,0 +1,47 @@ +apiVersion: gkehub.cnrm.cloud.google.com/v1beta1 +kind: GKEHubFeatureMembership +metadata: + annotations: + cnrm.cloud.google.com/management-conflict-prevention-policy: none + finalizers: + - cnrm.cloud.google.com/finalizer + - cnrm.cloud.google.com/deletion-defender + generation: 2 + labels: + cnrm-test: "true" + name: gkehubfeaturemembership-basic-poco-${uniqueId} + namespace: ${uniqueId} +spec: + featureRef: + name: gkehubfeature-basic-poco-${uniqueId} + location: global + membershipLocation: us-central1 + membershipRef: + name: gkehubmembership-basic-poco-${uniqueId} + policycontroller: + policyControllerHubConfig: + auditIntervalSeconds: 15 + constraintViolationLimit: 20 + exemptableNamespaces: + - test-namespace + installSpec: INSTALL_SPEC_ENABLED + logDeniesEnabled: false + monitoring: + backends: + - PROMETHEUS + mutationEnabled: false + policyContent: + templateLibrary: + installation: NOT_INSTALLED + referentialRulesEnabled: false + version: 1.18.0 + projectRef: + name: gkehubfm-${uniqueId} +status: + conditions: + - lastTransitionTime: "1970-01-01T00:00:00Z" + message: The resource is up to date + reason: UpToDate + status: "True" + type: Ready + observedGeneration: 2 diff --git a/pkg/test/resourcefixture/testdata/basic/gkehub/v1beta1/gkehubfeaturemembership/basicpocogkehubfeaturemembership/_http.log b/pkg/test/resourcefixture/testdata/basic/gkehub/v1beta1/gkehubfeaturemembership/basicpocogkehubfeaturemembership/_http.log new file mode 100644 index 0000000000..b7affeb4c2 --- /dev/null +++ b/pkg/test/resourcefixture/testdata/basic/gkehub/v1beta1/gkehubfeaturemembership/basicpocogkehubfeaturemembership/_http.log @@ -0,0 +1,2007 @@ +GET https://cloudresourcemanager.googleapis.com/v1/projects/example-project-01?alt=json&prettyPrint=false +User-Agent: google-api-go-client/0.5 Terraform/ (+https://www.terraform.io) Terraform-Plugin-SDK/2.10.1 terraform-provider-google-beta/kcc/controller-manager + +403 Forbidden +Cache-Control: private +Content-Type: application/json; charset=UTF-8 +Server: ESF +Vary: Origin +Vary: X-Origin +Vary: Referer +X-Content-Type-Options: nosniff +X-Frame-Options: SAMEORIGIN +X-Xss-Protection: 0 + +{ + "error": { + "code": 403, + "message": "The caller does not have permission", + "status": "PERMISSION_DENIED" + } +} + +--- + +POST https://cloudbilling.googleapis.com/v1/billingAccounts/${billingAccountID}:testIamPermissions?alt=json&prettyPrint=false +Content-Type: application/json +User-Agent: google-api-go-client/0.5 Terraform/ (+https://www.terraform.io) Terraform-Plugin-SDK/2.10.1 terraform-provider-google-beta/kcc/controller-manager + +{ + "permissions": [ + "billing.resourceAssociations.create" + ] +} + +200 OK +Cache-Control: private +Content-Type: application/json; charset=UTF-8 +Server: ESF +Vary: Origin +Vary: X-Origin +Vary: Referer +X-Content-Type-Options: nosniff +X-Frame-Options: SAMEORIGIN +X-Xss-Protection: 0 + +{ + "permissions": [ + "billing.resourceAssociations.create" + ] +} + +--- + +POST https://cloudresourcemanager.googleapis.com/v1/projects?alt=json&prettyPrint=false +Content-Type: application/json +User-Agent: google-api-go-client/0.5 Terraform/ (+https://www.terraform.io) Terraform-Plugin-SDK/2.10.1 terraform-provider-google-beta/kcc/controller-manager + +{ + "labels": { + "cnrm-test": "true", + "managed-by-cnrm": "true" + }, + "name": "Dependent Project", + "parent": { + "id": "123450001", + "type": "organization" + }, + "projectId": "example-project-01" +} + +200 OK +Cache-Control: private +Content-Type: application/json; charset=UTF-8 +Server: ESF +Vary: Origin +Vary: X-Origin +Vary: Referer +X-Content-Type-Options: nosniff +X-Frame-Options: SAMEORIGIN +X-Xss-Protection: 0 + +{ + "name": "operations/${operationID}" +} + +--- + +GET https://cloudresourcemanager.googleapis.com/v1/operations/${operationID}?alt=json +Content-Type: application/json +User-Agent: Terraform/ (+https://www.terraform.io) Terraform-Plugin-SDK/2.10.1 terraform-provider-google-beta/kcc/controller-manager + +200 OK +Cache-Control: private +Content-Type: application/json; charset=UTF-8 +Server: ESF +Vary: Origin +Vary: X-Origin +Vary: Referer +X-Content-Type-Options: nosniff +X-Frame-Options: SAMEORIGIN +X-Xss-Protection: 0 + +{ + "done": true, + "metadata": { + "@type": "type.googleapis.com/google.cloud.resourcemanager.v3.CreateProjectMetadata" + }, + "name": "operations/${operationID}", + "response": { + "@type": "type.googleapis.com/google.cloud.resourcemanager.v3.Project", + "createTime": "2024-04-01T12:34:56.123456Z", + "displayName": "Dependent Project", + "etag": "abcdef0123A=", + "labels": { + "cnrm-test": "true", + "managed-by-cnrm": "true" + }, + "name": "projects/${projectNumber}", + "parent": "organizations/${organizationID}", + "projectId": "example-project-01", + "state": "ACTIVE" + } +} + +--- + +PUT https://cloudbilling.googleapis.com/v1/projects/example-project-01/billingInfo?alt=json&prettyPrint=false +Content-Type: application/json +User-Agent: google-api-go-client/0.5 Terraform/ (+https://www.terraform.io) Terraform-Plugin-SDK/2.10.1 terraform-provider-google-beta/kcc/controller-manager + +{ + "billingAccountName": "billingAccounts/${billingAccountID}" +} + +200 OK +Cache-Control: private +Content-Type: application/json; charset=UTF-8 +Server: ESF +Vary: Origin +Vary: X-Origin +Vary: Referer +X-Content-Type-Options: nosniff +X-Frame-Options: SAMEORIGIN +X-Xss-Protection: 0 + +{ + "billingAccountName": "billingAccounts/${billingAccountID}", + "billingEnabled": true, + "name": "projects/example-project-01/billingInfo", + "projectId": "example-project-01" +} + +--- + +GET https://cloudbilling.googleapis.com/v1/projects/example-project-01/billingInfo?alt=json&prettyPrint=false +User-Agent: google-api-go-client/0.5 Terraform/ (+https://www.terraform.io) Terraform-Plugin-SDK/2.10.1 terraform-provider-google-beta/kcc/controller-manager + +200 OK +Cache-Control: private +Content-Type: application/json; charset=UTF-8 +Server: ESF +Vary: Origin +Vary: X-Origin +Vary: Referer +X-Content-Type-Options: nosniff +X-Frame-Options: SAMEORIGIN +X-Xss-Protection: 0 + +{ + "billingAccountName": "billingAccounts/${billingAccountID}", + "billingEnabled": true, + "name": "projects/example-project-01/billingInfo", + "projectId": "example-project-01" +} + +--- + +GET https://cloudresourcemanager.googleapis.com/v1/projects/example-project-01?alt=json&prettyPrint=false +User-Agent: google-api-go-client/0.5 Terraform/ (+https://www.terraform.io) Terraform-Plugin-SDK/2.10.1 terraform-provider-google-beta/kcc/controller-manager + +200 OK +Cache-Control: private +Content-Type: application/json; charset=UTF-8 +Server: ESF +Vary: Origin +Vary: X-Origin +Vary: Referer +X-Content-Type-Options: nosniff +X-Frame-Options: SAMEORIGIN +X-Xss-Protection: 0 + +{ + "createTime": "2024-04-01T12:34:56.123456Z", + "labels": { + "cnrm-test": "true", + "managed-by-cnrm": "true" + }, + "lifecycleState": "ACTIVE", + "name": "Dependent Project", + "parent": { + "id": "123450001", + "type": "organization" + }, + "projectId": "example-project-01", + "projectNumber": "${projectNumber}" +} + +--- + +GET https://cloudbilling.googleapis.com/v1/projects/example-project-01/billingInfo?alt=json&prettyPrint=false +User-Agent: google-api-go-client/0.5 Terraform/ (+https://www.terraform.io) Terraform-Plugin-SDK/2.10.1 terraform-provider-google-beta/kcc/controller-manager + +200 OK +Cache-Control: private +Content-Type: application/json; charset=UTF-8 +Server: ESF +Vary: Origin +Vary: X-Origin +Vary: Referer +X-Content-Type-Options: nosniff +X-Frame-Options: SAMEORIGIN +X-Xss-Protection: 0 + +{ + "billingAccountName": "billingAccounts/${billingAccountID}", + "billingEnabled": true, + "name": "projects/example-project-01/billingInfo", + "projectId": "example-project-01" +} + +--- + +GET https://serviceusage.googleapis.com/v1/projects/example-project-01/services?alt=json&fields=services%2Fname%2CnextPageToken&filter=state%3AENABLED&prettyPrint=false +User-Agent: google-api-go-client/0.5 Terraform/ (+https://www.terraform.io) Terraform-Plugin-SDK/2.10.1 terraform-provider-google-beta/kcc/controller-manager + +200 OK +Cache-Control: private +Content-Type: application/json; charset=UTF-8 +Server: ESF +Vary: Origin +Vary: X-Origin +Vary: Referer +X-Content-Type-Options: nosniff +X-Frame-Options: SAMEORIGIN +X-Xss-Protection: 0 + +{} + +--- + +POST https://serviceusage.googleapis.com/v1/projects/example-project-01/services/container.googleapis.com:enable?alt=json&prettyPrint=false +Content-Type: application/json +User-Agent: google-api-go-client/0.5 Terraform/ (+https://www.terraform.io) Terraform-Plugin-SDK/2.10.1 terraform-provider-google-beta/kcc/controller-manager + +{} + +200 OK +Cache-Control: private +Content-Type: application/json; charset=UTF-8 +Server: ESF +Vary: Origin +Vary: X-Origin +Vary: Referer +X-Content-Type-Options: nosniff +X-Frame-Options: SAMEORIGIN +X-Xss-Protection: 0 + +{ + "done": true, + "name": "operations/${operationID}" +} + +--- + +GET https://serviceusage.googleapis.com/v1/projects/example-project-01/services?alt=json&fields=services%2Fname%2CnextPageToken&filter=state%3AENABLED&prettyPrint=false +User-Agent: google-api-go-client/0.5 Terraform/ (+https://www.terraform.io) Terraform-Plugin-SDK/2.10.1 terraform-provider-google-beta/kcc/controller-manager + +200 OK +Cache-Control: private +Content-Type: application/json; charset=UTF-8 +Server: ESF +Vary: Origin +Vary: X-Origin +Vary: Referer +X-Content-Type-Options: nosniff +X-Frame-Options: SAMEORIGIN +X-Xss-Protection: 0 + +{ + "services": [ + { + "name": "projects/${projectNumber}/services/container.googleapis.com", + "parent": "projects/${projectNumber}", + "state": "ENABLED" + } + ] +} + +--- + +POST https://serviceusage.googleapis.com/v1/projects/example-project-01/services/anthos.googleapis.com:enable?alt=json&prettyPrint=false +Content-Type: application/json +User-Agent: google-api-go-client/0.5 Terraform/ (+https://www.terraform.io) Terraform-Plugin-SDK/2.10.1 terraform-provider-google-beta/kcc/controller-manager + +{} + +200 OK +Cache-Control: private +Content-Type: application/json; charset=UTF-8 +Server: ESF +Vary: Origin +Vary: X-Origin +Vary: Referer +X-Content-Type-Options: nosniff +X-Frame-Options: SAMEORIGIN +X-Xss-Protection: 0 + +{ + "done": true, + "name": "operations/${operationID}" +} + +--- + +GET https://serviceusage.googleapis.com/v1/projects/example-project-01/services?alt=json&fields=services%2Fname%2CnextPageToken&filter=state%3AENABLED&prettyPrint=false +User-Agent: google-api-go-client/0.5 Terraform/ (+https://www.terraform.io) Terraform-Plugin-SDK/2.10.1 terraform-provider-google-beta/kcc/controller-manager + +200 OK +Cache-Control: private +Content-Type: application/json; charset=UTF-8 +Server: ESF +Vary: Origin +Vary: X-Origin +Vary: Referer +X-Content-Type-Options: nosniff +X-Frame-Options: SAMEORIGIN +X-Xss-Protection: 0 + +{ + "services": [ + { + "name": "projects/${projectNumber}/services/anthos.googleapis.com", + "parent": "projects/${projectNumber}", + "state": "ENABLED" + }, + { + "name": "projects/${projectNumber}/services/container.googleapis.com", + "parent": "projects/${projectNumber}", + "state": "ENABLED" + } + ] +} + +--- + +POST https://serviceusage.googleapis.com/v1/projects/example-project-01/services/gkehub.googleapis.com:enable?alt=json&prettyPrint=false +Content-Type: application/json +User-Agent: google-api-go-client/0.5 Terraform/ (+https://www.terraform.io) Terraform-Plugin-SDK/2.10.1 terraform-provider-google-beta/kcc/controller-manager + +{} + +200 OK +Cache-Control: private +Content-Type: application/json; charset=UTF-8 +Server: ESF +Vary: Origin +Vary: X-Origin +Vary: Referer +X-Content-Type-Options: nosniff +X-Frame-Options: SAMEORIGIN +X-Xss-Protection: 0 + +{ + "done": true, + "name": "operations/${operationID}" +} + +--- + +GET https://serviceusage.googleapis.com/v1/projects/example-project-01/services?alt=json&fields=services%2Fname%2CnextPageToken&filter=state%3AENABLED&prettyPrint=false +User-Agent: google-api-go-client/0.5 Terraform/ (+https://www.terraform.io) Terraform-Plugin-SDK/2.10.1 terraform-provider-google-beta/kcc/controller-manager + +200 OK +Cache-Control: private +Content-Type: application/json; charset=UTF-8 +Server: ESF +Vary: Origin +Vary: X-Origin +Vary: Referer +X-Content-Type-Options: nosniff +X-Frame-Options: SAMEORIGIN +X-Xss-Protection: 0 + +{ + "services": [ + { + "name": "projects/${projectNumber}/services/gkehub.googleapis.com", + "parent": "projects/${projectNumber}", + "state": "ENABLED" + }, + { + "name": "projects/${projectNumber}/services/anthos.googleapis.com", + "parent": "projects/${projectNumber}", + "state": "ENABLED" + }, + { + "name": "projects/${projectNumber}/services/container.googleapis.com", + "parent": "projects/${projectNumber}", + "state": "ENABLED" + } + ] +} + +--- + +POST https://serviceusage.googleapis.com/v1/projects/example-project-01/services/anthosconfigmanagement.googleapis.com:enable?alt=json&prettyPrint=false +Content-Type: application/json +User-Agent: google-api-go-client/0.5 Terraform/ (+https://www.terraform.io) Terraform-Plugin-SDK/2.10.1 terraform-provider-google-beta/kcc/controller-manager + +{} + +200 OK +Cache-Control: private +Content-Type: application/json; charset=UTF-8 +Server: ESF +Vary: Origin +Vary: X-Origin +Vary: Referer +X-Content-Type-Options: nosniff +X-Frame-Options: SAMEORIGIN +X-Xss-Protection: 0 + +{ + "done": true, + "name": "operations/${operationID}" +} + +--- + +GET https://serviceusage.googleapis.com/v1/projects/example-project-01/services?alt=json&fields=services%2Fname%2CnextPageToken&filter=state%3AENABLED&prettyPrint=false +User-Agent: google-api-go-client/0.5 Terraform/ (+https://www.terraform.io) Terraform-Plugin-SDK/2.10.1 terraform-provider-google-beta/kcc/controller-manager + +200 OK +Cache-Control: private +Content-Type: application/json; charset=UTF-8 +Server: ESF +Vary: Origin +Vary: X-Origin +Vary: Referer +X-Content-Type-Options: nosniff +X-Frame-Options: SAMEORIGIN +X-Xss-Protection: 0 + +{ + "services": [ + { + "name": "projects/${projectNumber}/services/gkehub.googleapis.com", + "parent": "projects/${projectNumber}", + "state": "ENABLED" + }, + { + "name": "projects/${projectNumber}/services/anthos.googleapis.com", + "parent": "projects/${projectNumber}", + "state": "ENABLED" + }, + { + "name": "projects/${projectNumber}/services/anthosconfigmanagement.googleapis.com", + "parent": "projects/${projectNumber}", + "state": "ENABLED" + }, + { + "name": "projects/${projectNumber}/services/container.googleapis.com", + "parent": "projects/${projectNumber}", + "state": "ENABLED" + } + ] +} + +--- + +POST https://serviceusage.googleapis.com/v1/projects/example-project-01/services/anthospolicycontroller.googleapis.com:enable?alt=json&prettyPrint=false +Content-Type: application/json +User-Agent: google-api-go-client/0.5 Terraform/ (+https://www.terraform.io) Terraform-Plugin-SDK/2.10.1 terraform-provider-google-beta/kcc/controller-manager + +{} + +200 OK +Cache-Control: private +Content-Type: application/json; charset=UTF-8 +Server: ESF +Vary: Origin +Vary: X-Origin +Vary: Referer +X-Content-Type-Options: nosniff +X-Frame-Options: SAMEORIGIN +X-Xss-Protection: 0 + +{ + "done": true, + "name": "operations/${operationID}" +} + +--- + +GET https://serviceusage.googleapis.com/v1/projects/example-project-01/services?alt=json&fields=services%2Fname%2CnextPageToken&filter=state%3AENABLED&prettyPrint=false +User-Agent: google-api-go-client/0.5 Terraform/ (+https://www.terraform.io) Terraform-Plugin-SDK/2.10.1 terraform-provider-google-beta/kcc/controller-manager + +200 OK +Cache-Control: private +Content-Type: application/json; charset=UTF-8 +Server: ESF +Vary: Origin +Vary: X-Origin +Vary: Referer +X-Content-Type-Options: nosniff +X-Frame-Options: SAMEORIGIN +X-Xss-Protection: 0 + +{ + "services": [ + { + "name": "projects/${projectNumber}/services/gkehub.googleapis.com", + "parent": "projects/${projectNumber}", + "state": "ENABLED" + }, + { + "name": "projects/${projectNumber}/services/anthos.googleapis.com", + "parent": "projects/${projectNumber}", + "state": "ENABLED" + }, + { + "name": "projects/${projectNumber}/services/anthosconfigmanagement.googleapis.com", + "parent": "projects/${projectNumber}", + "state": "ENABLED" + }, + { + "name": "projects/${projectNumber}/services/anthospolicycontroller.googleapis.com", + "parent": "projects/${projectNumber}", + "state": "ENABLED" + }, + { + "name": "projects/${projectNumber}/services/container.googleapis.com", + "parent": "projects/${projectNumber}", + "state": "ENABLED" + } + ] +} + +--- + +GET https://container.googleapis.com/v1beta1/projects/example-project-01/locations/us-west1-a/clusters/gke-basic-poco-${uniqueId}?alt=json&prettyPrint=false +User-Agent: google-api-go-client/0.5 Terraform/ (+https://www.terraform.io) Terraform-Plugin-SDK/2.10.1 terraform-provider-google-beta/kcc/controller-manager + +404 Not Found +Cache-Control: private +Content-Type: application/json; charset=UTF-8 +Server: ESF +Vary: Origin +Vary: X-Origin +Vary: Referer +X-Content-Type-Options: nosniff +X-Frame-Options: SAMEORIGIN +X-Xss-Protection: 0 + +{ + "error": { + "code": 404, + "errors": [ + { + "domain": "global", + "message": "Not found: projects/example-project-01/zones/us-west1-a/clusters/gke-basic-poco-${uniqueId}.", + "reason": "notFound" + } + ], + "message": "Not found: projects/example-project-01/zones/us-west1-a/clusters/gke-basic-poco-${uniqueId}.", + "status": "NOT_FOUND" + } +} + +--- + +POST https://container.googleapis.com/v1beta1/projects/example-project-01/locations/us-west1-a/clusters?alt=json&prettyPrint=false +Content-Type: application/json +User-Agent: google-api-go-client/0.5 Terraform/ (+https://www.terraform.io) Terraform-Plugin-SDK/2.10.1 terraform-provider-google-beta/kcc/controller-manager + +{ + "cluster": { + "autopilot": { + "enabled": false + }, + "autoscaling": { + "enableNodeAutoprovisioning": false + }, + "binaryAuthorization": { + "enabled": false + }, + "initialNodeCount": 1, + "ipAllocationPolicy": { + "stackType": "IPV4", + "useIpAliases": false + }, + "legacyAbac": { + "enabled": false + }, + "maintenancePolicy": { + "window": {} + }, + "masterAuthorizedNetworksConfig": {}, + "name": "gke-basic-poco-${uniqueId}", + "network": "projects/example-project-01/global/networks/default", + "networkConfig": {}, + "networkPolicy": {}, + "nodeConfig": { + "oauthScopes": [ + "https://www.googleapis.com/auth/devstorage.read_only", + "https://www.googleapis.com/auth/logging.write", + "https://www.googleapis.com/auth/monitoring", + "https://www.googleapis.com/auth/service.management.readonly", + "https://www.googleapis.com/auth/servicecontrol", + "https://www.googleapis.com/auth/trace.append" + ] + }, + "notificationConfig": { + "pubsub": {} + }, + "resourceLabels": { + "cnrm-test": "true", + "managed-by-cnrm": "true" + }, + "shieldedNodes": { + "enabled": true + }, + "workloadIdentityConfig": { + "workloadPool": "example-project-01.svc.id.goog" + } + } +} + +200 OK +Cache-Control: private +Content-Type: application/json; charset=UTF-8 +Server: ESF +Vary: Origin +Vary: X-Origin +Vary: Referer +X-Content-Type-Options: nosniff +X-Frame-Options: SAMEORIGIN +X-Xss-Protection: 0 + +{ + "name": "${operationID}", + "operationType": "CREATE_CLUSTER", + "selfLink": "https://container.googleapis.com/v1beta1/projects/${projectNumber}/zones/us-west1-a/operations/${operationID}", + "startTime": "2024-04-01T12:34:56.123456Z", + "status": "RUNNING", + "targetLink": "https://container.googleapis.com/v1beta1/projects/${projectNumber}/zones/us-west1-a/clusters/gke-basic-poco-${uniqueId}", + "zone": "us-west1-a" +} + +--- + +GET https://container.googleapis.com/v1beta1/projects/example-project-01/locations/us-west1-a/operations/${operationID}?alt=json&prettyPrint=false +User-Agent: google-api-go-client/0.5 Terraform/ (+https://www.terraform.io) Terraform-Plugin-SDK/2.10.1 terraform-provider-google-beta/kcc/controller-manager + +200 OK +Cache-Control: private +Content-Type: application/json; charset=UTF-8 +Server: ESF +Vary: Origin +Vary: X-Origin +Vary: Referer +X-Content-Type-Options: nosniff +X-Frame-Options: SAMEORIGIN +X-Xss-Protection: 0 + +{ + "endTime": "2024-04-01T12:34:56.123456Z", + "name": "${operationID}", + "operationType": "CREATE_CLUSTER", + "progress": { + "metrics": [ + { + "intValue": "10", + "name": "CLUSTER_CONFIGURING" + }, + { + "intValue": "10", + "name": "CLUSTER_CONFIGURING_TOTAL" + }, + { + "intValue": "12", + "name": "CLUSTER_DEPLOYING" + }, + { + "intValue": "12", + "name": "CLUSTER_DEPLOYING_TOTAL" + }, + { + "intValue": "1", + "name": "CLUSTER_HEALTHCHECKING" + }, + { + "intValue": "2", + "name": "CLUSTER_HEALTHCHECKING_TOTAL" + } + ] + }, + "selfLink": "https://container.googleapis.com/v1beta1/projects/${projectNumber}/zones/us-west1-a/operations/${operationID}", + "startTime": "2024-04-01T12:34:56.123456Z", + "status": "DONE", + "targetLink": "https://container.googleapis.com/v1beta1/projects/${projectNumber}/zones/us-west1-a/clusters/gke-basic-poco-${uniqueId}", + "zone": "us-west1-a" +} + +--- + +GET https://container.googleapis.com/v1beta1/projects/example-project-01/locations/us-west1-a/clusters/gke-basic-poco-${uniqueId}?alt=json&prettyPrint=false +User-Agent: google-api-go-client/0.5 Terraform/ (+https://www.terraform.io) Terraform-Plugin-SDK/2.10.1 terraform-provider-google-beta/kcc/controller-manager + +200 OK +Cache-Control: private +Content-Type: application/json; charset=UTF-8 +Server: ESF +Vary: Origin +Vary: X-Origin +Vary: Referer +X-Content-Type-Options: nosniff +X-Frame-Options: SAMEORIGIN +X-Xss-Protection: 0 + +{ + "addonsConfig": { + "gcePersistentDiskCsiDriverConfig": { + "enabled": true + }, + "kubernetesDashboard": { + "disabled": true + }, + "networkPolicyConfig": { + "disabled": true + } + }, + "autopilot": {}, + "autoscaling": { + "autoprovisioningNodePoolDefaults": { + "management": { + "autoRepair": true, + "autoUpgrade": true + }, + "oauthScopes": [ + "https://www.googleapis.com/auth/userinfo.email", + "https://www.googleapis.com/auth/cloud-platform" + ], + "upgradeSettings": { + "strategy": "SURGE" + } + }, + "autoscalingProfile": "BALANCED" + }, + "binaryAuthorization": {}, + "clusterIpv4Cidr": "10.92.0.0/14", + "clusterTelemetry": { + "type": "ENABLED" + }, + "createTime": "2024-04-01T12:34:56.123456Z", + "currentMasterVersion": "1.30.5-gke.1014001", + "currentNodeCount": 1, + "currentNodeVersion": "1.30.5-gke.1014001", + "databaseEncryption": { + "currentState": "CURRENT_STATE_DECRYPTED", + "state": "DECRYPTED" + }, + "defaultMaxPodsConstraint": { + "maxPodsPerNode": "110" + }, + "enterpriseConfig": { + "clusterTier": "STANDARD" + }, + "initialClusterVersion": "1.30.5-gke.1014001", + "initialNodeCount": 1, + "ipAllocationPolicy": { + "stackType": "IPV4" + }, + "legacyAbac": {}, + "location": "us-west1-a", + "locations": [ + "us-west1-a" + ], + "loggingConfig": { + "componentConfig": { + "enableComponents": [ + "SYSTEM_COMPONENTS", + "WORKLOADS" + ] + } + }, + "loggingService": "logging.googleapis.com/kubernetes", + "maintenancePolicy": { + "window": {} + }, + "masterAuthorizedNetworksConfig": { + "gcpPublicCidrsAccessEnabled": true + }, + "monitoringConfig": { + "advancedDatapathObservabilityConfig": {}, + "componentConfig": { + "enableComponents": [ + "SYSTEM_COMPONENTS" + ] + }, + "managedPrometheusConfig": { + "enabled": true + } + }, + "monitoringService": "monitoring.googleapis.com/kubernetes", + "name": "gke-basic-poco-${uniqueId}", + "network": "default", + "networkConfig": { + "network": "projects/example-project-01/global/networks/default", + "subnetwork": "default" + }, + "networkPolicy": {}, + "nodeConfig": { + "diskSizeGb": 100, + "diskType": "pd-balanced", + "imageType": "COS_CONTAINERD", + "machineType": "e2-medium", + "metadata": { + "disable-legacy-endpoints": "true" + }, + "oauthScopes": [ + "https://www.googleapis.com/auth/devstorage.read_only", + "https://www.googleapis.com/auth/logging.write", + "https://www.googleapis.com/auth/monitoring", + "https://www.googleapis.com/auth/service.management.readonly", + "https://www.googleapis.com/auth/servicecontrol", + "https://www.googleapis.com/auth/trace.append" + ], + "serviceAccount": "default", + "shieldedInstanceConfig": { + "enableIntegrityMonitoring": true + }, + "windowsNodeConfig": {} + }, + "nodePools": [ + { + "config": { + "diskSizeGb": 100, + "diskType": "pd-balanced", + "imageType": "COS_CONTAINERD", + "machineType": "e2-medium", + "metadata": { + "disable-legacy-endpoints": "true" + }, + "oauthScopes": [ + "https://www.googleapis.com/auth/devstorage.read_only", + "https://www.googleapis.com/auth/logging.write", + "https://www.googleapis.com/auth/monitoring", + "https://www.googleapis.com/auth/service.management.readonly", + "https://www.googleapis.com/auth/servicecontrol", + "https://www.googleapis.com/auth/trace.append" + ], + "serviceAccount": "default", + "shieldedInstanceConfig": { + "enableIntegrityMonitoring": true + }, + "windowsNodeConfig": {} + }, + "initialNodeCount": 1, + "locations": [ + "us-west1-a" + ], + "management": { + "autoRepair": true, + "autoUpgrade": true + }, + "maxPodsConstraint": { + "maxPodsPerNode": "110" + }, + "name": "default-pool", + "networkConfig": { + "enablePrivateNodes": false, + "podIpv4CidrBlock": "10.92.0.0/14", + "podIpv4RangeUtilization": 0.001, + "podRange": "default-pool-pods-12345678" + }, + "podIpv4CidrSize": 24, + "status": "RUNNING", + "upgradeSettings": { + "maxSurge": 1, + "strategy": "SURGE" + }, + "version": "1.30.5-gke.1014001" + } + ], + "notificationConfig": { + "pubsub": {} + }, + "privateCluster": true, + "privateClusterConfig": { + "privateEndpoint": "10.128.0.2", + "publicEndpoint": "8.8.8.8" + }, + "protectConfig": { + "workloadConfig": { + "auditMode": "BASIC" + }, + "workloadVulnerabilityMode": "WORKLOAD_VULNERABILITY_MODE_UNSPECIFIED" + }, + "releaseChannel": { + "channel": "REGULAR" + }, + "resourceLabels": { + "cnrm-test": "true", + "managed-by-cnrm": "true" + }, + "securityPostureConfig": { + "mode": "BASIC", + "vulnerabilityMode": "VULNERABILITY_MODE_UNSPECIFIED" + }, + "selfLink": "https://container.googleapis.com/v1beta1/projects/example-project-01/zones/us-west1-a/clusters/gke-basic-poco-${uniqueId}", + "servicesIpv4Cidr": "34.118.224.0/20", + "shieldedNodes": { + "enabled": true + }, + "status": "RUNNING", + "subnetwork": "default", + "workloadIdentityConfig": { + "workloadPool": "example-project-01.svc.id.goog" + }, + "zone": "us-west1-a" +} + +--- + +GET https://gkehub.googleapis.com/v1beta/projects/example-project-01/locations/global/features/policycontroller?alt=json +Content-Type: application/json +User-Agent: kcc/controller-manager DeclarativeClientLib/0.0.1 + +404 Not Found +Cache-Control: private +Content-Type: application/json; charset=UTF-8 +Server: ESF +Vary: Origin +Vary: X-Origin +Vary: Referer +X-Content-Type-Options: nosniff +X-Frame-Options: SAMEORIGIN +X-Xss-Protection: 0 + +{ + "error": { + "code": 404, + "message": "feature \"projects/example-project-01/locations/global/features/policycontroller\" not found", + "status": "NOT_FOUND" + } +} + +--- + +POST https://gkehub.googleapis.com/v1beta/projects/example-project-01/locations/global/features?alt=json&featureId=policycontroller +Content-Type: application/json +User-Agent: kcc/controller-manager DeclarativeClientLib/0.0.1 + +{ + "labels": { + "cnrm-test": "true", + "managed-by-cnrm": "true" + }, + "name": "projects/example-project-01/locations/global/features/policycontroller" +} + +200 OK +Cache-Control: private +Content-Type: application/json; charset=UTF-8 +Server: ESF +Vary: Origin +Vary: X-Origin +Vary: Referer +X-Content-Type-Options: nosniff +X-Frame-Options: SAMEORIGIN +X-Xss-Protection: 0 + +{ + "metadata": { + "@type": "type.googleapis.com/google.cloud.gkehub.v1beta.OperationMetadata", + "createTime": "2024-04-01T12:34:56.123456Z", + "endTime": "2024-04-01T12:34:56.123456Z", + "target": "projects/example-project-01/locations/global/features/policycontroller" + }, + "name": "projects/example-project-01/locations/global/features/policycontroller/operations/${operationID}" +} + +--- + +GET https://gkehub.googleapis.com/v1beta1/projects/example-project-01/locations/global/features/policycontroller/operations/${operationID}?alt=json +Content-Type: application/json +User-Agent: kcc/controller-manager DeclarativeClientLib/0.0.1 + +200 OK +Cache-Control: private +Content-Type: application/json; charset=UTF-8 +Server: ESF +Vary: Origin +Vary: X-Origin +Vary: Referer +X-Content-Type-Options: nosniff +X-Frame-Options: SAMEORIGIN +X-Xss-Protection: 0 + +{ + "done": true, + "metadata": { + "@type": "type.googleapis.com/google.cloud.gkehub.v1beta.OperationMetadata", + "createTime": "2024-04-01T12:34:56.123456Z", + "endTime": "2024-04-01T12:34:56.123456Z", + "target": "projects/example-project-01/locations/global/features/policycontroller" + }, + "name": "projects/example-project-01/locations/global/features/policycontroller/operations/${operationID}", + "response": { + "@type": "type.googleapis.com/google.cloud.gkehub.v1beta.Feature", + "createTime": "2024-04-01T12:34:56.123456Z", + "labels": { + "cnrm-test": "true", + "managed-by-cnrm": "true" + }, + "name": "projects/example-project-01/locations/global/features/policycontroller", + "resourceState": { + "state": "ACTIVE" + }, + "updateTime": "2024-04-01T12:34:56.123456Z" + } +} + +--- + +GET https://gkehub.googleapis.com/v1beta/projects/example-project-01/locations/global/features/policycontroller?alt=json +Content-Type: application/json +User-Agent: kcc/controller-manager DeclarativeClientLib/0.0.1 + +200 OK +Cache-Control: private +Content-Type: application/json; charset=UTF-8 +Server: ESF +Vary: Origin +Vary: X-Origin +Vary: Referer +X-Content-Type-Options: nosniff +X-Frame-Options: SAMEORIGIN +X-Xss-Protection: 0 + +{ + "labels": { + "cnrm-test": "true", + "managed-by-cnrm": "true" + }, + "name": "projects/example-project-01/locations/global/features/policycontroller" +} + +--- + +GET https://gkehub.googleapis.com/v1beta1/projects/example-project-01/locations/us-west1/memberships/gkehubmembership-basic-poco-${uniqueId}?alt=json +Content-Type: application/json +User-Agent: kcc/controller-manager DeclarativeClientLib/0.0.1 + +404 Not Found +Cache-Control: private +Content-Type: application/json; charset=UTF-8 +Server: ESF +Vary: Origin +Vary: X-Origin +Vary: Referer +X-Content-Type-Options: nosniff +X-Frame-Options: SAMEORIGIN +X-Xss-Protection: 0 + +{ + "error": { + "code": 404, + "message": "membership \"projects/example-project-01/locations/us-west1/memberships/gkehubmembership-basic-poco-${uniqueId}\" not found", + "status": "NOT_FOUND" + } +} + +--- + +POST https://gkehub.googleapis.com/v1beta1/projects/example-project-01/locations/us-west1/memberships?alt=json&membershipId=gkehubmembership-basic-poco-${uniqueId} +Content-Type: application/json +User-Agent: kcc/controller-manager DeclarativeClientLib/0.0.1 + +{ + "authority": { + "issuer": "https://container.googleapis.com/v1/projects/example-project-01/locations/us-west1-a/clusters/gke-basic-poco-${uniqueId}" + }, + "description": "A sample GKE Hub membership", + "endpoint": { + "gkeCluster": { + "resourceLink": "//container.googleapis.com/projects/example-project-01/zones/us-west1-a/clusters/gke-basic-poco-${uniqueId}" + } + }, + "labels": { + "cnrm-test": "true", + "managed-by-cnrm": "true" + }, + "name": "projects/example-project-01/locations/us-west1/memberships/gkehubmembership-basic-poco-${uniqueId}" +} + +200 OK +Cache-Control: private +Content-Type: application/json; charset=UTF-8 +Server: ESF +Vary: Origin +Vary: X-Origin +Vary: Referer +X-Content-Type-Options: nosniff +X-Frame-Options: SAMEORIGIN +X-Xss-Protection: 0 + +{ + "metadata": { + "@type": "type.googleapis.com/google.cloud.gkehub.v1beta1.OperationMetadata", + "createTime": "2024-04-01T12:34:56.123456Z", + "endTime": "2024-04-01T12:34:56.123456Z", + "target": "projects/example-project-01/locations/us-west1/memberships/gkehubmembership-basic-poco-${uniqueId}" + }, + "name": "projects/example-project-01/locations/us-west1/memberships/gkehubmembership-basic-poco-${uniqueId}/operations/${operationID}" +} + +--- + +GET https://gkehub.googleapis.com/v1beta1/projects/example-project-01/locations/us-west1/memberships/gkehubmembership-basic-poco-${uniqueId}/operations/${operationID}?alt=json +Content-Type: application/json +User-Agent: kcc/controller-manager DeclarativeClientLib/0.0.1 + +200 OK +Cache-Control: private +Content-Type: application/json; charset=UTF-8 +Server: ESF +Vary: Origin +Vary: X-Origin +Vary: Referer +X-Content-Type-Options: nosniff +X-Frame-Options: SAMEORIGIN +X-Xss-Protection: 0 + +{ + "done": true, + "metadata": { + "@type": "type.googleapis.com/google.cloud.gkehub.v1beta1.OperationMetadata", + "createTime": "2024-04-01T12:34:56.123456Z", + "endTime": "2024-04-01T12:34:56.123456Z", + "target": "projects/example-project-01/locations/us-west1/memberships/gkehubmembership-basic-poco-${uniqueId}" + }, + "name": "projects/example-project-01/locations/us-west1/memberships/gkehubmembership-basic-poco-${uniqueId}/operations/${operationID}", + "response": { + "@type": "type.googleapis.com/google.cloud.gkehub.v1beta1.Membership", + "authority": { + "identityProvider": "https://container.googleapis.com/v1/projects/example-project-01/locations/us-west1-a/clusters/gke-basic-poco-${uniqueId}", + "issuer": "https://container.googleapis.com/v1/projects/example-project-01/locations/us-west1-a/clusters/gke-basic-poco-${uniqueId}", + "workloadIdentityPool": "${projectId}.svc.id.goog" + }, + "createTime": "2024-04-01T12:34:56.123456Z", + "description": "A sample GKE Hub membership", + "endpoint": { + "gkeCluster": { + "resourceLink": "//container.googleapis.com/projects/example-project-01/zones/us-west1-a/clusters/gke-basic-poco-${uniqueId}" + } + }, + "externalId": "c772f869-1d6c-4d50-a92e-816c48322246", + "infrastructureType": "MULTI_CLOUD", + "labels": { + "cnrm-test": "true", + "managed-by-cnrm": "true" + }, + "name": "projects/example-project-01/locations/us-west1/memberships/gkehubmembership-basic-poco-${uniqueId}", + "state": { + "code": "READY" + }, + "uniqueId": "12345678", + "updateTime": "2024-04-01T12:34:56.123456Z" + } +} + +--- + +GET https://gkehub.googleapis.com/v1beta1/projects/example-project-01/locations/us-west1/memberships/gkehubmembership-basic-poco-${uniqueId}?alt=json +Content-Type: application/json +User-Agent: kcc/controller-manager DeclarativeClientLib/0.0.1 + +200 OK +Cache-Control: private +Content-Type: application/json; charset=UTF-8 +Server: ESF +Vary: Origin +Vary: X-Origin +Vary: Referer +X-Content-Type-Options: nosniff +X-Frame-Options: SAMEORIGIN +X-Xss-Protection: 0 + +{ + "authority": { + "identityProvider": "https://container.googleapis.com/v1/projects/example-project-01/locations/us-west1-a/clusters/gke-basic-poco-${uniqueId}", + "issuer": "https://container.googleapis.com/v1/projects/example-project-01/locations/us-west1-a/clusters/gke-basic-poco-${uniqueId}", + "workloadIdentityPool": "${projectId}.svc.id.goog" + }, + "createTime": "2024-04-01T12:34:56.123456Z", + "description": "A sample GKE Hub membership", + "endpoint": { + "gkeCluster": { + "resourceLink": "//container.googleapis.com/projects/example-project-01/zones/us-west1-a/clusters/gke-basic-poco-${uniqueId}" + } + }, + "externalId": "c772f869-1d6c-4d50-a92e-816c48322246", + "infrastructureType": "MULTI_CLOUD", + "labels": { + "cnrm-test": "true", + "managed-by-cnrm": "true" + }, + "name": "projects/example-project-01/locations/us-west1/memberships/gkehubmembership-basic-poco-${uniqueId}", + "state": { + "code": "READY" + }, + "uniqueId": "111111111111111111111", + "updateTime": "2024-04-01T12:34:56.123456Z" +} + +--- + +GET https://gkehub.googleapis.com/v1beta/projects/example-project-01/locations/global/features/policycontroller?alt=json&prettyPrint=false +User-Agent: kcc/controller-manager + +200 OK +Cache-Control: private +Content-Type: application/json; charset=UTF-8 +Server: ESF +Vary: Origin +Vary: X-Origin +Vary: Referer +X-Content-Type-Options: nosniff +X-Frame-Options: SAMEORIGIN +X-Xss-Protection: 0 + +{ + "labels": { + "cnrm-test": "true", + "managed-by-cnrm": "true" + }, + "name": "projects/example-project-01/locations/global/features/policycontroller" +} + +--- + +PATCH https://gkehub.googleapis.com/v1beta/projects/example-project-01/locations/global/features/policycontroller?alt=json&prettyPrint=false&updateMask=membershipSpecs +Content-Type: application/json +User-Agent: kcc/controller-manager + +{ + "labels": { + "cnrm-test": "true", + "managed-by-cnrm": "true" + }, + "membershipSpecs": { + "projects/example-project-01/locations/us-central1/memberships/gkehubmembership-basic-poco-${uniqueId}": { + "policycontroller": { + "policyControllerHubConfig": { + "auditIntervalSeconds": "10" + }, + "version": "1.18.0" + } + } + }, + "name": "projects/example-project-01/locations/global/features/policycontroller" +} + +200 OK +Cache-Control: private +Content-Type: application/json; charset=UTF-8 +Server: ESF +Vary: Origin +Vary: X-Origin +Vary: Referer +X-Content-Type-Options: nosniff +X-Frame-Options: SAMEORIGIN +X-Xss-Protection: 0 + +{ + "metadata": { + "@type": "type.googleapis.com/google.cloud.gkehub.v1beta.OperationMetadata", + "createTime": "2024-04-01T12:34:56.123456Z", + "endTime": "2024-04-01T12:34:56.123456Z", + "target": "projects/example-project-01/locations/global/features/policycontroller" + }, + "name": "projects/example-project-01/locations/global/features/policycontroller/operations/${operationID}" +} + +--- + +GET https://gkehub.googleapis.com/v1beta/projects/example-project-01/locations/global/features/policycontroller/operations/${operationID}?alt=json&prettyPrint=false +User-Agent: kcc/controller-manager + +200 OK +Cache-Control: private +Content-Type: application/json; charset=UTF-8 +Server: ESF +Vary: Origin +Vary: X-Origin +Vary: Referer +X-Content-Type-Options: nosniff +X-Frame-Options: SAMEORIGIN +X-Xss-Protection: 0 + +{ + "done": true, + "metadata": { + "@type": "type.googleapis.com/google.cloud.gkehub.v1beta.OperationMetadata", + "createTime": "2024-04-01T12:34:56.123456Z", + "endTime": "2024-04-01T12:34:56.123456Z", + "target": "projects/example-project-01/locations/global/features/policycontroller" + }, + "name": "projects/example-project-01/locations/global/features/policycontroller/operations/${operationID}", + "response": { + "@type": "type.googleapis.com/google.cloud.gkehub.v1beta.Feature", + "labels": { + "cnrm-test": "true", + "managed-by-cnrm": "true" + }, + "membershipSpecs": { + "projects/example-project-01/locations/us-central1/memberships/gkehubmembership-basic-poco-${uniqueId}": { + "policycontroller": { + "policyControllerHubConfig": { + "auditIntervalSeconds": "10" + }, + "version": "1.18.0" + } + } + }, + "name": "projects/example-project-01/locations/global/features/policycontroller", + "resourceState": { + "state": "ACTIVE" + }, + "updateTime": "2024-04-01T12:34:56.123456Z" + } +} + +--- + +GET https://gkehub.googleapis.com/v1beta/projects/example-project-01/locations/global/features/policycontroller?alt=json&prettyPrint=false +User-Agent: kcc/controller-manager + +200 OK +Cache-Control: private +Content-Type: application/json; charset=UTF-8 +Server: ESF +Vary: Origin +Vary: X-Origin +Vary: Referer +X-Content-Type-Options: nosniff +X-Frame-Options: SAMEORIGIN +X-Xss-Protection: 0 + +{ + "labels": { + "cnrm-test": "true", + "managed-by-cnrm": "true" + }, + "membershipSpecs": { + "projects/example-project-01/locations/us-central1/memberships/gkehubmembership-basic-poco-${uniqueId}": { + "policycontroller": { + "policyControllerHubConfig": { + "auditIntervalSeconds": "10" + }, + "version": "1.18.0" + } + } + }, + "name": "projects/example-project-01/locations/global/features/policycontroller", + "updateTime": "2024-04-01T12:34:56.123456Z" +} + +--- + +PATCH https://gkehub.googleapis.com/v1beta/projects/example-project-01/locations/global/features/policycontroller?alt=json&prettyPrint=false&updateMask=membershipSpecs +Content-Type: application/json +User-Agent: kcc/controller-manager + +{ + "labels": { + "cnrm-test": "true", + "managed-by-cnrm": "true" + }, + "membershipSpecs": { + "projects/example-project-01/locations/us-central1/memberships/gkehubmembership-basic-poco-${uniqueId}": { + "policycontroller": { + "policyControllerHubConfig": { + "auditIntervalSeconds": "15", + "constraintViolationLimit": "20", + "exemptableNamespaces": [ + "test-namespace" + ], + "installSpec": "INSTALL_SPEC_ENABLED", + "monitoring": { + "backends": [ + "PROMETHEUS" + ] + }, + "policyContent": { + "templateLibrary": { + "installation": "NOT_INSTALLED" + } + } + }, + "version": "1.18.0" + } + } + }, + "name": "projects/example-project-01/locations/global/features/policycontroller", + "updateTime": "2024-04-01T12:34:56.123456Z" +} + +200 OK +Cache-Control: private +Content-Type: application/json; charset=UTF-8 +Server: ESF +Vary: Origin +Vary: X-Origin +Vary: Referer +X-Content-Type-Options: nosniff +X-Frame-Options: SAMEORIGIN +X-Xss-Protection: 0 + +{ + "metadata": { + "@type": "type.googleapis.com/google.cloud.gkehub.v1beta.OperationMetadata", + "createTime": "2024-04-01T12:34:56.123456Z", + "endTime": "2024-04-01T12:34:56.123456Z", + "target": "projects/example-project-01/locations/global/features/policycontroller" + }, + "name": "projects/example-project-01/locations/global/features/policycontroller/operations/${operationID}" +} + +--- + +GET https://gkehub.googleapis.com/v1beta/projects/example-project-01/locations/global/features/policycontroller/operations/${operationID}?alt=json&prettyPrint=false +User-Agent: kcc/controller-manager + +200 OK +Cache-Control: private +Content-Type: application/json; charset=UTF-8 +Server: ESF +Vary: Origin +Vary: X-Origin +Vary: Referer +X-Content-Type-Options: nosniff +X-Frame-Options: SAMEORIGIN +X-Xss-Protection: 0 + +{ + "done": true, + "metadata": { + "@type": "type.googleapis.com/google.cloud.gkehub.v1beta.OperationMetadata", + "createTime": "2024-04-01T12:34:56.123456Z", + "endTime": "2024-04-01T12:34:56.123456Z", + "target": "projects/example-project-01/locations/global/features/policycontroller" + }, + "name": "projects/example-project-01/locations/global/features/policycontroller/operations/${operationID}", + "response": { + "@type": "type.googleapis.com/google.cloud.gkehub.v1beta.Feature", + "labels": { + "cnrm-test": "true", + "managed-by-cnrm": "true" + }, + "membershipSpecs": { + "projects/example-project-01/locations/us-central1/memberships/gkehubmembership-basic-poco-${uniqueId}": { + "policycontroller": { + "policyControllerHubConfig": { + "auditIntervalSeconds": "15", + "constraintViolationLimit": "20", + "exemptableNamespaces": [ + "test-namespace" + ], + "installSpec": "INSTALL_SPEC_ENABLED", + "monitoring": { + "backends": [ + "PROMETHEUS" + ] + }, + "policyContent": { + "templateLibrary": { + "installation": "NOT_INSTALLED" + } + } + }, + "version": "1.18.0" + } + } + }, + "name": "projects/example-project-01/locations/global/features/policycontroller", + "resourceState": { + "state": "ACTIVE" + }, + "updateTime": "2024-04-01T12:34:56.123456Z" + } +} + +--- + +GET https://gkehub.googleapis.com/v1beta/projects/example-project-01/locations/global/features/policycontroller?alt=json&prettyPrint=false +User-Agent: kcc/controller-manager + +200 OK +Cache-Control: private +Content-Type: application/json; charset=UTF-8 +Server: ESF +Vary: Origin +Vary: X-Origin +Vary: Referer +X-Content-Type-Options: nosniff +X-Frame-Options: SAMEORIGIN +X-Xss-Protection: 0 + +{ + "labels": { + "cnrm-test": "true", + "managed-by-cnrm": "true" + }, + "membershipSpecs": { + "projects/example-project-01/locations/us-central1/memberships/gkehubmembership-basic-poco-${uniqueId}": { + "policycontroller": { + "policyControllerHubConfig": { + "auditIntervalSeconds": "15", + "constraintViolationLimit": "20", + "exemptableNamespaces": [ + "test-namespace" + ], + "installSpec": "INSTALL_SPEC_ENABLED", + "monitoring": { + "backends": [ + "PROMETHEUS" + ] + }, + "policyContent": { + "templateLibrary": { + "installation": "NOT_INSTALLED" + } + } + }, + "version": "1.18.0" + } + } + }, + "name": "projects/example-project-01/locations/global/features/policycontroller", + "updateTime": "2024-04-01T12:34:56.123456Z" +} + +--- + +PATCH https://gkehub.googleapis.com/v1beta/projects/example-project-01/locations/global/features/policycontroller?alt=json&prettyPrint=false&updateMask=membershipSpecs +Content-Type: application/json +User-Agent: kcc/controller-manager + +{ + "labels": { + "cnrm-test": "true", + "managed-by-cnrm": "true" + }, + "membershipSpecs": { + "projects/example-project-01/locations/us-central1/memberships/gkehubmembership-basic-poco-${uniqueId}": {} + }, + "name": "projects/example-project-01/locations/global/features/policycontroller", + "updateTime": "2024-04-01T12:34:56.123456Z" +} + +200 OK +Cache-Control: private +Content-Type: application/json; charset=UTF-8 +Server: ESF +Vary: Origin +Vary: X-Origin +Vary: Referer +X-Content-Type-Options: nosniff +X-Frame-Options: SAMEORIGIN +X-Xss-Protection: 0 + +{ + "metadata": { + "@type": "type.googleapis.com/google.cloud.gkehub.v1beta.OperationMetadata", + "createTime": "2024-04-01T12:34:56.123456Z", + "endTime": "2024-04-01T12:34:56.123456Z", + "target": "projects/example-project-01/locations/global/features/policycontroller" + }, + "name": "projects/example-project-01/locations/global/features/policycontroller/operations/${operationID}" +} + +--- + +GET https://gkehub.googleapis.com/v1beta/projects/example-project-01/locations/global/features/policycontroller/operations/${operationID}?alt=json&prettyPrint=false +User-Agent: kcc/controller-manager + +200 OK +Cache-Control: private +Content-Type: application/json; charset=UTF-8 +Server: ESF +Vary: Origin +Vary: X-Origin +Vary: Referer +X-Content-Type-Options: nosniff +X-Frame-Options: SAMEORIGIN +X-Xss-Protection: 0 + +{ + "done": true, + "metadata": { + "@type": "type.googleapis.com/google.cloud.gkehub.v1beta.OperationMetadata", + "createTime": "2024-04-01T12:34:56.123456Z", + "endTime": "2024-04-01T12:34:56.123456Z", + "target": "projects/example-project-01/locations/global/features/policycontroller" + }, + "name": "projects/example-project-01/locations/global/features/policycontroller/operations/${operationID}", + "response": { + "@type": "type.googleapis.com/google.cloud.gkehub.v1beta.Feature", + "labels": { + "cnrm-test": "true", + "managed-by-cnrm": "true" + }, + "membershipSpecs": { + "projects/example-project-01/locations/us-central1/memberships/gkehubmembership-basic-poco-${uniqueId}": {} + }, + "name": "projects/example-project-01/locations/global/features/policycontroller", + "resourceState": { + "state": "ACTIVE" + }, + "updateTime": "2024-04-01T12:34:56.123456Z" + } +} + +--- + +GET https://gkehub.googleapis.com/v1beta1/projects/example-project-01/locations/us-west1/memberships/gkehubmembership-basic-poco-${uniqueId}?alt=json +Content-Type: application/json +User-Agent: kcc/controller-manager DeclarativeClientLib/0.0.1 + +200 OK +Cache-Control: private +Content-Type: application/json; charset=UTF-8 +Server: ESF +Vary: Origin +Vary: X-Origin +Vary: Referer +X-Content-Type-Options: nosniff +X-Frame-Options: SAMEORIGIN +X-Xss-Protection: 0 + +{ + "authority": { + "identityProvider": "https://container.googleapis.com/v1/projects/example-project-01/locations/us-west1-a/clusters/gke-basic-poco-${uniqueId}", + "issuer": "https://container.googleapis.com/v1/projects/example-project-01/locations/us-west1-a/clusters/gke-basic-poco-${uniqueId}", + "workloadIdentityPool": "${projectId}.svc.id.goog" + }, + "createTime": "2024-04-01T12:34:56.123456Z", + "description": "A sample GKE Hub membership", + "endpoint": { + "gkeCluster": { + "resourceLink": "//container.googleapis.com/projects/example-project-01/zones/us-west1-a/clusters/gke-basic-poco-${uniqueId}" + } + }, + "externalId": "c772f869-1d6c-4d50-a92e-816c48322246", + "infrastructureType": "MULTI_CLOUD", + "labels": { + "cnrm-test": "true", + "managed-by-cnrm": "true" + }, + "name": "projects/example-project-01/locations/us-west1/memberships/gkehubmembership-basic-poco-${uniqueId}", + "state": { + "code": "READY" + }, + "uniqueId": "111111111111111111111", + "updateTime": "2024-04-01T12:34:56.123456Z" +} + +--- + +DELETE https://gkehub.googleapis.com/v1beta1/projects/example-project-01/locations/us-west1/memberships/gkehubmembership-basic-poco-${uniqueId}?alt=json +Content-Type: application/json +User-Agent: kcc/controller-manager DeclarativeClientLib/0.0.1 + +200 OK +Cache-Control: private +Content-Type: application/json; charset=UTF-8 +Server: ESF +Vary: Origin +Vary: X-Origin +Vary: Referer +X-Content-Type-Options: nosniff +X-Frame-Options: SAMEORIGIN +X-Xss-Protection: 0 + +{ + "done": true, + "metadata": { + "@type": "type.googleapis.com/google.cloud.gkehub.v1beta1.OperationMetadata", + "createTime": "2024-04-01T12:34:56.123456Z", + "endTime": "2024-04-01T12:34:56.123456Z", + "target": "projects/example-project-01/locations/us-west1/memberships/gkehubmembership-basic-poco-${uniqueId}" + }, + "name": "projects/example-project-01/locations/us-west1/memberships/gkehubmembership-basic-poco-${uniqueId}/operations/${operationID}", + "response": { + "@type": "type.googleapis.com/google.cloud.gkehub.v1beta1.Membership" + } +} + +--- + +GET https://gkehub.googleapis.com/v1beta1/projects/example-project-01/locations/us-west1/memberships/gkehubmembership-basic-poco-${uniqueId}?alt=json +Content-Type: application/json +User-Agent: kcc/controller-manager DeclarativeClientLib/0.0.1 + +404 Not Found +Cache-Control: private +Content-Type: application/json; charset=UTF-8 +Server: ESF +Vary: Origin +Vary: X-Origin +Vary: Referer +X-Content-Type-Options: nosniff +X-Frame-Options: SAMEORIGIN +X-Xss-Protection: 0 + +{ + "error": { + "code": 404, + "message": "membership \"projects/example-project-01/locations/us-west1/memberships/gkehubmembership-basic-poco-${uniqueId}\" not found", + "status": "NOT_FOUND" + } +} + +--- + +GET https://container.googleapis.com/v1beta1/projects/example-project-01/locations/us-west1-a/clusters/gke-basic-poco-${uniqueId}?alt=json&prettyPrint=false +User-Agent: google-api-go-client/0.5 Terraform/ (+https://www.terraform.io) Terraform-Plugin-SDK/2.10.1 terraform-provider-google-beta/kcc/controller-manager + +200 OK +Cache-Control: private +Content-Type: application/json; charset=UTF-8 +Server: ESF +Vary: Origin +Vary: X-Origin +Vary: Referer +X-Content-Type-Options: nosniff +X-Frame-Options: SAMEORIGIN +X-Xss-Protection: 0 + +{ + "addonsConfig": { + "gcePersistentDiskCsiDriverConfig": { + "enabled": true + }, + "kubernetesDashboard": { + "disabled": true + }, + "networkPolicyConfig": { + "disabled": true + } + }, + "autopilot": {}, + "autoscaling": { + "autoprovisioningNodePoolDefaults": { + "management": { + "autoRepair": true, + "autoUpgrade": true + }, + "oauthScopes": [ + "https://www.googleapis.com/auth/userinfo.email", + "https://www.googleapis.com/auth/cloud-platform" + ], + "upgradeSettings": { + "strategy": "SURGE" + } + }, + "autoscalingProfile": "BALANCED" + }, + "binaryAuthorization": {}, + "clusterIpv4Cidr": "10.92.0.0/14", + "clusterTelemetry": { + "type": "ENABLED" + }, + "createTime": "2024-04-01T12:34:56.123456Z", + "currentMasterVersion": "1.30.5-gke.1014001", + "currentNodeCount": 1, + "currentNodeVersion": "1.30.5-gke.1014001", + "databaseEncryption": { + "currentState": "CURRENT_STATE_DECRYPTED", + "state": "DECRYPTED" + }, + "defaultMaxPodsConstraint": { + "maxPodsPerNode": "110" + }, + "enterpriseConfig": { + "clusterTier": "STANDARD" + }, + "initialClusterVersion": "1.30.5-gke.1014001", + "initialNodeCount": 1, + "ipAllocationPolicy": { + "stackType": "IPV4" + }, + "legacyAbac": {}, + "location": "us-west1-a", + "locations": [ + "us-west1-a" + ], + "loggingConfig": { + "componentConfig": { + "enableComponents": [ + "SYSTEM_COMPONENTS", + "WORKLOADS" + ] + } + }, + "loggingService": "logging.googleapis.com/kubernetes", + "maintenancePolicy": { + "window": {} + }, + "masterAuthorizedNetworksConfig": { + "gcpPublicCidrsAccessEnabled": true + }, + "monitoringConfig": { + "advancedDatapathObservabilityConfig": {}, + "componentConfig": { + "enableComponents": [ + "SYSTEM_COMPONENTS" + ] + }, + "managedPrometheusConfig": { + "enabled": true + } + }, + "monitoringService": "monitoring.googleapis.com/kubernetes", + "name": "gke-basic-poco-${uniqueId}", + "network": "default", + "networkConfig": { + "network": "projects/example-project-01/global/networks/default", + "subnetwork": "default" + }, + "networkPolicy": {}, + "nodeConfig": { + "diskSizeGb": 100, + "diskType": "pd-balanced", + "imageType": "COS_CONTAINERD", + "machineType": "e2-medium", + "metadata": { + "disable-legacy-endpoints": "true" + }, + "oauthScopes": [ + "https://www.googleapis.com/auth/devstorage.read_only", + "https://www.googleapis.com/auth/logging.write", + "https://www.googleapis.com/auth/monitoring", + "https://www.googleapis.com/auth/service.management.readonly", + "https://www.googleapis.com/auth/servicecontrol", + "https://www.googleapis.com/auth/trace.append" + ], + "serviceAccount": "default", + "shieldedInstanceConfig": { + "enableIntegrityMonitoring": true + }, + "windowsNodeConfig": {} + }, + "nodePools": [ + { + "config": { + "diskSizeGb": 100, + "diskType": "pd-balanced", + "imageType": "COS_CONTAINERD", + "machineType": "e2-medium", + "metadata": { + "disable-legacy-endpoints": "true" + }, + "oauthScopes": [ + "https://www.googleapis.com/auth/devstorage.read_only", + "https://www.googleapis.com/auth/logging.write", + "https://www.googleapis.com/auth/monitoring", + "https://www.googleapis.com/auth/service.management.readonly", + "https://www.googleapis.com/auth/servicecontrol", + "https://www.googleapis.com/auth/trace.append" + ], + "serviceAccount": "default", + "shieldedInstanceConfig": { + "enableIntegrityMonitoring": true + }, + "windowsNodeConfig": {} + }, + "initialNodeCount": 1, + "locations": [ + "us-west1-a" + ], + "management": { + "autoRepair": true, + "autoUpgrade": true + }, + "maxPodsConstraint": { + "maxPodsPerNode": "110" + }, + "name": "default-pool", + "networkConfig": { + "enablePrivateNodes": false, + "podIpv4CidrBlock": "10.92.0.0/14", + "podIpv4RangeUtilization": 0.001, + "podRange": "default-pool-pods-12345678" + }, + "podIpv4CidrSize": 24, + "status": "RUNNING", + "upgradeSettings": { + "maxSurge": 1, + "strategy": "SURGE" + }, + "version": "1.30.5-gke.1014001" + } + ], + "notificationConfig": { + "pubsub": {} + }, + "privateCluster": true, + "privateClusterConfig": { + "privateEndpoint": "10.128.0.2", + "publicEndpoint": "8.8.8.8" + }, + "protectConfig": { + "workloadConfig": { + "auditMode": "BASIC" + }, + "workloadVulnerabilityMode": "WORKLOAD_VULNERABILITY_MODE_UNSPECIFIED" + }, + "releaseChannel": { + "channel": "REGULAR" + }, + "resourceLabels": { + "cnrm-test": "true", + "managed-by-cnrm": "true" + }, + "securityPostureConfig": { + "mode": "BASIC", + "vulnerabilityMode": "VULNERABILITY_MODE_UNSPECIFIED" + }, + "selfLink": "https://container.googleapis.com/v1beta1/projects/example-project-01/zones/us-west1-a/clusters/gke-basic-poco-${uniqueId}", + "servicesIpv4Cidr": "34.118.224.0/20", + "shieldedNodes": { + "enabled": true + }, + "status": "RUNNING", + "subnetwork": "default", + "workloadIdentityConfig": { + "workloadPool": "example-project-01.svc.id.goog" + }, + "zone": "us-west1-a" +} + +--- + +DELETE https://container.googleapis.com/v1beta1/projects/example-project-01/locations/us-west1-a/clusters/gke-basic-poco-${uniqueId}?alt=json&prettyPrint=false +User-Agent: google-api-go-client/0.5 Terraform/ (+https://www.terraform.io) Terraform-Plugin-SDK/2.10.1 terraform-provider-google-beta/kcc/controller-manager + +200 OK +Cache-Control: private +Content-Type: application/json; charset=UTF-8 +Server: ESF +Vary: Origin +Vary: X-Origin +Vary: Referer +X-Content-Type-Options: nosniff +X-Frame-Options: SAMEORIGIN +X-Xss-Protection: 0 + +{ + "name": "${operationID}", + "operationType": "DELETE_CLUSTER", + "selfLink": "https://container.googleapis.com/v1beta1/projects/${projectNumber}/zones/us-west1-a/operations/${operationID}", + "startTime": "2024-04-01T12:34:56.123456Z", + "status": "RUNNING", + "targetLink": "https://container.googleapis.com/v1beta1/projects/${projectNumber}/zones/us-west1-a/clusters/gke-basic-poco-${uniqueId}", + "zone": "us-west1-a" +} + +--- + +GET https://container.googleapis.com/v1beta1/projects/example-project-01/locations/us-west1-a/operations/${operationID}?alt=json&prettyPrint=false +User-Agent: google-api-go-client/0.5 Terraform/ (+https://www.terraform.io) Terraform-Plugin-SDK/2.10.1 terraform-provider-google-beta/kcc/controller-manager + +200 OK +Cache-Control: private +Content-Type: application/json; charset=UTF-8 +Server: ESF +Vary: Origin +Vary: X-Origin +Vary: Referer +X-Content-Type-Options: nosniff +X-Frame-Options: SAMEORIGIN +X-Xss-Protection: 0 + +{ + "endTime": "2024-04-01T12:34:56.123456Z", + "name": "${operationID}", + "operationType": "DELETE_CLUSTER", + "selfLink": "https://container.googleapis.com/v1beta1/projects/${projectNumber}/zones/us-west1-a/operations/${operationID}", + "startTime": "2024-04-01T12:34:56.123456Z", + "status": "DONE", + "targetLink": "https://container.googleapis.com/v1beta1/projects/${projectNumber}/zones/us-west1-a/clusters/gke-basic-poco-${uniqueId}", + "zone": "us-west1-a" +} \ No newline at end of file diff --git a/pkg/test/resourcefixture/testdata/basic/gkehub/v1beta1/gkehubfeaturemembership/basicpocogkehubfeaturemembership/create.yaml b/pkg/test/resourcefixture/testdata/basic/gkehub/v1beta1/gkehubfeaturemembership/basicpocogkehubfeaturemembership/create.yaml new file mode 100644 index 0000000000..d04e5e4f81 --- /dev/null +++ b/pkg/test/resourcefixture/testdata/basic/gkehub/v1beta1/gkehubfeaturemembership/basicpocogkehubfeaturemembership/create.yaml @@ -0,0 +1,31 @@ +# Copyright 2024 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +apiVersion: gkehub.cnrm.cloud.google.com/v1beta1 +kind: GKEHubFeatureMembership +metadata: + name: gkehubfeaturemembership-basic-poco-${uniqueId} +spec: + projectRef: + name: gkehubfm-${uniqueId} + location: global + membershipLocation: us-central1 + membershipRef: + name: gkehubmembership-basic-poco-${uniqueId} + featureRef: + name: gkehubfeature-basic-poco-${uniqueId} + policycontroller: + policyControllerHubConfig: + auditIntervalSeconds: 10 + version: "1.18.0" diff --git a/pkg/test/resourcefixture/testdata/basic/gkehub/v1beta1/gkehubfeaturemembership/basicpocogkehubfeaturemembership/dependencies.yaml b/pkg/test/resourcefixture/testdata/basic/gkehub/v1beta1/gkehubfeaturemembership/basicpocogkehubfeaturemembership/dependencies.yaml new file mode 100644 index 0000000000..1d6f3c0410 --- /dev/null +++ b/pkg/test/resourcefixture/testdata/basic/gkehub/v1beta1/gkehubfeaturemembership/basicpocogkehubfeaturemembership/dependencies.yaml @@ -0,0 +1,113 @@ +# Copyright 2024 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +apiVersion: resourcemanager.cnrm.cloud.google.com/v1beta1 +kind: Project +metadata: + annotations: + cnrm.cloud.google.com/deletion-policy: "abandon" + name: gkehubfm-${uniqueId} +spec: + resourceID: ${TEST_DEPENDENT_ORG_PROJECT_ID} + name: "Dependent Project" + organizationRef: + external: ${TEST_ORG_ID} + billingAccountRef: + external: ${TEST_BILLING_ACCOUNT_ID} +--- +apiVersion: serviceusage.cnrm.cloud.google.com/v1beta1 +kind: Service +metadata: + annotations: + cnrm.cloud.google.com/project-id: ${TEST_DEPENDENT_ORG_PROJECT_ID} + cnrm.cloud.google.com/deletion-policy: "abandon" + name: container.googleapis.com +--- +apiVersion: serviceusage.cnrm.cloud.google.com/v1beta1 +kind: Service +metadata: + annotations: + cnrm.cloud.google.com/project-id: ${TEST_DEPENDENT_ORG_PROJECT_ID} + cnrm.cloud.google.com/deletion-policy: "abandon" + name: anthos.googleapis.com +--- +apiVersion: serviceusage.cnrm.cloud.google.com/v1beta1 +kind: Service +metadata: + annotations: + cnrm.cloud.google.com/project-id: ${TEST_DEPENDENT_ORG_PROJECT_ID} + # Abandon the resource to unblock cleanup; Otherwise it fails with error message + # "Error waiting for api to disable ... ensure there are no more resources managed + # by this service." Likely there is some delay in GKEHub resources clean up. + cnrm.cloud.google.com/deletion-policy: "abandon" + name: gkehub.googleapis.com +--- +apiVersion: serviceusage.cnrm.cloud.google.com/v1beta1 +kind: Service +metadata: + annotations: + cnrm.cloud.google.com/project-id: ${TEST_DEPENDENT_ORG_PROJECT_ID} + cnrm.cloud.google.com/deletion-policy: "abandon" + name: anthosconfigmanagement.googleapis.com +--- +apiVersion: serviceusage.cnrm.cloud.google.com/v1beta1 +kind: Service +metadata: + annotations: + cnrm.cloud.google.com/project-id: ${TEST_DEPENDENT_ORG_PROJECT_ID} + cnrm.cloud.google.com/deletion-policy: "abandon" + name: anthospolicycontroller.googleapis.com +--- +apiVersion: container.cnrm.cloud.google.com/v1beta1 +kind: ContainerCluster +metadata: + annotations: + cnrm.cloud.google.com/project-id: ${TEST_DEPENDENT_ORG_PROJECT_ID} + name: gke-basic-poco-${uniqueId} +spec: + location: us-west1-a + initialNodeCount: 1 + workloadIdentityConfig: + workloadPool: ${TEST_DEPENDENT_ORG_PROJECT_ID_WITHOUT_QUOTATION}.svc.id.goog +--- +# The GKEHubFeature below is used to create/acquire the shared test dependent across mutiple gke hub policycontroller feature test cases. +# The manifest should be the same across test cases to avoid racing conditions. +apiVersion: gkehub.cnrm.cloud.google.com/v1beta1 +kind: GKEHubFeature +metadata: + name: gkehubfeature-basic-poco-${uniqueId} + annotations: + # Abondon the feature resource as it is global within a project and we would hit issues when running two tests in parallel. + cnrm.cloud.google.com/deletion-policy: "abandon" +spec: + projectRef: + name: gkehubfm-${uniqueId} + location: global + resourceID: policycontroller +--- +apiVersion: gkehub.cnrm.cloud.google.com/v1beta1 +kind: GKEHubMembership +metadata: + annotations: + cnrm.cloud.google.com/project-id: ${TEST_DEPENDENT_ORG_PROJECT_ID} + name: gkehubmembership-basic-poco-${uniqueId} +spec: + location: us-west1 + authority: + issuer: https://container.googleapis.com/v1/projects/${TEST_DEPENDENT_ORG_PROJECT_ID_WITHOUT_QUOTATION}/locations/us-west1-a/clusters/gke-basic-poco-${uniqueId} + description: A sample GKE Hub membership + endpoint: + gkeCluster: + resourceRef: + name: gke-basic-poco-${uniqueId} diff --git a/pkg/test/resourcefixture/testdata/basic/gkehub/v1beta1/gkehubfeaturemembership/basicpocogkehubfeaturemembership/update.yaml b/pkg/test/resourcefixture/testdata/basic/gkehub/v1beta1/gkehubfeaturemembership/basicpocogkehubfeaturemembership/update.yaml new file mode 100644 index 0000000000..cede77129f --- /dev/null +++ b/pkg/test/resourcefixture/testdata/basic/gkehub/v1beta1/gkehubfeaturemembership/basicpocogkehubfeaturemembership/update.yaml @@ -0,0 +1,44 @@ +# Copyright 2024 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +apiVersion: gkehub.cnrm.cloud.google.com/v1beta1 +kind: GKEHubFeatureMembership +metadata: + name: gkehubfeaturemembership-basic-poco-${uniqueId} +spec: + projectRef: + name: gkehubfm-${uniqueId} + location: global + membershipLocation: us-central1 + membershipRef: + name: gkehubmembership-basic-poco-${uniqueId} + featureRef: + name: gkehubfeature-basic-poco-${uniqueId} + policycontroller: + policyControllerHubConfig: + auditIntervalSeconds: 15 + constraintViolationLimit: 20 + exemptableNamespaces: + - "test-namespace" + installSpec: "INSTALL_SPEC_ENABLED" + logDeniesEnabled: false + monitoring: + backends: + - "PROMETHEUS" + mutationEnabled: false + policyContent: + templateLibrary: + installation: "NOT_INSTALLED" + referentialRulesEnabled: false + version: "1.18.0" diff --git a/pkg/test/resourcefixture/testdata/basic/gkehub/v1beta1/gkehubfeaturemembership/fullpocogkehubfeaturemembership/_generated_object_fullpocogkehubfeaturemembership.golden.yaml b/pkg/test/resourcefixture/testdata/basic/gkehub/v1beta1/gkehubfeaturemembership/fullpocogkehubfeaturemembership/_generated_object_fullpocogkehubfeaturemembership.golden.yaml new file mode 100644 index 0000000000..ce1fedfb2f --- /dev/null +++ b/pkg/test/resourcefixture/testdata/basic/gkehub/v1beta1/gkehubfeaturemembership/fullpocogkehubfeaturemembership/_generated_object_fullpocogkehubfeaturemembership.golden.yaml @@ -0,0 +1,47 @@ +apiVersion: gkehub.cnrm.cloud.google.com/v1beta1 +kind: GKEHubFeatureMembership +metadata: + annotations: + cnrm.cloud.google.com/management-conflict-prevention-policy: none + finalizers: + - cnrm.cloud.google.com/finalizer + - cnrm.cloud.google.com/deletion-defender + generation: 2 + labels: + cnrm-test: "true" + name: gkehubfeaturemembership-full-poco-${uniqueId} + namespace: ${uniqueId} +spec: + featureRef: + name: gkehubfeature-full-poco-${uniqueId} + location: global + membershipLocation: us-central1 + membershipRef: + name: gkehubmembership-full-poco-${uniqueId} + policycontroller: + policyControllerHubConfig: + auditIntervalSeconds: 15 + constraintViolationLimit: 25 + exemptableNamespaces: + - test-namespace-two + installSpec: INSTALL_SPEC_SUSPENDED + logDeniesEnabled: true + monitoring: + backends: + - CLOUD_MONITORING + mutationEnabled: true + policyContent: + templateLibrary: + installation: ALL + referentialRulesEnabled: true + version: 1.18.0 + projectRef: + name: gkehubfm-${uniqueId} +status: + conditions: + - lastTransitionTime: "1970-01-01T00:00:00Z" + message: The resource is up to date + reason: UpToDate + status: "True" + type: Ready + observedGeneration: 2 diff --git a/pkg/test/resourcefixture/testdata/basic/gkehub/v1beta1/gkehubfeaturemembership/fullpocogkehubfeaturemembership/_http.log b/pkg/test/resourcefixture/testdata/basic/gkehub/v1beta1/gkehubfeaturemembership/fullpocogkehubfeaturemembership/_http.log new file mode 100644 index 0000000000..ba7df996da --- /dev/null +++ b/pkg/test/resourcefixture/testdata/basic/gkehub/v1beta1/gkehubfeaturemembership/fullpocogkehubfeaturemembership/_http.log @@ -0,0 +1,1991 @@ +GET https://cloudresourcemanager.googleapis.com/v1/projects/example-project-01?alt=json&prettyPrint=false +User-Agent: google-api-go-client/0.5 Terraform/ (+https://www.terraform.io) Terraform-Plugin-SDK/2.10.1 terraform-provider-google-beta/kcc/controller-manager + +403 Forbidden +Cache-Control: private +Content-Type: application/json; charset=UTF-8 +Server: ESF +Vary: Origin +Vary: X-Origin +Vary: Referer +X-Content-Type-Options: nosniff +X-Frame-Options: SAMEORIGIN +X-Xss-Protection: 0 + +{ + "error": { + "code": 403, + "message": "The caller does not have permission", + "status": "PERMISSION_DENIED" + } +} + +--- + +POST https://cloudbilling.googleapis.com/v1/billingAccounts/${billingAccountID}:testIamPermissions?alt=json&prettyPrint=false +Content-Type: application/json +User-Agent: google-api-go-client/0.5 Terraform/ (+https://www.terraform.io) Terraform-Plugin-SDK/2.10.1 terraform-provider-google-beta/kcc/controller-manager + +{ + "permissions": [ + "billing.resourceAssociations.create" + ] +} + +200 OK +Cache-Control: private +Content-Type: application/json; charset=UTF-8 +Server: ESF +Vary: Origin +Vary: X-Origin +Vary: Referer +X-Content-Type-Options: nosniff +X-Frame-Options: SAMEORIGIN +X-Xss-Protection: 0 + +{ + "permissions": [ + "billing.resourceAssociations.create" + ] +} + +--- + +POST https://cloudresourcemanager.googleapis.com/v1/projects?alt=json&prettyPrint=false +Content-Type: application/json +User-Agent: google-api-go-client/0.5 Terraform/ (+https://www.terraform.io) Terraform-Plugin-SDK/2.10.1 terraform-provider-google-beta/kcc/controller-manager + +{ + "labels": { + "cnrm-test": "true", + "managed-by-cnrm": "true" + }, + "name": "Dependent Project", + "parent": { + "id": "123450001", + "type": "organization" + }, + "projectId": "example-project-01" +} + +200 OK +Cache-Control: private +Content-Type: application/json; charset=UTF-8 +Server: ESF +Vary: Origin +Vary: X-Origin +Vary: Referer +X-Content-Type-Options: nosniff +X-Frame-Options: SAMEORIGIN +X-Xss-Protection: 0 + +{ + "name": "operations/${operationID}" +} + +--- + +GET https://cloudresourcemanager.googleapis.com/v1/operations/${operationID}?alt=json +Content-Type: application/json +User-Agent: Terraform/ (+https://www.terraform.io) Terraform-Plugin-SDK/2.10.1 terraform-provider-google-beta/kcc/controller-manager + +200 OK +Cache-Control: private +Content-Type: application/json; charset=UTF-8 +Server: ESF +Vary: Origin +Vary: X-Origin +Vary: Referer +X-Content-Type-Options: nosniff +X-Frame-Options: SAMEORIGIN +X-Xss-Protection: 0 + +{ + "done": true, + "metadata": { + "@type": "type.googleapis.com/google.cloud.resourcemanager.v3.CreateProjectMetadata" + }, + "name": "operations/${operationID}", + "response": { + "@type": "type.googleapis.com/google.cloud.resourcemanager.v3.Project", + "createTime": "2024-04-01T12:34:56.123456Z", + "displayName": "Dependent Project", + "etag": "abcdef0123A=", + "labels": { + "cnrm-test": "true", + "managed-by-cnrm": "true" + }, + "name": "projects/${projectNumber}", + "parent": "organizations/${organizationID}", + "projectId": "example-project-01", + "state": "ACTIVE" + } +} + +--- + +PUT https://cloudbilling.googleapis.com/v1/projects/example-project-01/billingInfo?alt=json&prettyPrint=false +Content-Type: application/json +User-Agent: google-api-go-client/0.5 Terraform/ (+https://www.terraform.io) Terraform-Plugin-SDK/2.10.1 terraform-provider-google-beta/kcc/controller-manager + +{ + "billingAccountName": "billingAccounts/${billingAccountID}" +} + +200 OK +Cache-Control: private +Content-Type: application/json; charset=UTF-8 +Server: ESF +Vary: Origin +Vary: X-Origin +Vary: Referer +X-Content-Type-Options: nosniff +X-Frame-Options: SAMEORIGIN +X-Xss-Protection: 0 + +{ + "billingAccountName": "billingAccounts/${billingAccountID}", + "billingEnabled": true, + "name": "projects/example-project-01/billingInfo", + "projectId": "example-project-01" +} + +--- + +GET https://cloudbilling.googleapis.com/v1/projects/example-project-01/billingInfo?alt=json&prettyPrint=false +User-Agent: google-api-go-client/0.5 Terraform/ (+https://www.terraform.io) Terraform-Plugin-SDK/2.10.1 terraform-provider-google-beta/kcc/controller-manager + +200 OK +Cache-Control: private +Content-Type: application/json; charset=UTF-8 +Server: ESF +Vary: Origin +Vary: X-Origin +Vary: Referer +X-Content-Type-Options: nosniff +X-Frame-Options: SAMEORIGIN +X-Xss-Protection: 0 + +{ + "billingAccountName": "billingAccounts/${billingAccountID}", + "billingEnabled": true, + "name": "projects/example-project-01/billingInfo", + "projectId": "example-project-01" +} + +--- + +GET https://cloudresourcemanager.googleapis.com/v1/projects/example-project-01?alt=json&prettyPrint=false +User-Agent: google-api-go-client/0.5 Terraform/ (+https://www.terraform.io) Terraform-Plugin-SDK/2.10.1 terraform-provider-google-beta/kcc/controller-manager + +200 OK +Cache-Control: private +Content-Type: application/json; charset=UTF-8 +Server: ESF +Vary: Origin +Vary: X-Origin +Vary: Referer +X-Content-Type-Options: nosniff +X-Frame-Options: SAMEORIGIN +X-Xss-Protection: 0 + +{ + "createTime": "2024-04-01T12:34:56.123456Z", + "labels": { + "cnrm-test": "true", + "managed-by-cnrm": "true" + }, + "lifecycleState": "ACTIVE", + "name": "Dependent Project", + "parent": { + "id": "123450001", + "type": "organization" + }, + "projectId": "example-project-01", + "projectNumber": "${projectNumber}" +} + +--- + +GET https://cloudbilling.googleapis.com/v1/projects/example-project-01/billingInfo?alt=json&prettyPrint=false +User-Agent: google-api-go-client/0.5 Terraform/ (+https://www.terraform.io) Terraform-Plugin-SDK/2.10.1 terraform-provider-google-beta/kcc/controller-manager + +200 OK +Cache-Control: private +Content-Type: application/json; charset=UTF-8 +Server: ESF +Vary: Origin +Vary: X-Origin +Vary: Referer +X-Content-Type-Options: nosniff +X-Frame-Options: SAMEORIGIN +X-Xss-Protection: 0 + +{ + "billingAccountName": "billingAccounts/${billingAccountID}", + "billingEnabled": true, + "name": "projects/example-project-01/billingInfo", + "projectId": "example-project-01" +} + +--- + +GET https://serviceusage.googleapis.com/v1/projects/example-project-01/services?alt=json&fields=services%2Fname%2CnextPageToken&filter=state%3AENABLED&prettyPrint=false +User-Agent: google-api-go-client/0.5 Terraform/ (+https://www.terraform.io) Terraform-Plugin-SDK/2.10.1 terraform-provider-google-beta/kcc/controller-manager + +200 OK +Cache-Control: private +Content-Type: application/json; charset=UTF-8 +Server: ESF +Vary: Origin +Vary: X-Origin +Vary: Referer +X-Content-Type-Options: nosniff +X-Frame-Options: SAMEORIGIN +X-Xss-Protection: 0 + +{} + +--- + +POST https://serviceusage.googleapis.com/v1/projects/example-project-01/services/container.googleapis.com:enable?alt=json&prettyPrint=false +Content-Type: application/json +User-Agent: google-api-go-client/0.5 Terraform/ (+https://www.terraform.io) Terraform-Plugin-SDK/2.10.1 terraform-provider-google-beta/kcc/controller-manager + +{} + +200 OK +Cache-Control: private +Content-Type: application/json; charset=UTF-8 +Server: ESF +Vary: Origin +Vary: X-Origin +Vary: Referer +X-Content-Type-Options: nosniff +X-Frame-Options: SAMEORIGIN +X-Xss-Protection: 0 + +{ + "done": true, + "name": "operations/${operationID}" +} + +--- + +GET https://serviceusage.googleapis.com/v1/projects/example-project-01/services?alt=json&fields=services%2Fname%2CnextPageToken&filter=state%3AENABLED&prettyPrint=false +User-Agent: google-api-go-client/0.5 Terraform/ (+https://www.terraform.io) Terraform-Plugin-SDK/2.10.1 terraform-provider-google-beta/kcc/controller-manager + +200 OK +Cache-Control: private +Content-Type: application/json; charset=UTF-8 +Server: ESF +Vary: Origin +Vary: X-Origin +Vary: Referer +X-Content-Type-Options: nosniff +X-Frame-Options: SAMEORIGIN +X-Xss-Protection: 0 + +{ + "services": [ + { + "name": "projects/${projectNumber}/services/container.googleapis.com", + "parent": "projects/${projectNumber}", + "state": "ENABLED" + } + ] +} + +--- + +POST https://serviceusage.googleapis.com/v1/projects/example-project-01/services/gkehub.googleapis.com:enable?alt=json&prettyPrint=false +Content-Type: application/json +User-Agent: google-api-go-client/0.5 Terraform/ (+https://www.terraform.io) Terraform-Plugin-SDK/2.10.1 terraform-provider-google-beta/kcc/controller-manager + +{} + +200 OK +Cache-Control: private +Content-Type: application/json; charset=UTF-8 +Server: ESF +Vary: Origin +Vary: X-Origin +Vary: Referer +X-Content-Type-Options: nosniff +X-Frame-Options: SAMEORIGIN +X-Xss-Protection: 0 + +{ + "done": true, + "name": "operations/${operationID}" +} + +--- + +GET https://serviceusage.googleapis.com/v1/projects/example-project-01/services?alt=json&fields=services%2Fname%2CnextPageToken&filter=state%3AENABLED&prettyPrint=false +User-Agent: google-api-go-client/0.5 Terraform/ (+https://www.terraform.io) Terraform-Plugin-SDK/2.10.1 terraform-provider-google-beta/kcc/controller-manager + +200 OK +Cache-Control: private +Content-Type: application/json; charset=UTF-8 +Server: ESF +Vary: Origin +Vary: X-Origin +Vary: Referer +X-Content-Type-Options: nosniff +X-Frame-Options: SAMEORIGIN +X-Xss-Protection: 0 + +{ + "services": [ + { + "name": "projects/${projectNumber}/services/gkehub.googleapis.com", + "parent": "projects/${projectNumber}", + "state": "ENABLED" + }, + { + "name": "projects/${projectNumber}/services/container.googleapis.com", + "parent": "projects/${projectNumber}", + "state": "ENABLED" + } + ] +} + +--- + +POST https://serviceusage.googleapis.com/v1/projects/example-project-01/services/anthospolicycontroller.googleapis.com:enable?alt=json&prettyPrint=false +Content-Type: application/json +User-Agent: google-api-go-client/0.5 Terraform/ (+https://www.terraform.io) Terraform-Plugin-SDK/2.10.1 terraform-provider-google-beta/kcc/controller-manager + +{} + +200 OK +Cache-Control: private +Content-Type: application/json; charset=UTF-8 +Server: ESF +Vary: Origin +Vary: X-Origin +Vary: Referer +X-Content-Type-Options: nosniff +X-Frame-Options: SAMEORIGIN +X-Xss-Protection: 0 + +{ + "done": true, + "name": "operations/${operationID}" +} + +--- + +GET https://serviceusage.googleapis.com/v1/projects/example-project-01/services?alt=json&fields=services%2Fname%2CnextPageToken&filter=state%3AENABLED&prettyPrint=false +User-Agent: google-api-go-client/0.5 Terraform/ (+https://www.terraform.io) Terraform-Plugin-SDK/2.10.1 terraform-provider-google-beta/kcc/controller-manager + +200 OK +Cache-Control: private +Content-Type: application/json; charset=UTF-8 +Server: ESF +Vary: Origin +Vary: X-Origin +Vary: Referer +X-Content-Type-Options: nosniff +X-Frame-Options: SAMEORIGIN +X-Xss-Protection: 0 + +{ + "services": [ + { + "name": "projects/${projectNumber}/services/gkehub.googleapis.com", + "parent": "projects/${projectNumber}", + "state": "ENABLED" + }, + { + "name": "projects/${projectNumber}/services/anthospolicycontroller.googleapis.com", + "parent": "projects/${projectNumber}", + "state": "ENABLED" + }, + { + "name": "projects/${projectNumber}/services/container.googleapis.com", + "parent": "projects/${projectNumber}", + "state": "ENABLED" + } + ] +} + +--- + +POST https://serviceusage.googleapis.com/v1/projects/example-project-01/services/anthos.googleapis.com:enable?alt=json&prettyPrint=false +Content-Type: application/json +User-Agent: google-api-go-client/0.5 Terraform/ (+https://www.terraform.io) Terraform-Plugin-SDK/2.10.1 terraform-provider-google-beta/kcc/controller-manager + +{} + +200 OK +Cache-Control: private +Content-Type: application/json; charset=UTF-8 +Server: ESF +Vary: Origin +Vary: X-Origin +Vary: Referer +X-Content-Type-Options: nosniff +X-Frame-Options: SAMEORIGIN +X-Xss-Protection: 0 + +{ + "done": true, + "name": "operations/${operationID}" +} + +--- + +GET https://serviceusage.googleapis.com/v1/projects/example-project-01/services?alt=json&fields=services%2Fname%2CnextPageToken&filter=state%3AENABLED&prettyPrint=false +User-Agent: google-api-go-client/0.5 Terraform/ (+https://www.terraform.io) Terraform-Plugin-SDK/2.10.1 terraform-provider-google-beta/kcc/controller-manager + +200 OK +Cache-Control: private +Content-Type: application/json; charset=UTF-8 +Server: ESF +Vary: Origin +Vary: X-Origin +Vary: Referer +X-Content-Type-Options: nosniff +X-Frame-Options: SAMEORIGIN +X-Xss-Protection: 0 + +{ + "services": [ + { + "name": "projects/${projectNumber}/services/gkehub.googleapis.com", + "parent": "projects/${projectNumber}", + "state": "ENABLED" + }, + { + "name": "projects/${projectNumber}/services/anthos.googleapis.com", + "parent": "projects/${projectNumber}", + "state": "ENABLED" + }, + { + "name": "projects/${projectNumber}/services/anthospolicycontroller.googleapis.com", + "parent": "projects/${projectNumber}", + "state": "ENABLED" + }, + { + "name": "projects/${projectNumber}/services/container.googleapis.com", + "parent": "projects/${projectNumber}", + "state": "ENABLED" + } + ] +} + +--- + +GET https://container.googleapis.com/v1beta1/projects/example-project-01/locations/us-west1-a/clusters/gke-full-poco-${uniqueId}?alt=json&prettyPrint=false +User-Agent: google-api-go-client/0.5 Terraform/ (+https://www.terraform.io) Terraform-Plugin-SDK/2.10.1 terraform-provider-google-beta/kcc/controller-manager + +404 Not Found +Cache-Control: private +Content-Type: application/json; charset=UTF-8 +Server: ESF +Vary: Origin +Vary: X-Origin +Vary: Referer +X-Content-Type-Options: nosniff +X-Frame-Options: SAMEORIGIN +X-Xss-Protection: 0 + +{ + "error": { + "code": 404, + "errors": [ + { + "domain": "global", + "message": "Not found: projects/example-project-01/zones/us-west1-a/clusters/gke-full-poco-${uniqueId}.", + "reason": "notFound" + } + ], + "message": "Not found: projects/example-project-01/zones/us-west1-a/clusters/gke-full-poco-${uniqueId}.", + "status": "NOT_FOUND" + } +} + +--- + +POST https://container.googleapis.com/v1beta1/projects/example-project-01/locations/us-west1-a/clusters?alt=json&prettyPrint=false +Content-Type: application/json +User-Agent: google-api-go-client/0.5 Terraform/ (+https://www.terraform.io) Terraform-Plugin-SDK/2.10.1 terraform-provider-google-beta/kcc/controller-manager + +{ + "cluster": { + "autopilot": { + "enabled": false + }, + "autoscaling": { + "enableNodeAutoprovisioning": false + }, + "binaryAuthorization": { + "enabled": false + }, + "initialNodeCount": 1, + "ipAllocationPolicy": { + "stackType": "IPV4", + "useIpAliases": false + }, + "legacyAbac": { + "enabled": false + }, + "maintenancePolicy": { + "window": {} + }, + "masterAuthorizedNetworksConfig": {}, + "name": "gke-full-poco-${uniqueId}", + "network": "projects/example-project-01/global/networks/default", + "networkConfig": {}, + "networkPolicy": {}, + "nodeConfig": { + "oauthScopes": [ + "https://www.googleapis.com/auth/devstorage.read_only", + "https://www.googleapis.com/auth/logging.write", + "https://www.googleapis.com/auth/monitoring", + "https://www.googleapis.com/auth/service.management.readonly", + "https://www.googleapis.com/auth/servicecontrol", + "https://www.googleapis.com/auth/trace.append" + ] + }, + "notificationConfig": { + "pubsub": {} + }, + "resourceLabels": { + "cnrm-test": "true", + "managed-by-cnrm": "true" + }, + "shieldedNodes": { + "enabled": true + }, + "workloadIdentityConfig": { + "workloadPool": "example-project-01.svc.id.goog" + } + } +} + +200 OK +Cache-Control: private +Content-Type: application/json; charset=UTF-8 +Server: ESF +Vary: Origin +Vary: X-Origin +Vary: Referer +X-Content-Type-Options: nosniff +X-Frame-Options: SAMEORIGIN +X-Xss-Protection: 0 + +{ + "name": "${operationID}", + "operationType": "CREATE_CLUSTER", + "selfLink": "https://container.googleapis.com/v1beta1/projects/${projectNumber}/zones/us-west1-a/operations/${operationID}", + "startTime": "2024-04-01T12:34:56.123456Z", + "status": "RUNNING", + "targetLink": "https://container.googleapis.com/v1beta1/projects/${projectNumber}/zones/us-west1-a/clusters/gke-full-poco-${uniqueId}", + "zone": "us-west1-a" +} + +--- + +GET https://container.googleapis.com/v1beta1/projects/example-project-01/locations/us-west1-a/operations/${operationID}?alt=json&prettyPrint=false +User-Agent: google-api-go-client/0.5 Terraform/ (+https://www.terraform.io) Terraform-Plugin-SDK/2.10.1 terraform-provider-google-beta/kcc/controller-manager + +200 OK +Cache-Control: private +Content-Type: application/json; charset=UTF-8 +Server: ESF +Vary: Origin +Vary: X-Origin +Vary: Referer +X-Content-Type-Options: nosniff +X-Frame-Options: SAMEORIGIN +X-Xss-Protection: 0 + +{ + "endTime": "2024-04-01T12:34:56.123456Z", + "name": "${operationID}", + "operationType": "CREATE_CLUSTER", + "progress": { + "metrics": [ + { + "intValue": "10", + "name": "CLUSTER_CONFIGURING" + }, + { + "intValue": "10", + "name": "CLUSTER_CONFIGURING_TOTAL" + }, + { + "intValue": "12", + "name": "CLUSTER_DEPLOYING" + }, + { + "intValue": "12", + "name": "CLUSTER_DEPLOYING_TOTAL" + }, + { + "intValue": "1", + "name": "CLUSTER_HEALTHCHECKING" + }, + { + "intValue": "2", + "name": "CLUSTER_HEALTHCHECKING_TOTAL" + } + ] + }, + "selfLink": "https://container.googleapis.com/v1beta1/projects/${projectNumber}/zones/us-west1-a/operations/${operationID}", + "startTime": "2024-04-01T12:34:56.123456Z", + "status": "DONE", + "targetLink": "https://container.googleapis.com/v1beta1/projects/${projectNumber}/zones/us-west1-a/clusters/gke-full-poco-${uniqueId}", + "zone": "us-west1-a" +} + +--- + +GET https://container.googleapis.com/v1beta1/projects/example-project-01/locations/us-west1-a/clusters/gke-full-poco-${uniqueId}?alt=json&prettyPrint=false +User-Agent: google-api-go-client/0.5 Terraform/ (+https://www.terraform.io) Terraform-Plugin-SDK/2.10.1 terraform-provider-google-beta/kcc/controller-manager + +200 OK +Cache-Control: private +Content-Type: application/json; charset=UTF-8 +Server: ESF +Vary: Origin +Vary: X-Origin +Vary: Referer +X-Content-Type-Options: nosniff +X-Frame-Options: SAMEORIGIN +X-Xss-Protection: 0 + +{ + "addonsConfig": { + "gcePersistentDiskCsiDriverConfig": { + "enabled": true + }, + "kubernetesDashboard": { + "disabled": true + }, + "networkPolicyConfig": { + "disabled": true + } + }, + "autopilot": {}, + "autoscaling": { + "autoprovisioningNodePoolDefaults": { + "management": { + "autoRepair": true, + "autoUpgrade": true + }, + "oauthScopes": [ + "https://www.googleapis.com/auth/userinfo.email", + "https://www.googleapis.com/auth/cloud-platform" + ], + "upgradeSettings": { + "strategy": "SURGE" + } + }, + "autoscalingProfile": "BALANCED" + }, + "binaryAuthorization": {}, + "clusterIpv4Cidr": "10.92.0.0/14", + "clusterTelemetry": { + "type": "ENABLED" + }, + "createTime": "2024-04-01T12:34:56.123456Z", + "currentMasterVersion": "1.30.5-gke.1014001", + "currentNodeCount": 1, + "currentNodeVersion": "1.30.5-gke.1014001", + "databaseEncryption": { + "currentState": "CURRENT_STATE_DECRYPTED", + "state": "DECRYPTED" + }, + "defaultMaxPodsConstraint": { + "maxPodsPerNode": "110" + }, + "enterpriseConfig": { + "clusterTier": "STANDARD" + }, + "initialClusterVersion": "1.30.5-gke.1014001", + "initialNodeCount": 1, + "ipAllocationPolicy": { + "stackType": "IPV4" + }, + "legacyAbac": {}, + "location": "us-west1-a", + "locations": [ + "us-west1-a" + ], + "loggingConfig": { + "componentConfig": { + "enableComponents": [ + "SYSTEM_COMPONENTS", + "WORKLOADS" + ] + } + }, + "loggingService": "logging.googleapis.com/kubernetes", + "maintenancePolicy": { + "window": {} + }, + "masterAuthorizedNetworksConfig": { + "gcpPublicCidrsAccessEnabled": true + }, + "monitoringConfig": { + "advancedDatapathObservabilityConfig": {}, + "componentConfig": { + "enableComponents": [ + "SYSTEM_COMPONENTS" + ] + }, + "managedPrometheusConfig": { + "enabled": true + } + }, + "monitoringService": "monitoring.googleapis.com/kubernetes", + "name": "gke-full-poco-${uniqueId}", + "network": "default", + "networkConfig": { + "network": "projects/example-project-01/global/networks/default", + "subnetwork": "default" + }, + "networkPolicy": {}, + "nodeConfig": { + "diskSizeGb": 100, + "diskType": "pd-balanced", + "imageType": "COS_CONTAINERD", + "machineType": "e2-medium", + "metadata": { + "disable-legacy-endpoints": "true" + }, + "oauthScopes": [ + "https://www.googleapis.com/auth/devstorage.read_only", + "https://www.googleapis.com/auth/logging.write", + "https://www.googleapis.com/auth/monitoring", + "https://www.googleapis.com/auth/service.management.readonly", + "https://www.googleapis.com/auth/servicecontrol", + "https://www.googleapis.com/auth/trace.append" + ], + "serviceAccount": "default", + "shieldedInstanceConfig": { + "enableIntegrityMonitoring": true + }, + "windowsNodeConfig": {} + }, + "nodePools": [ + { + "config": { + "diskSizeGb": 100, + "diskType": "pd-balanced", + "imageType": "COS_CONTAINERD", + "machineType": "e2-medium", + "metadata": { + "disable-legacy-endpoints": "true" + }, + "oauthScopes": [ + "https://www.googleapis.com/auth/devstorage.read_only", + "https://www.googleapis.com/auth/logging.write", + "https://www.googleapis.com/auth/monitoring", + "https://www.googleapis.com/auth/service.management.readonly", + "https://www.googleapis.com/auth/servicecontrol", + "https://www.googleapis.com/auth/trace.append" + ], + "serviceAccount": "default", + "shieldedInstanceConfig": { + "enableIntegrityMonitoring": true + }, + "windowsNodeConfig": {} + }, + "initialNodeCount": 1, + "locations": [ + "us-west1-a" + ], + "management": { + "autoRepair": true, + "autoUpgrade": true + }, + "maxPodsConstraint": { + "maxPodsPerNode": "110" + }, + "name": "default-pool", + "networkConfig": { + "enablePrivateNodes": false, + "podIpv4CidrBlock": "10.92.0.0/14", + "podIpv4RangeUtilization": 0.001, + "podRange": "default-pool-pods-12345678" + }, + "podIpv4CidrSize": 24, + "status": "RUNNING", + "upgradeSettings": { + "maxSurge": 1, + "strategy": "SURGE" + }, + "version": "1.30.5-gke.1014001" + } + ], + "notificationConfig": { + "pubsub": {} + }, + "privateCluster": true, + "privateClusterConfig": { + "privateEndpoint": "10.128.0.2", + "publicEndpoint": "8.8.8.8" + }, + "protectConfig": { + "workloadConfig": { + "auditMode": "BASIC" + }, + "workloadVulnerabilityMode": "WORKLOAD_VULNERABILITY_MODE_UNSPECIFIED" + }, + "releaseChannel": { + "channel": "REGULAR" + }, + "resourceLabels": { + "cnrm-test": "true", + "managed-by-cnrm": "true" + }, + "securityPostureConfig": { + "mode": "BASIC", + "vulnerabilityMode": "VULNERABILITY_MODE_UNSPECIFIED" + }, + "selfLink": "https://container.googleapis.com/v1beta1/projects/example-project-01/zones/us-west1-a/clusters/gke-full-poco-${uniqueId}", + "servicesIpv4Cidr": "34.118.224.0/20", + "shieldedNodes": { + "enabled": true + }, + "status": "RUNNING", + "subnetwork": "default", + "workloadIdentityConfig": { + "workloadPool": "example-project-01.svc.id.goog" + }, + "zone": "us-west1-a" +} + +--- + +GET https://gkehub.googleapis.com/v1beta/projects/example-project-01/locations/global/features/policycontroller?alt=json +Content-Type: application/json +User-Agent: kcc/controller-manager DeclarativeClientLib/0.0.1 + +404 Not Found +Cache-Control: private +Content-Type: application/json; charset=UTF-8 +Server: ESF +Vary: Origin +Vary: X-Origin +Vary: Referer +X-Content-Type-Options: nosniff +X-Frame-Options: SAMEORIGIN +X-Xss-Protection: 0 + +{ + "error": { + "code": 404, + "message": "feature \"projects/example-project-01/locations/global/features/policycontroller\" not found", + "status": "NOT_FOUND" + } +} + +--- + +POST https://gkehub.googleapis.com/v1beta/projects/example-project-01/locations/global/features?alt=json&featureId=policycontroller +Content-Type: application/json +User-Agent: kcc/controller-manager DeclarativeClientLib/0.0.1 + +{ + "labels": { + "cnrm-test": "true", + "managed-by-cnrm": "true" + }, + "name": "projects/example-project-01/locations/global/features/policycontroller" +} + +200 OK +Cache-Control: private +Content-Type: application/json; charset=UTF-8 +Server: ESF +Vary: Origin +Vary: X-Origin +Vary: Referer +X-Content-Type-Options: nosniff +X-Frame-Options: SAMEORIGIN +X-Xss-Protection: 0 + +{ + "metadata": { + "@type": "type.googleapis.com/google.cloud.gkehub.v1beta.OperationMetadata", + "createTime": "2024-04-01T12:34:56.123456Z", + "endTime": "2024-04-01T12:34:56.123456Z", + "target": "projects/example-project-01/locations/global/features/policycontroller" + }, + "name": "projects/example-project-01/locations/global/features/policycontroller/operations/${operationID}" +} + +--- + +GET https://gkehub.googleapis.com/v1beta1/projects/example-project-01/locations/global/features/policycontroller/operations/${operationID}?alt=json +Content-Type: application/json +User-Agent: kcc/controller-manager DeclarativeClientLib/0.0.1 + +200 OK +Cache-Control: private +Content-Type: application/json; charset=UTF-8 +Server: ESF +Vary: Origin +Vary: X-Origin +Vary: Referer +X-Content-Type-Options: nosniff +X-Frame-Options: SAMEORIGIN +X-Xss-Protection: 0 + +{ + "done": true, + "metadata": { + "@type": "type.googleapis.com/google.cloud.gkehub.v1beta.OperationMetadata", + "createTime": "2024-04-01T12:34:56.123456Z", + "endTime": "2024-04-01T12:34:56.123456Z", + "target": "projects/example-project-01/locations/global/features/policycontroller" + }, + "name": "projects/example-project-01/locations/global/features/policycontroller/operations/${operationID}", + "response": { + "@type": "type.googleapis.com/google.cloud.gkehub.v1beta.Feature", + "createTime": "2024-04-01T12:34:56.123456Z", + "labels": { + "cnrm-test": "true", + "managed-by-cnrm": "true" + }, + "name": "projects/example-project-01/locations/global/features/policycontroller", + "resourceState": { + "state": "ACTIVE" + }, + "updateTime": "2024-04-01T12:34:56.123456Z" + } +} + +--- + +GET https://gkehub.googleapis.com/v1beta/projects/example-project-01/locations/global/features/policycontroller?alt=json +Content-Type: application/json +User-Agent: kcc/controller-manager DeclarativeClientLib/0.0.1 + +200 OK +Cache-Control: private +Content-Type: application/json; charset=UTF-8 +Server: ESF +Vary: Origin +Vary: X-Origin +Vary: Referer +X-Content-Type-Options: nosniff +X-Frame-Options: SAMEORIGIN +X-Xss-Protection: 0 + +{ + "labels": { + "cnrm-test": "true", + "managed-by-cnrm": "true" + }, + "name": "projects/example-project-01/locations/global/features/policycontroller" +} + +--- + +GET https://gkehub.googleapis.com/v1beta1/projects/example-project-01/locations/us-west1/memberships/gkehubmembership-full-poco-${uniqueId}?alt=json +Content-Type: application/json +User-Agent: kcc/controller-manager DeclarativeClientLib/0.0.1 + +404 Not Found +Cache-Control: private +Content-Type: application/json; charset=UTF-8 +Server: ESF +Vary: Origin +Vary: X-Origin +Vary: Referer +X-Content-Type-Options: nosniff +X-Frame-Options: SAMEORIGIN +X-Xss-Protection: 0 + +{ + "error": { + "code": 404, + "message": "membership \"projects/example-project-01/locations/us-west1/memberships/gkehubmembership-full-poco-${uniqueId}\" not found", + "status": "NOT_FOUND" + } +} + +--- + +POST https://gkehub.googleapis.com/v1beta1/projects/example-project-01/locations/us-west1/memberships?alt=json&membershipId=gkehubmembership-full-poco-${uniqueId} +Content-Type: application/json +User-Agent: kcc/controller-manager DeclarativeClientLib/0.0.1 + +{ + "authority": { + "issuer": "https://container.googleapis.com/v1/projects/example-project-01/locations/us-west1-a/clusters/gke-full-poco-${uniqueId}" + }, + "description": "A sample GKE Hub membership", + "endpoint": { + "gkeCluster": { + "resourceLink": "//container.googleapis.com/projects/example-project-01/zones/us-west1-a/clusters/gke-full-poco-${uniqueId}" + } + }, + "labels": { + "cnrm-test": "true", + "managed-by-cnrm": "true" + }, + "name": "projects/example-project-01/locations/us-west1/memberships/gkehubmembership-full-poco-${uniqueId}" +} + +200 OK +Cache-Control: private +Content-Type: application/json; charset=UTF-8 +Server: ESF +Vary: Origin +Vary: X-Origin +Vary: Referer +X-Content-Type-Options: nosniff +X-Frame-Options: SAMEORIGIN +X-Xss-Protection: 0 + +{ + "metadata": { + "@type": "type.googleapis.com/google.cloud.gkehub.v1beta1.OperationMetadata", + "createTime": "2024-04-01T12:34:56.123456Z", + "endTime": "2024-04-01T12:34:56.123456Z", + "target": "projects/example-project-01/locations/us-west1/memberships/gkehubmembership-full-poco-${uniqueId}" + }, + "name": "projects/example-project-01/locations/us-west1/memberships/gkehubmembership-full-poco-${uniqueId}/operations/${operationID}" +} + +--- + +GET https://gkehub.googleapis.com/v1beta1/projects/example-project-01/locations/us-west1/memberships/gkehubmembership-full-poco-${uniqueId}/operations/${operationID}?alt=json +Content-Type: application/json +User-Agent: kcc/controller-manager DeclarativeClientLib/0.0.1 + +200 OK +Cache-Control: private +Content-Type: application/json; charset=UTF-8 +Server: ESF +Vary: Origin +Vary: X-Origin +Vary: Referer +X-Content-Type-Options: nosniff +X-Frame-Options: SAMEORIGIN +X-Xss-Protection: 0 + +{ + "done": true, + "metadata": { + "@type": "type.googleapis.com/google.cloud.gkehub.v1beta1.OperationMetadata", + "createTime": "2024-04-01T12:34:56.123456Z", + "endTime": "2024-04-01T12:34:56.123456Z", + "target": "projects/example-project-01/locations/us-west1/memberships/gkehubmembership-full-poco-${uniqueId}" + }, + "name": "projects/example-project-01/locations/us-west1/memberships/gkehubmembership-full-poco-${uniqueId}/operations/${operationID}", + "response": { + "@type": "type.googleapis.com/google.cloud.gkehub.v1beta1.Membership", + "authority": { + "identityProvider": "https://container.googleapis.com/v1/projects/example-project-01/locations/us-west1-a/clusters/gke-full-poco-${uniqueId}", + "issuer": "https://container.googleapis.com/v1/projects/example-project-01/locations/us-west1-a/clusters/gke-full-poco-${uniqueId}", + "workloadIdentityPool": "${projectId}.svc.id.goog" + }, + "createTime": "2024-04-01T12:34:56.123456Z", + "description": "A sample GKE Hub membership", + "endpoint": { + "gkeCluster": { + "resourceLink": "//container.googleapis.com/projects/example-project-01/zones/us-west1-a/clusters/gke-full-poco-${uniqueId}" + } + }, + "externalId": "c772f869-1d6c-4d50-a92e-816c48322246", + "infrastructureType": "MULTI_CLOUD", + "labels": { + "cnrm-test": "true", + "managed-by-cnrm": "true" + }, + "name": "projects/example-project-01/locations/us-west1/memberships/gkehubmembership-full-poco-${uniqueId}", + "state": { + "code": "READY" + }, + "uniqueId": "12345678", + "updateTime": "2024-04-01T12:34:56.123456Z" + } +} + +--- + +GET https://gkehub.googleapis.com/v1beta1/projects/example-project-01/locations/us-west1/memberships/gkehubmembership-full-poco-${uniqueId}?alt=json +Content-Type: application/json +User-Agent: kcc/controller-manager DeclarativeClientLib/0.0.1 + +200 OK +Cache-Control: private +Content-Type: application/json; charset=UTF-8 +Server: ESF +Vary: Origin +Vary: X-Origin +Vary: Referer +X-Content-Type-Options: nosniff +X-Frame-Options: SAMEORIGIN +X-Xss-Protection: 0 + +{ + "authority": { + "identityProvider": "https://container.googleapis.com/v1/projects/example-project-01/locations/us-west1-a/clusters/gke-full-poco-${uniqueId}", + "issuer": "https://container.googleapis.com/v1/projects/example-project-01/locations/us-west1-a/clusters/gke-full-poco-${uniqueId}", + "workloadIdentityPool": "${projectId}.svc.id.goog" + }, + "createTime": "2024-04-01T12:34:56.123456Z", + "description": "A sample GKE Hub membership", + "endpoint": { + "gkeCluster": { + "resourceLink": "//container.googleapis.com/projects/example-project-01/zones/us-west1-a/clusters/gke-full-poco-${uniqueId}" + } + }, + "externalId": "c772f869-1d6c-4d50-a92e-816c48322246", + "infrastructureType": "MULTI_CLOUD", + "labels": { + "cnrm-test": "true", + "managed-by-cnrm": "true" + }, + "name": "projects/example-project-01/locations/us-west1/memberships/gkehubmembership-full-poco-${uniqueId}", + "state": { + "code": "READY" + }, + "uniqueId": "111111111111111111111", + "updateTime": "2024-04-01T12:34:56.123456Z" +} + +--- + +GET https://gkehub.googleapis.com/v1beta/projects/example-project-01/locations/global/features/policycontroller?alt=json&prettyPrint=false +User-Agent: kcc/controller-manager + +200 OK +Cache-Control: private +Content-Type: application/json; charset=UTF-8 +Server: ESF +Vary: Origin +Vary: X-Origin +Vary: Referer +X-Content-Type-Options: nosniff +X-Frame-Options: SAMEORIGIN +X-Xss-Protection: 0 + +{ + "labels": { + "cnrm-test": "true", + "managed-by-cnrm": "true" + }, + "name": "projects/example-project-01/locations/global/features/policycontroller" +} + +--- + +PATCH https://gkehub.googleapis.com/v1beta/projects/example-project-01/locations/global/features/policycontroller?alt=json&prettyPrint=false&updateMask=membershipSpecs +Content-Type: application/json +User-Agent: kcc/controller-manager + +{ + "labels": { + "cnrm-test": "true", + "managed-by-cnrm": "true" + }, + "membershipSpecs": { + "projects/example-project-01/locations/us-central1/memberships/gkehubmembership-full-poco-${uniqueId}": { + "policycontroller": { + "policyControllerHubConfig": { + "auditIntervalSeconds": "10", + "constraintViolationLimit": "20", + "exemptableNamespaces": [ + "test-namespace" + ], + "installSpec": "INSTALL_SPEC_ENABLED", + "monitoring": { + "backends": [ + "PROMETHEUS" + ] + }, + "policyContent": { + "templateLibrary": { + "installation": "NOT_INSTALLED" + } + } + }, + "version": "1.18.0" + } + } + }, + "name": "projects/example-project-01/locations/global/features/policycontroller" +} + +200 OK +Cache-Control: private +Content-Type: application/json; charset=UTF-8 +Server: ESF +Vary: Origin +Vary: X-Origin +Vary: Referer +X-Content-Type-Options: nosniff +X-Frame-Options: SAMEORIGIN +X-Xss-Protection: 0 + +{ + "metadata": { + "@type": "type.googleapis.com/google.cloud.gkehub.v1beta.OperationMetadata", + "createTime": "2024-04-01T12:34:56.123456Z", + "endTime": "2024-04-01T12:34:56.123456Z", + "target": "projects/example-project-01/locations/global/features/policycontroller" + }, + "name": "projects/example-project-01/locations/global/features/policycontroller/operations/${operationID}" +} + +--- + +GET https://gkehub.googleapis.com/v1beta/projects/example-project-01/locations/global/features/policycontroller/operations/${operationID}?alt=json&prettyPrint=false +User-Agent: kcc/controller-manager + +200 OK +Cache-Control: private +Content-Type: application/json; charset=UTF-8 +Server: ESF +Vary: Origin +Vary: X-Origin +Vary: Referer +X-Content-Type-Options: nosniff +X-Frame-Options: SAMEORIGIN +X-Xss-Protection: 0 + +{ + "done": true, + "metadata": { + "@type": "type.googleapis.com/google.cloud.gkehub.v1beta.OperationMetadata", + "createTime": "2024-04-01T12:34:56.123456Z", + "endTime": "2024-04-01T12:34:56.123456Z", + "target": "projects/example-project-01/locations/global/features/policycontroller" + }, + "name": "projects/example-project-01/locations/global/features/policycontroller/operations/${operationID}", + "response": { + "@type": "type.googleapis.com/google.cloud.gkehub.v1beta.Feature", + "labels": { + "cnrm-test": "true", + "managed-by-cnrm": "true" + }, + "membershipSpecs": { + "projects/example-project-01/locations/us-central1/memberships/gkehubmembership-full-poco-${uniqueId}": { + "policycontroller": { + "policyControllerHubConfig": { + "auditIntervalSeconds": "10", + "constraintViolationLimit": "20", + "exemptableNamespaces": [ + "test-namespace" + ], + "installSpec": "INSTALL_SPEC_ENABLED", + "monitoring": { + "backends": [ + "PROMETHEUS" + ] + }, + "policyContent": { + "templateLibrary": { + "installation": "NOT_INSTALLED" + } + } + }, + "version": "1.18.0" + } + } + }, + "name": "projects/example-project-01/locations/global/features/policycontroller", + "resourceState": { + "state": "ACTIVE" + }, + "updateTime": "2024-04-01T12:34:56.123456Z" + } +} + +--- + +GET https://gkehub.googleapis.com/v1beta/projects/example-project-01/locations/global/features/policycontroller?alt=json&prettyPrint=false +User-Agent: kcc/controller-manager + +200 OK +Cache-Control: private +Content-Type: application/json; charset=UTF-8 +Server: ESF +Vary: Origin +Vary: X-Origin +Vary: Referer +X-Content-Type-Options: nosniff +X-Frame-Options: SAMEORIGIN +X-Xss-Protection: 0 + +{ + "labels": { + "cnrm-test": "true", + "managed-by-cnrm": "true" + }, + "membershipSpecs": { + "projects/example-project-01/locations/us-central1/memberships/gkehubmembership-full-poco-${uniqueId}": { + "policycontroller": { + "policyControllerHubConfig": { + "auditIntervalSeconds": "10", + "constraintViolationLimit": "20", + "exemptableNamespaces": [ + "test-namespace" + ], + "installSpec": "INSTALL_SPEC_ENABLED", + "monitoring": { + "backends": [ + "PROMETHEUS" + ] + }, + "policyContent": { + "templateLibrary": { + "installation": "NOT_INSTALLED" + } + } + }, + "version": "1.18.0" + } + } + }, + "name": "projects/example-project-01/locations/global/features/policycontroller", + "updateTime": "2024-04-01T12:34:56.123456Z" +} + +--- + +PATCH https://gkehub.googleapis.com/v1beta/projects/example-project-01/locations/global/features/policycontroller?alt=json&prettyPrint=false&updateMask=membershipSpecs +Content-Type: application/json +User-Agent: kcc/controller-manager + +{ + "labels": { + "cnrm-test": "true", + "managed-by-cnrm": "true" + }, + "membershipSpecs": { + "projects/example-project-01/locations/us-central1/memberships/gkehubmembership-full-poco-${uniqueId}": { + "policycontroller": { + "policyControllerHubConfig": { + "auditIntervalSeconds": "15", + "constraintViolationLimit": "25", + "exemptableNamespaces": [ + "test-namespace-two" + ], + "installSpec": "INSTALL_SPEC_SUSPENDED", + "logDeniesEnabled": true, + "monitoring": { + "backends": [ + "CLOUD_MONITORING" + ] + }, + "mutationEnabled": true, + "policyContent": { + "templateLibrary": { + "installation": "ALL" + } + }, + "referentialRulesEnabled": true + }, + "version": "1.18.0" + } + } + }, + "name": "projects/example-project-01/locations/global/features/policycontroller", + "updateTime": "2024-04-01T12:34:56.123456Z" +} + +200 OK +Cache-Control: private +Content-Type: application/json; charset=UTF-8 +Server: ESF +Vary: Origin +Vary: X-Origin +Vary: Referer +X-Content-Type-Options: nosniff +X-Frame-Options: SAMEORIGIN +X-Xss-Protection: 0 + +{ + "metadata": { + "@type": "type.googleapis.com/google.cloud.gkehub.v1beta.OperationMetadata", + "createTime": "2024-04-01T12:34:56.123456Z", + "endTime": "2024-04-01T12:34:56.123456Z", + "target": "projects/example-project-01/locations/global/features/policycontroller" + }, + "name": "projects/example-project-01/locations/global/features/policycontroller/operations/${operationID}" +} + +--- + +GET https://gkehub.googleapis.com/v1beta/projects/example-project-01/locations/global/features/policycontroller/operations/${operationID}?alt=json&prettyPrint=false +User-Agent: kcc/controller-manager + +200 OK +Cache-Control: private +Content-Type: application/json; charset=UTF-8 +Server: ESF +Vary: Origin +Vary: X-Origin +Vary: Referer +X-Content-Type-Options: nosniff +X-Frame-Options: SAMEORIGIN +X-Xss-Protection: 0 + +{ + "done": true, + "metadata": { + "@type": "type.googleapis.com/google.cloud.gkehub.v1beta.OperationMetadata", + "createTime": "2024-04-01T12:34:56.123456Z", + "endTime": "2024-04-01T12:34:56.123456Z", + "target": "projects/example-project-01/locations/global/features/policycontroller" + }, + "name": "projects/example-project-01/locations/global/features/policycontroller/operations/${operationID}", + "response": { + "@type": "type.googleapis.com/google.cloud.gkehub.v1beta.Feature", + "labels": { + "cnrm-test": "true", + "managed-by-cnrm": "true" + }, + "membershipSpecs": { + "projects/example-project-01/locations/us-central1/memberships/gkehubmembership-full-poco-${uniqueId}": { + "policycontroller": { + "policyControllerHubConfig": { + "auditIntervalSeconds": "15", + "constraintViolationLimit": "25", + "exemptableNamespaces": [ + "test-namespace-two" + ], + "installSpec": "INSTALL_SPEC_SUSPENDED", + "logDeniesEnabled": true, + "monitoring": { + "backends": [ + "CLOUD_MONITORING" + ] + }, + "mutationEnabled": true, + "policyContent": { + "templateLibrary": { + "installation": "ALL" + } + }, + "referentialRulesEnabled": true + }, + "version": "1.18.0" + } + } + }, + "name": "projects/example-project-01/locations/global/features/policycontroller", + "resourceState": { + "state": "ACTIVE" + }, + "updateTime": "2024-04-01T12:34:56.123456Z" + } +} + +--- + +GET https://gkehub.googleapis.com/v1beta/projects/example-project-01/locations/global/features/policycontroller?alt=json&prettyPrint=false +User-Agent: kcc/controller-manager + +200 OK +Cache-Control: private +Content-Type: application/json; charset=UTF-8 +Server: ESF +Vary: Origin +Vary: X-Origin +Vary: Referer +X-Content-Type-Options: nosniff +X-Frame-Options: SAMEORIGIN +X-Xss-Protection: 0 + +{ + "labels": { + "cnrm-test": "true", + "managed-by-cnrm": "true" + }, + "membershipSpecs": { + "projects/example-project-01/locations/us-central1/memberships/gkehubmembership-full-poco-${uniqueId}": { + "policycontroller": { + "policyControllerHubConfig": { + "auditIntervalSeconds": "15", + "constraintViolationLimit": "25", + "exemptableNamespaces": [ + "test-namespace-two" + ], + "installSpec": "INSTALL_SPEC_SUSPENDED", + "logDeniesEnabled": true, + "monitoring": { + "backends": [ + "CLOUD_MONITORING" + ] + }, + "mutationEnabled": true, + "policyContent": { + "templateLibrary": { + "installation": "ALL" + } + }, + "referentialRulesEnabled": true + }, + "version": "1.18.0" + } + } + }, + "name": "projects/example-project-01/locations/global/features/policycontroller", + "updateTime": "2024-04-01T12:34:56.123456Z" +} + +--- + +PATCH https://gkehub.googleapis.com/v1beta/projects/example-project-01/locations/global/features/policycontroller?alt=json&prettyPrint=false&updateMask=membershipSpecs +Content-Type: application/json +User-Agent: kcc/controller-manager + +{ + "labels": { + "cnrm-test": "true", + "managed-by-cnrm": "true" + }, + "membershipSpecs": { + "projects/example-project-01/locations/us-central1/memberships/gkehubmembership-full-poco-${uniqueId}": {} + }, + "name": "projects/example-project-01/locations/global/features/policycontroller", + "updateTime": "2024-04-01T12:34:56.123456Z" +} + +200 OK +Cache-Control: private +Content-Type: application/json; charset=UTF-8 +Server: ESF +Vary: Origin +Vary: X-Origin +Vary: Referer +X-Content-Type-Options: nosniff +X-Frame-Options: SAMEORIGIN +X-Xss-Protection: 0 + +{ + "metadata": { + "@type": "type.googleapis.com/google.cloud.gkehub.v1beta.OperationMetadata", + "createTime": "2024-04-01T12:34:56.123456Z", + "endTime": "2024-04-01T12:34:56.123456Z", + "target": "projects/example-project-01/locations/global/features/policycontroller" + }, + "name": "projects/example-project-01/locations/global/features/policycontroller/operations/${operationID}" +} + +--- + +GET https://gkehub.googleapis.com/v1beta/projects/example-project-01/locations/global/features/policycontroller/operations/${operationID}?alt=json&prettyPrint=false +User-Agent: kcc/controller-manager + +200 OK +Cache-Control: private +Content-Type: application/json; charset=UTF-8 +Server: ESF +Vary: Origin +Vary: X-Origin +Vary: Referer +X-Content-Type-Options: nosniff +X-Frame-Options: SAMEORIGIN +X-Xss-Protection: 0 + +{ + "done": true, + "metadata": { + "@type": "type.googleapis.com/google.cloud.gkehub.v1beta.OperationMetadata", + "createTime": "2024-04-01T12:34:56.123456Z", + "endTime": "2024-04-01T12:34:56.123456Z", + "target": "projects/example-project-01/locations/global/features/policycontroller" + }, + "name": "projects/example-project-01/locations/global/features/policycontroller/operations/${operationID}", + "response": { + "@type": "type.googleapis.com/google.cloud.gkehub.v1beta.Feature", + "labels": { + "cnrm-test": "true", + "managed-by-cnrm": "true" + }, + "membershipSpecs": { + "projects/example-project-01/locations/us-central1/memberships/gkehubmembership-full-poco-${uniqueId}": {} + }, + "name": "projects/example-project-01/locations/global/features/policycontroller", + "resourceState": { + "state": "ACTIVE" + }, + "updateTime": "2024-04-01T12:34:56.123456Z" + } +} + +--- + +GET https://gkehub.googleapis.com/v1beta1/projects/example-project-01/locations/us-west1/memberships/gkehubmembership-full-poco-${uniqueId}?alt=json +Content-Type: application/json +User-Agent: kcc/controller-manager DeclarativeClientLib/0.0.1 + +200 OK +Cache-Control: private +Content-Type: application/json; charset=UTF-8 +Server: ESF +Vary: Origin +Vary: X-Origin +Vary: Referer +X-Content-Type-Options: nosniff +X-Frame-Options: SAMEORIGIN +X-Xss-Protection: 0 + +{ + "authority": { + "identityProvider": "https://container.googleapis.com/v1/projects/example-project-01/locations/us-west1-a/clusters/gke-full-poco-${uniqueId}", + "issuer": "https://container.googleapis.com/v1/projects/example-project-01/locations/us-west1-a/clusters/gke-full-poco-${uniqueId}", + "workloadIdentityPool": "${projectId}.svc.id.goog" + }, + "createTime": "2024-04-01T12:34:56.123456Z", + "description": "A sample GKE Hub membership", + "endpoint": { + "gkeCluster": { + "resourceLink": "//container.googleapis.com/projects/example-project-01/zones/us-west1-a/clusters/gke-full-poco-${uniqueId}" + } + }, + "externalId": "c772f869-1d6c-4d50-a92e-816c48322246", + "infrastructureType": "MULTI_CLOUD", + "labels": { + "cnrm-test": "true", + "managed-by-cnrm": "true" + }, + "name": "projects/example-project-01/locations/us-west1/memberships/gkehubmembership-full-poco-${uniqueId}", + "state": { + "code": "READY" + }, + "uniqueId": "111111111111111111111", + "updateTime": "2024-04-01T12:34:56.123456Z" +} + +--- + +DELETE https://gkehub.googleapis.com/v1beta1/projects/example-project-01/locations/us-west1/memberships/gkehubmembership-full-poco-${uniqueId}?alt=json +Content-Type: application/json +User-Agent: kcc/controller-manager DeclarativeClientLib/0.0.1 + +200 OK +Cache-Control: private +Content-Type: application/json; charset=UTF-8 +Server: ESF +Vary: Origin +Vary: X-Origin +Vary: Referer +X-Content-Type-Options: nosniff +X-Frame-Options: SAMEORIGIN +X-Xss-Protection: 0 + +{ + "done": true, + "metadata": { + "@type": "type.googleapis.com/google.cloud.gkehub.v1beta1.OperationMetadata", + "createTime": "2024-04-01T12:34:56.123456Z", + "endTime": "2024-04-01T12:34:56.123456Z", + "target": "projects/example-project-01/locations/us-west1/memberships/gkehubmembership-full-poco-${uniqueId}" + }, + "name": "projects/example-project-01/locations/us-west1/memberships/gkehubmembership-full-poco-${uniqueId}/operations/${operationID}", + "response": { + "@type": "type.googleapis.com/google.cloud.gkehub.v1beta1.Membership" + } +} + +--- + +GET https://gkehub.googleapis.com/v1beta1/projects/example-project-01/locations/us-west1/memberships/gkehubmembership-full-poco-${uniqueId}?alt=json +Content-Type: application/json +User-Agent: kcc/controller-manager DeclarativeClientLib/0.0.1 + +404 Not Found +Cache-Control: private +Content-Type: application/json; charset=UTF-8 +Server: ESF +Vary: Origin +Vary: X-Origin +Vary: Referer +X-Content-Type-Options: nosniff +X-Frame-Options: SAMEORIGIN +X-Xss-Protection: 0 + +{ + "error": { + "code": 404, + "message": "membership \"projects/example-project-01/locations/us-west1/memberships/gkehubmembership-full-poco-${uniqueId}\" not found", + "status": "NOT_FOUND" + } +} + +--- + +GET https://container.googleapis.com/v1beta1/projects/example-project-01/locations/us-west1-a/clusters/gke-full-poco-${uniqueId}?alt=json&prettyPrint=false +User-Agent: google-api-go-client/0.5 Terraform/ (+https://www.terraform.io) Terraform-Plugin-SDK/2.10.1 terraform-provider-google-beta/kcc/controller-manager + +200 OK +Cache-Control: private +Content-Type: application/json; charset=UTF-8 +Server: ESF +Vary: Origin +Vary: X-Origin +Vary: Referer +X-Content-Type-Options: nosniff +X-Frame-Options: SAMEORIGIN +X-Xss-Protection: 0 + +{ + "addonsConfig": { + "gcePersistentDiskCsiDriverConfig": { + "enabled": true + }, + "kubernetesDashboard": { + "disabled": true + }, + "networkPolicyConfig": { + "disabled": true + } + }, + "autopilot": {}, + "autoscaling": { + "autoprovisioningNodePoolDefaults": { + "management": { + "autoRepair": true, + "autoUpgrade": true + }, + "oauthScopes": [ + "https://www.googleapis.com/auth/userinfo.email", + "https://www.googleapis.com/auth/cloud-platform" + ], + "upgradeSettings": { + "strategy": "SURGE" + } + }, + "autoscalingProfile": "BALANCED" + }, + "binaryAuthorization": {}, + "clusterIpv4Cidr": "10.92.0.0/14", + "clusterTelemetry": { + "type": "ENABLED" + }, + "createTime": "2024-04-01T12:34:56.123456Z", + "currentMasterVersion": "1.30.5-gke.1014001", + "currentNodeCount": 1, + "currentNodeVersion": "1.30.5-gke.1014001", + "databaseEncryption": { + "currentState": "CURRENT_STATE_DECRYPTED", + "state": "DECRYPTED" + }, + "defaultMaxPodsConstraint": { + "maxPodsPerNode": "110" + }, + "enterpriseConfig": { + "clusterTier": "STANDARD" + }, + "initialClusterVersion": "1.30.5-gke.1014001", + "initialNodeCount": 1, + "ipAllocationPolicy": { + "stackType": "IPV4" + }, + "legacyAbac": {}, + "location": "us-west1-a", + "locations": [ + "us-west1-a" + ], + "loggingConfig": { + "componentConfig": { + "enableComponents": [ + "SYSTEM_COMPONENTS", + "WORKLOADS" + ] + } + }, + "loggingService": "logging.googleapis.com/kubernetes", + "maintenancePolicy": { + "window": {} + }, + "masterAuthorizedNetworksConfig": { + "gcpPublicCidrsAccessEnabled": true + }, + "monitoringConfig": { + "advancedDatapathObservabilityConfig": {}, + "componentConfig": { + "enableComponents": [ + "SYSTEM_COMPONENTS" + ] + }, + "managedPrometheusConfig": { + "enabled": true + } + }, + "monitoringService": "monitoring.googleapis.com/kubernetes", + "name": "gke-full-poco-${uniqueId}", + "network": "default", + "networkConfig": { + "network": "projects/example-project-01/global/networks/default", + "subnetwork": "default" + }, + "networkPolicy": {}, + "nodeConfig": { + "diskSizeGb": 100, + "diskType": "pd-balanced", + "imageType": "COS_CONTAINERD", + "machineType": "e2-medium", + "metadata": { + "disable-legacy-endpoints": "true" + }, + "oauthScopes": [ + "https://www.googleapis.com/auth/devstorage.read_only", + "https://www.googleapis.com/auth/logging.write", + "https://www.googleapis.com/auth/monitoring", + "https://www.googleapis.com/auth/service.management.readonly", + "https://www.googleapis.com/auth/servicecontrol", + "https://www.googleapis.com/auth/trace.append" + ], + "serviceAccount": "default", + "shieldedInstanceConfig": { + "enableIntegrityMonitoring": true + }, + "windowsNodeConfig": {} + }, + "nodePools": [ + { + "config": { + "diskSizeGb": 100, + "diskType": "pd-balanced", + "imageType": "COS_CONTAINERD", + "machineType": "e2-medium", + "metadata": { + "disable-legacy-endpoints": "true" + }, + "oauthScopes": [ + "https://www.googleapis.com/auth/devstorage.read_only", + "https://www.googleapis.com/auth/logging.write", + "https://www.googleapis.com/auth/monitoring", + "https://www.googleapis.com/auth/service.management.readonly", + "https://www.googleapis.com/auth/servicecontrol", + "https://www.googleapis.com/auth/trace.append" + ], + "serviceAccount": "default", + "shieldedInstanceConfig": { + "enableIntegrityMonitoring": true + }, + "windowsNodeConfig": {} + }, + "initialNodeCount": 1, + "locations": [ + "us-west1-a" + ], + "management": { + "autoRepair": true, + "autoUpgrade": true + }, + "maxPodsConstraint": { + "maxPodsPerNode": "110" + }, + "name": "default-pool", + "networkConfig": { + "enablePrivateNodes": false, + "podIpv4CidrBlock": "10.92.0.0/14", + "podIpv4RangeUtilization": 0.001, + "podRange": "default-pool-pods-12345678" + }, + "podIpv4CidrSize": 24, + "status": "RUNNING", + "upgradeSettings": { + "maxSurge": 1, + "strategy": "SURGE" + }, + "version": "1.30.5-gke.1014001" + } + ], + "notificationConfig": { + "pubsub": {} + }, + "privateCluster": true, + "privateClusterConfig": { + "privateEndpoint": "10.128.0.2", + "publicEndpoint": "8.8.8.8" + }, + "protectConfig": { + "workloadConfig": { + "auditMode": "BASIC" + }, + "workloadVulnerabilityMode": "WORKLOAD_VULNERABILITY_MODE_UNSPECIFIED" + }, + "releaseChannel": { + "channel": "REGULAR" + }, + "resourceLabels": { + "cnrm-test": "true", + "managed-by-cnrm": "true" + }, + "securityPostureConfig": { + "mode": "BASIC", + "vulnerabilityMode": "VULNERABILITY_MODE_UNSPECIFIED" + }, + "selfLink": "https://container.googleapis.com/v1beta1/projects/example-project-01/zones/us-west1-a/clusters/gke-full-poco-${uniqueId}", + "servicesIpv4Cidr": "34.118.224.0/20", + "shieldedNodes": { + "enabled": true + }, + "status": "RUNNING", + "subnetwork": "default", + "workloadIdentityConfig": { + "workloadPool": "example-project-01.svc.id.goog" + }, + "zone": "us-west1-a" +} + +--- + +DELETE https://container.googleapis.com/v1beta1/projects/example-project-01/locations/us-west1-a/clusters/gke-full-poco-${uniqueId}?alt=json&prettyPrint=false +User-Agent: google-api-go-client/0.5 Terraform/ (+https://www.terraform.io) Terraform-Plugin-SDK/2.10.1 terraform-provider-google-beta/kcc/controller-manager + +200 OK +Cache-Control: private +Content-Type: application/json; charset=UTF-8 +Server: ESF +Vary: Origin +Vary: X-Origin +Vary: Referer +X-Content-Type-Options: nosniff +X-Frame-Options: SAMEORIGIN +X-Xss-Protection: 0 + +{ + "name": "${operationID}", + "operationType": "DELETE_CLUSTER", + "selfLink": "https://container.googleapis.com/v1beta1/projects/${projectNumber}/zones/us-west1-a/operations/${operationID}", + "startTime": "2024-04-01T12:34:56.123456Z", + "status": "RUNNING", + "targetLink": "https://container.googleapis.com/v1beta1/projects/${projectNumber}/zones/us-west1-a/clusters/gke-full-poco-${uniqueId}", + "zone": "us-west1-a" +} + +--- + +GET https://container.googleapis.com/v1beta1/projects/example-project-01/locations/us-west1-a/operations/${operationID}?alt=json&prettyPrint=false +User-Agent: google-api-go-client/0.5 Terraform/ (+https://www.terraform.io) Terraform-Plugin-SDK/2.10.1 terraform-provider-google-beta/kcc/controller-manager + +200 OK +Cache-Control: private +Content-Type: application/json; charset=UTF-8 +Server: ESF +Vary: Origin +Vary: X-Origin +Vary: Referer +X-Content-Type-Options: nosniff +X-Frame-Options: SAMEORIGIN +X-Xss-Protection: 0 + +{ + "endTime": "2024-04-01T12:34:56.123456Z", + "name": "${operationID}", + "operationType": "DELETE_CLUSTER", + "selfLink": "https://container.googleapis.com/v1beta1/projects/${projectNumber}/zones/us-west1-a/operations/${operationID}", + "startTime": "2024-04-01T12:34:56.123456Z", + "status": "DONE", + "targetLink": "https://container.googleapis.com/v1beta1/projects/${projectNumber}/zones/us-west1-a/clusters/gke-full-poco-${uniqueId}", + "zone": "us-west1-a" +} \ No newline at end of file diff --git a/pkg/test/resourcefixture/testdata/basic/gkehub/v1beta1/gkehubfeaturemembership/fullpocogkehubfeaturemembership/create.yaml b/pkg/test/resourcefixture/testdata/basic/gkehub/v1beta1/gkehubfeaturemembership/fullpocogkehubfeaturemembership/create.yaml new file mode 100644 index 0000000000..92224951d7 --- /dev/null +++ b/pkg/test/resourcefixture/testdata/basic/gkehub/v1beta1/gkehubfeaturemembership/fullpocogkehubfeaturemembership/create.yaml @@ -0,0 +1,45 @@ +# Copyright 2024 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +apiVersion: gkehub.cnrm.cloud.google.com/v1beta1 +kind: GKEHubFeatureMembership +metadata: + name: gkehubfeaturemembership-full-poco-${uniqueId} +spec: + projectRef: + name: gkehubfm-${uniqueId} + location: global + membershipLocation: us-central1 + membershipRef: + name: gkehubmembership-full-poco-${uniqueId} + featureRef: + name: gkehubfeature-full-poco-${uniqueId} + policycontroller: + policyControllerHubConfig: + auditIntervalSeconds: 10 + constraintViolationLimit: 20 + exemptableNamespaces: + - test-namespace + installSpec: "INSTALL_SPEC_ENABLED" + logDeniesEnabled: false + monitoring: + backends: + - "PROMETHEUS" + mutationEnabled: false + policyContent: + templateLibrary: + installation: "NOT_INSTALLED" + referentialRulesEnabled: false + version: "1.18.0" + diff --git a/pkg/test/resourcefixture/testdata/basic/gkehub/v1beta1/gkehubfeaturemembership/fullpocogkehubfeaturemembership/dependencies.yaml b/pkg/test/resourcefixture/testdata/basic/gkehub/v1beta1/gkehubfeaturemembership/fullpocogkehubfeaturemembership/dependencies.yaml new file mode 100644 index 0000000000..90f3db8a98 --- /dev/null +++ b/pkg/test/resourcefixture/testdata/basic/gkehub/v1beta1/gkehubfeaturemembership/fullpocogkehubfeaturemembership/dependencies.yaml @@ -0,0 +1,105 @@ +# Copyright 2024 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +apiVersion: resourcemanager.cnrm.cloud.google.com/v1beta1 +kind: Project +metadata: + annotations: + cnrm.cloud.google.com/deletion-policy: "abandon" + name: gkehubfm-${uniqueId} +spec: + resourceID: ${TEST_DEPENDENT_ORG_PROJECT_ID} + name: "Dependent Project" + organizationRef: + external: ${TEST_ORG_ID} + billingAccountRef: + external: ${TEST_BILLING_ACCOUNT_ID} +--- +apiVersion: serviceusage.cnrm.cloud.google.com/v1beta1 +kind: Service +metadata: + annotations: + cnrm.cloud.google.com/project-id: ${TEST_DEPENDENT_ORG_PROJECT_ID} + cnrm.cloud.google.com/deletion-policy: "abandon" + name: container.googleapis.com +--- +apiVersion: serviceusage.cnrm.cloud.google.com/v1beta1 +kind: Service +metadata: + annotations: + cnrm.cloud.google.com/project-id: ${TEST_DEPENDENT_ORG_PROJECT_ID} + # Abandon the resource to unblock cleanup; Otherwise it fails with error message + # "Error waiting for api to disable ... ensure there are no more resources managed + # by this service." Likely there is some delay in GKEHub resources clean up. + cnrm.cloud.google.com/deletion-policy: "abandon" + name: gkehub.googleapis.com +--- +apiVersion: serviceusage.cnrm.cloud.google.com/v1beta1 +kind: Service +metadata: + annotations: + cnrm.cloud.google.com/project-id: ${TEST_DEPENDENT_ORG_PROJECT_ID} + cnrm.cloud.google.com/deletion-policy: "abandon" + name: anthospolicycontroller.googleapis.com +--- +apiVersion: serviceusage.cnrm.cloud.google.com/v1beta1 +kind: Service +metadata: + annotations: + cnrm.cloud.google.com/project-id: ${TEST_DEPENDENT_ORG_PROJECT_ID} + cnrm.cloud.google.com/deletion-policy: "abandon" + name: anthos.googleapis.com +--- +apiVersion: container.cnrm.cloud.google.com/v1beta1 +kind: ContainerCluster +metadata: + annotations: + cnrm.cloud.google.com/project-id: ${TEST_DEPENDENT_ORG_PROJECT_ID} + name: gke-full-poco-${uniqueId} +spec: + location: us-west1-a + initialNodeCount: 1 + workloadIdentityConfig: + workloadPool: ${TEST_DEPENDENT_ORG_PROJECT_ID_WITHOUT_QUOTATION}.svc.id.goog +--- +# The GKEHubFeature below is used to create/acquire the shared test dependent across mutiple gke hub policycontroller feature test cases. +# The manifest should be the same across test cases to avoid racing conditions. +apiVersion: gkehub.cnrm.cloud.google.com/v1beta1 +kind: GKEHubFeature +metadata: + name: gkehubfeature-full-poco-${uniqueId} + annotations: + # Abondon the feature resource as it is global within a project and we would hit issues when running two tests in parallel. + cnrm.cloud.google.com/deletion-policy: "abandon" +spec: + projectRef: + name: gkehubfm-${uniqueId} + location: global + resourceID: policycontroller +--- +apiVersion: gkehub.cnrm.cloud.google.com/v1beta1 +kind: GKEHubMembership +metadata: + annotations: + cnrm.cloud.google.com/project-id: ${TEST_DEPENDENT_ORG_PROJECT_ID} + name: gkehubmembership-full-poco-${uniqueId} +spec: + location: us-west1 + authority: + issuer: https://container.googleapis.com/v1/projects/${TEST_DEPENDENT_ORG_PROJECT_ID_WITHOUT_QUOTATION}/locations/us-west1-a/clusters/gke-full-poco-${uniqueId} + description: A sample GKE Hub membership + endpoint: + gkeCluster: + resourceRef: + name: gke-full-poco-${uniqueId} diff --git a/pkg/test/resourcefixture/testdata/basic/gkehub/v1beta1/gkehubfeaturemembership/fullpocogkehubfeaturemembership/update.yaml b/pkg/test/resourcefixture/testdata/basic/gkehub/v1beta1/gkehubfeaturemembership/fullpocogkehubfeaturemembership/update.yaml new file mode 100644 index 0000000000..e2c26d8281 --- /dev/null +++ b/pkg/test/resourcefixture/testdata/basic/gkehub/v1beta1/gkehubfeaturemembership/fullpocogkehubfeaturemembership/update.yaml @@ -0,0 +1,44 @@ +# Copyright 2024 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +apiVersion: gkehub.cnrm.cloud.google.com/v1beta1 +kind: GKEHubFeatureMembership +metadata: + name: gkehubfeaturemembership-full-poco-${uniqueId} +spec: + projectRef: + name: gkehubfm-${uniqueId} + location: global + membershipLocation: us-central1 + membershipRef: + name: gkehubmembership-full-poco-${uniqueId} + featureRef: + name: gkehubfeature-full-poco-${uniqueId} + policycontroller: + policyControllerHubConfig: + auditIntervalSeconds: 15 + constraintViolationLimit: 25 + exemptableNamespaces: + - test-namespace-two + installSpec: "INSTALL_SPEC_SUSPENDED" + logDeniesEnabled: true + monitoring: + backends: + - "CLOUD_MONITORING" + mutationEnabled: true + policyContent: + templateLibrary: + installation: "ALL" + referentialRulesEnabled: true + version: "1.18.0"