- release_tracks: [ALPHA, GA] help_text: brief: | Update a Looker instance. description: | Update the metadata and/or configuration parameters of a Looker instance. This command can fail for the following reasons: * The instance specified does not exist. * The active account does not have permission to update the given instance. examples: | To update the maintenance window to Sunday at 11:00 PM for a Looker instance with the name `my-looker-instance`, run: $ {command} my-looker-instance --maintenance-window-day=sunday --maintenance-window-time='23:00' --async arguments: resource: spec: !REF googlecloudsdk.command_lib.looker.resources:instance help_text: | Arguments and flags that specify the Looker instance you want to update. params: # Public Enabled Flags - arg_name: public-ip-enabled api_field: instance.publicIpEnabled type: bool help_text: | This specifies whether public IP is enabled on the Looker instance. - arg_name: linked-lsp-project-number required: false api_field: instance.linkedLspProjectNumber type: long help_text: | The Looker Studio Pro project number to be linked. # Class Type for PD SSD - arg_name: class-type required: false api_field: instance.classType help_text: | The class type of the Looker instance. choices: - arg_value: r1 enum_value: R1 - arg_value: p1 enum_value: P1 # Group for Maintanence Windows - group: required: false help_text: | Maintenance Window - Maintenance typically only takes place once every few months, and requires your instance to be restarted while updates are made, which disrupts service briefly. params: - api_field: instance.maintenanceWindow.dayOfWeek required: true arg_name: maintenance-window-day choices: - arg_value: monday enum_value: MONDAY - arg_value: tuesday enum_value: TUESDAY - arg_value: wednesday enum_value: WEDNESDAY - arg_value: thursday enum_value: THURSDAY - arg_value: friday enum_value: FRIDAY - arg_value: saturday enum_value: SATURDAY - arg_value: sunday enum_value: SUNDAY help_text: | Day of the week for the maintenance window, in UTC time zone. - api_field: instance.maintenanceWindow.startTime arg_name: maintenance-window-time required: true ALPHA: processor: googlecloudsdk.command_lib.looker.instances_util:ParseTimeOfDayMainWindowV1Alpha GA: processor: googlecloudsdk.command_lib.looker.instances_util:ParseTimeOfDayMainWindowV1 help_text: | Hour of day for maintenance window, in UTC time zone. A valid time of day must be specified in 24hr format (ex: 13:00, 17:30, 23:45). Maintenance will be scheduled within 60 minutes. To set the maintenance-window-time* attribute: * provide the argument *--maintenance-window-time* on the command line. # Group for Deny Maintanence period - group: required: false help_text: | Deny Maintanence Period - You must allow at least 48 hours of maintenance availability in a 60-day rolling window. Only contiguous availability windows of at least two hours are considered. When setting a maintenance exclusion please be aware that excluding application upgrades cannot exceed 60-days and excluding infrastructure upgrades cannot exceed 90-days. params: - api_field: instance.denyMaintenancePeriod.startDate arg_name: deny-maintenance-period-start-date required: true GA: processor: googlecloudsdk.command_lib.looker.instances_util:ParseToDateTypeV1 ALPHA: processor: googlecloudsdk.command_lib.looker.instances_util:ParseToDateTypeV1Alpha help_text: | Start date of the deny maintenance period in format: YYYY-MM-DD - api_field: instance.denyMaintenancePeriod.endDate arg_name: deny-maintenance-period-end-date required: true GA: processor: googlecloudsdk.command_lib.looker.instances_util:ParseToDateTypeV1 ALPHA: processor: googlecloudsdk.command_lib.looker.instances_util:ParseToDateTypeV1Alpha help_text: | End date of the deny maintenance period in format: YYYY-MM-DD - api_field: instance.denyMaintenancePeriod.time required: true arg_name: deny-maintenance-period-time GA: processor: googlecloudsdk.command_lib.looker.instances_util:ParseTimeOfDayDenyPeriodV1 ALPHA: processor: googlecloudsdk.command_lib.looker.instances_util:ParseTimeOfDayDenyPeriodV1Alpha help_text: | Time in UTC when the period starts and ends. A valid time of day must be specified in 24hr format (ex: 13:00, 17:30, 23:45). # Group for Admin Setting - group: required: false help_text: | Email Domain Allowlist for Scheduled Content - Define the email domains to which your users can deliver Looker (Google Cloud core) content. params: - arg_name: allowed-email-domains api_field: instance.adminSettings.allowedEmailDomains required: true help_text: | This specifies the entire allowed email domain list. # Group for Oauth configuration - group: required: false help_text: | OAuth Application Credentials - Looker Instance OAuth login settings. Setup an OAuth app that will allow users to authenticate and access the instance. For more information see: https://developers.google.com/identity/protocols/oauth2/web-server#creatingcred params: - arg_name: oauth-client-id api_field: instance.oauthConfig.clientId required: true help_text: | The client ID from an external OAuth application. - arg_name: oauth-client-secret api_field: instance.oauthConfig.clientSecret required: true help_text: | The client secret from an external OAuth application. # Group for Users Allocations - group: required: false help_text: | User Allocations - There are ten Standard and two Developer users included in the cost of the product. You can allocate additional Standard, Viewer, and Developer users for this instance. It is an optional step and can be modified later. With the Standard edition of Looker (Google Cloud core), you can provision up to 50 total users, distributed across Viewer, Standard, and Developer. params: - arg_name: add-viewer-users api_field: instance.userMetadata.additionalViewerUserCount help_text: | Number of additional Viewer Users to allocate to the Looker Instance. - arg_name: add-standard-users api_field: instance.userMetadata.additionalStandardUserCount help_text: | Number of additional Standard Users to allocate to the Looker Instance. - arg_name: add-developer-users api_field: instance.userMetadata.additionalDeveloperUserCount help_text: | Number of additional Developer Users to allocate to the Looker Instance. # Group for Gemini AI - group: required: false release_tracks: [ALPHA] help_text: | Gemini AI - Gemini AI is a powerful AI model that can be used to answer questions, generate content, and perform a variety of other tasks. params: - arg_name: gemini-enabled api_field: instance.geminiEnabled type: bool required: true help_text: | This specifies whether Gemini AI is enabled on the Looker instance. To disable Gemini AI, use the `--no-gemini-enabled` flag. - arg_name: gemini-preview-tester-enabled api_field: instance.geminiAiConfig.trustedTester required: true type: bool help_text: | This specifies whether user opts in for Gemini AI public preview for the Looker instance. To disable Gemini AI public preview, use the `--no-gemini-preview-tester-enabled` flag. - arg_name: gemini-prompt-log-enabled api_field: instance.geminiAiConfig.promptLogging required: true type: bool help_text: | This specifies whether user opts in for Gemini AI prompt logging for the Looker instance. To disable Gemini AI prompt logging, use the `--no-gemini-prompt-log-enabled` flag. # Group for Custom Domain - group: required: false help_text: | Custom Domains - Looker (Google Cloud core) lets you serve your application through a custom domain. If you use a custom domain, Google will provide a managed auto-renewing SSL certificate for security. DNS changes can take up to 24 hours to take effect. Your SSL certificate will take several minutes to activate. Note that you must get the Type A DNS Record from the Google Cloud Console and update with your domain registrar for your custom domain to work properly. params: - arg_name: custom-domain api_field: instance.customDomain.domain help_text: | Domain name wanted to serve the Looker instance. # Group for PSC - group: required: false help_text: | Private Service Connect - Private Service Connect allows the Looker Instance to be reached via a private connection from inside a VPC network, and for the Looker Instance to connect to managed services via private connections. params: - group: mutex: true params: - api_field: instance.pscConfig.allowedVpcs arg_name: psc-allowed-vpcs help_text: | List of VPCs that are allowed ingress into the Looker instance. - arg_name: clear-psc-allowed-vpcs action: store_true help_text: | Remove all service attachments from the PSC config of the instance. - group: mutex: true params: - api_field: instance.pscConfig.serviceAttachments arg_name: psc-service-attachment help_text: | Service attachments representing egress connections for the Looker instance. This flag can be repeated. (Example: --psc-service-attachment domain="mydomain.com",attachment="projects/my-project/regions/us-east1/serviceAttachments/sa" --psc-service-attachments domain="mydomain2.com",attachment="projects/my-project/regions/us-east1/serviceAttachments/sa2") You can also assign multiple domains to a single service attachment. (Example: --psc-service-attachment multiple-domains="mydomain.com;mydomain2.com",attachment="projects/my-project/regions/us-east1/serviceAttachments/sa") type: arg_dict: flatten: false spec: - api_field: localFqdn arg_name: domain required: false type: str - api_field: targetServiceAttachmentUri arg_name: attachment type: str - api_field: localFqdns required: false arg_name: multiple-domains type: 'googlecloudsdk.calliope.arg_parsers:ArgList:custom_delim_char=;' - arg_name: clear-psc-service-attachments action: store_true help_text: | Remove all allowed VPCs from the PSC config of the instance. # Group for Periodic Export Config - group: required: false mutex: true params: - group: help_text: | Configuration for periodic export. All flags in this group must be provided to enable or update the configuration. params: - arg_name: periodic-export-kms-key api_field: instance.periodicExportConfig.kmsKey required: false help_text: | Name of the CMEK key in KMS. Format: projects/{project}/locations/{location}/keyRings/{key_ring}/cryptoKeys/{crypto_key} - arg_name: periodic-export-gcs-uri api_field: instance.periodicExportConfig.gcsUri required: false help_text: | Cloud Storage bucket URI for periodic export. Format: gs://{bucket_name} - arg_name: periodic-export-start-time api_field: instance.periodicExportConfig.startTime required: false GA: processor: googlecloudsdk.command_lib.looker.instances_util:ParseTimeOfDayPeriodicExportStartTimeV1 ALPHA: processor: googlecloudsdk.command_lib.looker.instances_util:ParseTimeOfDayPeriodicExportStartTimeV1Alpha help_text: | Time in UTC when the periodic export job starts. A valid time of day must be specified in 24hr format (ex: 13:00, 17:30, 23:45). - arg_name: clear-periodic-export-config action: 'store_true' help_text: | Clears all periodic export configuration from the instance. # Group for Controlled Egress - group: required: false release_tracks: [ALPHA, GA] help_text: | Controlled Egress - Controlled egress allows you to egress data from a Looker (Google Cloud core) instance to a third party service provider. params: - arg_name: egress-enabled api_field: instance.controlledEgressEnabled type: bool required: false help_text: | This specifies whether controlled egress is enabled on the Looker instance. To disable controlled egress, use the `--no-egress-enabled` flag. - arg_name: marketplace-enabled api_field: instance.controlledEgressConfig.marketplaceEnabled type: bool required: false help_text: | This specifies whether marketplace is enabled for controlled egress on the Looker instance. To disable marketplace for controlled egress, use the `--no-marketplace-enabled` flag. - arg_name: egress-fqdns api_field: instance.controlledEgressConfig.egressFqdns required: false help_text: | List of FQDNs that are allowed to egress from the Looker instance. Example: `--egress-fqdns="github.com,my.salesforce.com"`. To clear all egress FQDNs, use `--egress-fqdns=""`. request: ALPHA: api_version: v1alpha2 modify_request_hooks: - googlecloudsdk.command_lib.looker.instances_update_util:UpdateOauthClient - googlecloudsdk.command_lib.looker.instances_update_util:ModifyAllowedEmailDomains - googlecloudsdk.command_lib.looker.instances_update_util:UpdateMaintenanceWindow - googlecloudsdk.command_lib.looker.instances_update_util:UpdateUserMetadata - googlecloudsdk.command_lib.looker.instances_update_util:UpdateDenyMaintenancePeriod - googlecloudsdk.command_lib.looker.instances_update_util:UpdatePublicIPEnabled - googlecloudsdk.command_lib.looker.instances_update_util:UpdateCustomDomain - googlecloudsdk.command_lib.looker.instances_update_util:UpdatePscAllowedVpcs - googlecloudsdk.command_lib.looker.instances_update_util:UpdatePscServiceAttachments - googlecloudsdk.command_lib.looker.instances_update_util:UpdateGeminiAiConfig - googlecloudsdk.command_lib.looker.instances_update_util:UpdatePeriodicExportConfig - googlecloudsdk.command_lib.looker.instances_update_util:UpdateControlledEgressConfig GA: api_version: v1 modify_request_hooks: - googlecloudsdk.command_lib.looker.instances_update_util:UpdateOauthClient - googlecloudsdk.command_lib.looker.instances_update_util:ModifyAllowedEmailDomains - googlecloudsdk.command_lib.looker.instances_update_util:UpdateMaintenanceWindow - googlecloudsdk.command_lib.looker.instances_update_util:UpdateUserMetadata - googlecloudsdk.command_lib.looker.instances_update_util:UpdateDenyMaintenancePeriod - googlecloudsdk.command_lib.looker.instances_update_util:UpdatePublicIPEnabled - googlecloudsdk.command_lib.looker.instances_update_util:UpdateCustomDomain - googlecloudsdk.command_lib.looker.instances_update_util:UpdatePscAllowedVpcs - googlecloudsdk.command_lib.looker.instances_update_util:UpdatePscServiceAttachments - googlecloudsdk.command_lib.looker.instances_update_util:UpdatePeriodicExportConfig - googlecloudsdk.command_lib.looker.instances_update_util:UpdateControlledEgressConfig collection: looker.projects.locations.instances update: disable_auto_field_mask: true async: collection: looker.projects.locations.operations output: format: none