Search in sources :

Example 1 with NetworkService

use of com.att.cdp.zones.NetworkService in project AJSC by att.

the class ConnectedPort method delete.

@Override
public void delete() throws ZoneException {
    NetworkService service = getContext().getNetworkService();
    service.deletePort(this);
}
Also used : NetworkService(com.att.cdp.zones.NetworkService)

Example 2 with NetworkService

use of com.att.cdp.zones.NetworkService in project AJSC by att.

the class OpenStackComputeService method createServer.

/**
 * Create a server using the supplied server object as the pattern
 *
 * @param model
 *            The server to create. The model object must contain the following attributes in order to be legal for
 *            creating a new server:
 *            <ul>
 *            <li>The name of the server</li>
 *            <li>The id of the template to be used</li>
 *            <li>The id of the image to be used</li>
 *            </ul>
 *            In addition, the model object may also contain a list of ACL's that are to be assigned.
 * @return A reference to the connected server. The template server (the argument passed) remains disconnected. The
 *         user is encouraged to use the referenced returned from this method for any further operations on the
 *         server.
 * @throws ZoneException
 *             If the server cannot be created
 * @see com.att.cdp.zones.ComputeService#createServer(com.att.cdp.zones.model.Server)
 */
@SuppressWarnings("nls")
@Override
public Server createServer(Server model) throws ZoneException {
    checkArg(model, "model");
    connect();
    Context context = getContext();
    trackRequest();
    RequestState.put(RequestState.SERVER, model.getName());
    RequestState.put(RequestState.IMAGE, model.getImage());
    RequestState.put(RequestState.TEMPLATE, model.getTemplate());
    RequestState.put(RequestState.KEYPAIR, model.getKeyName());
    RequestState.put(RequestState.SERVICE, "Compute");
    RequestState.put(RequestState.SERVICE_URL, nova.getEndpoint());
    try {
        HashMap<String, String> dictionary = new HashMap<>();
        dictionary.put("name", "name");
        dictionary.put("image", "imageRef");
        dictionary.put("template", "flavorRef");
        dictionary.put("availabilityZone", "availabilityZone");
        ServerForCreate create = new ServerForCreate();
        ObjectMapper.map(model, create, dictionary);
        /*
             * If an ACL list is present, then use the specified ACL models to request the appropriate security groups
             */
        if (model.getAccessControl() != null) {
            for (ACL entry : model.getAccessControl()) {
                create.getSecurityGroups().add(new ServerForCreate.SecurityGroup(entry.getName()));
            }
        } else {
            create.getSecurityGroups().add(new ServerForCreate.SecurityGroup("default"));
        }
        /*
             * If the key pair name is specified in the server object, set that on the request
             */
        if (model.getKeyName() != null) {
            create.setKeyName(model.getKeyName());
        }
        /*
             * If there is an init script, set it up in the request
             */
        if (model.getInitScript() != null) {
            String initScript = model.getInitScript();
            String encoded = Base64.encodeBase64String(initScript.getBytes());
            create.setUserData(encoded);
        }
        /*
             * Process ports if they are specified. Fall-back to the deprecated network associations if ports are not
             * specified.
             */
        com.woorea.openstack.nova.model.Server osServer = null;
        List<NetworkForCreate> networks = new ArrayList<>();
        NetworkService networkService = context.getNetworkService();
        if (model.getPorts() != null && !model.getPorts().isEmpty()) {
            for (Port port : model.getPorts()) {
                /*
                     * See if the port is connected (exists) or is disconnected (it is a model). If disconnected, then
                     * we have to create the port first.
                     */
                if (!port.isConnected()) {
                    Subnet subnet = networkService.getSubnetById(port.getSubnetId());
                    port = networkService.createPort(subnet);
                }
                NetworkForCreate newNet = new NetworkForCreate();
                newNet.setPort(port.getId());
                networks.add(newNet);
            }
            create.setNetworks(networks);
        } else if (!model.getNetworks().isEmpty()) {
            for (Network networkModel : model.getNetworks()) {
                List<Network> networkList = networkService.getNetworksByName(networkModel.getName());
                if (networkList.isEmpty()) {
                    throw new ZoneException(String.format("Network %s cannot be found", networkModel.getName()));
                }
                Network network = networkList.get(0);
                NetworkForCreate newNet = new NetworkForCreate();
                newNet.setId(network.getId());
                networks.add(newNet);
            }
            create.setNetworks(networks);
        }
        ServersResource resource = nova.getClient().servers();
        Boot boot = resource.boot(create);
        osServer = boot.execute();
        com.woorea.openstack.nova.model.Server.Fault osFault = osServer.getFault();
        ConnectedServer server = (ConnectedServer) getServer(osServer.getId());
        if (osFault != null) {
            server.setFault(new OpenStackFault(context, osFault));
        }
        return server;
    } catch (OpenStackBaseException ex) {
        ExceptionMapper.mapException(ex);
    }
    // for the compiler
    return null;
}
Also used : Server(com.att.cdp.zones.model.Server) ConnectedServer(com.att.cdp.zones.spi.model.ConnectedServer) OpenStackServer(com.att.cdp.openstack.model.OpenStackServer) HashMap(java.util.HashMap) ConnectedServer(com.att.cdp.zones.spi.model.ConnectedServer) OpenStackBaseException(com.woorea.openstack.base.client.OpenStackBaseException) Port(com.att.cdp.zones.model.Port) OpenStackPort(com.att.cdp.openstack.model.OpenStackPort) ArrayList(java.util.ArrayList) ServersResource(com.woorea.openstack.nova.api.ServersResource) Boot(com.woorea.openstack.nova.api.ServersResource.Boot) NetworkForCreate(com.woorea.openstack.nova.model.NetworkForCreate) Network(com.att.cdp.zones.model.Network) OpenStackNetwork(com.att.cdp.openstack.model.OpenStackNetwork) List(java.util.List) ArrayList(java.util.ArrayList) Context(com.att.cdp.zones.Context) OpenStackContext(com.att.cdp.openstack.OpenStackContext) OpenStackACL(com.att.cdp.openstack.model.OpenStackACL) ACL(com.att.cdp.zones.model.ACL) OpenStackFault(com.att.cdp.openstack.model.OpenStackFault) ZoneException(com.att.cdp.exceptions.ZoneException) ServerForCreate(com.woorea.openstack.nova.model.ServerForCreate) NetworkService(com.att.cdp.zones.NetworkService) Subnet(com.att.cdp.zones.model.Subnet)

Example 3 with NetworkService

use of com.att.cdp.zones.NetworkService in project AJSC by att.

the class OpenStackComputeService method createServer.

/**
 * Create a server using the supplied server object as the pattern
 *
 * @param model
 *            The server to create. The model object must contain the
 *            following attributes in order to be legal for creating a new
 *            server:
 *            <ul>
 *            <li>The name of the server</li>
 *            <li>The id of the template to be used</li>
 *            <li>The id of the image to be used</li>
 *            </ul>
 *            In addition, the model object may also contain a list of ACL's
 *            that are to be assigned.
 * @return A reference to the connected server. The template server (the
 *         argument passed) remains disconnected. The user is encouraged to
 *         use the referenced returned from this method for any further
 *         operations on the server.
 * @throws ZoneException
 *             If the server cannot be created
 * @see com.att.cdp.zones.ComputeService#createServer(com.att.cdp.zones.model.Server)
 */
@SuppressWarnings("nls")
@Override
public Server createServer(Server model) throws ZoneException {
    checkArg(model, "model");
    connect();
    Context context = getContext();
    trackRequest();
    RequestState.put(RequestState.SERVER, model.getName());
    RequestState.put(RequestState.IMAGE, model.getImage());
    RequestState.put(RequestState.TEMPLATE, model.getTemplate());
    RequestState.put(RequestState.KEYPAIR, model.getKeyName());
    RequestState.put(RequestState.SERVICE, "Compute");
    RequestState.put(RequestState.SERVICE_URL, nova.getEndpoint());
    try {
        HashMap<String, String> dictionary = new HashMap<>();
        dictionary.put("name", "name");
        dictionary.put("image", "imageRef");
        dictionary.put("template", "flavorRef");
        dictionary.put("availabilityZone", "availabilityZone");
        ServerForCreate create = new ServerForCreate();
        ObjectMapper.map(model, create, dictionary);
        /*
			 * If an ACL list is present, then use the specified ACL models to
			 * request the appropriate security groups
			 */
        if (model.getAccessControl() != null) {
            for (ACL acl : model.getAccessControl()) {
                ServerForCreate.SecurityGroup group = new ServerForCreate.SecurityGroup(acl.getName());
                create.getSecurityGroups().add(group);
            }
        }
        /*
			 * If the key pair name is specified in the server object, set that
			 * on the request
			 */
        if (model.getKeyName() != null) {
            create.setKeyName(model.getKeyName());
        }
        if (model.getAccessControl() != null) {
            for (ACL entry : model.getAccessControl()) {
                create.getSecurityGroups().add(new ServerForCreate.SecurityGroup(entry.getName()));
            }
        } else {
            create.getSecurityGroups().add(new ServerForCreate.SecurityGroup("default"));
        }
        /*
			 * Process ports if they are specified. Fall-back to the deprecated
			 * network associations if ports are not specified.
			 */
        com.woorea.openstack.nova.model.Server osServer = null;
        List<NetworkForCreate> networks = new ArrayList<>();
        NetworkService networkService = context.getNetworkService();
        if (model.getPorts() != null && !model.getPorts().isEmpty()) {
            for (Port port : model.getPorts()) {
                /*
					 * See if the port is connected (exists) or is disconnected
					 * (it is a model). If disconnected, then we have to create
					 * the port first.
					 */
                if (!port.isConnected()) {
                    Subnet subnet = networkService.getSubnetById(port.getSubnetId());
                    port = networkService.createPort(subnet);
                }
                NetworkForCreate newNet = new NetworkForCreate();
                newNet.setPort(port.getId());
                networks.add(newNet);
            }
            create.setNetworks(networks);
        } else if (!model.getNetworks().isEmpty()) {
            for (Network networkModel : model.getNetworks()) {
                List<Network> networkList = networkService.getNetworksByName(networkModel.getName());
                if (networkList.isEmpty()) {
                    throw new ZoneException(String.format("Network %s cannot be found", networkModel.getName()));
                }
                Network network = networkList.get(0);
                NetworkForCreate newNet = new NetworkForCreate();
                newNet.setId(network.getId());
                networks.add(newNet);
            }
            create.setNetworks(networks);
        }
        ServersResource resource = nova.getClient().servers();
        Boot boot = resource.boot(create);
        osServer = boot.execute();
        com.woorea.openstack.nova.model.Server.Fault osFault = osServer.getFault();
        ConnectedServer server = (ConnectedServer) getServer(osServer.getId());
        if (osFault != null) {
            server.setFault(new OpenStackFault(context, osFault));
        }
        return server;
    } catch (OpenStackBaseException ex) {
        ExceptionMapper.mapException(ex);
    }
    // for the compiler
    return null;
}
Also used : Server(com.att.cdp.zones.model.Server) ConnectedServer(com.att.cdp.zones.spi.model.ConnectedServer) OpenStackServer(com.att.cdp.openstack.model.OpenStackServer) HashMap(java.util.HashMap) ConnectedServer(com.att.cdp.zones.spi.model.ConnectedServer) OpenStackBaseException(com.woorea.openstack.base.client.OpenStackBaseException) Port(com.att.cdp.zones.model.Port) OpenStackPort(com.att.cdp.openstack.model.OpenStackPort) ArrayList(java.util.ArrayList) ServersResource(com.woorea.openstack.nova.api.ServersResource) Boot(com.woorea.openstack.nova.api.ServersResource.Boot) NetworkForCreate(com.woorea.openstack.nova.model.NetworkForCreate) Network(com.att.cdp.zones.model.Network) List(java.util.List) ArrayList(java.util.ArrayList) Context(com.att.cdp.zones.Context) OpenStackContext(com.att.cdp.openstack.OpenStackContext) OpenStackACL(com.att.cdp.openstack.model.OpenStackACL) ACL(com.att.cdp.zones.model.ACL) SecurityGroup(com.woorea.openstack.nova.model.SecurityGroup) OpenStackFault(com.att.cdp.openstack.model.OpenStackFault) ZoneException(com.att.cdp.exceptions.ZoneException) ServerForCreate(com.woorea.openstack.nova.model.ServerForCreate) NetworkService(com.att.cdp.zones.NetworkService) Subnet(com.att.cdp.zones.model.Subnet)

Example 4 with NetworkService

use of com.att.cdp.zones.NetworkService in project AJSC by att.

the class TestOpenStackContext method testLoginLogout.

/**
 * Test that we can login and out of the provider, and access the services once logged in (so we dont have to
 * repeatedly login/out)
 *
 * @throws ZoneException
 */
@Test
@Ignore
public void testLoginLogout() throws ZoneException {
    OpenStackContext context = login();
    /*
         * make sure we can retreive all of the services
         */
    ComputeService computeService = context.getComputeService();
    assertNotNull(computeService);
    IdentityService identityService = context.getIdentityService();
    assertNotNull(identityService);
    ImageService imageService = context.getImageService();
    assertNotNull(imageService);
    NetworkService networkService = context.getNetworkService();
    assertNotNull(networkService);
    VolumeService volumeService = context.getVolumeService();
    assertNotNull(volumeService);
    SnapshotService snapshotService = context.getSnapshotService();
    assertNotNull(snapshotService);
    StackService stackService = context.getStackService();
    assertNotNull(stackService);
    /*
         * Services are locally cached by the provider context. If we get them again, we should get the same exact
         * object. Check that too.
         */
    assertTrue(computeService == context.getComputeService());
    assertTrue(identityService == context.getIdentityService());
    assertTrue(imageService == context.getImageService());
    assertTrue(networkService == context.getNetworkService());
    assertTrue(volumeService == context.getVolumeService());
    assertTrue(snapshotService == context.getSnapshotService());
    assertTrue(stackService == context.getStackService());
    /*
         * Test that we can also obtain the connectors
         */
    GlanceConnector glanceConnector = context.getGlanceConnector();
    assertNotNull(glanceConnector);
    NovaConnector novaConnector = context.getNovaConnector();
    assertNotNull(novaConnector);
    QuantumConnector quantumConnector = context.getQuantumConnector();
    assertNotNull(quantumConnector);
    /*
         * Connectors are locally cached, check that
         */
    assertTrue(glanceConnector == context.getGlanceConnector());
    assertTrue(novaConnector == context.getNovaConnector());
    assertTrue(quantumConnector == context.getQuantumConnector());
    /*
         * Now, check that we can obtain the tenant as well
         */
    Tenant tenant = context.getTenant();
    assertNotNull(tenant);
    assertEquals(tenant.getName(), context.getTenantName());
    assertEquals(tenant.getId(), context.getTenantId());
    logout(context);
}
Also used : IdentityService(com.att.cdp.zones.IdentityService) SnapshotService(com.att.cdp.zones.SnapshotService) StackService(com.att.cdp.zones.StackService) Tenant(com.att.cdp.zones.model.Tenant) GlanceConnector(com.att.cdp.openstack.connectors.GlanceConnector) VolumeService(com.att.cdp.zones.VolumeService) QuantumConnector(com.att.cdp.openstack.connectors.QuantumConnector) NetworkService(com.att.cdp.zones.NetworkService) NovaConnector(com.att.cdp.openstack.connectors.NovaConnector) OpenStackComputeService(com.att.cdp.openstack.v2.OpenStackComputeService) ComputeService(com.att.cdp.zones.ComputeService) ImageService(com.att.cdp.zones.ImageService) Ignore(org.junit.Ignore) Test(org.junit.Test)

Example 5 with NetworkService

use of com.att.cdp.zones.NetworkService in project AJSC by att.

the class TestComputeService method testAttachAndDetachPorts.

/**
 * Test the attach and detach of a port
 *
 * @throws ZoneException
 *             if the test fails
 */
@SuppressWarnings("nls")
@Test
@Ignore
public void testAttachAndDetachPorts() throws ZoneException {
    Context context = connect();
    ComputeService compute = context.getComputeService();
    NetworkService network = context.getNetworkService();
    /*
		 * Get a list of servers. Make sure that at least one server exists.
		 * We'll just use the first one we find.
		 */
    List<Server> servers = compute.getServers();
    assertNotNull(servers);
    assertFalse(servers.isEmpty());
    Server server = servers.get(0);
    // 
    /*
		 * Now, get the ports attached to that server. Make sure there is at
		 * least one port. We'll use the first one we find.
		 */
    List<Port> ports = server.getPorts();
    assertNotNull(ports);
    assertFalse(ports.isEmpty());
    /*
		 * Use the first port to model the creation of a new port. We'll use the
		 * same subnet.
		 */
    Port modelPort = ports.get(0);
    Subnet subnet = network.getSubnetById(modelPort.getSubnetId());
    Port newPort = network.createPort(subnet);
    assertNotNull(newPort);
    assertNotNull(newPort.getMacAddr());
    assertNotNull(newPort.getId());
    /*
		 * Save the new port's ID. We'll use that to test that it was actually
		 * attached and detached
		 */
    String id = newPort.getId();
    /*
		 * Attach the port to the server. Then list all the ports and make sure
		 * the new port is included
		 */
    server.attachPort(newPort);
    ports = server.getPorts();
    boolean found = false;
    for (Port p : ports) {
        if (p.getId().equals(id)) {
            found = true;
            break;
        }
    }
    if (!found) {
        fail("Port is not listed as attached to the server");
    }
    /*
		 * Now detach the port and make sure that it is NOT listed
		 */
    server.detachPort(newPort);
    try {
        Thread.sleep(1000L);
    } catch (InterruptedException e) {
    // ignore
    }
    ports = server.getPorts();
    found = false;
    for (Port p : ports) {
        if (p.getId().equals(id)) {
            found = true;
            break;
        }
    }
    if (found) {
        fail("Port is still listed as attached to the server");
    }
    /*
		 * Finally, delete the new port
		 */
    network.deletePort(newPort);
}
Also used : Context(com.att.cdp.zones.Context) Server(com.att.cdp.zones.model.Server) Port(com.att.cdp.zones.model.Port) NetworkService(com.att.cdp.zones.NetworkService) Subnet(com.att.cdp.zones.model.Subnet) ComputeService(com.att.cdp.zones.ComputeService) Ignore(org.junit.Ignore) Test(org.junit.Test)

Aggregations

NetworkService (com.att.cdp.zones.NetworkService)27 Context (com.att.cdp.zones.Context)24 Ignore (org.junit.Ignore)22 Test (org.junit.Test)21 ZoneException (com.att.cdp.exceptions.ZoneException)15 Network (com.att.cdp.zones.model.Network)13 Subnet (com.att.cdp.zones.model.Subnet)12 Port (com.att.cdp.zones.model.Port)8 ArrayList (java.util.ArrayList)5 Server (com.att.cdp.zones.model.Server)4 ComputeService (com.att.cdp.zones.ComputeService)3 ConnectedServer (com.att.cdp.zones.spi.model.ConnectedServer)3 HashMap (java.util.HashMap)3 List (java.util.List)3 OpenStackContext (com.att.cdp.openstack.OpenStackContext)2 OpenStackACL (com.att.cdp.openstack.model.OpenStackACL)2 OpenStackFault (com.att.cdp.openstack.model.OpenStackFault)2 OpenStackPort (com.att.cdp.openstack.model.OpenStackPort)2 OpenStackServer (com.att.cdp.openstack.model.OpenStackServer)2 ACL (com.att.cdp.zones.model.ACL)2