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, )
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)
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)
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())
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())
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)
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 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)
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())