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
Ejemplo n.º 4
0
 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