Beispiel #1
0
    def CreateAutoscalerResource(self, igm_ref, args):
        if _IsZonalGroup(igm_ref):
            scope_type = 'zone'
            location = managed_instance_groups_utils.CreateZoneRef(
                self.resources, igm_ref)
            zones, regions = [location], None
        else:
            scope_type = 'region'
            location = managed_instance_groups_utils.CreateRegionRef(
                self.resources, igm_ref)
            zones, regions = None, [location]

        autoscaler = managed_instance_groups_utils.AutoscalerForMig(
            mig_name=igm_ref.Name(),
            autoscalers=managed_instance_groups_utils.AutoscalersForLocations(
                regions=regions,
                zones=zones,
                compute=self.compute,
                http=self.http,
                batch_url=self.batch_url),
            location=location,
            scope_type=scope_type)
        autoscaler_name = getattr(autoscaler, 'name', None)
        new_one = autoscaler_name is None
        autoscaler_name = autoscaler_name or args.name

        if _IsZonalGroup(igm_ref):
            autoscaler_resource = managed_instance_groups_utils.BuildAutoscaler(
                args, self.messages, igm_ref, autoscaler_name)
        else:
            autoscaler_resource = managed_instance_groups_utils.BuildAutoscaler(
                args, self.messages, igm_ref, autoscaler_name)

        return autoscaler_resource, new_one
    def GetAutoscalerResource(self, igm_ref, args):
        if _IsZonalGroup(igm_ref):
            scope_name = igm_ref.zone
            scope_type = 'zone'
            zones, regions = [scope_name], None
        else:
            scope_name = igm_ref.region
            scope_type = 'region'
            zones, regions = None, [scope_name]

        autoscaler = managed_instance_groups_utils.AutoscalerForMig(
            mig_name=args.name,
            autoscalers=managed_instance_groups_utils.AutoscalersForLocations(
                regions=regions,
                zones=zones,
                project=self.project,
                compute=self.compute,
                http=self.http,
                batch_url=self.batch_url),
            project=self.project,
            scope_name=scope_name,
            scope_type=scope_type)
        if autoscaler is None:
            raise managed_instance_groups_utils.ResourceNotFoundException(
                'The managed instance group is not autoscaled.')
        return autoscaler
Beispiel #3
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 #4
0
 def CreateAutoscalerResource(self, igm_ref, args):
     zone = args.zone or igm_ref.zone
     autoscaler = managed_instance_groups_utils.AutoscalerForMig(
         mig_name=igm_ref.Name(),
         autoscalers=managed_instance_groups_utils.AutoscalersForLocations(
             regions=None,
             zones=[zone],
             project=self.project,
             compute=self.compute,
             http=self.http,
             batch_url=self.batch_url),
         scope_name=zone,
         scope_type='zone',
         project=self.project)
     autoscaler_name = getattr(autoscaler, 'name', None)
     as_ref = self.CreateZonalReference(autoscaler_name or args.name, zone)
     return managed_instance_groups_utils.BuildAutoscaler(
         args, self.messages, as_ref, igm_ref), autoscaler_name is None
    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, )
Beispiel #6
0
    def CreateAutoscalerResource(self, igm_ref, args):
        if _IsZonalGroup(igm_ref):
            scope_name = igm_ref.zone
            scope_type = 'zone'
            zones, regions = [scope_name], None
        else:
            scope_name = igm_ref.region
            scope_type = 'region'
            zones, regions = None, [scope_name]

        autoscaler = managed_instance_groups_utils.AutoscalerForMig(
            mig_name=igm_ref.Name(),
            autoscalers=managed_instance_groups_utils.AutoscalersForLocations(
                regions=regions,
                zones=zones,
                project=self.project,
                compute=self.compute,
                http=self.http,
                batch_url=self.batch_url),
            scope_name=scope_name,
            scope_type=scope_type,
            project=self.project)
        autoscaler_name = getattr(autoscaler, 'name', None)

        if _IsZonalGroup(igm_ref):
            as_ref = self.CreateZonalReference(autoscaler_name or args.name,
                                               scope_name,
                                               resource_type='autoscalers')
        else:
            as_ref = self.CreateRegionalReference(
                autoscaler_name or args.name,
                scope_name,
                resource_type='regionAutoscalers')

        autoscaler_resource = managed_instance_groups_utils.BuildAutoscaler(
            args, self.messages, as_ref, igm_ref)
        if not _IsZonalGroup(igm_ref):
            region_link = self.CreateRegionalReference(as_ref.region,
                                                       as_ref.region,
                                                       resource_type='regions')
            autoscaler_resource.region = region_link.SelfLink()

        return autoscaler_resource, autoscaler_name is None
    def GetAutoscalerResource(self, client, resources, igm_ref, args):
        if _IsZonalGroup(igm_ref):
            scope_type = 'zone'
            location = managed_instance_groups_utils.CreateZoneRef(
                resources, igm_ref)
            zones, regions = [location], None
        else:
            scope_type = 'region'
            location = managed_instance_groups_utils.CreateRegionRef(
                resources, igm_ref)
            zones, regions = None, [location]

        autoscaler = managed_instance_groups_utils.AutoscalerForMig(
            mig_name=args.name,
            autoscalers=managed_instance_groups_utils.AutoscalersForLocations(
                regions=regions, zones=zones, client=client),
            location=location,
            scope_type=scope_type)
        if autoscaler is None:
            raise managed_instance_groups_utils.ResourceNotFoundException(
                'The managed instance group is not autoscaled.')
        return autoscaler