def _init(self): self.mock = mox.Mox() self.instance_id = 500 context = ReddwarfContext() self.db_info = DBInstance.create( name="instance", flavor_id=OLD_FLAVOR_ID, tenant_id=999, volume_size=None, task_status=InstanceTasks.RESIZING) self.server = self.mock.CreateMock(Server) self.instance = models.BuiltInstanceTasks(context, self.db_info, self.server, service_status="ACTIVE") self.instance.server.flavor = {'id': OLD_FLAVOR_ID} self.guest = self.mock.CreateMock(guest.API) self.instance._guest = self.guest self.instance._refresh_compute_server_info = lambda: None self.instance._refresh_compute_service_status = lambda: None self.mock.StubOutWithMock(self.instance, 'update_db') self.mock.StubOutWithMock(self.instance, '_set_service_status_to_paused') self.poll_until_mocked = False self.action = None
def prepare(self, memory_mb, databases, users, device_path=None, mount_point=None): from reddwarf.instance.models import DBInstance from reddwarf.instance.models import InstanceServiceStatus from reddwarf.instance.models import ServiceStatuses from reddwarf.guestagent.models import AgentHeartBeat LOG.debug("users... %s" % users) LOG.debug("databases... %s" % databases) instance_name = DBInstance.find_by(id=self.id).name self.create_user(users) self.create_database(databases) def update_db(): status = InstanceServiceStatus.find_by(instance_id=self.id) if instance_name.endswith('GUEST_ERROR'): status.status = ServiceStatuses.FAILED else: status.status = ServiceStatuses.RUNNING status.save() AgentHeartBeat.create(instance_id=self.id) self.event_spawn(1.0, update_db)
def load(context, id): client = create_nova_client(context) account = client.accounts.get_instances(id) db_infos = DBInstance.find_all(tenant_id=id, deleted=False) servers = [Server(server) for server in account.servers] instances = MgmtInstances.load_status_from_existing( context, db_infos, servers) return Account(id, instances)
def _create_instance(self): self.context = ReddwarfContext(is_admin=True) self.tenant_id = 999 self.db_info = DBInstance.create( name="instance", flavor_id=1, tenant_id=self.tenant_id, volume_size=None, task_status=InstanceTasks.NONE ) self.server = self.mock.CreateMock(Server) self.instance = imodels.Instance(self.context, self.db_info, self.server, service_status="ACTIVE")
def load(context, id): client = create_nova_client(context) account = client.accounts.get_instances(id) db_infos = DBInstance.find_all(tenant_id=id, deleted=False) servers = [Server(server) for server in account.servers] instances = MgmtInstances.load_status_from_existing(context, db_infos, servers) return Account(id, instances)
def set_server_running(): from reddwarf.instance.models import DBInstance from reddwarf.instance.models import InstanceServiceStatus from reddwarf.instance.models import ServiceStatuses instance = DBInstance.find_by(compute_instance_id=id) LOG.debug("Setting server %s to running" % instance.id) status = InstanceServiceStatus.find_by(instance_id=instance.id) status.status = ServiceStatuses.RUNNING status.save()
def load(cls): # TODO(pdmars): This should probably be changed to a more generic # database filter query if one is added, however, this should suffice # for now. db_infos = DBInstance.find_all(deleted=False) tenant_ids_for_instances = [db_info.tenant_id for db_info in db_infos] tenant_ids = set(tenant_ids_for_instances) LOG.debug("All tenants with instances: %s" % tenant_ids) accounts = [] for tenant_id in tenant_ids: num_instances = tenant_ids_for_instances.count(tenant_id) accounts.append({'id': tenant_id, 'num_instances': num_instances}) return cls(accounts)
def _create_instance(self): self.context = ReddwarfContext(is_admin=True) self.tenant_id = 999 self.db_info = DBInstance.create(name="instance", flavor_id=1, tenant_id=self.tenant_id, volume_size=None, task_status=InstanceTasks.NONE) self.server = self.mock.CreateMock(Server) self.instance = imodels.Instance(self.context, self.db_info, self.server, service_status="ACTIVE")
def __init__(self, host_info): self.name = host_info.name self.percent_used = host_info.percentUsed self.total_ram = host_info.totalRAM self.used_ram = host_info.usedRAM self.instances = host_info.instances for instance in self.instances: instance['server_id'] = instance['uuid'] del instance['uuid'] try: db_info = DBInstance.find_by( compute_instance_id=instance['server_id']) instance['id'] = db_info.id instance['tenant_id'] = db_info.tenant_id except exception.ReddwarfError as re: LOG.error(re) LOG.error("Compute Instance ID found with no associated RD " "instance: %s" % instance['server_id']) instance['id'] = None
def set_server_running(): instance = DBInstance.find_by(compute_instance_id=id) LOG.debug("Setting server %s to running" % instance.id) status = InstanceServiceStatus.find_by(instance_id=instance.id) status.status = ServiceStatuses.RUNNING status.save()
def _reload_db_info(self): self.db_info = DBInstance.find_by(id=self.db_info.id, deleted=False)