def do(self, workflow_dict): try: cs_credentials = get_credentials_for( environment=workflow_dict['source_environment'], credential_type=CredentialType.CLOUDSTACK) cs_provider = CloudStackProvider(credentials=cs_credentials) for source_host in workflow_dict['source_hosts']: host_attr = HostAttr.objects.get(host=source_host) LOG.info("Destroying virtualmachine %s" % host_attr.vm_id) cs_provider.destroy_virtual_machine( project_id=cs_credentials.project, environment=workflow_dict['source_environment'], vm_id=host_attr.vm_id) host_attr.delete() LOG.info("HostAttr deleted!") source_host.delete() LOG.info("Source host deleted") return True except Exception: traceback = full_stack() workflow_dict['exceptions']['error_codes'].append(DBAAS_0020) workflow_dict['exceptions']['traceback'].append(traceback) return False
def undo(self, workflow_dict): LOG.info("Running undo...") try: cs_credentials = get_credentials_for( environment=workflow_dict['environment'], credential_type=CredentialType.CLOUDSTACK) cs_provider = CloudStackProvider(credentials=cs_credentials) instances = workflow_dict['databaseinfra'].instances.all() if not instances: for vm_id in workflow_dict['vms_id']: cs_provider.destroy_virtual_machine( project_id=cs_credentials.project, environment=workflow_dict['environment'], vm_id=vm_id) for host in workflow_dict['hosts']: host_attr = HostAttr.objects.filter(host=host) host.delete() LOG.info("Host deleted!") if host_attr: host_attr[0].delete() LOG.info("HostAttr deleted!") for instance in instances: host = instance.hostname host_attr = HostAttr.objects.get(host=host) LOG.info("Destroying virtualmachine %s" % host_attr.vm_id) cs_provider.destroy_virtual_machine( project_id=cs_credentials.project, environment=workflow_dict['environment'], vm_id=host_attr.vm_id) host_attr.delete() LOG.info("HostAttr deleted!") instance.delete() LOG.info("Instance deleted") host.delete() LOG.info("Host deleted!") return True except Exception: traceback = full_stack() workflow_dict['exceptions']['error_codes'].append(DBAAS_0011) workflow_dict['exceptions']['traceback'].append(traceback) return False
def undo(self, workflow_dict): LOG.info("Running undo...") try: cs_credentials = get_credentials_for( environment=workflow_dict['environment'], credential_type=CredentialType.CLOUDSTACK) cs_provider = CloudStackProvider(credentials=cs_credentials) instances = workflow_dict['databaseinfra'].instances.all() if not instances: for vm_id in workflow_dict['vms_id']: cs_provider.destroy_virtual_machine( project_id=cs_credentials.project, environment=workflow_dict['environment'], vm_id=vm_id) for host in workflow_dict['hosts']: host_attr = HostAttr.objects.filter(host=host) host.delete() LOG.info("Host deleted!") if host_attr: host_attr[0].delete() LOG.info("HostAttr deleted!") for instance in instances: host = instance.hostname host_attr = HostAttr.objects.get(host=host) LOG.info("Destroying virtualmachine %s" % host_attr.vm_id) cs_provider.destroy_virtual_machine( project_id=cs_credentials.project, environment=workflow_dict['environment'], vm_id=host_attr.vm_id) host_attr.delete() LOG.info("HostAttr deleted!") instance.delete() LOG.info("Instance deleted") host.delete() LOG.info("Host deleted!") return True except Exception: traceback = full_stack() workflow_dict['exceptions']['error_codes'].append(DBAAS_0011) workflow_dict['exceptions']['traceback'].append(traceback) return False
def undo(self, workflow_dict): LOG.info("Running undo...") try: cs_credentials = get_credentials_for( environment=workflow_dict['environment'], credential_type=CredentialType.CLOUDSTACK) cs_provider = CloudStackProvider(credentials=cs_credentials) for source_instance in workflow_dict['source_instances']: source_instance.future_instance = None source_instance.save() LOG.info("Source instance updated") for target_instance in workflow_dict['target_instances']: target_instance.delete() LOG.info("Target instance deleted") for source_host in workflow_dict['source_hosts']: source_host.future_host = None source_host.save() LOG.info("Source host updated") for target_host in workflow_dict['target_hosts']: host_attr = HostAttr.objects.get(host=target_host) LOG.info("Destroying virtualmachine %s" % host_attr.vm_id) cs_provider.destroy_virtual_machine( project_id=cs_credentials.project, environment=workflow_dict['environment'], vm_id=host_attr.vm_id) host_attr.delete() LOG.info("HostAttr deleted!") target_host.delete() LOG.info("Target host deleted") return True except Exception: traceback = full_stack() workflow_dict['exceptions']['error_codes'].append(DBAAS_0020) workflow_dict['exceptions']['traceback'].append(traceback) return False
def undo(self, workflow_dict): LOG.info("Running undo...") try: cs_credentials = get_credentials_for( environment=workflow_dict['target_environment'], credential_type=CredentialType.CLOUDSTACK) cs_provider = CloudStackProvider(credentials=cs_credentials) for source_instance in workflow_dict['source_instances']: source_instance.future_instance = None source_instance.save() LOG.info("Source instance updated") for target_instance in workflow_dict['target_instances']: target_instance.delete() LOG.info("Target instance deleted") for source_host in workflow_dict['source_hosts']: source_host.future_host = None source_host.save() LOG.info("Source host updated") for target_host in workflow_dict['target_hosts']: host_attr = HostAttr.objects.get(host=target_host) LOG.info("Destroying virtualmachine %s" % host_attr.vm_id) cs_provider.destroy_virtual_machine( project_id=cs_credentials.project, environment=workflow_dict['target_environment'], vm_id=host_attr.vm_id) host_attr.delete() LOG.info("HostAttr deleted!") target_host.delete() LOG.info("Target host deleted") return True except Exception: traceback = full_stack() workflow_dict['exceptions']['error_codes'].append(DBAAS_0020) workflow_dict['exceptions']['traceback'].append(traceback) return False