예제 #1
0
    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')
예제 #2
0
    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)
예제 #3
0
    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')
예제 #4
0
    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')
예제 #5
0
    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