Field('StateValueValuesEnum', 3)


class ServiceMeshControlPlaneRevision(_messages.Message):
  r"""Status of a control plane revision that is intended to be available for
  use in the cluster.

  Enums:
    ChannelValueValuesEnum: Release Channel the managed control plane revision
      is subscribed to.
    StateValueValuesEnum: State of the control plane revision.
      LIFECYCLE_STATE_UNSPECIFIED, FAILED_PRECONDITION, PROVISIONING, ACTIVE,
      and STALLED are applicable here.
    TypeValueValuesEnum: Type of the control plane revision.

  Fields:
    channel: Release Channel the managed control plane revision is subscribed
      to.
    details: Explanation of the state.
    owner: Owner of the control plane revision.
    revision: Unique name of the control plane revision.
    state: State of the control plane revision. LIFECYCLE_STATE_UNSPECIFIED,
      FAILED_PRECONDITION, PROVISIONING, ACTIVE, and STALLED are applicable
      here.
    type: Type of the control plane revision.
    version: Static version of the control plane revision.
  """

  class ChannelValueValuesEnum(_messages.Enum):
    r"""Release Channel the managed control plane revision is subscribed to.

    Values:
      CHANNEL_UNSPECIFIED: Unspecified
      RAPID: RAPID channel is offered on an early access basis for customers
        who want to test new releases.
      REGULAR: REGULAR channel is intended for production users who want to
        take advantage of new features.
      STABLE: STABLE channel includes versions that are known to be stable and
        reliable in production.
    """
    CHANNEL_UNSPECIFIED = 0
    RAPID = 1
    REGULAR = 2
    STABLE = 3

  class StateValueValuesEnum(_messages.Enum):
    r"""State of the control plane revision. LIFECYCLE_STATE_UNSPECIFIED,
    FAILED_PRECONDITION, PROVISIONING, ACTIVE, and STALLED are applicable
    here.

    Values:
      LIFECYCLE_STATE_UNSPECIFIED: Unspecified
      DISABLED: DISABLED means that the component is not enabled.
      FAILED_PRECONDITION: FAILED_PRECONDITION means that provisioning cannot
        proceed because of some characteristic of the member cluster.
      PROVISIONING: PROVISIONING means that provisioning is in progress.
      ACTIVE: ACTIVE means that the component is ready for use.
      STALLED: STALLED means that provisioning could not be done.
      NEEDS_ATTENTION: NEEDS_ATTENTION means that the component is ready, but
        some user intervention is required. (For example that the user should
        migrate workloads to a new control plane revision.)
      DEGRADED: DEGRADED means that the component is ready, but operating in a
        degraded state.
      DEPROVISIONING: DEPROVISIONING means that deprovisioning is in progress.
    """
    LIFECYCLE_STATE_UNSPECIFIED = 0
    DISABLED = 1
    FAILED_PRECONDITION = 2
    PROVISIONING = 3
    ACTIVE = 4
    STALLED = 5
    NEEDS_ATTENTION = 6
    DEGRADED = 7
    DEPROVISIONING = 8

  class TypeValueValuesEnum(_messages.Enum):
    r"""Type of the control plane revision.

    Values:
      CONTROL_PLANE_REVISION_TYPE_UNSPECIFIED: Unspecified.
      UNMANAGED: User-installed in-cluster control plane revision.
      MANAGED_SERVICE: Google-managed service running outside the cluster.
        Note: Google-managed control planes are independent per-cluster,
        regardless of whether the revision name is the same or not.
      MANAGED_LOCAL: Google-managed local control plane revision.
    """
    CONTROL_PLANE_REVISION_TYPE_UNSPECIFIED = 0
    UNMANAGED = 1
    MANAGED_SERVICE = 2
    MANAGED_LOCAL = 3

  channel = _messages.EnumField('ChannelValueValuesEnum', 1)
  details = _messages.MessageField('ServiceMeshStatusDetails', 2, repeated=True)
  owner = _messages.StringField(3)
  revision = _messages.StringField(4)
  state = _messages.EnumField('StateValueValuesEnum', 5)
  type = _messages.EnumField('TypeValueValuesEnum', 6)
  version = _messages.StringField(7)


class ServiceMeshDataPlaneManagement(_messages.Message):
  r"""Status of data plane management. Only reported per-member.

  Enums:
    StateValueValuesEnum: Lifecycle status of data plane management.

  Fields:
    details: Explanation of the status.
    state: Lifecycle status of data plane management.
  """

  class StateValueValuesEnum(_messages.Enum):
    r"""Lifecycle status of data plane management.

    Values:
      LIFECYCLE_STATE_UNSPECIFIED: Unspecified
      DISABLED: DISABLED means that the component is not enabled.
      FAILED_PRECONDITION: FAILED_PRECONDITION means that provisioning cannot
        proceed because of some characteristic of the member cluster.
      PROVISIONING: PROVISIONING means that provisioning is in progress.
      ACTIVE: ACTIVE means that the component is ready for use.
      STALLED: STALLED means that provisioning could not be done.
      NEEDS_ATTENTION: NEEDS_ATTENTION means that the component is ready, but
        some user intervention is required. (For example that the user should
        migrate workloads to a new control plane revision.)
      DEGRADED: DEGRADED means that the component is ready, but operating in a
        degraded state.
      DEPROVISIONING: DEPROVISIONING means that deprovisioning is in progress.
    """
    LIFECYCLE_STATE_UNSPECIFIED = 0
    DISABLED = 1
    FAILED_PRECONDITION = 2
    PROVISIONING = 3
    ACTIVE = 4
    STALLED = 5
    NEEDS_ATTENTION = 6
    DEGRADED = 7
    DEPROVISIONING = 8

  details = _messages.MessageField('ServiceMeshStatusDetails', 1, repeated=True)
  state = _messages.EnumField('StateValueValuesEnum', 2)


class ServiceMeshFeatureCondition(_messages.Message):
  r"""Condition being reported.

  Enums:
    CodeValueValuesEnum: Unique identifier of the condition which describes
      the condition recognizable to the user.
    SeverityValueValuesEnum: Severity level of the condition.

  Fields:
    code: Unique identifier of the condition which describes the condition
      recognizable to the user.
    details: A short summary about the issue.
    documentationLink: Links contains actionable information.
    severity: Severity level of the condition.
  """

  class CodeValueValuesEnum(_messages.Enum):
    r"""Unique identifier of the condition which describes the condition
    recognizable to the user.

    Values:
      CODE_UNSPECIFIED: Default Unspecified code
      MESH_IAM_PERMISSION_DENIED: Mesh IAM permission denied error code
      MESH_IAM_CROSS_PROJECT_PERMISSION_DENIED: Permission denied error code
        for cross-project
      CNI_CONFIG_UNSUPPORTED: CNI config unsupported error code
      GKE_SANDBOX_UNSUPPORTED: GKE sandbox unsupported error code
      NODEPOOL_WORKLOAD_IDENTITY_FEDERATION_REQUIRED: Nodepool workload
        identity federation required error code
      CNI_INSTALLATION_FAILED: CNI installation failed error code
      CNI_POD_UNSCHEDULABLE: CNI pod unschedulable error code
      CLUSTER_HAS_ZERO_NODES: Cluster has zero node code
      CANONICAL_SERVICE_ERROR: Failure to reconcile CanonicalServices
      UNSUPPORTED_MULTIPLE_CONTROL_PLANES: Multiple control planes unsupported
        error code
      VPCSC_GA_SUPPORTED: VPC-SC GA is supported for this control plane.
      DEPRECATED_SPEC_CONTROL_PLANE_MANAGEMENT: User is using deprecated
        ControlPlaneManagement and they have not yet set Management.
      DEPRECATED_SPEC_CONTROL_PLANE_MANAGEMENT_SAFE: User is using deprecated
        ControlPlaneManagement and they have already set Management.
      CONFIG_APPLY_INTERNAL_ERROR: Configuration (Istio/k8s resources) failed
        to apply due to internal error.
      CONFIG_VALIDATION_ERROR: Configuration failed to be applied due to being
        invalid.
      CONFIG_VALIDATION_WARNING: Encountered configuration(s) with possible
        unintended behavior or invalid configuration. These configs may not
        have been applied.
      QUOTA_EXCEEDED_BACKEND_SERVICES: BackendService quota exceeded error
        code.
      QUOTA_EXCEEDED_HEALTH_CHECKS: HealthCheck quota exceeded error code.
      QUOTA_EXCEEDED_HTTP_ROUTES: HTTPRoute quota exceeded error code.
      QUOTA_EXCEEDED_TCP_ROUTES: TCPRoute quota exceeded error code.
      QUOTA_EXCEEDED_TLS_ROUTES: TLS routes quota exceeded error code.
      QUOTA_EXCEEDED_TRAFFIC_POLICIES: TrafficPolicy quota exceeded error
        code.
      QUOTA_EXCEEDED_ENDPOINT_POLICIES: EndpointPolicy quota exceeded error
        code.
      QUOTA_EXCEEDED_GATEWAYS: Gateway quota exceeded error code.
      QUOTA_EXCEEDED_MESHES: Mesh quota exceeded error code.
      QUOTA_EXCEEDED_SERVER_TLS_POLICIES: ServerTLSPolicy quota exceeded error
        code.
      QUOTA_EXCEEDED_CLIENT_TLS_POLICIES: ClientTLSPolicy quota exceeded error
        code.
      QUOTA_EXCEEDED_SERVICE_LB_POLICIES: ServiceLBPolicy quota exceeded error
        code.
      QUOTA_EXCEEDED_HTTP_FILTERS: HTTPFilter quota exceeded error code.
      QUOTA_EXCEEDED_TCP_FILTERS: TCPFilter quota exceeded error code.
      QUOTA_EXCEEDED_NETWORK_ENDPOINT_GROUPS: NetworkEndpointGroup quota
        exceeded error code.
      LEGACY_MC_SECRETS: Legacy istio secrets found for multicluster error
        code.
      WORKLOAD_IDENTITY_REQUIRED: Workload identity required error code.
      NON_STANDARD_BINARY_USAGE: Non-standard binary usage error code.
      UNSUPPORTED_GATEWAY_CLASS: Unsupported gateway class error code.
      MANAGED_CNI_NOT_ENABLED: Managed CNI not enabled error code.
      MODERNIZATION_SCHEDULED: Modernization is scheduled for a cluster.
      MODERNIZATION_IN_PROGRESS: Modernization is in progress for a cluster.
      MODERNIZATION_COMPLETED: Modernization is completed for a cluster.
      MODERNIZATION_ABORTED: Modernization is aborted for a cluster.
      MODERNIZATION_PREPARING: Preparing cluster so that its workloads can be
        migrated.
      MODERNIZATION_STALLED: Modernization is stalled for a cluster.
      MODERNIZATION_PREPARED: Cluster has been prepared for its workloads to
        be migrated.
      MODERNIZATION_MIGRATING_WORKLOADS: Migrating the cluster's workloads to
        the new implementation.
      MODERNIZATION_ROLLING_BACK_CLUSTER: Rollback is in progress for
        modernization of a cluster.
      MODERNIZATION_WILL_BE_SCHEDULED: Modernization will be scheduled for a
        fleet.
      MODERNIZATION_MANUAL: Fleet is opted out from automated modernization.
      MODERNIZATION_ELIGIBLE: Fleet is eligible for modernization.
      MODERNIZATION_MODERNIZING: Modernization of one or more clusters in a
        fleet is in progress.
      MODERNIZATION_MODERNIZED_SOAKING: Modernization of all the fleet's
        clusters is complete. Soaking before finalizing the modernization.
      MODERNIZATION_FINALIZED: Modernization is finalized for all clusters in
        a fleet. Rollback is no longer allowed.
      MODERNIZATION_ROLLING_BACK_FLEET: Rollback is in progress for
        modernization of all clusters in a fleet.
    """
    CODE_UNSPECIFIED = 0
    MESH_IAM_PERMISSION_DENIED = 1
    MESH_IAM_CROSS_PROJECT_PERMISSION_DENIED = 2
    CNI_CONFIG_UNSUPPORTED = 3
    GKE_SANDBOX_UNSUPPORTED = 4
    NODEPOOL_WORKLOAD_IDENTITY_FEDERATION_REQUIRED = 5
    CNI_INSTALLATION_FAILED = 6
    CNI_POD_UNSCHEDULABLE = 7
    CLUSTER_HAS_ZERO_NODES = 8
    CANONICAL_SERVICE_ERROR = 9
    UNSUPPORTED_MULTIPLE_CONTROL_PLANES = 10
    VPCSC_GA_SUPPORTED = 11
    DEPRECATED_SPEC_CONTROL_PLANE_MANAGEMENT = 12
    DEPRECATED_SPEC_CONTROL_PLANE_MANAGEMENT_SAFE = 13
    CONFIG_APPLY_INTERNAL_ERROR = 14
    CONFIG_VALIDATION_ERROR = 15
    CONFIG_VALIDATION_WARNING = 16
    QUOTA_EXCEEDED_BACKEND_SERVICES = 17
    QUOTA_EXCEEDED_HEALTH_CHECKS = 18
    QUOTA_EXCEEDED_HTTP_ROUTES = 19
    QUOTA_EXCEEDED_TCP_ROUTES = 20
    QUOTA_EXCEEDED_TLS_ROUTES = 21
    QUOTA_EXCEEDED_TRAFFIC_POLICIES = 22
    QUOTA_EXCEEDED_ENDPOINT_POLICIES = 23
    QUOTA_EXCEEDED_GATEWAYS = 24
    QUOTA_EXCEEDED_MESHES = 25
    QUOTA_EXCEEDED_SERVER_TLS_POLICIES = 26
    QUOTA_EXCEEDED_CLIENT_TLS_POLICIES = 27
    QUOTA_EXCEEDED_SERVICE_LB_POLICIES = 28
    QUOTA_EXCEEDED_HTTP_FILTERS = 29
    QUOTA_EXCEEDED_TCP_FILTERS = 30
    QUOTA_EXCEEDED_NETWORK_ENDPOINT_GROUPS = 31
    LEGACY_MC_SECRETS = 32
    WORKLOAD_IDENTITY_REQUIRED = 33
    NON_STANDARD_BINARY_USAGE = 34
    UNSUPPORTED_GATEWAY_CLASS = 35
    MANAGED_CNI_NOT_ENABLED = 36
    MODERNIZATION_SCHEDULED = 37
    MODERNIZATION_IN_PROGRESS = 38
    MODERNIZATION_COMPLETED = 39
    MODERNIZATION_ABORTED = 40
    MODERNIZATION_PREPARING = 41
    MODERNIZATION_STALLED = 42
    MODERNIZATION_PREPARED = 43
    MODERNIZATION_MIGRATING_WORKLOADS = 44
    MODERNIZATION_ROLLING_BACK_CLUSTER = 45
    MODERNIZATION_WILL_BE_SCHEDULED = 46
    MODERNIZATION_MANUAL = 47
    MODERNIZATION_ELIGIBLE = 48
    MODERNIZATION_MODERNIZING = 49
    MODERNIZATION_MODERNIZED_SOAKING = 50
    MODERNIZATION_FINALIZED = 51
    MODERNIZATION_ROLLING_BACK_FLEET = 52

  class SeverityValueValuesEnum(_messages.Enum):
    r"""Severity level of the condition.

    Values:
      SEVERITY_UNSPECIFIED: Unspecified severity
      ERROR: Indicates an issue that prevents the mesh from operating
        correctly
      WARNING: Indicates a setting is likely wrong, but the mesh is still able
        to operate
      INFO: An informational message, not requiring any action
    """
    SEVERITY_UNSPECIFIED = 0
    ERROR = 1
    WARNING = 2
    INFO = 3

  code = _messages.EnumField('CodeValueValuesEnum', 1)
  details = _messages.StringField(2)
  documentationLink = _messages.StringField(3)
  severity = _messages.EnumField('SeverityValueValuesEnum', 4)


class ServiceMeshFeatureSpec(_messages.Message):
  r"""**Service Mesh**: Spec for the fleet for the servicemesh feature

  Enums:
    ModernizationValueValuesEnum: Optional. Specifies modernization for the
      fleet.

  Fields:
    modernization: Optional. Specifies modernization for the fleet.
  """

  class ModernizationValueValuesEnum(_messages.Enum):
    r"""Optional. Specifies modernization for the fleet.

    Values:
      MODERNIZATION_UNSPECIFIED: Unspecified.
      AUTOMATICALLY_MODERNIZED: Google should start modernization.
      BEFORE_MODERNIZATION: Google should rollback fleet.
    """
    MODERNIZATION_UNSPECIFIED = 0
    AUTOMATICALLY_MODERNIZED = 1
    BEFORE_MODERNIZATION = 2

  modernization = _messages.EnumField('ModernizationValueValuesEnum', 1)


class ServiceMeshFeatureState(_messages.Message):
  r"""**Service Mesh**: State for the whole Hub, as analyzed by the Service
  Mesh Hub Controller.

  Fields:
    analysisMessages: Output only. Results of running Service Mesh analyzers.
    conditions: Output only. List of conditions reported for this feature.
  """

  analysisMessages = _messages.MessageField('ServiceMeshAnalysisMessage', 1, repeated=True)
  conditions = _messages.MessageField('ServiceMeshFeatureCondition', 2, repeated=True)


class ServiceMeshMembershipSpec(_messages.Message):
  r"""**Service Mesh**: Spec for a single Membership for the servicemesh
  feature

  Enums:
    ConfigApiValueValuesEnum: Optional. Specifies the API that will be used
      for configuring the mesh workloads.
    ControlPlaneValueValuesEnum: Deprecated: use `management` instead Enables
      automatic control plane management.
    DataPlaneValueValuesEnum: Enables automatic data plane management.
    DefaultChannelValueValuesEnum: Determines which release channel to use for
      default injection and service mesh APIs.
    ManagementValueValuesEnum: Optional. Enables automatic Service Mesh
      management.

  Fields:
    configApi: Optional. Specifies the API that will be used for configuring
      the mesh workloads.
    controlPlane: Deprecated: use `management` instead Enables automatic
      control plane management.
    dataPlane: Enables automatic data plane management.
    defaultChannel: Determines which release channel to use for default
      injection and service mesh APIs.
    management: Optional. Enables automatic Service Mesh management.
  """

  class ConfigApiValueValuesEnum(_messages.Enum):
    r"""Optional. Specifies the API that will be used for configuring the mesh
    workloads.

    Values:
      CONFIG_API_UNSPECIFIED: Unspecified
      CONFIG_API_ISTIO: Use the Istio API for configuration.
      CONFIG_API_GATEWAY: Use the K8s Gateway API for configuration.
    """
    CONFIG_API_UNSPECIFIED = 0
    CONFIG_API_ISTIO = 1
    CONFIG_API_GATEWAY = 2

  class ControlPlaneValueValuesEnum(_messages.Enum):
    r"""Deprecated: use `management` instead Enables automatic control plane
    management.

    Values:
      CONTROL_PLANE_MANAGEMENT_UNSPECIFIED: Unspecified
      AUTOMATIC: Google should provision a control plane revision and make it
        available in the cluster. Google will enroll this revision in a
        release channel and keep it up to date. The control plane revision may
        be a managed service, or a managed install.
      MANUAL: User will manually configure the control plane (e.g. via CLI, or
        via the ControlPlaneRevision KRM API)
    """
    CONTROL_PLANE_MANAGEMENT_UNSPECIFIED = 0
    AUTOMATIC = 1
    MANUAL = 2

  class DataPlaneValueValuesEnum(_messages.Enum):
    r"""Enables automatic data plane management.

    Values:
      DATA_PLANE_MANAGEMENT_UNSPECIFIED: Unspecified
      DATA_PLANE_MANAGEMENT_AUTOMATIC: Enables Google-managed data plane that
        provides L7 service mesh capabilities. Data plane management is
        enabled at the cluster level. Users can exclude individual workloads
        or namespaces.
      DATA_PLANE_MANAGEMENT_MANUAL: User will manage their L7 data plane.
    """
    DATA_PLANE_MANAGEMENT_UNSPECIFIED = 0
    DATA_PLANE_MANAGEMENT_AUTOMATIC = 1
    DATA_PLANE_MANAGEMENT_MANUAL = 2

  class DefaultChannelValueValuesEnum(_messages.Enum):
    r"""Determines which release channel to use for default injection and
    service mesh APIs.

    Values:
      CHANNEL_UNSPECIFIED: Unspecified
      RAPID: RAPID channel is offered on an early access basis for customers
        who want to test new releases.
      REGULAR: REGULAR channel is intended for production users who want to
        take advantage of new features.
      STABLE: STABLE channel includes versions that are known to be stable and
        reliable in production.
    """
    CHANNEL_UNSPECIFIED = 0
    RAPID = 1
    REGULAR = 2
    STABLE = 3

  class ManagementValueValuesEnum(_messages.Enum):
    r"""Optional. Enables automatic Service Mesh management.

    Values:
      MANAGEMENT_UNSPECIFIED: Unspecified
      MANAGEMENT_AUTOMATIC: Google should manage my Service Mesh for the
        cluster.
      MANAGEMENT_MANUAL: User will manually configure their service mesh
        components.
      MANAGEMENT_NOT_INSTALLED: Google should remove any managed Service Mesh
        components from this cluster and deprovision any resources.
    """
    MANAGEMENT_UNSPECIFIED = 0
    MANAGEMENT_AUTOMATIC = 1
    MANAGEMENT_MANUAL = 2
    MANAGEMENT_NOT_INSTALLED = 3

  configApi = _messages.EnumField('ConfigApiValueValuesEnum', 1)
  controlPlane = _messages.EnumField('ControlPlaneValueValuesEnum', 2)
  dataPlane = _messages.EnumField('DataPlaneValueValuesEnum', 3)
  defaultChannel = _messages.EnumField('DefaultChannelValueValuesEnum', 4)
  management = _messages.EnumField('ManagementValueValuesEnum', 5)


class ServiceMeshMembershipState(_messages.Message):
  r"""**Service Mesh**: State for a single Membership, as analyzed by the
  Service Mesh Hub Controller.

  Enums:
    DefaultChannelValueValuesEnum: Release channel to use for default
      injection and service mesh APIs.

  Fields:
    analysisMessages: Output only. Results of running Service Mesh analyzers.
    conditions: Output only. List of conditions reported for this membership.
    configApiVersion: The API version (i.e. Istio CRD version) for configuring
      service mesh in this cluster. This version is influenced by the
      `default_channel` field.
    controlPlaneManagement: Output only. Status of control plane management
    controlPlaneRevisions: Output only. State of all control plane revisions
      that are available in the cluster.
    dataPlaneManagement: Output only. Status of data plane management.
    defaultChannel: Release channel to use for default injection and service
      mesh APIs.
    meshConnectivity: Output only. Status of cross cluster load balancing
      between other clusters in the mesh.
  """

  class DefaultChannelValueValuesEnum(_messages.Enum):
    r"""Release channel to use for default injection and service mesh APIs.

    Values:
      CHANNEL_UNSPECIFIED: Unspecified
      RAPID: RAPID channel is offered on an early access basis for customers
        who want to test new releases.
      REGULAR: REGULAR channel is intended for production users who want to
        take advantage of new features.
      STABLE: STABLE channel includes versions that are known to be stable and
        reliable in production.
    """
    CHANNEL_UNSPECIFIED = 0
    RAPID = 1
    REGULAR = 2
    STABLE = 3

  analysisMessages = _messages.MessageField('ServiceMeshAnalysisMessage', 1, repeated=True)
  conditions = _messages.MessageField('ServiceMeshCondition', 2, repeated=True)
  configApiVersion = _messages.StringField(3)
  controlPlaneManagement = _messages.MessageField('ServiceMeshControlPlaneManagement', 4)
  controlPlaneRevisions = _messages.MessageField('ServiceMeshControlPlaneRevision', 5, repeated=True)
  dataPlaneManagement = _messages.MessageField('ServiceMeshDataPlaneManagement', 6)
  defaultChannel = _messages.EnumField('DefaultChannelValueValuesEnum', 7)
  meshConnectivity = _messages.MessageField('ServiceMeshMeshConnectivity', 8)


class ServiceMeshMeshConnectivity(_messages.Message):
  r"""Status of cross cluster load balancing between other clusters in the
  mesh.

  Enums:
    StateValueValuesEnum: LifecycleState of multicluster load balancing.

  Fields:
    details: Explanation of state.
    state: LifecycleState of multicluster load balancing.
  """

  class StateValueValuesEnum(_messages.Enum):
    r"""LifecycleState of multicluster load balancing.

    Values:
      LIFECYCLE_STATE_UNSPECIFIED: Unspecified
      DISABLED: DISABLED means that the component is not enabled.
      FAILED_PRECONDITION: FAILED_PRECONDITION means that provisioning cannot
        proceed because of some characteristic of the member cluster.
      PROVISIONING: PROVISIONING means that provisioning is in progress.
      ACTIVE: ACTIVE means that the component is ready for use.
      STALLED: STALLED means that provisioning could not be done.
      NEEDS_ATTENTION: NEEDS_ATTENTION means that the component is ready, but
        some user intervention is required. (For example that the user should
        migrate workloads to a new control plane revision.)
      DEGRADED: DEGRADED means that the component is ready, but operating in a
        degraded state.
      DEPROVISIONING: DEPROVISIONING means that deprovisioning is in progress.
    """
    LIFECYCLE_STATE_UNSPECIFIED = 0
    DISABLED = 1
    FAILED_PRECONDITION = 2
    PROVISIONING = 3
    ACTIVE = 4
    STALLED = 5
    NEEDS_ATTENTION = 6
    DEGRADED = 7
    DEPROVISIONING = 8

  details = _messages.MessageField('ServiceMeshStatusDetails', 1, repeated=True)
  state = _messages.EnumField('StateValueValuesEnum', 2)


class ServiceMeshStatusDetails(_messages.Message):
  r"""Structured and human-readable details for a status.

  Fields:
    code: A machine-readable code that further describes a broad status.
    details: Human-readable explanation of code.
  """

  code = _messages.StringField(1)
  details = _messages.StringField(2)


class ServiceMeshType(_messages.Message):
  r"""A unique identifier for the type of message. Display_name is intended to
  be human-readable, code is intended to be machine readable. There should be
  a one-to-one mapping between display_name and code. (i.e. do not re-use
  display_names or codes between message types.) See
  istio.analysis.v1alpha1.AnalysisMessageBase.Type

  Fields:
    code: A 7 character code matching `^IST[0-9]{4}$` or `^ASM[0-9]{4}$`,
      intended to uniquely identify the message type. (e.g. "IST0001" is
      mapped to the "InternalError" message type.)
    displayName: A human-readable name for the message type. e.g.
      "InternalError", "PodMissingProxy". This should be the same for all
      messages of the same type. (This corresponds to the `name` field in
      open-source Istio.)
  """

  code = _messages.StringField(1)
  displayName = _messages.StringField(2)


class SetIamPolicyRequest(_messages.Message):
  r"""Request message for `SetIamPolicy` method.

  Fields:
    policy: REQUIRED: The complete policy to be applied to the `resource`. The
      size of the policy is limited to a few 10s of KB. An empty policy is a
      valid policy but certain Google Cloud services (such as Projects) might
      reject them.
    updateMask: OPTIONAL: A FieldMask specifying which fields of the policy to
      modify. Only the fields in the mask will be modified. If no mask is
      provided, the following default mask is used: `paths: "bindings, etag"`
  """

  policy = _messages.MessageField('Policy', 1)
  updateMask = _messages.StringField(2)


class Stage(_messages.Message):
  r"""Rollout stage.

  Fields:
    clusterSelector: Optional. Filter members of fleets (above) to a subset of
      clusters. If not specified, all clusters in the fleets are selected.
    fleetProjects: Required. List of Fleet projects to select the clusters
      from. Expected format: projects/{project}
    soakDuration: Optional. Soak time after upgrading all the clusters in the
      stage.
  """

  clusterSelector = _messages.MessageField('ClusterSelector', 1)
  fleetProjects = _messages.StringField(2, repeated=True)
  soakDuration = _messages.StringField(3)


class StandardQueryParameters(_messages.Message):
  r"""Query parameters accepted by all methods.

  Enums:
    FXgafvValueValuesEnum: V1 error format.
    AltValueValuesEnum: Data format for response.

  Fields:
    f__xgafv: V1 error format.
    access_token: OAuth access token.
    alt: Data format for response.
    callback: JSONP
    fields: Selector specifying which fields to include in a partial response.
    key: API key. Your API key identifies your project and provides you with
      API access, quota, and reports. Required unless you provide an OAuth 2.0
      token.
    oauth_token: OAuth 2.0 token for the current user.
    prettyPrint: Returns response with indentations and line breaks.
    quotaUser: Available to use for quota purposes for server-side
      applications. Can be any arbitrary string assigned to a user, but should
      not exceed 40 characters.
    trace: A tracing token of the form "token:<tokenid>" to include in api
      requests.
    uploadType: Legacy upload protocol for media (e.g. "media", "multipart").
    upload_protocol: Upload protocol for media (e.g. "raw", "multipart").
  """

  class AltValueValuesEnum(_messages.Enum):
    r"""Data format for response.

    Values:
      json: Responses with Content-Type of application/json
      media: Media download with context-dependent Content-Type
      proto: Responses with Content-Type of application/x-protobuf
    """
    json = 0
    media = 1
    proto = 2

  class FXgafvValueValuesEnum(_messages.Enum):
    r"""V1 error format.

    Values:
      _1: v1 error format
      _2: v2 error format
    """
    _1 = 0
    _2 = 1

  f__xgafv = _messages.EnumField('FXgafvValueValuesEnum', 1)
  access_token = _messages.StringField(2)
  alt = _messages.EnumField('AltValueValuesEnum', 3, default='json')
  callback = _messages.StringField(4)
  fields = _messages.StringField(5)
  key = _messages.StringField(6)
  oauth_token = _messages.StringField(7)
  prettyPrint = _messages.BooleanField(8, default=True)
  quotaUser = _messages.StringField(9)
  trace = _messages.StringField(10)
  uploadType = _messages.StringField(11)
  upload_protocol = _messages.StringField(12)


class Status(_messages.Message):
  r"""Status specifies state for the subcomponent.

  Enums:
    CodeValueValuesEnum: Code specifies AppDevExperienceFeature's subcomponent
      ready state.

  Fields:
    code: Code specifies AppDevExperienceFeature's subcomponent ready state.
    description: Description is populated if Code is Failed, explaining why it
      has failed.
  """

  class CodeValueValuesEnum(_messages.Enum):
    r"""Code specifies AppDevExperienceFeature's subcomponent ready state.

    Values:
      CODE_UNSPECIFIED: Not set.
      OK: AppDevExperienceFeature's specified subcomponent is ready.
      FAILED: AppDevExperienceFeature's specified subcomponent ready state is
        false. This means AppDevExperienceFeature has encountered an issue
        that blocks all, or a portion, of its normal operation. See the
        `description` for more details.
      UNKNOWN: AppDevExperienceFeature's specified subcomponent has a pending
        or unknown state.
    """
    CODE_UNSPECIFIED = 0
    OK = 1
    FAILED = 2
    UNKNOWN = 3

  code = _messages.EnumField('CodeValueValuesEnum', 1)
  description = _messages.StringField(2)


class TestIamPermissionsRequest(_messages.Message):
  r"""Request message for `TestIamPermissions` method.

  Fields:
    permissions: The set of permissions to check for the `resource`.
      Permissions with wildcards (such as `*` or `storage.*`) are not allowed.
      For more information see [IAM
      Overview](https://cloud.google.com/iam/docs/overview#permissions).
  """

  permissions = _messages.StringField(1, repeated=True)


class TestIamPermissionsResponse(_messages.Message):
  r"""Response message for `TestIamPermissions` method.

  Fields:
    permissions: A subset of `TestPermissionsRequest.permissions` that the
      caller is allowed.
  """

  permissions = _messages.StringField(1, repeated=True)


class TypeMeta(_messages.Message):
  r"""TypeMeta is the type information needed for content unmarshalling of
  Kubernetes resources in the manifest.

  Fields:
    apiVersion: APIVersion of the resource (e.g. v1).
    kind: Kind of the resource (e.g. Deployment).
  """

  apiVersion = _messages.StringField(1)
  kind = _messages.StringField(2)


class UIPRRolloutConfig(_messages.Message):
  r"""The configuration used for the Rollout if triggered for UIPR. These
  settings are used to adjust the wave distribution of the rollout and other
  UIPR specific settings.

  Fields:
    customWaves: Optional. The template for waves in the Rollout. If not set,
      the default is 5 waves progressing as 1: .55%, 2: 4%, 3: .29.2%, 4:
      57.4%, 5: 100%, with a minimum completion percentage of 100% for all
      waves. The last wave must have a upper bound of 100%.
    excludedMembershipNames: Optional. The excluded memberships from the
      rollout. If not set, all memberships will be considered for inclusion in
      the rollout (exclude tags on memberships will still be respected)
      Membership names are expected in the format of `projects/{project_number
      }/locations/{location}/memberships/{cluster_id}`.
    includeMembershipNames: Optional. The included memberships from the
      rollout. If not set, all memberships will be considered for inclusion in
      the rollout. If included in excluded_membership_names or tagged with
      excluded_clusters and included in included_membership_names, the rollout
      creation will error. Membership names are expected in the format of `pro
      jects/{project_number}/locations/{location}/memberships/{cluster_id}`
  """

  customWaves = _messages.MessageField('WaveTemplate', 1, repeated=True)
  excludedMembershipNames = _messages.StringField(2, repeated=True)
  includeMembershipNames = _messages.StringField(3, repeated=True)


class ValidateCreateMembershipRequest(_messages.Message):
  r"""Request message for the `GkeHub.ValidateCreateMembership` method.

  Fields:
    membership: Required. Membership resource to be created.
    membershipId: Required. Client chosen membership id.
  """

  membership = _messages.MessageField('Membership', 1)
  membershipId = _messages.StringField(2)


class ValidateCreateMembershipResponse(_messages.Message):
  r"""Response message for the `GkeHub.ValidateCreateMembership` method.

  Fields:
    validationResults: Wraps all the validator results.
  """

  validationResults = _messages.MessageField('ValidationResult', 1, repeated=True)


class ValidateExclusivityResponse(_messages.Message):
  r"""The response of exclusivity artifacts validation result status.

  Fields:
    status: The validation result. * `OK` means that exclusivity is validated,
      assuming the manifest produced by GenerateExclusivityManifest is
      successfully applied. * `ALREADY_EXISTS` means that the Membership CRD
      is already owned by another Hub. See `status.message` for more
      information.
  """

  status = _messages.MessageField('GoogleRpcStatus', 1)


class ValidationResult(_messages.Message):
  r"""ValidationResults are results set by each validator running during
  ValidateCreateMembership.

  Enums:
    ValidatorValueValuesEnum: Validator type to validate membership with.

  Fields:
    result: Additional information for the validation.
    success: Whether the validation is passed or not.
    validator: Validator type to validate membership with.
  """

  class ValidatorValueValuesEnum(_messages.Enum):
    r"""Validator type to validate membership with.

    Values:
      VALIDATOR_TYPE_UNSPECIFIED: UNSPECIFIED validator.
      MEMBERSHIP_ID: MEMBERSHIP_ID validator validates that the membership_id
        is still available.
      CROSS_PROJECT_PERMISSION: CROSS_PROJECT_PERMISSION validator validates
        that the cross-project role binding for the service agent is in place.
      FLEET_ALLOWED_FOR_PROJECT_GUARDRAIL: FLEET_ALLOWED_FOR_PROJECT_GUARDRAIL
        validator validates that the fleet project is allowed for the project
        guardrail.
    """
    VALIDATOR_TYPE_UNSPECIFIED = 0
    MEMBERSHIP_ID = 1
    CROSS_PROJECT_PERMISSION = 2
    FLEET_ALLOWED_FOR_PROJECT_GUARDRAIL = 3

  result = _messages.StringField(1)
  success = _messages.BooleanField(2)
  validator = _messages.EnumField('ValidatorValueValuesEnum', 3)


class VersionUpgrade(_messages.Message):
  r"""Config for version upgrade of clusters.

  Enums:
    TypeValueValuesEnum: Optional. Type of version upgrade specifies which
      component should be upgraded.

  Fields:
    desiredVersion: Optional. Desired version of the component.
    type: Optional. Type of version upgrade specifies which component should
      be upgraded.
  """

  class TypeValueValuesEnum(_messages.Enum):
    r"""Optional. Type of version upgrade specifies which component should be
    upgraded.

    Values:
      TYPE_UNSPECIFIED: Default value.
      TYPE_CONTROL_PLANE: Control plane upgrade.
      TYPE_NODE_POOL: Node pool upgrade.
      TYPE_CONFIG_SYNC: Config Sync upgrade.
    """
    TYPE_UNSPECIFIED = 0
    TYPE_CONTROL_PLANE = 1
    TYPE_NODE_POOL = 2
    TYPE_CONFIG_SYNC = 3

  desiredVersion = _messages.StringField(1)
  type = _messages.EnumField('TypeValueValuesEnum', 2)


class WaveSchedule(_messages.Message):
  r"""WaveSchedule represents the schedule of a single rollout wave.

  Fields:
    waveEndTime: Output only. The time at which the wave ends.
    waveNumber: Output only. The wave number to which this schedule applies.
    waveStartTime: Output only. The time at which the wave starts.
  """

  waveEndTime = _messages.StringField(1)
  waveNumber = _messages.IntegerField(2, variant=_messages.Variant.INT32)
  waveStartTime = _messages.StringField(3)


class WaveTemplate(_messages.Message):
  r"""Template for a wave in the Rollout for custom wave configuration.

  Enums:
    StragglerMigrationStrategyValueValuesEnum: Optional. The strategy for
      migrating stragglers after the wave is completed. If not set, the
      default is STRAGGLER_MIGRATION_STRATEGY_NO_MIGRATION.

  Fields:
    errorBudgetCount: Optional. The error budget as a number of errored
      clusters. This value must be non-negative.
    errorBudgetPercentage: Optional. The error budget as a percentage of the
      wave size. This value must be between 0.0 and 100.0.
    minimumCompletionNumber: Optional. The minimum number of upgrades to be
      completed in the wave, before automatically proceeding to the next wave.
      If not set, the default is the size of the wave.
    minimumCompletionPercentage: Optional. The minimum number of upgrades as a
      percentage of the wave size to be completed in the wave, before
      automatically proceeding to the next wave. If not set, the default is
      100%.
    stragglerMigrationStrategy: Optional. The strategy for migrating
      stragglers after the wave is completed. If not set, the default is
      STRAGGLER_MIGRATION_STRATEGY_NO_MIGRATION.
    upperBoundPercentage: Required. The total percentage of clusters that
      should be finished by the end of the wave (inclusive of all previous
      waves). upper_bound_percentage must be monotonically increasing wave to
      wave and the final wave must be 100.
  """

  class StragglerMigrationStrategyValueValuesEnum(_messages.Enum):
    r"""Optional. The strategy for migrating stragglers after the wave is
    completed. If not set, the default is
    STRAGGLER_MIGRATION_STRATEGY_NO_MIGRATION.

    Values:
      STRAGGLER_MIGRATION_STRATEGY_UNSPECIFIED: Unspecified straggler
        migration strategy.
      STRAGGLER_MIGRATION_STRATEGY_NO_MIGRATION: No migration of stragglers.
      STRAGGLER_MIGRATION_STRATEGY_LAST_WAVE: Migrate stragglers to the last
        wave of the rollout.
    """
    STRAGGLER_MIGRATION_STRATEGY_UNSPECIFIED = 0
    STRAGGLER_MIGRATION_STRATEGY_NO_MIGRATION = 1
    STRAGGLER_MIGRATION_STRATEGY_LAST_WAVE = 2

  errorBudgetCount = _messages.IntegerField(1, variant=_messages.Variant.INT32)
  errorBudgetPercentage = _messages.FloatField(2, variant=_messages.Variant.FLOAT)
  minimumCompletionNumber = _messages.IntegerField(3, variant=_messages.Variant.INT32)
  minimumCompletionPercentage = _messages.FloatField(4, variant=_messages.Variant.FLOAT)
  stragglerMigrationStrategy = _messages.EnumField('StragglerMigrationStrategyValueValuesEnum', 5)
  upperBoundPercentage = _messages.FloatField(6, variant=_messages.Variant.FLOAT)


class WorkloadIdentityFeatureSpec(_messages.Message):
  r"""**WorkloadIdentity**: Global feature specification.

  Fields:
    scopeTenancyPool: Pool to be used for Workload Identity. This pool in
      trust-domain mode is used with Fleet Tenancy, so that sameness can be
      enforced. ex:
      projects/example/locations/global/workloadidentitypools/custompool
  """

  scopeTenancyPool = _messages.StringField(1)


class WorkloadIdentityFeatureState(_messages.Message):
  r"""**WorkloadIdentity**: Global feature state.

  Messages:
    NamespaceStateDetailsValue: The state of the IAM namespaces for the fleet.
    NamespaceStatesValue: Deprecated, this field will be erased after code is
      changed to use the new field.
    WorkloadIdentityPoolStateDetailsValue: The state of the Workload Identity
      Pools for the fleet.
    WorkloadIdentityPoolStatesValue: Deprecated, this field will be erased
      after code is changed to use the new field.

  Fields:
    namespaceStateDetails: The state of the IAM namespaces for the fleet.
    namespaceStates: Deprecated, this field will be erased after code is
      changed to use the new field.
    scopeTenancyWorkloadIdentityPool: The full name of the scope-tenancy pool
      for the fleet.
    workloadIdentityPool: The full name of the svc.id.goog pool for the fleet.
    workloadIdentityPoolStateDetails: The state of the Workload Identity Pools
      for the fleet.
    workloadIdentityPoolStates: Deprecated, this field will be erased after
      code is changed to use the new field.
  """

  @encoding.MapUnrecognizedFields('additionalProperties')
  class NamespaceStateDetailsValue(_messages.Message):
    r"""The state of the IAM namespaces for the fleet.

    Messages:
      AdditionalProperty: An additional property for a
        NamespaceStateDetailsValue object.

    Fields:
      additionalProperties: Additional properties of type
        NamespaceStateDetailsValue
    """

    class AdditionalProperty(_messages.Message):
      r"""An additional property for a NamespaceStateDetailsValue object.

      Fields:
        key: Name of the additional property.
        value: A WorkloadIdentityNamespaceStateDetail attribute.
      """

      key = _messages.StringField(1)
      value = _messages.MessageField('WorkloadIdentityNamespaceStateDetail', 2)

    additionalProperties = _messages.MessageField('AdditionalProperty', 1, repeated=True)

  @encoding.MapUnrecognizedFields('additionalProperties')
  class NamespaceStatesValue(_messages.Message):
    r"""Deprecated, this field will be erased after code is changed to use the
    new field.

    Messages:
      AdditionalProperty: An additional property for a NamespaceStatesValue
        object.

    Fields:
      additionalProperties: Additional properties of type NamespaceStatesValue
    """

    class AdditionalProperty(_messages.Message):
      r"""An additional property for a NamespaceStatesValue object.

      Enums:
        ValueValueValuesEnum:

      Fields:
        key: Name of the additional property.
        value: A ValueValueValuesEnum attribute.
      """

      class ValueValueValuesEnum(_messages.Enum):
        r"""ValueValueValuesEnum enum type.

        Values:
          NAMESPACE_STATE_UNSPECIFIED: Unknown state.
          NAMESPACE_STATE_OK: The Namespace was created/updated successfully.
          NAMESPACE_STATE_ERROR: The Namespace was not created/updated
            successfully. The error message is in the description field.
        """
        NAMESPACE_STATE_UNSPECIFIED = 0
        NAMESPACE_STATE_OK = 1
        NAMESPACE_STATE_ERROR = 2

      key = _messages.StringField(1)
      value = _messages.EnumField('ValueValueValuesEnum', 2)

    additionalProperties = _messages.MessageField('AdditionalProperty', 1, repeated=True)

  @encoding.MapUnrecognizedFields('additionalProperties')
  class WorkloadIdentityPoolStateDetailsValue(_messages.Message):
    r"""The state of the Workload Identity Pools for the fleet.

    Messages:
      AdditionalProperty: An additional property for a
        WorkloadIdentityPoolStateDetailsValue object.

    Fields:
      additionalProperties: Additional properties of type
        WorkloadIdentityPoolStateDetailsValue
    """

    class AdditionalProperty(_messages.Message):
      r"""An additional property for a WorkloadIdentityPoolStateDetailsValue
      object.

      Fields:
        key: Name of the additional property.
        value: A WorkloadIdentityWorkloadIdentityPoolStateDetail attribute.
      """

      key = _messages.StringField(1)
      value = _messages.MessageField('WorkloadIdentityWorkloadIdentityPoolStateDetail', 2)

    additionalProperties = _messages.MessageField('AdditionalProperty', 1, repeated=True)

  @encoding.MapUnrecognizedFields('additionalProperties')
  class WorkloadIdentityPoolStatesValue(_messages.Message):
    r"""Deprecated, this field will be erased after code is changed to use the
    new field.

    Messages:
      AdditionalProperty: An additional property for a
        WorkloadIdentityPoolStatesValue object.

    Fields:
      additionalProperties: Additional properties of type
        WorkloadIdentityPoolStatesValue
    """

    class AdditionalProperty(_messages.Message):
      r"""An additional property for a WorkloadIdentityPoolStatesValue object.

      Enums:
        ValueValueValuesEnum:

      Fields:
        key: Name of the additional property.
        value: A ValueValueValuesEnum attribute.
      """

      class ValueValueValuesEnum(_messages.Enum):
        r"""ValueValueValuesEnum enum type.

        Values:
          WORKLOAD_IDENTITY_POOL_STATE_UNSPECIFIED: Unknown state.
          WORKLOAD_IDENTITY_POOL_STATE_OK: The Workload Identity Pool was
            created/updated successfully.
          WORKLOAD_IDENTITY_POOL_STATE_ERROR: The Workload Identity Pool was
            not created/updated successfully. The error message is in the
            description field.
        """
        WORKLOAD_IDENTITY_POOL_STATE_UNSPECIFIED = 0
        WORKLOAD_IDENTITY_POOL_STATE_OK = 1
        WORKLOAD_IDENTITY_POOL_STATE_ERROR = 2

      key = _messages.StringField(1)
      value = _messages.EnumField('ValueValueValuesEnum', 2)

    additionalProperties = _messages.MessageField('AdditionalProperty', 1, repeated=True)

  namespaceStateDetails = _messages.MessageField('NamespaceStateDetailsValue', 1)
  namespaceStates = _messages.MessageField('NamespaceStatesValue', 2)
  scopeTenancyWorkloadIdentityPool = _messages.StringField(3)
  workloadIdentityPool = _messages.StringField(4)
  workloadIdentityPoolStateDetails = _messages.MessageField('WorkloadIdentityPoolStateDetailsValue', 5)
  workloadIdentityPoolStates = _messages.MessageField('WorkloadIdentityPoolStatesValue', 6)


class WorkloadIdentityIdentityProviderStateDetail(_messages.Message):
  r"""IdentityProviderStateDetail represents the state of an Identity
  Provider.

  Enums:
    CodeValueValuesEnum: The state of the Identity Provider.

  Fields:
    code: The state of the Identity Provider.
    description: A human-readable description of the current state or returned
      error.
  """

  class CodeValueValuesEnum(_messages.Enum):
    r"""The state of the Identity Provider.

    Values:
      IDENTITY_PROVIDER_STATE_UNSPECIFIED: Unknown state.
      IDENTITY_PROVIDER_STATE_OK: The Identity Provider was created/updated
        successfully.
      IDENTITY_PROVIDER_STATE_ERROR: The Identity Provider was not
        created/updated successfully. The error message is in the description
        field.
    """
    IDENTITY_PROVIDER_STATE_UNSPECIFIED = 0
    IDENTITY_PROVIDER_STATE_OK = 1
    IDENTITY_PROVIDER_STATE_ERROR = 2

  code = _messages.EnumField('CodeValueValuesEnum', 1)
  description = _messages.StringField(2)


class WorkloadIdentityMembershipState(_messages.Message):
  r"""**WorkloadIdentity**: The membership-specific state for WorkloadIdentity
  feature.

  Enums:
    StateValueValuesEnum: Output only. Deprecated, this field will be erased
      after code is changed to use the new field.

  Messages:
    IdentityProviderStateDetailsValue: The state of the Identity Providers
      corresponding to the membership.

  Fields:
    description: Deprecated, this field will be erased after code is changed
      to use the new field.
    identityProviderStateDetails: The state of the Identity Providers
      corresponding to the membership.
    state: Output only. Deprecated, this field will be erased after code is
      changed to use the new field.
  """

  class StateValueValuesEnum(_messages.Enum):
    r"""Output only. Deprecated, this field will be erased after code is
    changed to use the new field.

    Values:
      IDENTITY_PROVIDER_STATE_UNSPECIFIED: Unknown state.
      IDENTITY_PROVIDER_STATE_OK: The Identity Provider was created/updated
        successfully.
      IDENTITY_PROVIDER_STATE_ERROR: The Identity Provider was not
        created/updated successfully. The error message is in the description
        field.
    """
    IDENTITY_PROVIDER_STATE_UNSPECIFIED = 0
    IDENTITY_PROVIDER_STATE_OK = 1
    IDENTITY_PROVIDER_STATE_ERROR = 2

  @encoding.MapUnrecognizedFields('additionalProperties')
  class IdentityProviderStateDetailsValue(_messages.Message):
    r"""The state of the Identity Providers corresponding to the membership.

    Messages:
      AdditionalProperty: An additional property for a
        IdentityProviderStateDetailsValue object.

    Fields:
      additionalProperties: Additional properties of type
        IdentityProviderStateDetailsValue
    """

    class AdditionalProperty(_messages.Message):
      r"""An additional property for a IdentityProviderStateDetailsValue
      object.

      Fields:
        key: Name of the additional property.
        value: A WorkloadIdentityIdentityProviderStateDetail attribute.
      """

      key = _messages.StringField(1)
      value = _messages.MessageField('WorkloadIdentityIdentityProviderStateDetail', 2)

    additionalProperties = _messages.MessageField('AdditionalProperty', 1, repeated=True)

  description = _messages.StringField(1)
  identityProviderStateDetails = _messages.MessageField('IdentityProviderStateDetailsValue', 2)
  state = _messages.EnumField('StateValueValuesEnum', 3)


class WorkloadIdentityNamespaceStateDetail(_messages.Message):
  r"""NamespaceStateDetail represents the state of a IAM namespace.

  Enums:
    CodeValueValuesEnum: The state of the IAM namespace.

  Fields:
    code: The state of the IAM namespace.
    description: A human-readable description of the current state or returned
      error.
  """

  class CodeValueValuesEnum(_messages.Enum):
    r"""The state of the IAM namespace.

    Values:
      NAMESPACE_STATE_UNSPECIFIED: Unknown state.
      NAMESPACE_STATE_OK: The Namespace was created/updated successfully.
      NAMESPACE_STATE_ERROR: The Namespace was not created/updated
        successfully. The error message is in the description field.
    """
    NAMESPACE_STATE_UNSPECIFIED = 0
    NAMESPACE_STATE_OK = 1
    NAMESPACE_STATE_ERROR = 2

  code = _messages.EnumField('CodeValueValuesEnum', 1)
  description = _messages.StringField(2)


class WorkloadIdentityWorkloadIdentityPoolStateDetail(_messages.Message):
  r"""WorkloadIdentityPoolStateDetail represents the state of the Workload
  Identity Pools for the fleet.

  Enums:
    CodeValueValuesEnum: The state of the Workload Identity Pool.

  Fields:
    code: The state of the Workload Identity Pool.
    description: A human-readable description of the current state or returned
      error.
  """

  class CodeValueValuesEnum(_messages.Enum):
    r"""The state of the Workload Identity Pool.

    Values:
      WORKLOAD_IDENTITY_POOL_STATE_UNSPECIFIED: Unknown state.
      WORKLOAD_IDENTITY_POOL_STATE_OK: The Workload Identity Pool was
        created/updated successfully.
      WORKLOAD_IDENTITY_POOL_STATE_ERROR: The Workload Identity Pool was not
        created/updated successfully. The error message is in the description
        field.
    """
    WORKLOAD_IDENTITY_POOL_STATE_UNSPECIFIED = 0
    WORKLOAD_IDENTITY_POOL_STATE_OK = 1
    WORKLOAD_IDENTITY_POOL_STATE_ERROR = 2

  code = _messages.EnumField('CodeValueValuesEnum', 1)
  description = _messages.StringField(2)


class WorkloadMigrationFeatureSpec(_messages.Message):
  r"""**WorkloadMigration**: The Hub-wide input for the WorkloadMigration
  feature. This is currently empty, but is used to restrict API visibility.
  """



encoding.AddCustomJsonFieldMapping(
    Rule, 'in_', 'in')
encoding.AddCustomJsonFieldMapping(
    StandardQueryParameters, 'f__xgafv', '$.xgafv')
encoding.AddCustomJsonEnumMapping(
    StandardQueryParameters.FXgafvValueValuesEnum, '_1', '1')
encoding.AddCustomJsonEnumMapping(
    StandardQueryParameters.FXgafvValueValuesEnum, '_2', '2')
encoding.AddCustomJsonFieldMapping(
    GkehubProjectsLocationsFeaturesGetIamPolicyRequest, 'options_requestedPolicyVersion', 'options.requestedPolicyVersion')
encoding.AddCustomJsonFieldMapping(
    GkehubProjectsLocationsMembershipsGetIamPolicyRequest, 'options_requestedPolicyVersion', 'options.requestedPolicyVersion')
encoding.AddCustomJsonFieldMapping(
    GkehubProjectsLocationsScopesGetIamPolicyRequest, 'options_requestedPolicyVersion', 'options.requestedPolicyVersion')
