Search in sources :

Example 1 with LogicalSwitch

use of com.cloud.network.nicira.LogicalSwitch in project cloudstack by apache.

the class NiciraNvpResourceTest method testCreateLogicalSwitchApiException.

@Test
public void testCreateLogicalSwitchApiException() throws ConfigurationException, NiciraNvpApiException {
    resource.configure("NiciraNvpResource", parameters);
    final LogicalSwitch ls = mock(LogicalSwitch.class);
    when(ls.getUuid()).thenReturn("cccc").thenReturn("cccc");
    when(nvpApi.createLogicalSwitch((LogicalSwitch) any())).thenThrow(new NiciraNvpApiException());
    final CreateLogicalSwitchCommand clsc = new CreateLogicalSwitchCommand((String) parameters.get("guid"), "stt", "loigicalswitch", "owner");
    final CreateLogicalSwitchAnswer clsa = (CreateLogicalSwitchAnswer) resource.executeRequest(clsc);
    assertFalse(clsa.getResult());
}
Also used : CreateLogicalSwitchAnswer(com.cloud.agent.api.CreateLogicalSwitchAnswer) LogicalSwitch(com.cloud.network.nicira.LogicalSwitch) NiciraNvpApiException(com.cloud.network.nicira.NiciraNvpApiException) CreateLogicalSwitchCommand(com.cloud.agent.api.CreateLogicalSwitchCommand) Test(org.junit.Test)

Example 2 with LogicalSwitch

use of com.cloud.network.nicira.LogicalSwitch in project cloudstack by apache.

the class NiciraNvpRequestWrapperTest method testCreateLogicalSwitchCommandWrapper.

@Test
public void testCreateLogicalSwitchCommandWrapper() {
    final NiciraNvpApi niciraNvpApi = Mockito.mock(NiciraNvpApi.class);
    final NiciraNvpUtilities niciraNvpUtilities = Mockito.mock(NiciraNvpUtilities.class);
    final LogicalSwitch logicalSwitch = Mockito.mock(LogicalSwitch.class);
    final String transportUuid = "d2e05a9e-7120-4487-a5fc-414ab36d9345";
    final String transportType = "stt";
    final String name = "logicalswitch";
    final String ownerName = "owner";
    final CreateLogicalSwitchCommand command = new CreateLogicalSwitchCommand(transportUuid, transportType, name, ownerName);
    final String truncated = "lswitch-" + command.getName();
    when(niciraNvpResource.getNiciraNvpUtilities()).thenReturn(niciraNvpUtilities);
    when(niciraNvpUtilities.createLogicalSwitch()).thenReturn(logicalSwitch);
    when(niciraNvpResource.truncate("lswitch-" + command.getName(), NiciraNvpResource.NAME_MAX_LEN)).thenReturn(truncated);
    when(niciraNvpResource.getNiciraNvpApi()).thenReturn(niciraNvpApi);
    try {
        when(niciraNvpApi.createLogicalSwitch(logicalSwitch)).thenReturn(logicalSwitch);
        when(logicalSwitch.getUuid()).thenReturn(transportUuid);
    } catch (final NiciraNvpApiException e) {
        fail(e.getMessage());
    }
    final NiciraNvpRequestWrapper wrapper = NiciraNvpRequestWrapper.getInstance();
    assertNotNull(wrapper);
    final Answer answer = wrapper.execute(command, niciraNvpResource);
    assertTrue(answer.getResult());
}
Also used : Answer(com.cloud.agent.api.Answer) NiciraNvpApi(com.cloud.network.nicira.NiciraNvpApi) LogicalSwitch(com.cloud.network.nicira.LogicalSwitch) NiciraNvpApiException(com.cloud.network.nicira.NiciraNvpApiException) CreateLogicalSwitchCommand(com.cloud.agent.api.CreateLogicalSwitchCommand) Test(org.junit.Test)

Example 3 with LogicalSwitch

use of com.cloud.network.nicira.LogicalSwitch in project cloudstack by apache.

the class NiciraNvpCreateLogicalSwitchCommandWrapper method execute.

@Override
public Answer execute(final CreateLogicalSwitchCommand command, final NiciraNvpResource niciraNvpResource) {
    final NiciraNvpUtilities niciraNvpUtilities = niciraNvpResource.getNiciraNvpUtilities();
    LogicalSwitch logicalSwitch = niciraNvpUtilities.createLogicalSwitch();
    logicalSwitch.setDisplayName(niciraNvpResource.truncate("lswitch-" + command.getName(), NiciraNvpResource.NAME_MAX_LEN));
    logicalSwitch.setPortIsolationEnabled(false);
    // Set transport binding
    final List<TransportZoneBinding> ltzb = new ArrayList<TransportZoneBinding>();
    ltzb.add(new TransportZoneBinding(command.getTransportUuid(), command.getTransportType()));
    logicalSwitch.setTransportZones(ltzb);
    // Tags set to scope cs_account and account name
    final List<NiciraNvpTag> tags = new ArrayList<NiciraNvpTag>();
    tags.add(new NiciraNvpTag("cs_account", command.getOwnerName()));
    logicalSwitch.setTags(tags);
    try {
        final NiciraNvpApi niciraNvpApi = niciraNvpResource.getNiciraNvpApi();
        logicalSwitch = niciraNvpApi.createLogicalSwitch(logicalSwitch);
        final String switchUuid = logicalSwitch.getUuid();
        return new CreateLogicalSwitchAnswer(command, true, "Logicalswitch " + switchUuid + " created", switchUuid);
    } catch (final NiciraNvpApiException e) {
        final CommandRetryUtility retryUtility = niciraNvpResource.getRetryUtility();
        retryUtility.addRetry(command, NUM_RETRIES);
        return retryUtility.retry(command, CreateLogicalSwitchAnswer.class, e);
    }
}
Also used : CreateLogicalSwitchAnswer(com.cloud.agent.api.CreateLogicalSwitchAnswer) NiciraNvpUtilities(com.cloud.network.resource.NiciraNvpUtilities) LogicalSwitch(com.cloud.network.nicira.LogicalSwitch) TransportZoneBinding(com.cloud.network.nicira.TransportZoneBinding) NiciraNvpTag(com.cloud.network.nicira.NiciraNvpTag) NiciraNvpApi(com.cloud.network.nicira.NiciraNvpApi) ArrayList(java.util.ArrayList) CommandRetryUtility(com.cloud.network.utils.CommandRetryUtility) NiciraNvpApiException(com.cloud.network.nicira.NiciraNvpApiException)

Example 4 with LogicalSwitch

use of com.cloud.network.nicira.LogicalSwitch in project cloudstack by apache.

the class NiciraNvpConfigureSharedNetworkUuidCommandWrapper method execute.

@Override
public Answer execute(ConfigureSharedNetworkUuidCommand command, NiciraNvpResource niciraNvpResource) {
    final String logicalRouterUuid = command.getLogicalRouterUuid();
    final String logicalSwitchUuid = command.getLogicalSwitchUuid();
    final String portIpAddress = command.getPortIpAddress();
    final List<NiciraNvpTag> tags = new ArrayList<NiciraNvpTag>();
    tags.add(new NiciraNvpTag("cs_account", command.getOwnerName()));
    final long networkId = command.getNetworkId();
    final NiciraNvpApi niciraNvpApi = niciraNvpResource.getNiciraNvpApi();
    s_logger.debug("Attaching Logical Switch " + logicalSwitchUuid + " on Logical Router " + logicalRouterUuid + " for Shared Network " + networkId);
    //Step 1: Get lSwitch displayName
    s_logger.info("Looking for Logical Switch " + logicalSwitchUuid + " display name");
    String logicalSwitchDisplayName;
    try {
        List<LogicalSwitch> lSwitchList = niciraNvpApi.findLogicalSwitch(logicalSwitchUuid);
        if (lSwitchList != null) {
            if (lSwitchList.size() == 1) {
                logicalSwitchDisplayName = lSwitchList.get(0).getDisplayName();
            } else {
                s_logger.error("More than one Logical Switch found with uuid " + logicalSwitchUuid);
                throw new CloudRuntimeException("More than one Logical Switch found with uuid=" + logicalSwitchUuid);
            }
        } else {
            s_logger.error("Logical Switch " + logicalSwitchUuid + " not found");
            throw new CloudRuntimeException("Logical Switch " + logicalSwitchUuid + " not found");
        }
    } catch (NiciraNvpApiException e) {
        s_logger.warn("Logical Switch " + logicalSwitchUuid + " not found, retrying");
        final CommandRetryUtility retryUtility = niciraNvpResource.getRetryUtility();
        retryUtility.addRetry(command, NUM_RETRIES);
        return retryUtility.retry(command, ConfigureSharedNetworkUuidAnswer.class, e);
    } catch (CloudRuntimeException e) {
        s_logger.info("Shared network UUID vlan id failed due to : " + e.getMessage());
        return new ConfigureSharedNetworkUuidAnswer(command, false, e.getMessage());
    }
    s_logger.info("Found display name " + logicalSwitchDisplayName + " for Logical Switch " + logicalSwitchUuid);
    //Step 2: Create lRouterPort
    s_logger.debug("Creating Logical Router Port in Logical Router " + logicalRouterUuid);
    LogicalRouterPort lRouterPort = null;
    try {
        lRouterPort = new LogicalRouterPort();
        lRouterPort.setAdminStatusEnabled(true);
        lRouterPort.setDisplayName(niciraNvpResource.truncate(logicalSwitchDisplayName + "-uplink", NAME_MAX_LEN));
        lRouterPort.setTags(tags);
        final List<String> ipAddresses = new ArrayList<String>();
        ipAddresses.add(portIpAddress);
        lRouterPort.setIpAddresses(ipAddresses);
        lRouterPort = niciraNvpApi.createLogicalRouterPort(logicalRouterUuid, lRouterPort);
    } catch (NiciraNvpApiException e) {
        s_logger.warn("Could not create Logical Router Port on Logical Router " + logicalRouterUuid + " due to: " + e.getMessage() + ", retrying");
        return handleException(e, command, niciraNvpResource);
    }
    s_logger.debug("Logical Router Port " + lRouterPort.getUuid() + " (" + lRouterPort.getDisplayName() + ") successfully created in Logical Router " + logicalRouterUuid);
    //Step 3: Create lSwitchPort
    s_logger.debug("Creating Logical Switch Port in Logical Switch " + logicalSwitchUuid + " (" + logicalSwitchDisplayName + ")");
    LogicalSwitchPort lSwitchPort = null;
    try {
        lSwitchPort = new LogicalSwitchPort(niciraNvpResource.truncate("lrouter-uplink", NAME_MAX_LEN), tags, true);
        lSwitchPort = niciraNvpApi.createLogicalSwitchPort(logicalSwitchUuid, lSwitchPort);
    } catch (NiciraNvpApiException e) {
        s_logger.warn("Could not create Logical Switch Port on Logical Switch " + logicalSwitchUuid + " (" + logicalSwitchDisplayName + ")  due to: " + e.getMessage());
        cleanupLRouterPort(logicalRouterUuid, lRouterPort, niciraNvpApi);
        return handleException(e, command, niciraNvpResource);
    }
    s_logger.debug("Logical Switch Port " + lSwitchPort.getUuid() + " (" + lSwitchPort.getDisplayName() + ") successfully created in Logical Switch " + logicalSwitchUuid + " (" + logicalSwitchDisplayName + ")");
    //Step 4: Attach lRouterPort to lSwitchPort with a PatchAttachment
    s_logger.debug("Attaching Logical Router Port " + lRouterPort.getUuid() + " (" + lRouterPort.getDisplayName() + ") to Logical Switch Port " + lSwitchPort.getUuid() + " (" + lSwitchPort.getDisplayName() + ") with a PatchAttachment");
    try {
        niciraNvpApi.updateLogicalRouterPortAttachment(logicalRouterUuid, lRouterPort.getUuid(), new PatchAttachment(lSwitchPort.getUuid()));
    } catch (NiciraNvpApiException e) {
        s_logger.warn("Could not attach Logical Router Port " + lRouterPort.getUuid() + " (" + lRouterPort.getDisplayName() + ") to Logical Switch Port " + lSwitchPort.getUuid() + " (" + lSwitchPort.getDisplayName() + ") due to: " + e.getMessage() + ", retrying");
        cleanupLRouterPort(logicalRouterUuid, lRouterPort, niciraNvpApi);
        cleanupLSwitchPort(logicalSwitchUuid, lSwitchPort, niciraNvpApi);
        return handleException(e, command, niciraNvpResource);
    }
    s_logger.debug("Logical Router Port " + lRouterPort.getUuid() + " (" + lRouterPort.getDisplayName() + ") successfully attached to to Logical Switch Port " + lSwitchPort.getUuid() + " (" + lSwitchPort.getDisplayName() + ") with a PatchAttachment");
    //Step 5: Attach lSwitchPort to lRouterPort with a PatchAttachment
    s_logger.debug("Attaching Logical Switch Port " + lSwitchPort.getUuid() + " (" + lSwitchPort.getDisplayName() + ") to Logical Router Port " + lRouterPort.getUuid() + " (" + lRouterPort.getDisplayName() + ") with a PatchAttachment");
    try {
        niciraNvpApi.updateLogicalSwitchPortAttachment(logicalSwitchUuid, lSwitchPort.getUuid(), new PatchAttachment(lRouterPort.getUuid()));
    } catch (NiciraNvpApiException e) {
        s_logger.warn("Could not attach Logical Switch Port " + lSwitchPort.getUuid() + " (" + lSwitchPort.getDisplayName() + ") to Logical Router Port " + lRouterPort.getUuid() + " (" + lRouterPort.getDisplayName() + ") due to: " + e.getMessage() + ", retrying");
        cleanupLRouterPort(logicalRouterUuid, lRouterPort, niciraNvpApi);
        cleanupLSwitchPort(logicalSwitchUuid, lSwitchPort, niciraNvpApi);
        return handleException(e, command, niciraNvpResource);
    }
    s_logger.debug("Logical Switch Port " + lSwitchPort.getUuid() + " (" + lSwitchPort.getDisplayName() + ") successfully attached to to Logical Router Port " + lRouterPort.getUuid() + " (" + lRouterPort.getDisplayName() + ") with a PatchAttachment");
    s_logger.info("Successfully attached Logical Switch " + logicalSwitchUuid + " on Logical Router " + logicalRouterUuid + " for Shared Network " + networkId);
    return new ConfigureSharedNetworkUuidAnswer(command, true, "OK");
}
Also used : ConfigureSharedNetworkUuidAnswer(com.cloud.agent.api.ConfigureSharedNetworkUuidAnswer) LogicalRouterPort(com.cloud.network.nicira.LogicalRouterPort) LogicalSwitch(com.cloud.network.nicira.LogicalSwitch) ArrayList(java.util.ArrayList) PatchAttachment(com.cloud.network.nicira.PatchAttachment) CloudRuntimeException(com.cloud.utils.exception.CloudRuntimeException) NiciraNvpTag(com.cloud.network.nicira.NiciraNvpTag) NiciraNvpApi(com.cloud.network.nicira.NiciraNvpApi) CommandRetryUtility(com.cloud.network.utils.CommandRetryUtility) NiciraNvpApiException(com.cloud.network.nicira.NiciraNvpApiException) LogicalSwitchPort(com.cloud.network.nicira.LogicalSwitchPort)

Example 5 with LogicalSwitch

use of com.cloud.network.nicira.LogicalSwitch in project cloudstack by apache.

the class NiciraNvpResourceTest method testCreateLogicalSwitch.

@Test
public void testCreateLogicalSwitch() throws ConfigurationException, NiciraNvpApiException {
    resource.configure("NiciraNvpResource", parameters);
    final LogicalSwitch ls = mock(LogicalSwitch.class);
    when(ls.getUuid()).thenReturn("cccc").thenReturn("cccc");
    when(nvpApi.createLogicalSwitch((LogicalSwitch) any())).thenReturn(ls);
    final CreateLogicalSwitchCommand clsc = new CreateLogicalSwitchCommand((String) parameters.get("guid"), "stt", "loigicalswitch", "owner");
    final CreateLogicalSwitchAnswer clsa = (CreateLogicalSwitchAnswer) resource.executeRequest(clsc);
    assertTrue(clsa.getResult());
    assertTrue("cccc".equals(clsa.getLogicalSwitchUuid()));
}
Also used : CreateLogicalSwitchAnswer(com.cloud.agent.api.CreateLogicalSwitchAnswer) LogicalSwitch(com.cloud.network.nicira.LogicalSwitch) CreateLogicalSwitchCommand(com.cloud.agent.api.CreateLogicalSwitchCommand) Test(org.junit.Test)

Aggregations

LogicalSwitch (com.cloud.network.nicira.LogicalSwitch)6 NiciraNvpApiException (com.cloud.network.nicira.NiciraNvpApiException)5 CreateLogicalSwitchAnswer (com.cloud.agent.api.CreateLogicalSwitchAnswer)4 CreateLogicalSwitchCommand (com.cloud.agent.api.CreateLogicalSwitchCommand)4 Test (org.junit.Test)4 NiciraNvpApi (com.cloud.network.nicira.NiciraNvpApi)3 NiciraNvpTag (com.cloud.network.nicira.NiciraNvpTag)2 CommandRetryUtility (com.cloud.network.utils.CommandRetryUtility)2 ArrayList (java.util.ArrayList)2 Answer (com.cloud.agent.api.Answer)1 ConfigureSharedNetworkUuidAnswer (com.cloud.agent.api.ConfigureSharedNetworkUuidAnswer)1 LogicalRouterPort (com.cloud.network.nicira.LogicalRouterPort)1 LogicalSwitchPort (com.cloud.network.nicira.LogicalSwitchPort)1 PatchAttachment (com.cloud.network.nicira.PatchAttachment)1 TransportZoneBinding (com.cloud.network.nicira.TransportZoneBinding)1 NiciraNvpUtilities (com.cloud.network.resource.NiciraNvpUtilities)1 CloudRuntimeException (com.cloud.utils.exception.CloudRuntimeException)1