def delete(request, topology_id): logger.debug('---- topology delete ----') topology_prefix = "t%s_" % topology_id if configuration.deployment_backend == "kvm": network_list = libvirtUtils.get_networks_for_topology(topology_prefix) for network in network_list: logger.debug("undefine network: " + network["name"]) libvirtUtils.undefine_network(network["name"]) domain_list = libvirtUtils.get_domains_for_topology(topology_prefix) for domain in domain_list: # remove reserved mac addresses for all domains in this topology mac_address = libvirtUtils.get_management_interface_mac_for_domain(domain["name"]) libvirtUtils.release_management_ip_for_mac(mac_address) logger.debug("undefine domain: " + domain["name"]) source_file = libvirtUtils.get_image_for_domain(domain["uuid"]) if libvirtUtils.undefine_domain(domain["uuid"]): if source_file is not None: osUtils.remove_instance(source_file) topology = get_object_or_404(Topology, pk=topology_id) osUtils.remove_instances_for_topology(topology_prefix) osUtils.remove_cloud_init_tmp_dirs(topology_prefix) topology.delete() messages.info(request, 'Topology %s deleted' % topology.name) return HttpResponseRedirect('/topologies/')
def delete_topology(request): """ DEPRECATED :param request: :return: """ logger.debug("---- delete_topology ----") json_string = request.body json_body = json.loads(json_string) required_fields = set(['name']) if not required_fields.issubset(json_body[0]): logger.error("Invalid parameters in json body") return HttpResponse(status=500) topology_name = json_body[0]["name"] try: # get the topology by name topology = Topology.objects.get(name=topology_name) except ObjectDoesNotExist: return apiUtils.return_json(False, "Topology is already deleted or does not exist") try: topology_prefix = "t%s_" % topology.id if hasattr(configuration, "use_openvswitch") and configuration.use_openvswitch: use_ovs = True else: use_ovs = False network_list = libvirtUtils.get_networks_for_topology(topology_prefix) for network in network_list: logger.debug("undefining network: " + network["name"]) libvirtUtils.undefine_network(network["name"]) if use_ovs: ovsUtils.delete_bridge(network["name"]) domain_list = libvirtUtils.get_domains_for_topology(topology_prefix) for domain in domain_list: logger.debug("undefining domain: " + domain["name"]) source_file = libvirtUtils.get_image_for_domain(domain["uuid"]) if libvirtUtils.undefine_domain(domain["uuid"]): if source_file is not None: osUtils.remove_instance(source_file) # remove reserved mac addresses for all domains in this topology mac_address = libvirtUtils.get_management_interface_mac_for_domain(domain["name"]) libvirtUtils.release_management_ip_for_mac(mac_address) topology.delete() return apiUtils.return_json(True, "Topology deleted!") except Exception as e: logger.error(str(e)) return HttpResponse(status=500)
def delete(request, topology_id): logger.debug('---- topology delete ----') topology_prefix = "t%s_" % topology_id topology = get_object_or_404(Topology, pk=topology_id) if configuration.deployment_backend == "kvm": if hasattr(configuration, "use_openvswitch") and configuration.use_openvswitch: use_ovs = True else: use_ovs = False network_list = libvirtUtils.get_networks_for_topology(topology_prefix) for network in network_list: logger.debug("undefine network: " + network["name"]) libvirtUtils.undefine_network(network["name"]) if use_ovs: ovsUtils.delete_bridge(network["name"]) domain_list = libvirtUtils.get_domains_for_topology(topology_prefix) for domain in domain_list: # remove reserved mac addresses for all domains in this topology mac_address = libvirtUtils.get_management_interface_mac_for_domain( domain["name"]) libvirtUtils.release_management_ip_for_mac(mac_address) logger.debug("undefine domain: " + domain["name"]) source_file = libvirtUtils.get_image_for_domain(domain["uuid"]) if libvirtUtils.undefine_domain(domain["uuid"]): if source_file is not None: osUtils.remove_instance(source_file) osUtils.remove_instances_for_topology(topology_prefix) osUtils.remove_cloud_init_tmp_dirs(topology_prefix) elif configuration.deployment_backend == "openstack": stack_name = topology.name.replace(' ', '_') if openstackUtils.connect_to_openstack(): logger.debug(openstackUtils.delete_stack(stack_name)) topology.delete() messages.info(request, 'Topology %s deleted' % topology.name) return HttpResponseRedirect('/topologies/')
def manage_network(request): required_fields = set(['networkName', 'action', 'topologyId']) if not required_fields.issubset(request.POST): return render(request, 'ajax/ajaxError.html', {'error': "Invalid Parameters in POST"}) network_name = request.POST['networkName'] action = request.POST['action'] if action == "start": if libvirtUtils.start_network(network_name): return refresh_deployment_status(request) else: return render(request, 'ajax/ajaxError.html', {'error': "Could not start network!"}) elif action == "stop": if libvirtUtils.stop_network(network_name): return refresh_deployment_status(request) else: return render(request, 'ajax/ajaxError.html', {'error': "Could not stop network!"}) elif action == "undefine": # clean up ovs bridges if needed if hasattr(configuration, "use_openvswitch") and configuration.use_openvswitch: use_ovs = True else: use_ovs = False if libvirtUtils.undefine_network(network_name): if use_ovs: ovsUtils.delete_bridge(network_name) return refresh_deployment_status(request) else: return render(request, 'ajax/ajaxError.html', {'error': "Could not stop domain!"}) else: return render(request, 'ajax/ajaxError.html', {'error': "Unknown Parameters in POST!"})