release_tracks: [GA, BETA, ALPHA]
help_text:
  brief: Set IAM policy for a Compute Engine instance.
  description: |
    Set IAM policy for a Compute Engine instance.
  examples: |
    The following command reads an IAM policy defined in a JSON file `policy.json` and sets it for
    the instance 'my-instance' and zone 'ZONE':

      $ {command} my-instance --zone=ZONE policy.json

    See https://cloud.google.com/iam/docs/managing-policies for details of
    policy role and member types.

request:
  collection: compute.instances
  use_relative_name: false
  modify_request_hooks:
  - googlecloudsdk.command_lib.iam.hooks:UseMaxRequestedPolicyVersion:api_field=zoneSetPolicyRequest.policy.version
  api_version: v1
  BETA:
    api_version: beta
  ALPHA:
    api_version: alpha

arguments:
  resource:
    help_text:
      The instance to set the IAM policy of.
    spec: !REF googlecloudsdk.command_lib.compute.resources:instance
iam:
  set_iam_policy_request_path: zoneSetPolicyRequest
  message_type_overrides:
    policy: Policy
    set_iam_policy_request: ComputeInstancesSetIamPolicyRequest
