def Run(self, args): """See base class.""" release_track = self.ReleaseTrack() client = osconfig_api_utils.GetClientInstance( release_track, api_version_override='v1beta') messages = osconfig_api_utils.GetClientMessages( release_track, api_version_override='v1beta') ops_agents_policy = agent_policy.CreateOpsAgentPolicy( args.description, args.agent_rules, args.group_labels, args.os_types, args.zones, args.instances) validator.ValidateOpsAgentsPolicy(ops_agents_policy) guest_policy = to_guest_policy.ConvertOpsAgentPolicyToGuestPolicy( messages, ops_agents_policy) project = properties.VALUES.core.project.GetOrFail() parent_path = osconfig_command_utils.GetProjectUriPath(project) request = messages.OsconfigProjectsGuestPoliciesCreateRequest( guestPolicy=guest_policy, guestPolicyId=args.POLICY_ID, parent=parent_path, ) service = client.projects_guestPolicies complete_guest_policy = service.Create(request) ops_agents_policy = to_ops_agents.ConvertGuestPolicyToOpsAgentPolicy( complete_guest_policy) return ops_agents_policy
def Run(self, args): release_track = self.ReleaseTrack() client = osconfig_api_utils.GetClientInstance(release_track) messages = osconfig_api_utils.GetClientMessages(release_track) if args.organization: request = messages.OsconfigOrganizationsGuestPoliciesListRequest( pageSize=args.page_size, parent=osconfig_command_utils.GetOrganizationUriPath( args.organization), ) service = client.organizations_guestPolicies elif args.folder: request = messages.OsconfigFoldersGuestPoliciesListRequest( pageSize=args.page_size, parent=osconfig_command_utils.GetFolderUriPath(args.folder), ) service = client.folders_guestPolicies else: project = properties.VALUES.core.project.GetOrFail() request = messages.OsconfigProjectsGuestPoliciesListRequest( pageSize=args.page_size, parent=osconfig_command_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 _CreateExecuteRequestAlpha(messages, project, description, dry_run, duration, patch_config, patch_rollout, display_name, filter_all, filter_group_labels, filter_zones, filter_names, filter_name_prefixes, filter_expression): """Creates an ExecuteRequest message for the Alpha track.""" if filter_expression: return messages.OsconfigProjectsPatchJobsExecuteRequest( executePatchJobRequest=messages.ExecutePatchJobRequest( description=description, displayName=display_name, dryRun=dry_run, duration=duration, filter=filter_expression, patchConfig=patch_config, rollout=patch_rollout, ), parent=osconfig_command_utils.GetProjectUriPath(project)) elif not any([ filter_all, filter_group_labels, filter_zones, filter_names, filter_name_prefixes ]): return messages.OsconfigProjectsPatchJobsExecuteRequest( executePatchJobRequest=messages.ExecutePatchJobRequest( description=description, displayName=display_name, dryRun=dry_run, duration=duration, instanceFilter=messages.PatchInstanceFilter(all=True), patchConfig=patch_config, rollout=patch_rollout, ), parent=osconfig_command_utils.GetProjectUriPath(project)) else: return _CreateExecuteRequest(messages, project, description, dry_run, duration, patch_config, patch_rollout, display_name, filter_all, filter_group_labels, filter_zones, filter_names, filter_name_prefixes)
def _CreateExecuteRequest(messages, project, description, dry_run, duration, patch_config, patch_rollout, display_name, filter_all, filter_group_labels, filter_zones, filter_names, filter_name_prefixes): """Creates an ExecuteRequest message for the Beta track.""" patch_instance_filter = _CreatePatchInstanceFilter( messages, filter_all, filter_group_labels, filter_zones, filter_names, filter_name_prefixes, ) if patch_rollout: return messages.OsconfigProjectsPatchJobsExecuteRequest( executePatchJobRequest=messages.ExecutePatchJobRequest( description=description, displayName=display_name, dryRun=dry_run, duration=duration, instanceFilter=patch_instance_filter, patchConfig=patch_config, rollout=patch_rollout, ), parent=osconfig_command_utils.GetProjectUriPath(project)) else: return messages.OsconfigProjectsPatchJobsExecuteRequest( executePatchJobRequest=messages.ExecutePatchJobRequest( description=description, displayName=display_name, dryRun=dry_run, duration=duration, instanceFilter=patch_instance_filter, patchConfig=patch_config, ), parent=osconfig_command_utils.GetProjectUriPath(project))
def Run(self, args): release_track = self.ReleaseTrack() client = osconfig_api_utils.GetClientInstance(release_track) messages = osconfig_api_utils.GetClientMessages(release_track) (patch_deployment, _) = osconfig_command_utils.GetResourceAndUpdateFieldsFromFile( args.file, messages.PatchDeployment) project = properties.VALUES.core.project.GetOrFail() parent_path = osconfig_command_utils.GetProjectUriPath(project) request = messages.OsconfigProjectsPatchDeploymentsCreateRequest( patchDeployment=patch_deployment, patchDeploymentId=args.PATCH_DEPLOYMENT_ID, parent=parent_path, ) return client.projects_patchDeployments.Create(request)
def Run(self, args): """See base class.""" release_track = self.ReleaseTrack() client = osconfig_api_utils.GetClientInstance( release_track, api_version_override='v1beta') messages = osconfig_api_utils.GetClientMessages( release_track, api_version_override='v1beta') project = properties.VALUES.core.project.GetOrFail() request = messages.OsconfigProjectsGuestPoliciesListRequest( pageSize=args.page_size, parent=osconfig_command_utils.GetProjectUriPath(project), ) service = client.projects_guestPolicies for guest_policy in list_pager.YieldFromList( service, request, limit=args.limit, predicate=guest_policy_validator.IsOpsAgentPolicy, batch_size=osconfig_command_utils.GetListBatchSize(args), field='guestPolicies', batch_size_attribute='pageSize', ): try: yield converter.ConvertGuestPolicyToOpsAgentPolicy(guest_policy) except exceptions.BadArgumentException: log.warning( 'Encountered a malformed policy. The Ops Agents policy [%s] may ' 'have been modified directly by the OS Config guest policy API / ' 'gcloud commands. If so, please delete and re-create with the Ops ' 'Agents policy gcloud commands. If not, this may be an internal ' 'error.', guest_policy.name, ) yield agent_policy.OpsAgentPolicy( assignment=None, agent_rules=None, description='<MALFORMED>', etag=None, name=guest_policy.name, update_time=guest_policy.updateTime, create_time=guest_policy.createTime )
def Run(self, args): project = properties.VALUES.core.project.GetOrFail() release_track = self.ReleaseTrack() client = osconfig_api_utils.GetClientInstance(release_track) messages = osconfig_api_utils.GetClientMessages(release_track) request = messages.OsconfigProjectsPatchJobsListRequest( pageSize=args.page_size, parent=osconfig_command_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): """See base class.""" release_track = self.ReleaseTrack() client = osconfig_api_utils.GetClientInstance(release_track) messages = osconfig_api_utils.GetClientMessages(release_track) (guest_policy, _) = osconfig_command_utils.GetResourceAndUpdateFieldsFromFile( args.file, messages.GuestPolicy) project = properties.VALUES.core.project.GetOrFail() parent_path = osconfig_command_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): """See base class.""" release_track = self.ReleaseTrack() client = osconfig_api_utils.GetClientInstance(release_track) messages = osconfig_api_utils.GetClientMessages(release_track) project = properties.VALUES.core.project.GetOrFail() request = messages.OsconfigProjectsGuestPoliciesListRequest( pageSize=args.page_size, parent=osconfig_command_utils.GetProjectUriPath(project), ) service = client.projects_guestPolicies return list_pager.YieldFromList( service, request, limit=args.limit, batch_size=osconfig_command_utils.GetListBatchSize(args), field='guestPolicies', batch_size_attribute='pageSize', )
def Run(self, args): release_track = self.ReleaseTrack() client = osconfig_api_utils.GetClientInstance(release_track) messages = osconfig_api_utils.GetClientMessages(release_track) (guest_policy, _) = osconfig_command_utils.GetResourceAndUpdateFieldsFromFile( args.file, messages.GuestPolicy) if args.organization: parent_path = osconfig_command_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_command_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_command_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): project = properties.VALUES.core.project.GetOrFail() release_track = self.ReleaseTrack() client = osconfig_api_utils.GetClientInstance(release_track) messages = osconfig_api_utils.GetClientMessages(release_track) duration = six.text_type(args.duration) + 's' if args.duration else None filter_arg = 'id=*' if not args.instance_filter else args.instance_filter 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( rebootConfig=reboot_config, retryStrategy=retry_strategy, apt=_GetAptSettings(args, messages), windowsUpdate=_GetWindowsUpdateSettings(args, messages), yum=_GetYumSettings(args, messages), zypper=_GetZypperSettings(args, messages), preStep=_GetPrePostPatchStepSettings( args, messages, is_pre_patch_step=True), postStep=_GetPrePostPatchStepSettings( args, messages, is_pre_patch_step=False), ) request = messages.OsconfigProjectsPatchJobsExecuteRequest( executePatchJobRequest=messages.ExecutePatchJobRequest( description=args.description, dryRun=args.dry_run, duration=duration, filter=filter_arg, patchConfig=patch_config, ), parent=osconfig_command_utils.GetProjectUriPath(project)) async_response = client.projects_patchJobs.Execute(request) patch_job_name = osconfig_command_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_api_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