Beispiel #1
0
    def CreateRequests(self, args):
        managed_instance_groups_utils.ValidateAutoscalerArgs(args)

        igm_ref = self.CreateGroupReference(args)
        service = self.GetAutoscalerServiceForGroup(igm_ref)

        managed_instance_groups_utils.AssertInstanceGroupManagerExists(
            igm_ref, self.project, self.compute, self.http, self.batch_url)

        autoscaler_resource, is_new = self.CreateAutoscalerResource(
            igm_ref, args)

        if is_new:
            method = 'Insert'
            request = service.GetRequestType(method)(project=self.project)
            managed_instance_groups_utils.AdjustAutoscalerNameForCreation(
                autoscaler_resource)
            request.autoscaler = autoscaler_resource
        else:
            method = 'Update'
            request = service.GetRequestType(method)(project=self.project)
            request.autoscaler = autoscaler_resource.name
            request.autoscalerResource = autoscaler_resource

        self.ScopeRequest(request, igm_ref)
        return ((service, method, request), )
Beispiel #2
0
    def CreateRequests(self, args):
        igm_ref = self.CreateZonalReference(
            args.name, args.zone, resource_type='instanceGroupManagers')
        # We need the zone name, which might have been passed after prompting.
        # In that case, we get it from the reference.
        zone = args.zone or igm_ref.zone

        managed_instance_groups_utils.AssertInstanceGroupManagerExists(
            igm_ref, self.project, self.messages, self.compute, self.http,
            self.batch_url)

        autoscaler = managed_instance_groups_utils.AutoscalerForMig(
            mig_name=args.name,
            autoscalers=managed_instance_groups_utils.AutoscalersForZones(
                zones=[zone],
                project=self.project,
                compute=self.compute,
                http=self.http,
                batch_url=self.batch_url),
            project=self.project,
            zone=zone)
        if autoscaler is None:
            raise managed_instance_groups_utils.ResourceNotFoundException(
                'The managed instance group is not autoscaled.')
        as_ref = self.CreateZonalReference(autoscaler.name, zone)
        request = self.messages.ComputeAutoscalersDeleteRequest(
            project=self.project)
        request.zone = zone
        request.autoscaler = as_ref.Name()
        return (request, )
Beispiel #3
0
    def CreateRequests(self, args):
        igm_ref = self.CreateGroupReference(args)
        service = self.GetAutoscalerServiceForGroup(igm_ref)

        managed_instance_groups_utils.AssertInstanceGroupManagerExists(
            igm_ref, self.project, self.compute, self.http, self.batch_url)

        autoscaler = self.GetAutoscalerResource(igm_ref, args)
        request = service.GetRequestType(self.method)(
            project=self.project, autoscaler=autoscaler.name)
        self.ScopeRequest(request, igm_ref)
        return [(
            service,
            self.method,
            request,
        )]
    def CreateRequests(self, args):
        managed_instance_groups_utils.ValidateAutoscalerArgs(args)

        igm_ref = self.CreateZonalReference(
            args.name, args.zone, resource_type='instanceGroupManagers')
        # We need the zone name, which might have been passed after prompting.
        # In that case, we get it from the reference.
        zone = args.zone or igm_ref.zone

        managed_instance_groups_utils.AssertInstanceGroupManagerExists(
            igm_ref, self.project, self.messages, self.compute, self.http,
            self.batch_url)

        autoscaler = managed_instance_groups_utils.AutoscalerForMig(
            mig_name=args.name,
            autoscalers=managed_instance_groups_utils.AutoscalersForZones(
                zones=[zone],
                project=self.project,
                compute=self.compute,
                http=self.http,
                batch_url=self.batch_url),
            zone=zone,
            project=self.project)
        autoscaler_name = getattr(autoscaler, 'name', None)
        as_ref = self.CreateZonalReference(autoscaler_name or args.name, zone)
        autoscaler_resource = managed_instance_groups_utils.BuildAutoscaler(
            args, self.messages, as_ref, igm_ref)

        if autoscaler_name is None:
            self._method = 'Insert'
            request = self.messages.ComputeAutoscalersInsertRequest(
                project=self.project)
            managed_instance_groups_utils.AdjustAutoscalerNameForCreation(
                autoscaler_resource)
            request.autoscaler = autoscaler_resource
        else:
            self._method = 'Update'
            request = self.messages.ComputeAutoscalersUpdateRequest(
                project=self.project)
            request.autoscaler = as_ref.Name()
            request.autoscalerResource = autoscaler_resource

        request.zone = as_ref.zone
        return (request, )