def delete_vm(self,vm): if vm.virtual_machine_interfaces: vmi_list = list(vm.virtual_machine_interfaces) pt_uuid = VirtualMachineInterfaceSM.get(vmi_list[0]).port_tuple self.cleanup_pi_connections(vmi_list) self.cleanup_svc_vm_ports(vmi_list) try: self._vnc_lib.port_tuple_delete(id=pt_uuid) PortTupleSM.delete(pt_uuid) except NoIdError: pass try: self._vnc_lib.virtual_machine_delete(id=vm.uuid) VirtualMachineSM.delete(vm.uuid) except NoIdError: pass
def check_service(self, si): if si.max_instances > len(si.port_tuples): return False pt_list = list(si.port_tuples) pi_list = [] all_possible_pi = [] for pt_uuid in pt_list: pt_obj = PortTupleSM.get(pt_uuid) for vmi_uuid in pt_obj.virtual_machine_interfaces: vmi_obj = VirtualMachineInterfaceSM.get(vmi_uuid) pi_list.append(vmi_obj.physical_interface) st_obj = ServiceTemplateSM.get(si.service_template) if not st_obj.service_appliance_set: return False sa_set_obj = ServiceApplianceSetSM.get(st_obj.service_appliance_set) for sa_uuid in sa_set_obj.service_appliances: sa_obj = ServiceApplianceSM.get(sa_uuid) for key in sa_obj.physical_interfaces: all_possible_pi.append(sa_obj.physical_interfaces[key]) if not pi_list and all_possible_pi and si.max_instances > 0: return False if not all_possible_pi and pi_list: return False for pi_uuid in pi_list: if not pi_uuid in all_possible_pi: return False return True
def check_service(self, si): if si.max_instances>len(si.port_tuples): return False pt_list = list(si.port_tuples) pi_list = [] all_possible_pi=[] for pt_uuid in pt_list: pt_obj = PortTupleSM.get(pt_uuid) for vmi_uuid in pt_obj.virtual_machine_interfaces: vmi_obj = VirtualMachineInterfaceSM.get(vmi_uuid) pi_list.append(vmi_obj.physical_interface) st_obj = ServiceTemplateSM.get(si.service_template) if not st_obj.service_appliance_set: return False sa_set_obj = ServiceApplianceSetSM.get(st_obj.service_appliance_set) for sa_uuid in sa_set_obj.service_appliances: sa_obj = ServiceApplianceSM.get(sa_uuid) for key in sa_obj.physical_interfaces: all_possible_pi.append(sa_obj.physical_interfaces[key]) if not pi_list and all_possible_pi and si.max_instances>0: return False if not all_possible_pi and pi_list: return False for pi_uuid in pi_list: if not pi_uuid in all_possible_pi: return False return True
def delete_vm(self, vm): if vm.virtual_machine_interfaces: vmi_list = list(vm.virtual_machine_interfaces) pt_uuid = VirtualMachineInterfaceSM.get(vmi_list[0]).port_tuple self.cleanup_pi_connections(vmi_list) self.cleanup_svc_vm_ports(vmi_list) try: self._vnc_lib.port_tuple_delete(id=pt_uuid) PortTupleSM.delete(pt_uuid) except NoIdError: pass try: self._vnc_lib.virtual_machine_delete(id=vm.uuid) VirtualMachineSM.delete(vm.uuid) except NoIdError: pass