Search in sources :

Example 1 with Nova

use of com.woorea.openstack.nova.Nova in project AJSC by att.

the class OpenStackNetworkService method assignIpAddressFromPool.

/**
 * @see com.att.cdp.zones.NetworkService#assignIpAddressFromPool(java.lang.String, java.lang.String)
 */
@SuppressWarnings("nls")
@Override
public String assignIpAddressFromPool(String serverId, String pool) throws ZoneException {
    checkArg(serverId, "serverId");
    checkArg(pool, "pool");
    connect();
    Context context = getContext();
    trackRequest();
    RequestState.put(RequestState.SERVER, serverId);
    RequestState.put(RequestState.POOL, pool);
    RequestState.put(RequestState.SERVICE, "Compute");
    RequestState.put(RequestState.SERVICE_URL, novaConnector.getEndpoint());
    Nova client = novaConnector.getClient();
    FloatingIpsExtension extension = client.floatingIps();
    if (extension == null) {
        throw new NotSupportedException(EELFResourceManager.format(OSMsg.PAL_OS_UNSUPPORTED_OPERATION, "getAvailableAddresses", context.getProvider().getName()));
    }
    try {
        String ip = reserveFreeFloatingIPAddress(pool);
        if (ip != null) {
            assignIpAddress(serverId, ip);
            return ip;
        }
    } catch (OpenStackBaseException e) {
        ExceptionMapper.mapException(e);
    }
    throw new NotSupportedException(EELFResourceManager.format(OSMsg.PAL_OS_RESOURCE_UNAVAILABLE, "Floating IP Address", context.getProvider().getName()));
}
Also used : Context(com.att.cdp.zones.Context) OpenStackContext(com.att.cdp.openstack.OpenStackContext) OpenStackBaseException(com.woorea.openstack.base.client.OpenStackBaseException) FloatingIpsExtension(com.woorea.openstack.nova.api.extensions.FloatingIpsExtension) Nova(com.woorea.openstack.nova.Nova) NotSupportedException(com.att.cdp.exceptions.NotSupportedException)

Example 2 with Nova

use of com.woorea.openstack.nova.Nova in project AJSC by att.

the class TestNovaConnector method testGlanceConnector.

@Test
@Ignore
public void testGlanceConnector() throws ZoneException {
    OpenStackContext context = login();
    NovaConnector connector = context.getNovaConnector();
    assertNotNull(connector);
    Access access = connector.getAccess();
    assertNotNull(access);
    Nova client = connector.getClient();
    assertNotNull(client);
    logout(context);
}
Also used : OpenStackContext(com.att.cdp.openstack.OpenStackContext) Access(com.woorea.openstack.keystone.model.Access) Nova(com.woorea.openstack.nova.Nova) Ignore(org.junit.Ignore) Test(org.junit.Test)

Example 3 with Nova

use of com.woorea.openstack.nova.Nova in project AJSC by att.

the class OpenStackNetworkService method reserveFreeFloatingIPAddress.

/**
 * This method is used o determine which IP addresses in the floating ip address pool specified are free, and to
 * reserve the first one
 *
 * @param pool
 *            The name of the pool to be searched, or null if we are searching all pools available to the tenant
 * @return The reserved IP address (or null if there are none available in the pool)
 * @throws OpenStackResponseException
 * @throws OpenStackConnectException
 */
@SuppressWarnings("nls")
private String reserveFreeFloatingIPAddress(String pool) throws OpenStackConnectException, OpenStackResponseException {
    Nova client = novaConnector.getClient();
    HashSet<String> available = new HashSet<>();
    Context context = getContext();
    FloatingIps ips = client.floatingIps().list().execute();
    for (FloatingIp ip : ips.getList()) {
        if (pool == null || pool.equalsIgnoreCase(ip.getPool())) {
            available.add(ip.getIp());
        }
    }
    Servers servers = client.servers().list(true).execute();
    for (com.woorea.openstack.nova.model.Server server : servers.getList()) {
        Addresses allocatedAddresses = server.getAddresses();
        Map<String, List<Address>> addressMap = allocatedAddresses.getAddresses();
        for (Map.Entry<String, List<Address>> entry : addressMap.entrySet()) {
            List<Address> addressList = entry.getValue();
            for (Address address : addressList) {
                if (address.getType().equalsIgnoreCase("floating")) {
                    available.remove(address.getAddr());
                }
            }
        }
    }
    if (!available.isEmpty()) {
        Iterator<String> it = available.iterator();
        while (it.hasNext()) {
            String ip = it.next();
            if (((OpenStackContext) context).allocateFloatingIP(ip)) {
                return ip;
            }
        }
    }
    return null;
}
Also used : Context(com.att.cdp.zones.Context) OpenStackContext(com.att.cdp.openstack.OpenStackContext) Address(com.woorea.openstack.nova.model.Server.Addresses.Address) FloatingIps(com.woorea.openstack.nova.model.FloatingIps) Nova(com.woorea.openstack.nova.Nova) Servers(com.woorea.openstack.nova.model.Servers) FloatingIp(com.woorea.openstack.nova.model.FloatingIp) Addresses(com.woorea.openstack.nova.model.Server.Addresses) OpenStackContext(com.att.cdp.openstack.OpenStackContext) List(java.util.List) ArrayList(java.util.ArrayList) Map(java.util.Map) HashSet(java.util.HashSet)

Aggregations

OpenStackContext (com.att.cdp.openstack.OpenStackContext)3 Nova (com.woorea.openstack.nova.Nova)3 Context (com.att.cdp.zones.Context)2 NotSupportedException (com.att.cdp.exceptions.NotSupportedException)1 OpenStackBaseException (com.woorea.openstack.base.client.OpenStackBaseException)1 Access (com.woorea.openstack.keystone.model.Access)1 FloatingIpsExtension (com.woorea.openstack.nova.api.extensions.FloatingIpsExtension)1 FloatingIp (com.woorea.openstack.nova.model.FloatingIp)1 FloatingIps (com.woorea.openstack.nova.model.FloatingIps)1 Addresses (com.woorea.openstack.nova.model.Server.Addresses)1 Address (com.woorea.openstack.nova.model.Server.Addresses.Address)1 Servers (com.woorea.openstack.nova.model.Servers)1 ArrayList (java.util.ArrayList)1 HashSet (java.util.HashSet)1 List (java.util.List)1 Map (java.util.Map)1 Ignore (org.junit.Ignore)1 Test (org.junit.Test)1