def test_activates(self): """Ensures that the instance group managers are activated.""" template_cfg = config_pb2.InstanceTemplateConfig.InstanceTemplate( base_name='base-name', ) manager_cfgs = config_pb2.InstanceGroupManagerConfig(managers=[ config_pb2.InstanceGroupManagerConfig.InstanceGroupManager( template_base_name='base-name', zone='zone1', ), config_pb2.InstanceGroupManagerConfig.InstanceGroupManager( template_base_name='base-name', zone='zone2', ), ], ).managers expected_active_keys = [ parse.get_instance_group_manager_key(template_cfg, manager_cfgs[0]), parse.get_instance_group_manager_key(template_cfg, manager_cfgs[1]), ] instance_template_revision = models.InstanceTemplateRevision() self.failUnless( parse.ensure_instance_group_managers_active( template_cfg, manager_cfgs, instance_template_revision)) self.assertItemsEqual(instance_template_revision.active, expected_active_keys)
def test_drains_and_reactivates(self): """Ensures that the active are drained and the drained are reactivated.""" template_cfg = config_pb2.InstanceTemplateConfig.InstanceTemplate( base_name='base-name', ) manager_cfgs = config_pb2.InstanceGroupManagerConfig(managers=[ config_pb2.InstanceGroupManagerConfig.InstanceGroupManager( template_base_name='base-name', zone='zone1', ), config_pb2.InstanceGroupManagerConfig.InstanceGroupManager( template_base_name='base-name', zone='zone2', ), ], ).managers expected_active_keys = [ parse.get_instance_group_manager_key(template_cfg, manager_cfgs[0]), parse.get_instance_group_manager_key(template_cfg, manager_cfgs[1]), ] instance_template_revision = models.InstanceTemplateRevision( active=[ ndb.Key(models.InstanceGroupManager, 'fake-key'), ], drained=expected_active_keys, ) self.failUnless( parse.ensure_instance_group_managers_active( template_cfg, manager_cfgs, instance_template_revision)) self.assertItemsEqual(instance_template_revision.active, expected_active_keys) self.assertEqual(instance_template_revision.drained[0].id(), 'fake-key')
def test_drains_and_reactivates(self): """Ensures that the active are drained and the drained are reactivated.""" template_cfg = config_pb2.InstanceTemplateConfig.InstanceTemplate( base_name='base-name', ) manager_cfgs = config_pb2.InstanceGroupManagerConfig( managers=[ config_pb2.InstanceGroupManagerConfig.InstanceGroupManager( template_base_name='base-name', zone='zone1', ), config_pb2.InstanceGroupManagerConfig.InstanceGroupManager( template_base_name='base-name', zone='zone2', ), ], ).managers expected_active_keys = [ parse.get_instance_group_manager_key(template_cfg, manager_cfgs[0]), parse.get_instance_group_manager_key(template_cfg, manager_cfgs[1]), ] instance_template_revision = models.InstanceTemplateRevision( active=[ ndb.Key(models.InstanceGroupManager, 'fake-key'), ], drained=expected_active_keys, ) self.failUnless(parse.ensure_instance_group_managers_active( template_cfg, manager_cfgs, instance_template_revision)) self.assertItemsEqual( instance_template_revision.active, expected_active_keys) self.assertEqual(instance_template_revision.drained[0].id(), 'fake-key')
def test_activates(self): """Ensures that the instance group managers are activated.""" template_cfg = config_pb2.InstanceTemplateConfig.InstanceTemplate( base_name='base-name', ) manager_cfgs = config_pb2.InstanceGroupManagerConfig( managers=[ config_pb2.InstanceGroupManagerConfig.InstanceGroupManager( template_base_name='base-name', zone='zone1', ), config_pb2.InstanceGroupManagerConfig.InstanceGroupManager( template_base_name='base-name', zone='zone2', ), ], ).managers expected_active_keys = [ parse.get_instance_group_manager_key(template_cfg, manager_cfgs[0]), parse.get_instance_group_manager_key(template_cfg, manager_cfgs[1]), ] instance_template_revision = models.InstanceTemplateRevision() self.failUnless(parse.ensure_instance_group_managers_active( template_cfg, manager_cfgs, instance_template_revision)) self.assertItemsEqual( instance_template_revision.active, expected_active_keys)
def test_matches_existing_entity(self): """Ensures that an entity matches when it already exists.""" template_cfg = config_pb2.InstanceTemplateConfig.InstanceTemplate( base_name='base-name', ) manager_cfg = config_pb2.InstanceGroupManagerConfig.InstanceGroupManager( maximum_size=3, minimum_size=2, template_base_name='base-name', zone='zone', ) expected_key = parse.get_instance_group_manager_key( template_cfg, manager_cfg) models.InstanceGroupManager( key=expected_key, maximum_size=2, minimum_size=1, ).put() future = parse.ensure_instance_group_manager_exists( template_cfg, manager_cfg) future.wait() key = future.get_result() entity = key.get() self.assertEqual(key, expected_key) self.assertEqual(entity.maximum_size, manager_cfg.maximum_size) self.assertEqual(entity.minimum_size, manager_cfg.minimum_size)
def test_matches_existing_entity(self): """Ensures that an entity matches when it already exists.""" template_cfg = config_pb2.InstanceTemplateConfig.InstanceTemplate( base_name='base-name', ) manager_cfg = config_pb2.InstanceGroupManagerConfig.InstanceGroupManager( maximum_size=3, minimum_size=2, template_base_name='base-name', zone='zone', ) expected_key = parse.get_instance_group_manager_key( template_cfg, manager_cfg) models.InstanceGroupManager( key=expected_key, maximum_size=2, minimum_size=1, ).put() future = parse.ensure_instance_group_manager_exists( template_cfg, manager_cfg) future.wait() key = future.get_result() entity = key.get() self.assertEqual(key, expected_key) self.assertEqual(entity.maximum_size, manager_cfg.maximum_size) self.assertEqual(entity.minimum_size, manager_cfg.minimum_size)
def test_creates_new_entity(self): """Ensures that a new entity is created when one doesn't exist.""" template_cfg = config_pb2.InstanceTemplateConfig.InstanceTemplate( base_name='base-name', ) manager_cfg = config_pb2.InstanceGroupManagerConfig.InstanceGroupManager( maximum_size=2, minimum_size=1, template_base_name='base-name', zone='zone', ) expected_key = parse.get_instance_group_manager_key( template_cfg, manager_cfg) future = parse.ensure_instance_group_manager_exists( template_cfg, manager_cfg) future.wait() key = future.get_result() entity = key.get() self.assertEqual(key, expected_key) self.assertEqual(entity.maximum_size, manager_cfg.maximum_size) self.assertEqual(entity.minimum_size, manager_cfg.minimum_size)
def test_creates_new_entity(self): """Ensures that a new entity is created when one doesn't exist.""" template_cfg = config_pb2.InstanceTemplateConfig.InstanceTemplate( base_name='base-name', ) manager_cfg = config_pb2.InstanceGroupManagerConfig.InstanceGroupManager( maximum_size=2, minimum_size=1, template_base_name='base-name', zone='zone', ) expected_key = parse.get_instance_group_manager_key( template_cfg, manager_cfg) future = parse.ensure_instance_group_manager_exists( template_cfg, manager_cfg) future.wait() key = future.get_result() entity = key.get() self.assertEqual(key, expected_key) self.assertEqual(entity.maximum_size, manager_cfg.maximum_size) self.assertEqual(entity.minimum_size, manager_cfg.minimum_size)
def test_creates_new_entity(self): """Ensures that a new entity is created when one doesn't exist.""" template_cfg = config_pb2.InstanceTemplateConfig.InstanceTemplate( base_name='base-name', dimensions=[ 'os_family:LINUX', ], disk_size_gb=100, machine_type='n1-standard-8', metadata=[ 'key:value', ], service_accounts=[ config_pb2.InstanceTemplateConfig.InstanceTemplate. ServiceAccount( name='service-account', scopes=[ 'scope', ], ), ], tags=[ 'tag', ]) manager_cfgs = [ config_pb2.InstanceGroupManagerConfig.InstanceGroupManager( maximum_size=2, minimum_size=1, template_base_name='base-name', zone='us-central-1a', ), config_pb2.InstanceGroupManagerConfig.InstanceGroupManager( maximum_size=3, minimum_size=2, template_base_name='base-name', zone='us-central-1b', ), config_pb2.InstanceGroupManagerConfig.InstanceGroupManager( maximum_size=4, minimum_size=3, template_base_name='base-name', zone='us-central-1c', ), ] expected_instance_template_key = parse.get_instance_template_key( template_cfg) expected_instance_template_revision_key = ( parse.get_instance_template_revision_key(template_cfg)) expected_dimensions = parse._load_machine_provider_dimensions( template_cfg.dimensions) expected_metadata = parse._load_dict(template_cfg.metadata) expected_service_accounts = [ models.ServiceAccount( name=template_cfg.service_accounts[0].name, scopes=list(template_cfg.service_accounts[0].scopes), ), ] expected_active_keys = [ parse.get_instance_group_manager_key(template_cfg, manager_cfg) for manager_cfg in manager_cfgs ] future = parse.ensure_entities_exist(template_cfg, manager_cfgs) future.wait() instance_template_key = future.get_result() instance_template = instance_template_key.get() instance_template_revision = instance_template.active.get() instance_group_managers = sorted( [ instance_group_manager.get() for instance_group_manager in instance_template_revision.active ], key=lambda instance_group_manager: instance_group_manager.key.id(), ) self.assertEqual(instance_template_key, expected_instance_template_key) self.assertEqual(instance_template.active, expected_instance_template_revision_key) self.assertEqual(instance_template_revision.dimensions, expected_dimensions) self.assertEqual(instance_template_revision.disk_size_gb, template_cfg.disk_size_gb) self.assertEqual(instance_template_revision.machine_type, template_cfg.machine_type) self.assertEqual(instance_template_revision.metadata, expected_metadata) self.assertItemsEqual(instance_template_revision.service_accounts, expected_service_accounts) self.assertItemsEqual(instance_template_revision.tags, template_cfg.tags) self.assertItemsEqual(instance_template_revision.active, expected_active_keys) self.assertEqual(instance_group_managers[0].maximum_size, manager_cfgs[0].maximum_size) self.assertEqual(instance_group_managers[0].minimum_size, manager_cfgs[0].minimum_size) self.assertEqual(instance_group_managers[1].maximum_size, manager_cfgs[1].maximum_size) self.assertEqual(instance_group_managers[1].minimum_size, manager_cfgs[1].minimum_size) self.assertEqual(instance_group_managers[2].maximum_size, manager_cfgs[2].maximum_size) self.assertEqual(instance_group_managers[2].minimum_size, manager_cfgs[2].minimum_size)
def test_creates_new_entity(self): """Ensures that a new entity is created when one doesn't exist.""" template_cfg = config_pb2.InstanceTemplateConfig.InstanceTemplate( base_name='base-name', dimensions=[ 'os_family:LINUX', ], disk_size_gb=100, machine_type='n1-standard-8', metadata=[ 'key:value', ], service_accounts=[ config_pb2.InstanceTemplateConfig.InstanceTemplate.ServiceAccount( name='service-account', scopes=[ 'scope', ], ), ], tags=[ 'tag', ] ) manager_cfgs = [ config_pb2.InstanceGroupManagerConfig.InstanceGroupManager( maximum_size=2, minimum_size=1, template_base_name='base-name', zone='us-central-1a', ), config_pb2.InstanceGroupManagerConfig.InstanceGroupManager( maximum_size=3, minimum_size=2, template_base_name='base-name', zone='us-central-1b', ), config_pb2.InstanceGroupManagerConfig.InstanceGroupManager( maximum_size=4, minimum_size=3, template_base_name='base-name', zone='us-central-1c', ), ] expected_instance_template_key = parse.get_instance_template_key( template_cfg) expected_instance_template_revision_key = ( parse.get_instance_template_revision_key(template_cfg)) expected_dimensions = parse._load_machine_provider_dimensions( template_cfg.dimensions) expected_metadata = parse._load_dict(template_cfg.metadata) expected_service_accounts = [ models.ServiceAccount( name=template_cfg.service_accounts[0].name, scopes=list(template_cfg.service_accounts[0].scopes), ), ] expected_active_keys = [ parse.get_instance_group_manager_key(template_cfg, manager_cfg) for manager_cfg in manager_cfgs ] future = parse.ensure_entities_exist( template_cfg, manager_cfgs) future.wait() instance_template_key = future.get_result() instance_template = instance_template_key.get() instance_template_revision = instance_template.active.get() instance_group_managers = sorted( [ instance_group_manager.get() for instance_group_manager in instance_template_revision.active ], key=lambda instance_group_manager: instance_group_manager.key.id(), ) self.assertEqual(instance_template_key, expected_instance_template_key) self.assertEqual( instance_template.active, expected_instance_template_revision_key) self.assertEqual(instance_template_revision.dimensions, expected_dimensions) self.assertEqual( instance_template_revision.disk_size_gb, template_cfg.disk_size_gb) self.assertEqual( instance_template_revision.machine_type, template_cfg.machine_type) self.assertEqual(instance_template_revision.metadata, expected_metadata) self.assertItemsEqual( instance_template_revision.service_accounts, expected_service_accounts) self.assertItemsEqual(instance_template_revision.tags, template_cfg.tags) self.assertItemsEqual( instance_template_revision.active, expected_active_keys) self.assertEqual( instance_group_managers[0].maximum_size, manager_cfgs[0].maximum_size) self.assertEqual( instance_group_managers[0].minimum_size, manager_cfgs[0].minimum_size) self.assertEqual( instance_group_managers[1].maximum_size, manager_cfgs[1].maximum_size) self.assertEqual( instance_group_managers[1].minimum_size, manager_cfgs[1].minimum_size) self.assertEqual( instance_group_managers[2].maximum_size, manager_cfgs[2].maximum_size) self.assertEqual( instance_group_managers[2].minimum_size, manager_cfgs[2].minimum_size)