def add_os_project_network(core_identity, *args, **kwargs): try: logger.debug("add_os_project_network task started at %s." % datetime.now()) from rtwo.accounts.openstack import AccountDriver as OSAccountDriver account_driver = OSAccountDriver(core_identity.provider) account_driver.create_network(core_identity) logger.debug("add_os_project_network task finished at %s." % datetime.now()) except Exception as exc: add_os_project_network.retry(exc=exc)
def destroy_all_instances(self): """ Destroy all instances and delete tenant networks for all users. """ for instance in self.all_instances(): self.admin_driver.destroy_instance(instance) logger.debug('Destroyed instance %s' % instance) os_driver = OSAccountDriver() for username in os_driver.list_usergroup_names(): tenant_name = username os_driver.network_manager.delete_tenant_network(username, tenant_name) return True
def destroy_all_instances(self): """ Destroy all instances and delete tenant networks for all users. """ for instance in self.all_instances(): self.admin_driver.destroy_instance(instance) logger.debug('Destroyed instance %s' % instance) os_driver = OSAccountDriver() for username in os_driver.list_usergroup_names(): tenant_name = username os_driver.network_manager.delete_tenant_network( username, tenant_name) return True
def remove_empty_network( driverCls, provider, identity, core_identity_id, *args, **kwargs): try: #For testing ONLY.. Test cases ignore countdown.. if app.conf.CELERY_ALWAYS_EAGER: time.sleep(60) logger.debug("remove_empty_network task started at %s." % datetime.now()) logger.debug("CoreIdentity(id=%s)" % core_identity_id) core_identity = Identity.objects.get(id=core_identity_id) driver = get_driver(driverCls, provider, identity) instances = driver.list_instances() active_instances = False for instance in instances: if driver._is_active_instance(instance): active_instances = True break if not active_instances: inactive_instances = False for instance in instances: if driver._is_inactive_instance(instance): inactive_instances = True break #Inactive instances, True: Remove network, False remove_network = not inactive_instances #Check for project network from service.accounts.openstack import AccountDriver as\ OSAccountDriver os_acct_driver = OSAccountDriver(core_identity.provider) logger.info("No active instances. Removing project network" "from %s" % core_identity) os_acct_driver.delete_network(core_identity, remove_network=remove_network) if remove_network: #Sec. group can't be deleted if instances are suspended # when instances are suspended we pass remove_network=False os_acct_driver.delete_security_group(core_identity) return True logger.debug("remove_empty_network task finished at %s." % datetime.now()) return False except Exception as exc: logger.exception("Failed to check if project network is empty") remove_empty_network.retry(exc=exc)
def stop_all_instances(self, destroy=False): """ Stop all instances and delete tenant networks for all users. To destroy instances instead of stopping them use the destroy keyword (destroy=True). """ for instance in self.all_instances(): if destroy: self.admin_driver.destroy_instance(instance) logger.debug('Destroyed instance %s' % instance) else: if instance.get_status() == 'active': self.admin_driver.stop_instance(instance) logger.debug('Stopped instance %s' % instance) os_driver = OSAccountDriver() if destroy: for username in os_driver.list_usergroup_names(): tenant_name = username os_driver.network_manager.delete_tenant_network(username, tenant_name) return True
def stop_all_instances(self, destroy=False): """ Stop all instances and delete tenant networks for all users. To destroy instances instead of stopping them use the destroy keyword (destroy=True). """ for instance in self.all_instances(): if destroy: self.admin_driver.destroy_instance(instance) logger.debug('Destroyed instance %s' % instance) else: if instance.get_status() == 'active': self.admin_driver.stop_instance(instance) logger.debug('Stopped instance %s' % instance) os_driver = OSAccountDriver() if destroy: for username in os_driver.list_usergroup_names(): tenant_name = username os_driver.network_manager.delete_tenant_network( username, tenant_name) return True