def test_implicitly_drained(self):
    """Ensures implicitly drained entities are returned."""
    key = models.InstanceGroupManager(
        key=instance_group_managers.get_instance_group_manager_key(
            'base-name',
            'revision',
            'zone',
        ),
    ).put()
    models.InstanceTemplateRevision(
        key=key.parent(),
        active=[
            key,
        ],
    ).put()
    models.InstanceTemplate(
        key=key.parent().parent(),
        drained=[
            key.parent(),
        ],
    ).put()
    expected_keys = [
        key,
    ]

    self.assertItemsEqual(
        instance_group_managers.get_drained_instance_group_managers(),
        expected_keys,
    )
    def test_implicitly_drained(self):
        """Ensures implicitly drained entities are returned."""
        key = models.InstanceGroupManager(
            key=instance_group_managers.get_instance_group_manager_key(
                'base-name',
                'revision',
                'zone',
            ), ).put()
        models.InstanceTemplateRevision(
            key=key.parent(),
            active=[
                key,
            ],
        ).put()
        models.InstanceTemplate(
            key=key.parent().parent(),
            drained=[
                key.parent(),
            ],
        ).put()
        expected_keys = [
            key,
        ]

        self.assertItemsEqual(
            instance_group_managers.get_drained_instance_group_managers(),
            expected_keys,
        )
示例#3
0
def schedule_drained_instance_cleanup():
  """Enqueues tasks to clean up drained instances."""
  for instance_group_manager_key in (
      instance_group_managers.get_drained_instance_group_managers()):
    instance_group_manager = instance_group_manager_key.get()
    if instance_group_manager:
      for instance_key in instance_group_manager.instances:
        instance = instance_key.get()
        if instance and not instance.cataloged:
          utilities.enqueue_task('cleanup-drained-instance', instance.key)
示例#4
0
def schedule_removal():
  """Enqueues tasks to remove drained instances from the catalog."""
  for instance_group_manager_key in (
      instance_group_managers.get_drained_instance_group_managers()):
    instance_group_manager = instance_group_manager_key.get()
    if instance_group_manager:
      for instance_key in instance_group_manager.instances:
        instance = instance_key.get()
        if instance and not instance.pending_deletion:
          utilities.enqueue_task('remove-cataloged-instance', instance.key)
示例#5
0
def cleanup_instance_group_managers(max_concurrent=50):
    """Deletes drained InstanceGroupManagers.

  Args:
    max_concurrent: Maximum number to delete concurrently.
  """
    utilities.batch_process_async(
        instance_group_managers.get_drained_instance_group_managers(),
        delete_instance_group_manager,
        max_concurrent=max_concurrent,
    )
    def test_nothing_active_or_drained(self):
        """Ensures nothing is returned when there are no active/drained entities."""
        models.InstanceGroupManager(
            key=instance_group_managers.get_instance_group_manager_key(
                'base-name',
                'revision',
                'zone',
            ), ).put()

        self.failIf(
            instance_group_managers.get_drained_instance_group_managers())
  def test_nothing_active_or_drained(self):
    """Ensures nothing is returned when there are no active/drained entities."""
    models.InstanceGroupManager(
        key=instance_group_managers.get_instance_group_manager_key(
            'base-name',
            'revision',
            'zone',
        ),
    ).put()

    self.failIf(instance_group_managers.get_drained_instance_group_managers())
示例#8
0
def cleanup_instance_group_managers(max_concurrent=50):
  """Deletes drained InstanceGroupManagers.

  Args:
    max_concurrent: Maximum number to delete concurrently.
  """
  utilities.batch_process_async(
      instance_group_managers.get_drained_instance_group_managers(),
      delete_instance_group_manager,
      max_concurrent=max_concurrent,
  )
    def test_active_only(self):
        """Ensures nothing is returned when there are only active entities."""
        key = models.InstanceGroupManager(
            key=instance_group_managers.get_instance_group_manager_key(
                'base-name',
                'revision',
                'zone',
            ), ).put()
        models.InstanceTemplateRevision(
            key=key.parent(),
            active=[
                key,
            ],
        ).put()

        self.failIf(
            instance_group_managers.get_drained_instance_group_managers())
  def test_active_only(self):
    """Ensures nothing is returned when there are only active entities."""
    key = models.InstanceGroupManager(
        key=instance_group_managers.get_instance_group_manager_key(
            'base-name',
            'revision',
            'zone',
        ),
    ).put()
    models.InstanceTemplateRevision(
        key=key.parent(),
        active=[
            key,
        ],
    ).put()

    self.failIf(instance_group_managers.get_drained_instance_group_managers())
示例#11
0
def schedule_drained_deletion():
  """Enqueues tasks to delete drained instances."""
  for instance_group_manager_key in (
      instance_group_managers.get_drained_instance_group_managers()):
    instance_group_manager = instance_group_manager_key.get()
    if instance_group_manager:
      for instance_key in instance_group_manager.instances:
        instance = instance_key.get()
        if instance and not instance.cataloged:
          if not utils.enqueue_task(
              '/internal/queues/delete-drained-instance',
              'delete-drained-instance',
              params={
                  'key': instance.key.urlsafe(),
              },
          ):
            logging.warning(
              'Failed to enqueue task for Instance: %s', instance.key)
示例#12
0
def schedule_removal():
  """Enqueues tasks to remove drained instances from the catalog."""
  for instance_group_manager_key in (
      instance_group_managers.get_drained_instance_group_managers()):
    instance_group_manager = instance_group_manager_key.get()
    if instance_group_manager:
      for instance_key in instance_group_manager.instances:
        instance = instance_key.get()
        if instance and instance.cataloged:
          if not utils.enqueue_task(
              '/internal/queues/remove-cataloged-instance',
              'remove-cataloged-instance',
              params={
                  'key': instance.key.urlsafe(),
              },
          ):
            logging.warning(
                'Failed to enqueue task for Instance: %s', instance.key)
示例#13
0
def schedule_drained_deletion():
  """Enqueues tasks to delete drained instances."""
  for instance_group_manager_key in (
      instance_group_managers.get_drained_instance_group_managers()):
    instance_group_manager = instance_group_manager_key.get()
    if instance_group_manager:
      for instance_key in instance_group_manager.instances:
        instance = instance_key.get()
        if instance and not instance.cataloged:
          if not utils.enqueue_task(
              '/internal/queues/delete-drained-instance',
              'delete-drained-instance',
              params={
                  'key': instance.key.urlsafe(),
              },
          ):
            logging.warning(
              'Failed to enqueue task for Instance: %s', instance.key)
示例#14
0
def schedule_removal():
    """Enqueues tasks to remove drained instances from the catalog."""
    for instance_group_manager_key in (
            instance_group_managers.get_drained_instance_group_managers()):
        instance_group_manager = instance_group_manager_key.get()
        if instance_group_manager:
            for instance_key in instance_group_manager.instances:
                instance = instance_key.get()
                if instance and instance.cataloged:
                    if not utils.enqueue_task(
                            '/internal/queues/remove-cataloged-instance',
                            'remove-cataloged-instance',
                            params={
                                'key': instance.key.urlsafe(),
                            },
                    ):
                        logging.warning(
                            'Failed to enqueue task for Instance: %s',
                            instance.key)
 def test_no_entities(self):
     """Ensures nothing is returned when there are no entities."""
     self.failIf(
         instance_group_managers.get_drained_instance_group_managers())
 def test_no_entities(self):
   """Ensures nothing is returned when there are no entities."""
   self.failIf(instance_group_managers.get_drained_instance_group_managers())