def Run(self, args): release_track = self.ReleaseTrack() holder = base_classes.ComputeApiHolder(release_track) instance_ref = self._GetInstanceRef(holder, args) guest_attributes = self._GetGuestInventoryGuestAttributes( holder, instance_ref) os_info = self._GetOsInfo(guest_attributes) os_architecture = os_info.get(self._OS_ARCHITECTURE_KEY) os_shortname = os_info.get(self._OS_SHORTNAME_KEY) os_version = os_info.get(self._OS_VERSION_KEY) client = osconfig_utils.GetClientInstance(release_track) messages = osconfig_utils.GetClientMessages(release_track) request = messages.OsconfigProjectsZonesInstancesLookupGuestPoliciesRequest( instance=instance_ref.RelativeName(), lookupEffectiveGuestPoliciesRequest=messages. LookupEffectiveGuestPoliciesRequest(osArchitecture=os_architecture, osShortName=os_shortname, osVersion=os_version)) service = client.projects_zones_instances response = service.LookupGuestPolicies(request) # TODO(b/135553671): add Software Recipes to this check if not response.packages and not response.packageRepositories: log.status.Print( 'No effective guest policy found for [{}].'.format( instance_ref.RelativeName())) return response
def Run(self, args): release_track = self.ReleaseTrack() client = osconfig_utils.GetClientInstance(release_track) messages = osconfig_utils.GetClientMessages(release_track) guest_policy_name = '' if args.organization: guest_policy_name = osconfig_utils.GetGuestPolicyUriPath( 'organizations', args.organization, args.POLICY_ID) request = messages.OsconfigOrganizationsGuestPoliciesDeleteRequest( name=guest_policy_name) service = client.organizations_guestPolicies elif args.folder: guest_policy_name = osconfig_utils.GetGuestPolicyUriPath( 'folders', args.folder, args.POLICY_ID) request = messages.OsconfigFoldersGuestPoliciesDeleteRequest( name=guest_policy_name) service = client.folders_guestPolicies else: project = properties.VALUES.core.project.GetOrFail() guest_policy_name = osconfig_utils.GetGuestPolicyUriPath( 'projects', project, args.POLICY_ID) request = messages.OsconfigProjectsGuestPoliciesDeleteRequest( name=guest_policy_name) service = client.projects_guestPolicies response = service.Delete(request) log.DeletedResource(guest_policy_name) return response
def Run(self, args): release_track = self.ReleaseTrack() client = osconfig_utils.GetClientInstance(release_track) messages = osconfig_utils.GetClientMessages(release_track) (guest_policy, _) = osconfig_utils.GetResourceAndUpdateFieldsFromFile( args.file, messages.GuestPolicy) if args.organization: parent_path = osconfig_utils.GetOrganizationUriPath( args.organization) request = messages.OsconfigOrganizationsGuestPoliciesCreateRequest( guestPolicy=guest_policy, guestPolicyId=args.POLICY_ID, parent=parent_path) service = client.organizations_guestPolicies elif args.folder: parent_path = osconfig_utils.GetFolderUriPath(args.folder) request = messages.OsconfigFoldersGuestPoliciesCreateRequest( guestPolicy=guest_policy, guestPolicyId=args.POLICY_ID, parent=parent_path) service = client.folders_guestPolicies else: project = properties.VALUES.core.project.GetOrFail() parent_path = osconfig_utils.GetProjectUriPath(project) request = messages.OsconfigProjectsGuestPoliciesCreateRequest( guestPolicy=guest_policy, guestPolicyId=args.POLICY_ID, parent=parent_path) service = client.projects_guestPolicies return service.Create(request)
def Run(self, args): guest_policy_ref = args.CONCEPTS.guest_policy.Parse() release_track = self.ReleaseTrack() client = osconfig_utils.GetClientInstance(release_track) messages = osconfig_utils.GetClientMessages(release_track) guest_policy_type = guest_policy_ref.type_ guest_policy_name = guest_policy_ref.result.RelativeName() if guest_policy_type == type( guest_policy_type).organization_guest_policy: request = messages.OsconfigOrganizationsGuestPoliciesDeleteRequest( name=guest_policy_name) service = client.organizations_guestPolicies elif guest_policy_type == type(guest_policy_type).folder_guest_policy: request = messages.OsconfigFoldersGuestPoliciesDeleteRequest( name=guest_policy_name) service = client.folders_guestPolicies else: request = messages.OsconfigProjectsGuestPoliciesDeleteRequest( name=guest_policy_name) service = client.projects_guestPolicies response = service.Delete(request) log.DeletedResource(guest_policy_name) return response
def Run(self, args): release_track = self.ReleaseTrack() client = osconfig_utils.GetClientInstance(release_track) messages = osconfig_utils.GetClientMessages(release_track) if args.organization: request = messages.OsconfigOrganizationsGuestPoliciesListRequest( pageSize=args.page_size, parent=osconfig_utils.GetOrganizationUriPath( args.organization)) service = client.organizations_guestPolicies elif args.folder: request = messages.OsconfigFoldersGuestPoliciesListRequest( pageSize=args.page_size, parent=osconfig_utils.GetFolderUriPath(args.folder)) service = client.folders_guestPolicies else: project = properties.VALUES.core.project.GetOrFail() request = messages.OsconfigProjectsGuestPoliciesListRequest( pageSize=args.page_size, parent=osconfig_utils.GetProjectUriPath(project)) service = client.projects_guestPolicies return list_pager.YieldFromList(service, request, limit=args.limit, batch_size=args.page_size, field='guestPolicies', batch_size_attribute='pageSize')
def Run(self, args): project = properties.VALUES.core.project.GetOrFail() patch_job_ref = args.CONCEPTS.patch_job.Parse() release_track = self.ReleaseTrack() # TODO(b/133780270): Migrate to v1alpha2. api_version = 'v1alpha1' client = osconfig_utils.GetClientInstance( release_track, api_version_override=api_version) messages = osconfig_utils.GetClientMessages( release_track, api_version_override=api_version) request = messages.OsconfigProjectsPatchJobsInstanceDetailsListRequest( pageSize=args.page_size, parent=osconfig_utils.GetPatchJobUriPath(project, patch_job_ref.Name())) results = list( list_pager.YieldFromList(client.projects_patchJobs_instanceDetails, request, limit=args.limit, batch_size=args.page_size, field='patchJobInstanceDetails', batch_size_attribute='pageSize')) return _PostProcessListResult(results)
def Run(self, args): project = properties.VALUES.core.project.GetOrFail() patch_job_ref = args.CONCEPTS.patch_job.Parse() release_track = self.ReleaseTrack() client = osconfig_utils.GetClientInstance(release_track) messages = osconfig_utils.GetClientMessages(release_track) request = messages.OsconfigProjectsPatchJobsGetRequest( name=osconfig_utils.GetPatchJobUriPath(project, patch_job_ref.Name())) return client.projects_patchJobs.Get(request)
def Run(self, args): project = properties.VALUES.core.project.GetOrFail() patch_job_ref = args.CONCEPTS.patch_job.Parse() release_track = self.ReleaseTrack() # TODO(b/133780270): Migrate to v1alpha2. api_version = 'v1alpha1' client = osconfig_utils.GetClientInstance( release_track, api_version_override=api_version) messages = osconfig_utils.GetClientMessages( release_track, api_version_override=api_version) request = messages.OsconfigProjectsPatchJobsGetRequest( name=osconfig_utils.GetPatchJobUriPath(project, patch_job_ref.Name())) return client.projects_patchJobs.Get(request)
def Run(self, args): guest_policy_ref = args.CONCEPTS.guest_policy.Parse() guest_policy_type = guest_policy_ref.type_ guest_policy_name = guest_policy_ref.result.RelativeName() release_track = self.ReleaseTrack() client = osconfig_utils.GetClientInstance(release_track) messages = osconfig_utils.GetClientMessages(release_track) update_fields = [] if args.file: (guest_policy, update_fields ) = osconfig_utils.GetResourceAndUpdateFieldsFromFile( args.file, messages.GuestPolicy) else: guest_policy = messages.GuestPolicy() if args.description: guest_policy.description = args.description update_fields.append('description') if args.etag: guest_policy.etag = args.etag update_fields.append('etag') update_mask = ','.join(sorted(list(set(update_fields)))) if args.organization or guest_policy_type == type( guest_policy_type).organization_guest_policy: request = messages.OsconfigOrganizationsGuestPoliciesPatchRequest( guestPolicy=guest_policy, name=guest_policy_name, updateMask=update_mask) service = client.organizations_guestPolicies elif args.folder or guest_policy_type == type( guest_policy_type).folder_guest_policy: request = messages.OsconfigFoldersGuestPoliciesPatchRequest( guestPolicy=guest_policy, name=guest_policy_name, updateMask=update_mask) service = client.folders_guestPolicies else: request = messages.OsconfigProjectsGuestPoliciesPatchRequest( guestPolicy=guest_policy, name=guest_policy_name, updateMask=update_mask) service = client.projects_guestPolicies return service.Patch(request)
def Run(self, args): project = properties.VALUES.core.project.GetOrFail() release_track = self.ReleaseTrack() client = osconfig_utils.GetClientInstance(release_track) messages = osconfig_utils.GetClientMessages(release_track) request = messages.OsconfigProjectsPatchJobsListRequest( pageSize=args.page_size, parent=osconfig_utils.GetProjectUriPath(project)) return list_pager.YieldFromList(client.projects_patchJobs, request, limit=args.limit, batch_size=args.page_size, field='patchJobs', batch_size_attribute='pageSize')
def Run(self, args): release_track = self.ReleaseTrack() client = osconfig_utils.GetClientInstance(release_track) messages = osconfig_utils.GetClientMessages(release_track) update_fields = [] if args.file: (guest_policy, update_fields) = osconfig_utils.GetResourceAndUpdateFieldsFromFile( args.file, messages.GuestPolicy) else: guest_policy = messages.GuestPolicy() if args.description: guest_policy.description = args.description update_fields.append('description') if args.etag: guest_policy.etag = args.etag update_fields.append('etag') update_mask = ','.join(sorted(list(set(update_fields)))) if args.organization: request = messages.OsconfigOrganizationsGuestPoliciesPatchRequest( guestPolicy=guest_policy, name=osconfig_utils.GetGuestPolicyUriPath('organizations', args.organization, args.POLICY_ID), updateMask=update_mask) service = client.organizations_guestPolicies elif args.folder: request = messages.OsconfigFoldersGuestPoliciesPatchRequest( guestPolicy=guest_policy, name=osconfig_utils.GetGuestPolicyUriPath('folders', args.folder, args.POLICY_ID), updateMask=update_mask) service = client.folders_guestPolicies else: project = properties.VALUES.core.project.GetOrFail() request = messages.OsconfigProjectsGuestPoliciesPatchRequest( guestPolicy=guest_policy, name=osconfig_utils.GetGuestPolicyUriPath('projects', project, args.POLICY_ID), updateMask=update_mask) service = client.projects_guestPolicies return service.Patch(request)
def Run(self, args): project = properties.VALUES.core.project.GetOrFail() release_track = self.ReleaseTrack() # TODO(b/133780270): Migrate to v1alpha2. api_version = 'v1alpha1' client = osconfig_utils.GetClientInstance( release_track, api_version_override=api_version) messages = osconfig_utils.GetClientMessages( release_track, api_version_override=api_version) request = messages.OsconfigProjectsPatchJobsListRequest( pageSize=args.page_size, parent=osconfig_utils.GetProjectUriPath(project)) return list_pager.YieldFromList(client.projects_patchJobs, request, limit=args.limit, batch_size=args.page_size, field='patchJobs', batch_size_attribute='pageSize')
def Run(self, args): release_track = self.ReleaseTrack() client = osconfig_utils.GetClientInstance(release_track) messages = osconfig_utils.GetClientMessages(release_track) if args.organization: request = messages.OsconfigOrganizationsGuestPoliciesGetRequest( name=osconfig_utils.GetGuestPolicyUriPath( 'organizations', args.organization, args.POLICY_ID)) service = client.organizations_guestPolicies elif args.folder: request = messages.OsconfigFoldersGuestPoliciesGetRequest( name=osconfig_utils.GetGuestPolicyUriPath( 'folders', args.folder, args.POLICY_ID)) service = client.folders_guestPolicies else: project = properties.VALUES.core.project.GetOrFail() request = messages.OsconfigProjectsGuestPoliciesGetRequest( name=osconfig_utils.GetGuestPolicyUriPath( 'projects', project, args.POLICY_ID)) service = client.projects_guestPolicies return service.Get(request)
def Run(self, args): project = properties.VALUES.core.project.GetOrFail() release_track = self.ReleaseTrack() client = osconfig_utils.GetClientInstance(release_track) messages = osconfig_utils.GetClientMessages(release_track) duration = str(args.duration) + 's' if args.duration else None filter_arg = 'id=*' if not args.instance_filter else args.instance_filter apt_settings = messages.AptSettings( type=messages.AptSettings.TypeValueValuesEnum.DIST ) if args.apt_dist else None reboot_config = getattr( messages.PatchConfig.RebootConfigValueValuesEnum, args.reboot_config.upper()) if args.reboot_config else None retry_strategy = messages.RetryStrategy( enabled=True) if args.retry else None patch_config = messages.PatchConfig( apt=apt_settings, rebootConfig=reboot_config, retryStrategy=retry_strategy, windowsUpdate=_GetWindowsUpdateSettings(args, messages), yum=_GetYumSettings(args, messages)) request = messages.OsconfigProjectsPatchJobsExecuteRequest( executePatchJobRequest=messages.ExecutePatchJobRequest( description=args.description, dryRun=args.dry_run, duration=duration, filter=filter_arg, patchConfig=patch_config), parent=osconfig_utils.GetProjectUriPath(project)) async_response = client.projects_patchJobs.Execute(request) patch_job_name = osconfig_utils.GetPatchJobName(async_response.name) if args. async: log.status.Print('Execution in progress for patch job [{}]'.format( patch_job_name)) log.status.Print( 'Run the [{} describe] command to check the status of this execution.' .format(self._command_prefix)) return async_response # Execute the patch job synchronously. patch_job_poller = osconfig_utils.Poller(client, messages) get_request = messages.OsconfigProjectsPatchJobsGetRequest( name=async_response.name) sync_response = waiter.WaitFor( patch_job_poller, get_request, custom_tracker=_GetProgressTracker(patch_job_name), tracker_update_func=_UpdateProgressTracker, pre_start_sleep_ms=5000, exponential_sleep_multiplier=1, # Constant poll rate of 5s. sleep_ms=5000) log.status.Print( 'Execution for patch job [{}] has completed with status [{}].'. format(patch_job_name, sync_response.state)) log.status.Print( 'Run the [{} list-instance-details] command to view any ' 'instance failure reasons.'.format(self._command_prefix)) return sync_response