Esempio n. 1
0
  def Run(self, args):
    holder = base_classes.ComputeApiHolder(self.ReleaseTrack())
    client = holder.client
    apitools_client = client.apitools_client
    messages = client.messages
    resources = holder.resources

    ref = flags.MULTISCOPE_INSTANCE_GROUP_MANAGER_ARG.ResolveAsResource(
        args, resources,
        scope_lister=compute_flags.GetDefaultScopeLister(client))

    if ref.Collection() == 'compute.instanceGroupManagers':
      service = apitools_client.instanceGroupManagers
      request_type = messages.ComputeInstanceGroupManagersGetRequest
    elif ref.Collection() == 'compute.regionInstanceGroupManagers':
      service = apitools_client.regionInstanceGroupManagers
      request_type = messages.ComputeRegionInstanceGroupManagersGetRequest

    igm = encoding.MessageToDict(service.Get(request_type(**ref.AsDict())))
    annoted_igm = managed_instance_groups_utils.AddAutoscalersToMigs(
        migs_iterator=[igm],
        client=client,
        resources=resources,
        fail_when_api_not_supported=False)

    return list(annoted_igm)[0]
 def ComputeDynamicProperties(self, args, items):
     """Add Autoscaler information if Autoscaler is defined for the item."""
     # Items are expected to be IGMs.
     return managed_instance_groups_utils.AddAutoscalersToMigs(
         migs_iterator=items,
         project=self.project,
         compute=self.compute,
         http=self.http,
         batch_url=self.batch_url,
         fail_when_api_not_supported=False)
Esempio n. 3
0
 def ComputeDynamicProperties(self, args, items):
     """Add Autoscaler information if Autoscaler is defined for the item."""
     # Items are expected to be IGMs.
     for mig in managed_instance_groups_utils.AddAutoscalersToMigs(
             migs_iterator=self.ComputeInstanceGroupSize(items=items),
             project=self.project,
             compute=self.compute,
             http=self.http,
             batch_url=self.batch_url,
             fail_when_api_not_supported=False):
         if 'autoscaler' in mig and mig['autoscaler'] is not None:
             mig['autoscaled'] = 'yes'
         else:
             mig['autoscaled'] = 'no'
         yield mig
Esempio n. 4
0
    def testAddAutoscalersToMigs(self):
        holder = base_classes.ComputeApiHolder(calliope_base.ReleaseTrack.GA)
        region = (
            'https://compute.googleapis.com/compute/v1/projects/{}/regions/'
            'us-central1').format(self.Project())
        migs = [{'region': region, 'name': 'my-mig'}]
        mig_url = ('https://compute.googleapis.com/compute/v1/projects/{}/'
                   'regions/us-central1/instanceGroupManagers/my-mig').format(
                       self.Project())
        autoscaler = self.messages.Autoscaler(region=region, target=mig_url)

        self.StartObjectPatch(managed_instance_groups_utils,
                              'AutoscalersForLocations',
                              return_value=[autoscaler])

        list(
            managed_instance_groups_utils.AddAutoscalersToMigs(
                iter(migs), holder.client, holder.resources))

        self.assertEqual(migs[0]['autoscaler'], autoscaler)
 def ComputeDynamicProperties(self, args, items):
     """Add Autoscaler information if Autoscaler is defined for the item."""
     _ = args
     # Items are expected to be IGMs.
     items = list(items)
     for mig in managed_instance_groups_utils.AddAutoscalersToMigs(
             migs_iterator=self.ComputeInstanceGroupSize(items=items),
             project=self.project,
             compute=self.compute,
             http=self.http,
             batch_url=self.batch_url,
             fail_when_api_not_supported=False):
         if 'autoscaler' in mig and mig['autoscaler'] is not None:
             if (hasattr(mig['autoscaler'], 'status')
                     and mig['autoscaler'].status ==
                     self.messages.Autoscaler.StatusValueValuesEnum.ERROR):
                 mig['autoscaled'] = 'yes (*)'
             else:
                 mig['autoscaled'] = 'yes'
         else:
             mig['autoscaled'] = 'no'
         yield mig
Esempio n. 6
0
 def ComputeDynamicProperties(self, args, items):
     """Add Autoscaler information if Autoscaler is defined for the item."""
     _ = args
     # Items are expected to be IGMs.
     items = list(items)
     for mig in managed_instance_groups_utils.AddAutoscalersToMigs(
             migs_iterator=self.ComputeInstanceGroupSize(items=items),
             client=self.compute_client,
             resources=self.resources,
             fail_when_api_not_supported=False):
         if 'autoscaler' in mig and mig['autoscaler'] is not None:
             # status is present in autoscaler iff Autoscaler message has embedded
             # StatusValueValuesEnum defined.
             if (getattr(mig['autoscaler'], 'status', False)
                     and mig['autoscaler'].status ==
                     self.messages.Autoscaler.StatusValueValuesEnum.ERROR):
                 mig['autoscaled'] = 'yes (*)'
                 self._had_errors = True
             else:
                 mig['autoscaled'] = 'yes'
         else:
             mig['autoscaled'] = 'no'
         yield mig