Search in sources :

Example 1 with InterfaceDef

use of com.cloud.hypervisor.kvm.resource.LibvirtVMDef.InterfaceDef in project cloudstack by apache.

the class LibvirtComputingResource method defaultNetworkRules.

public boolean defaultNetworkRules(final Connect conn, final String vmName, final NicTO nic, final Long vmId, final String secIpStr) {
    if (!_canBridgeFirewall) {
        return false;
    }
    final List<InterfaceDef> intfs = getInterfaces(conn, vmName);
    if (intfs.size() == 0 || intfs.size() < nic.getDeviceId()) {
        return false;
    }
    final InterfaceDef intf = intfs.get(nic.getDeviceId());
    final String brname = intf.getBrName();
    final String vif = intf.getDevName();
    final Script cmd = new Script(_securityGroupPath, _timeout, s_logger);
    cmd.add("default_network_rules");
    cmd.add("--vmname", vmName);
    cmd.add("--vmid", vmId.toString());
    if (nic.getIp() != null) {
        cmd.add("--vmip", nic.getIp());
    }
    if (nic.getIp6Address() != null) {
        cmd.add("--vmip6", nic.getIp6Address());
    }
    cmd.add("--vmmac", nic.getMac());
    cmd.add("--vif", vif);
    cmd.add("--brname", brname);
    cmd.add("--nicsecips", secIpStr);
    final String result = cmd.execute();
    if (result != null) {
        return false;
    }
    return true;
}
Also used : InterfaceDef(com.cloud.hypervisor.kvm.resource.LibvirtVMDef.InterfaceDef) Script(com.cloud.utils.script.Script)

Example 2 with InterfaceDef

use of com.cloud.hypervisor.kvm.resource.LibvirtVMDef.InterfaceDef in project cloudstack by apache.

the class IvsVifDriver method plug.

@Override
public InterfaceDef plug(NicTO nic, String guestOsType, String nicAdapter) throws InternalErrorException, LibvirtException {
    LibvirtVMDef.InterfaceDef intf = new LibvirtVMDef.InterfaceDef();
    String vNetId = null;
    String protocol = null;
    if (nic.getBroadcastType() == Networks.BroadcastDomainType.Vlan || nic.getBroadcastType() == Networks.BroadcastDomainType.Vxlan) {
        vNetId = Networks.BroadcastDomainType.getValue(nic.getBroadcastUri());
        protocol = Networks.BroadcastDomainType.getSchemeValue(nic.getBroadcastUri()).scheme();
    }
    String vlanId = null;
    String logicalSwitchUuid = null;
    if (nic.getBroadcastType() == Networks.BroadcastDomainType.Vlan) {
        vlanId = Networks.BroadcastDomainType.getValue(nic.getBroadcastUri());
    } else if (nic.getBroadcastType() == Networks.BroadcastDomainType.Lswitch) {
        logicalSwitchUuid = Networks.BroadcastDomainType.getValue(nic.getBroadcastUri());
    } else if (nic.getBroadcastType() == Networks.BroadcastDomainType.Pvlan) {
        // TODO consider moving some of this functionality from NetUtils to Networks....
        vlanId = NetUtils.getPrimaryPvlanFromUri(nic.getBroadcastUri());
    }
    String trafficLabel = nic.getName();
    Integer networkRateKBps = (nic.getNetworkRateMbps() != null && nic.getNetworkRateMbps().intValue() != -1) ? nic.getNetworkRateMbps().intValue() * 128 : 0;
    if (nic.getType() == Networks.TrafficType.Guest) {
        if ((nic.getBroadcastType() == Networks.BroadcastDomainType.Vlan || nic.getBroadcastType() == Networks.BroadcastDomainType.Pvlan) && !vlanId.equalsIgnoreCase("untagged")) {
            if (trafficLabel != null && !trafficLabel.isEmpty()) {
                s_logger.debug("creating a vlan dev and bridge for guest traffic per traffic label " + trafficLabel);
                intf.defEthernet("ivsnet-" + nic.getUuid().substring(0, 5), nic.getMac(), getGuestNicModel(guestOsType, nicAdapter), _ivsIfUpPath, networkRateKBps);
            } else {
                throw new InternalErrorException("no traffic label ");
            }
        }
    } else if (nic.getType() == Networks.TrafficType.Control) {
        /* Make sure the network is still there */
        createControlNetwork();
        intf.defBridgeNet(_bridges.get("linklocal"), null, nic.getMac(), getGuestNicModel(guestOsType, nicAdapter));
    } else if (nic.getType() == Networks.TrafficType.Public) {
        if ((nic.getBroadcastType() == Networks.BroadcastDomainType.Vlan) && (vNetId != null) && (protocol != null) && (!vNetId.equalsIgnoreCase("untagged")) || (nic.getBroadcastType() == Networks.BroadcastDomainType.Vxlan)) {
            if (trafficLabel != null && !trafficLabel.isEmpty()) {
                s_logger.debug("creating a vNet dev and bridge for public traffic per traffic label " + trafficLabel);
                String brName = createVnetBr(vNetId, trafficLabel, protocol);
                intf.defBridgeNet(brName, null, nic.getMac(), getGuestNicModel(guestOsType, nicAdapter), networkRateKBps);
            } else {
                String brName = createVnetBr(vNetId, "public", protocol);
                intf.defBridgeNet(brName, null, nic.getMac(), getGuestNicModel(guestOsType, nicAdapter), networkRateKBps);
            }
        } else {
            intf.defBridgeNet(_bridges.get("public"), null, nic.getMac(), getGuestNicModel(guestOsType, nicAdapter), networkRateKBps);
        }
    } else if (nic.getType() == Networks.TrafficType.Management) {
        intf.defBridgeNet(_bridges.get("private"), null, nic.getMac(), getGuestNicModel(guestOsType, nicAdapter));
    } else if (nic.getType() == Networks.TrafficType.Storage) {
        String storageBrName = nic.getName() == null ? _bridges.get("private") : nic.getName();
        intf.defBridgeNet(storageBrName, null, nic.getMac(), getGuestNicModel(guestOsType, nicAdapter));
    }
    if (nic.getPxeDisable() == true) {
        intf.setPxeDisable(true);
    }
    return intf;
}
Also used : InterfaceDef(com.cloud.hypervisor.kvm.resource.LibvirtVMDef.InterfaceDef) InterfaceDef(com.cloud.hypervisor.kvm.resource.LibvirtVMDef.InterfaceDef) InternalErrorException(com.cloud.exception.InternalErrorException)

Example 3 with InterfaceDef

use of com.cloud.hypervisor.kvm.resource.LibvirtVMDef.InterfaceDef in project cloudstack by apache.

the class OvsVifDriver method plug.

@Override
public InterfaceDef plug(NicTO nic, String guestOsType, String nicAdapter) throws InternalErrorException, LibvirtException {
    s_logger.debug("plugging nic=" + nic);
    LibvirtVMDef.InterfaceDef intf = new LibvirtVMDef.InterfaceDef();
    intf.setVirtualPortType("openvswitch");
    String vlanId = null;
    String logicalSwitchUuid = null;
    if (nic.getBroadcastType() == Networks.BroadcastDomainType.Vlan) {
        vlanId = Networks.BroadcastDomainType.getValue(nic.getBroadcastUri());
    } else if (nic.getBroadcastType() == Networks.BroadcastDomainType.Lswitch) {
        logicalSwitchUuid = Networks.BroadcastDomainType.getValue(nic.getBroadcastUri());
    } else if (nic.getBroadcastType() == Networks.BroadcastDomainType.Pvlan) {
        // TODO consider moving some of this functionality from NetUtils to Networks....
        vlanId = NetUtils.getPrimaryPvlanFromUri(nic.getBroadcastUri());
    }
    String trafficLabel = nic.getName();
    if (nic.getType() == Networks.TrafficType.Guest) {
        Integer networkRateKBps = (nic.getNetworkRateMbps() != null && nic.getNetworkRateMbps().intValue() != -1) ? nic.getNetworkRateMbps().intValue() * 128 : 0;
        if ((nic.getBroadcastType() == Networks.BroadcastDomainType.Vlan || nic.getBroadcastType() == Networks.BroadcastDomainType.Pvlan) && !vlanId.equalsIgnoreCase("untagged")) {
            if (trafficLabel != null && !trafficLabel.isEmpty()) {
                s_logger.debug("creating a vlan dev and bridge for guest traffic per traffic label " + trafficLabel);
                intf.defBridgeNet(_pifs.get(trafficLabel), null, nic.getMac(), getGuestNicModel(guestOsType, nicAdapter), networkRateKBps);
                intf.setVlanTag(Integer.parseInt(vlanId));
            } else {
                intf.defBridgeNet(_pifs.get("private"), null, nic.getMac(), getGuestNicModel(guestOsType, nicAdapter), networkRateKBps);
                intf.setVlanTag(Integer.parseInt(vlanId));
            }
        } else if (nic.getBroadcastType() == Networks.BroadcastDomainType.Lswitch || nic.getBroadcastType() == Networks.BroadcastDomainType.OpenDaylight) {
            s_logger.debug("nic " + nic + " needs to be connected to LogicalSwitch " + logicalSwitchUuid);
            intf.setVirtualPortInterfaceId(nic.getUuid());
            String brName = (trafficLabel != null && !trafficLabel.isEmpty()) ? _pifs.get(trafficLabel) : _pifs.get("private");
            intf.defBridgeNet(brName, null, nic.getMac(), getGuestNicModel(guestOsType, nicAdapter), networkRateKBps);
        } else if (nic.getBroadcastType() == Networks.BroadcastDomainType.Vswitch) {
            String vnetId = Networks.BroadcastDomainType.getValue(nic.getBroadcastUri());
            String brName = "OVSTunnel" + vnetId;
            s_logger.debug("nic " + nic + " needs to be connected to LogicalSwitch " + brName);
            intf.defBridgeNet(brName, null, nic.getMac(), getGuestNicModel(guestOsType, nicAdapter), networkRateKBps);
        } else if (nic.getBroadcastType() == Networks.BroadcastDomainType.Vsp) {
            intf.setVirtualPortInterfaceId(nic.getUuid());
            String brName = (trafficLabel != null && !trafficLabel.isEmpty()) ? _pifs.get(trafficLabel) : _pifs.get("private");
            intf.defBridgeNet(brName, null, nic.getMac(), getGuestNicModel(guestOsType, nicAdapter), networkRateKBps);
        } else {
            intf.defBridgeNet(_bridges.get("guest"), null, nic.getMac(), getGuestNicModel(guestOsType, nicAdapter), networkRateKBps);
        }
    } else if (nic.getType() == Networks.TrafficType.Control) {
        /* Make sure the network is still there */
        createControlNetwork(_bridges.get("linklocal"));
        intf.defBridgeNet(_bridges.get("linklocal"), null, nic.getMac(), getGuestNicModel(guestOsType, nicAdapter));
    } else if (nic.getType() == Networks.TrafficType.Public) {
        Integer networkRateKBps = (nic.getNetworkRateMbps() != null && nic.getNetworkRateMbps().intValue() != -1) ? nic.getNetworkRateMbps().intValue() * 128 : 0;
        if (nic.getBroadcastType() == Networks.BroadcastDomainType.Vlan && !vlanId.equalsIgnoreCase("untagged")) {
            if (trafficLabel != null && !trafficLabel.isEmpty()) {
                s_logger.debug("creating a vlan dev and bridge for public traffic per traffic label " + trafficLabel);
                intf.defBridgeNet(_pifs.get(trafficLabel), null, nic.getMac(), getGuestNicModel(guestOsType, nicAdapter), networkRateKBps);
                intf.setVlanTag(Integer.parseInt(vlanId));
            } else {
                intf.defBridgeNet(_pifs.get("public"), null, nic.getMac(), getGuestNicModel(guestOsType, nicAdapter), networkRateKBps);
                intf.setVlanTag(Integer.parseInt(vlanId));
            }
        } else {
            intf.defBridgeNet(_bridges.get("public"), null, nic.getMac(), getGuestNicModel(guestOsType, nicAdapter), networkRateKBps);
        }
    } else if (nic.getType() == Networks.TrafficType.Management) {
        intf.defBridgeNet(_bridges.get("private"), null, nic.getMac(), getGuestNicModel(guestOsType, nicAdapter));
    } else if (nic.getType() == Networks.TrafficType.Storage) {
        String storageBrName = nic.getName() == null ? _bridges.get("private") : nic.getName();
        intf.defBridgeNet(storageBrName, null, nic.getMac(), getGuestNicModel(guestOsType, nicAdapter));
    }
    return intf;
}
Also used : InterfaceDef(com.cloud.hypervisor.kvm.resource.LibvirtVMDef.InterfaceDef) InterfaceDef(com.cloud.hypervisor.kvm.resource.LibvirtVMDef.InterfaceDef)

Example 4 with InterfaceDef

use of com.cloud.hypervisor.kvm.resource.LibvirtVMDef.InterfaceDef in project cloudstack by apache.

the class LibvirtComputingResourceTest method testMigrateCommand.

@Test
public void testMigrateCommand() {
    final Connect conn = Mockito.mock(Connect.class);
    final Connect dconn = Mockito.mock(Connect.class);
    final LibvirtUtilitiesHelper libvirtUtilitiesHelper = Mockito.mock(LibvirtUtilitiesHelper.class);
    final String vmName = "Test";
    final String destIp = "127.0.0.100";
    final boolean isWindows = false;
    final VirtualMachineTO vmTO = Mockito.mock(VirtualMachineTO.class);
    final boolean executeInSequence = false;
    DiskTO[] diskTOS = new DiskTO[] {};
    final MigrateCommand command = new MigrateCommand(vmName, destIp, isWindows, vmTO, executeInSequence);
    when(libvirtComputingResource.getLibvirtUtilitiesHelper()).thenReturn(libvirtUtilitiesHelper);
    when(vmTO.getDisks()).thenReturn(diskTOS);
    try {
        when(libvirtUtilitiesHelper.getConnectionByVmName(vmName)).thenReturn(conn);
        when(libvirtUtilitiesHelper.retrieveQemuConnection("qemu+tcp://" + command.getDestinationIp() + "/system")).thenReturn(dconn);
    } catch (final LibvirtException e) {
        fail(e.getMessage());
    }
    final InterfaceDef interfaceDef = Mockito.mock(InterfaceDef.class);
    final List<InterfaceDef> ifaces = new ArrayList<InterfaceDef>();
    ifaces.add(interfaceDef);
    when(libvirtComputingResource.getInterfaces(conn, vmName)).thenReturn(ifaces);
    final DiskDef diskDef = Mockito.mock(DiskDef.class);
    final List<DiskDef> disks = new ArrayList<DiskDef>();
    disks.add(diskDef);
    when(libvirtComputingResource.getDisks(conn, vmName)).thenReturn(disks);
    final Domain dm = Mockito.mock(Domain.class);
    try {
        when(conn.domainLookupByName(vmName)).thenReturn(dm);
        when(libvirtComputingResource.getPrivateIp()).thenReturn("127.0.0.1");
        when(dm.getXMLDesc(8)).thenReturn("<domain type='kvm' id='3'>" + "  <devices>" + "    <graphics type='vnc' port='5900' autoport='yes' listen='10.10.10.1'>" + "      <listen type='address' address='10.10.10.1'/>" + "    </graphics>" + "  </devices>" + "</domain>");
        when(dm.getXMLDesc(1)).thenReturn("<domain type='kvm' id='3'>" + "  <devices>" + "    <graphics type='vnc' port='5900' autoport='yes' listen='10.10.10.1'>" + "      <listen type='address' address='10.10.10.1'/>" + "    </graphics>" + "  </devices>" + "</domain>");
        when(dm.isPersistent()).thenReturn(1);
        doNothing().when(dm).undefine();
    } catch (final LibvirtException e) {
        fail(e.getMessage());
    } catch (final Exception e) {
        fail(e.getMessage());
    }
    final LibvirtRequestWrapper wrapper = LibvirtRequestWrapper.getInstance();
    assertNotNull(wrapper);
    final Answer answer = wrapper.execute(command, libvirtComputingResource);
    assertTrue(answer.getResult());
    verify(libvirtComputingResource, times(1)).getLibvirtUtilitiesHelper();
    try {
        verify(libvirtUtilitiesHelper, times(1)).getConnectionByVmName(vmName);
        verify(libvirtUtilitiesHelper, times(1)).retrieveQemuConnection("qemu+tcp://" + command.getDestinationIp() + "/system");
    } catch (final LibvirtException e) {
        fail(e.getMessage());
    }
    verify(libvirtComputingResource, times(1)).getInterfaces(conn, vmName);
    verify(libvirtComputingResource, times(1)).getDisks(conn, vmName);
    try {
        verify(conn, times(1)).domainLookupByName(vmName);
    } catch (final LibvirtException e) {
        fail(e.getMessage());
    }
    try {
        verify(dm, times(1)).getXMLDesc(8);
    } catch (final Throwable t) {
        try {
            verify(dm, times(1)).getXMLDesc(1);
        } catch (final LibvirtException e) {
            fail(e.getMessage());
        }
    }
}
Also used : LibvirtException(org.libvirt.LibvirtException) Connect(org.libvirt.Connect) ArrayList(java.util.ArrayList) VirtualMachineTO(com.cloud.agent.api.to.VirtualMachineTO) CloudRuntimeException(com.cloud.utils.exception.CloudRuntimeException) IOException(java.io.IOException) XPathExpressionException(javax.xml.xpath.XPathExpressionException) URISyntaxException(java.net.URISyntaxException) LibvirtException(org.libvirt.LibvirtException) SAXException(org.xml.sax.SAXException) InternalErrorException(com.cloud.exception.InternalErrorException) ConfigurationException(javax.naming.ConfigurationException) ParserConfigurationException(javax.xml.parsers.ParserConfigurationException) LibvirtUtilitiesHelper(com.cloud.hypervisor.kvm.resource.wrapper.LibvirtUtilitiesHelper) MigrateCommand(com.cloud.agent.api.MigrateCommand) InterfaceDef(com.cloud.hypervisor.kvm.resource.LibvirtVMDef.InterfaceDef) UnsupportedAnswer(com.cloud.agent.api.UnsupportedAnswer) AttachAnswer(org.apache.cloudstack.storage.command.AttachAnswer) Answer(com.cloud.agent.api.Answer) CheckRouterAnswer(com.cloud.agent.api.CheckRouterAnswer) DiskDef(com.cloud.hypervisor.kvm.resource.LibvirtVMDef.DiskDef) LibvirtRequestWrapper(com.cloud.hypervisor.kvm.resource.wrapper.LibvirtRequestWrapper) Domain(org.libvirt.Domain) DiskTO(com.cloud.agent.api.to.DiskTO) Test(org.junit.Test) PrepareForTest(org.powermock.core.classloader.annotations.PrepareForTest)

Example 5 with InterfaceDef

use of com.cloud.hypervisor.kvm.resource.LibvirtVMDef.InterfaceDef in project cloudstack by apache.

the class LibvirtComputingResourceTest method testPlugNicCommandNoMatchMack.

@Test
public void testPlugNicCommandNoMatchMack() {
    final NicTO nic = Mockito.mock(NicTO.class);
    final String instanceName = "Test";
    final Type vmtype = Type.DomainRouter;
    final PlugNicCommand command = new PlugNicCommand(nic, instanceName, vmtype);
    final LibvirtUtilitiesHelper libvirtUtilitiesHelper = Mockito.mock(LibvirtUtilitiesHelper.class);
    final Connect conn = Mockito.mock(Connect.class);
    final Domain vm = Mockito.mock(Domain.class);
    final VifDriver vifDriver = Mockito.mock(VifDriver.class);
    final InterfaceDef interfaceDef = Mockito.mock(InterfaceDef.class);
    final List<InterfaceDef> nics = new ArrayList<InterfaceDef>();
    final InterfaceDef intDef = Mockito.mock(InterfaceDef.class);
    nics.add(intDef);
    when(libvirtComputingResource.getLibvirtUtilitiesHelper()).thenReturn(libvirtUtilitiesHelper);
    when(libvirtComputingResource.getInterfaces(conn, command.getVmName())).thenReturn(nics);
    when(intDef.getDevName()).thenReturn("eth0");
    when(intDef.getBrName()).thenReturn("br0");
    when(intDef.getMacAddress()).thenReturn("00:00:00:00");
    when(nic.getMac()).thenReturn("00:00:00:01");
    when(nic.getName()).thenReturn("br0");
    try {
        when(libvirtUtilitiesHelper.getConnectionByVmName(command.getVmName())).thenReturn(conn);
        when(libvirtComputingResource.getDomain(conn, instanceName)).thenReturn(vm);
        when(libvirtComputingResource.getVifDriver(nic.getType(), nic.getName())).thenReturn(vifDriver);
        when(vifDriver.plug(nic, "Other PV", "", null)).thenReturn(interfaceDef);
        when(interfaceDef.toString()).thenReturn("Interface");
        final String interfaceDefStr = interfaceDef.toString();
        doNothing().when(vm).attachDevice(interfaceDefStr);
    } catch (final LibvirtException e) {
        fail(e.getMessage());
    } catch (final InternalErrorException e) {
        fail(e.getMessage());
    }
    final LibvirtRequestWrapper wrapper = LibvirtRequestWrapper.getInstance();
    assertNotNull(wrapper);
    final Answer answer = wrapper.execute(command, libvirtComputingResource);
    assertTrue(answer.getResult());
    verify(libvirtComputingResource, times(1)).getLibvirtUtilitiesHelper();
    try {
        verify(libvirtUtilitiesHelper, times(1)).getConnectionByVmName(command.getVmName());
        verify(libvirtComputingResource, times(1)).getDomain(conn, instanceName);
        verify(libvirtComputingResource, times(1)).getVifDriver(nic.getType(), nic.getName());
        verify(vifDriver, times(1)).plug(nic, "Other PV", "", null);
    } catch (final LibvirtException e) {
        fail(e.getMessage());
    } catch (final InternalErrorException e) {
        fail(e.getMessage());
    }
}
Also used : LibvirtException(org.libvirt.LibvirtException) Connect(org.libvirt.Connect) ArrayList(java.util.ArrayList) InternalErrorException(com.cloud.exception.InternalErrorException) LibvirtUtilitiesHelper(com.cloud.hypervisor.kvm.resource.wrapper.LibvirtUtilitiesHelper) InterfaceDef(com.cloud.hypervisor.kvm.resource.LibvirtVMDef.InterfaceDef) UnsupportedAnswer(com.cloud.agent.api.UnsupportedAnswer) AttachAnswer(org.apache.cloudstack.storage.command.AttachAnswer) Answer(com.cloud.agent.api.Answer) CheckRouterAnswer(com.cloud.agent.api.CheckRouterAnswer) TrafficType(com.cloud.network.Networks.TrafficType) HypervisorType(com.cloud.hypervisor.Hypervisor.HypervisorType) Type(com.cloud.vm.VirtualMachine.Type) StoragePoolType(com.cloud.storage.Storage.StoragePoolType) BootloaderType(com.cloud.template.VirtualMachineTemplate.BootloaderType) GuestType(com.cloud.hypervisor.kvm.resource.LibvirtVMDef.GuestDef.GuestType) LibvirtRequestWrapper(com.cloud.hypervisor.kvm.resource.wrapper.LibvirtRequestWrapper) Domain(org.libvirt.Domain) PlugNicCommand(com.cloud.agent.api.PlugNicCommand) UnPlugNicCommand(com.cloud.agent.api.UnPlugNicCommand) NicTO(com.cloud.agent.api.to.NicTO) Test(org.junit.Test) PrepareForTest(org.powermock.core.classloader.annotations.PrepareForTest)

Aggregations

InterfaceDef (com.cloud.hypervisor.kvm.resource.LibvirtVMDef.InterfaceDef)35 Connect (org.libvirt.Connect)32 LibvirtException (org.libvirt.LibvirtException)32 Domain (org.libvirt.Domain)29 InterfaceDef (com.cloud.hypervisor.kvm.resource.LibvirtVmDef.InterfaceDef)20 ArrayList (java.util.ArrayList)18 Test (org.junit.Test)18 Answer (com.cloud.agent.api.Answer)17 CheckRouterAnswer (com.cloud.agent.api.CheckRouterAnswer)16 NicTO (com.cloud.agent.api.to.NicTO)16 LibvirtRequestWrapper (com.cloud.hypervisor.kvm.resource.wrapper.LibvirtRequestWrapper)16 LibvirtUtilitiesHelper (com.cloud.hypervisor.kvm.resource.wrapper.LibvirtUtilitiesHelper)16 InternalErrorException (com.cloud.exception.InternalErrorException)12 UnPlugNicCommand (com.cloud.agent.api.UnPlugNicCommand)10 PrepareForTest (org.powermock.core.classloader.annotations.PrepareForTest)10 UnsupportedAnswer (com.cloud.agent.api.UnsupportedAnswer)9 VifDriver (com.cloud.hypervisor.kvm.resource.VifDriver)9 AttachAnswer (org.apache.cloudstack.storage.command.AttachAnswer)9 DiskDef (com.cloud.hypervisor.kvm.resource.LibvirtVMDef.DiskDef)7 AttachAnswer (com.cloud.storage.command.AttachAnswer)7