File: //proc/thread-self/root/snap/google-cloud-cli/current/lib/surface/monitoring/dashboards/update.yaml
- release_tracks: [ALPHA, BETA, GA]
  help_text:
    brief: |
      Update a Cloud Monitoring dashboard.
    description: |
      Update a Monitoring dashboard. The updated dashboard can be specified as a
      JSON/YAML value passed in as a string through the `--config` flag or
      as a file through the `--config-from-file` flag.
      Note: Etags are used to prevent concurrent updates to the same dashboard. The latest etag can
      be found in a `describe` or `list` response.
      For information about the format of a dashboard:
      https://cloud.google.com/monitoring/api/ref_v3/rest/v1/projects.dashboards
    examples: |
      To update a dashboard with a YAML config, run:
        $ {command} MY-DASHBOARD --config='''
          displayName: New Dashboard with New Display Name
          etag: 40d1040034db4e5a9dee931ec1b12c0d
          gridLayout:
            widgets:
            - text:
                content: Hello World
          '''
      To update a dashboard with a JSON config, run:
         $ {command} MY-DASHBOARD --config='''
           {
             "displayName": "New Dashboard with New Display Name",
             "etag": "40d1040034db4e5a9dee931ec1b12c0d",
             "gridLayout": {
               "widgets": [
                 {
                   "text": {
                     "content": "Hello World",
                   }
                 }
               ]
             },
           }
           '''
      To update a dashboard within a specific project, run:
        $ {command} MY-DASHBOARD --project=MY-PROJECT --config='''
          displayName: New Dashboard with New Display Name
          etag: 40d1040034db4e5a9dee931ec1b12c0d
          gridLayout:
            widgets:
            - text:
                content: Hello World
          '''
      To update a dashboard with a file, run:
        $ {command} MY-DASHBOARD --config-from-file=MY-FILE
      Sample contents of MY-FILE:
        displayName: New Dashboard with new Display Name
        etag: 40d1040034db4e5a9dee931ec1b12c0d
        gridLayout:
          widgets:
          - text:
              content: Hello World
  arguments:
    resource:
      help_text: |
        The dashboard to update.
      spec: !REF googlecloudsdk.command_lib.monitoring.resources:dashboard
    params:
    - group:
        mutex: true
        required: true
        params:
        - arg_name: config
          api_field: dashboard
          processor: googlecloudsdk.core.yaml:load
          help_text: |
            Dashboard configuration, in either JSON or YAML format, as a string.
        - arg_name: config-from-file
          api_field: dashboard
          type: "googlecloudsdk.calliope.arg_parsers:FileContents:"
          processor: googlecloudsdk.core.yaml:load
          help_text: |
            Path to a JSON or YAML file containing the dashboard configuration.
  request:
    collection: monitoring.projects.dashboards
    method: patch
    api_version: v1