Search in sources :

Example 31 with Context

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

the class OpenStackComputeService method getHypervisor.

/**
 * @see com.att.cdp.zones.ComputeService#getHypervisor(java.lang.String)
 */
@Override
public Hypervisor getHypervisor(String id) throws ZoneException {
    checkArg(id, "id");
    connect();
    Context context = getContext();
    trackRequest();
    RequestState.put(RequestState.HYPERVISOR, id);
    RequestState.put(RequestState.SERVICE, "Compute");
    RequestState.put(RequestState.SERVICE_URL, nova.getEndpoint());
    try {
        com.woorea.openstack.nova.model.Hypervisor hypervisor = nova.getClient().hypervisors().show(id).execute();
        return new OpenStackHypervisor(context, hypervisor);
    } catch (OpenStackBaseException e) {
        ExceptionMapper.mapException(e);
    }
    return null;
}
Also used : Context(com.att.cdp.zones.Context) OpenStackContext(com.att.cdp.openstack.OpenStackContext) OpenStackBaseException(com.woorea.openstack.base.client.OpenStackBaseException) OpenStackHypervisor(com.att.cdp.openstack.model.OpenStackHypervisor)

Example 32 with Context

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

the class OpenStackComputeService method getTemplates.

/**
 * This method returns a list of templates that are available.
 * <p>
 * A template represents a definition of a hardware environment that is used to create an image. This includes
 * number of cpu's, amount of memory, etc.
 * </p>
 *
 * @return A list of available templates
 * @throws ZoneException
 *             If the templates cannot be listed
 * @see com.att.cdp.zones.ComputeService#getTemplates()
 */
@Override
public List<Template> getTemplates() throws ZoneException {
    connect();
    Context context = getContext();
    trackRequest();
    RequestState.put(RequestState.SERVICE, "Compute");
    RequestState.put(RequestState.SERVICE_URL, nova.getEndpoint());
    ArrayList<Template> list = new ArrayList<>();
    try {
        com.woorea.openstack.nova.model.Flavors flavors = nova.getClient().flavors().list(true).execute();
        for (com.woorea.openstack.nova.model.Flavor f : flavors.getList()) {
            Template template = new OpenStackTemplate(context, f);
            list.add(template);
        }
    } catch (OpenStackBaseException e) {
        ExceptionMapper.mapException(e);
    }
    return list;
}
Also used : Context(com.att.cdp.zones.Context) OpenStackContext(com.att.cdp.openstack.OpenStackContext) OpenStackBaseException(com.woorea.openstack.base.client.OpenStackBaseException) ArrayList(java.util.ArrayList) OpenStackTemplate(com.att.cdp.openstack.model.OpenStackTemplate) OpenStackTemplate(com.att.cdp.openstack.model.OpenStackTemplate) Template(com.att.cdp.zones.model.Template)

Example 33 with Context

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

the class OpenStackComputeService method getHypervisors.

/**
 * @see com.att.cdp.zones.ComputeService#getHypervisors()
 */
@Override
public List<Hypervisor> getHypervisors() throws ZoneException {
    connect();
    Context context = getContext();
    trackRequest();
    RequestState.put(RequestState.SERVICE, "Compute");
    RequestState.put(RequestState.SERVICE_URL, nova.getEndpoint());
    ArrayList<Hypervisor> list = new ArrayList<>();
    try {
        com.woorea.openstack.nova.model.Hypervisors hypervisors = nova.getClient().hypervisors().list(true).execute();
        for (com.woorea.openstack.nova.model.Hypervisor h : hypervisors.getList()) {
            list.add(new OpenStackHypervisor(context, h));
        }
    } catch (OpenStackBaseException e) {
        ExceptionMapper.mapException(e);
    }
    return list;
}
Also used : Context(com.att.cdp.zones.Context) OpenStackContext(com.att.cdp.openstack.OpenStackContext) OpenStackHypervisor(com.att.cdp.openstack.model.OpenStackHypervisor) Hypervisor(com.att.cdp.zones.model.Hypervisor) OpenStackBaseException(com.woorea.openstack.base.client.OpenStackBaseException) ArrayList(java.util.ArrayList) OpenStackHypervisor(com.att.cdp.openstack.model.OpenStackHypervisor)

Example 34 with Context

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

the class OpenStackComputeService method getServers.

/**
 * Returns the list of servers that match the name pattern supplied.
 *
 * @param name
 *            A regular expression that can be used to filter server names. A string that is suitable to use in the
 *            Java <code>String.matches()</code> method.
 * @return The server
 * @throws ZoneException
 *             If the host cannot be found
 * @see java.lang.String#matches(String)
 * @see com.att.cdp.zones.ComputeService#getServers(java.lang.String)
 */
@Override
public List<Server> getServers(String name) throws ZoneException {
    // checkArg(name, "name");
    connect();
    Context context = getContext();
    trackRequest();
    RequestState.put(RequestState.SERVICE, "Compute");
    RequestState.put(RequestState.SERVICE_URL, nova.getEndpoint());
    RequestState.put(RequestState.SERVER, name);
    ArrayList<Server> list = new ArrayList<>();
    try {
        com.woorea.openstack.nova.model.Servers servers = nova.getClient().servers().list(true).execute();
        for (com.woorea.openstack.nova.model.Server s : servers.getList()) {
            if (name != null) {
                if (s.getName().matches(name)) {
                    list.add(new OpenStackServer(context, s));
                }
            } else {
                list.add(new OpenStackServer(context, s));
            }
        }
    } catch (OpenStackBaseException e) {
        ExceptionMapper.mapException(e);
    }
    return list;
}
Also used : Context(com.att.cdp.zones.Context) OpenStackContext(com.att.cdp.openstack.OpenStackContext) Server(com.att.cdp.zones.model.Server) ConnectedServer(com.att.cdp.zones.spi.model.ConnectedServer) OpenStackServer(com.att.cdp.openstack.model.OpenStackServer) OpenStackBaseException(com.woorea.openstack.base.client.OpenStackBaseException) OpenStackServer(com.att.cdp.openstack.model.OpenStackServer) ArrayList(java.util.ArrayList) Servers(com.woorea.openstack.nova.model.Servers)

Example 35 with Context

use of com.att.cdp.zones.Context 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)

Aggregations

Context (com.att.cdp.zones.Context)248 OpenStackContext (com.att.cdp.openstack.OpenStackContext)167 OpenStackBaseException (com.woorea.openstack.base.client.OpenStackBaseException)140 ArrayList (java.util.ArrayList)55 Ignore (org.junit.Ignore)50 Test (org.junit.Test)47 Quantum (com.woorea.openstack.quantum.Quantum)35 ZoneException (com.att.cdp.exceptions.ZoneException)30 NetworkService (com.att.cdp.zones.NetworkService)24 Server (com.att.cdp.zones.model.Server)22 ComputeService (com.att.cdp.zones.ComputeService)21 Network (com.att.cdp.zones.model.Network)19 OpenStackServer (com.att.cdp.openstack.model.OpenStackServer)18 OpenStackSnapshot (com.att.cdp.openstack.model.OpenStackSnapshot)18 Subnet (com.att.cdp.zones.model.Subnet)15 Port (com.att.cdp.zones.model.Port)14 Snapshot (com.att.cdp.zones.model.Snapshot)12 Volume (com.att.cdp.zones.model.Volume)11 OpenStackResponseException (com.woorea.openstack.base.client.OpenStackResponseException)11 ResourceNotFoundException (com.att.cdp.exceptions.ResourceNotFoundException)10