
org.xlcloud.openstack.client.OpenStackNeutronClient Maven / Gradle / Ivy
The newest version!
/*
* Copyright 2012 AMG.lab, a Bull Group Company
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.xlcloud.openstack.client;
import java.util.List;
import javax.annotation.PostConstruct;
import javax.inject.Inject;
import org.apache.log4j.Logger;
import org.xlcloud.config.ConfigParam;
import org.xlcloud.openstack.api.NeutronClient;
import org.xlcloud.openstack.model.neutron.Network;
import org.xlcloud.openstack.model.neutron.Networks;
import org.xlcloud.openstack.model.neutron.Port;
import org.xlcloud.openstack.model.neutron.Ports;
import org.xlcloud.openstack.model.neutron.Router;
import org.xlcloud.openstack.model.neutron.RouterInterface;
import org.xlcloud.openstack.model.neutron.Routers;
import org.xlcloud.openstack.model.neutron.Subnet;
import org.xlcloud.openstack.model.neutron.Subnets;
import org.xlcloud.openstack.rest.OpenStackRestClient;
import org.xlcloud.openstack.rest.RestClientType;
import com.sun.jersey.api.client.Client;
import com.sun.jersey.api.client.WebResource;
/**
* Basic implementation of {@link NeutronClient} based on OpenStack Neutron.
*
* @author Krzysztof Szafrański, AMG.net
* @author Konrad Król, AMG.net
*/
public class OpenStackNeutronClient extends WebResourceRequestBuilderDecorator implements NeutronClient {
private static final Logger LOG = Logger.getLogger(OpenStackNeutronClient.class);
private static final String PARAMETER_TENANT_ID = "tenant_id";
private static final String PARAMETER_NETWORK_ID = "network_id";
private static final String PATH_NETWORKS = "networks";
private static final String PATH_SUBNETS = "subnets";
private static final String PATH_PORTS = "ports";
private static final String PATH_ROUTERS = "routers";
private static final String PATH_ADD_ROUTER_INTERFACE = "add_router_interface";
private static final String PATH_REMOVE_ROUTER_INTERFACE = "remove_router_interface";
private static final String QUERY_PARAM_ACCEPT = "Accept";
private static final String QUERY_PARAM_ACCEPT_JSON = "application/json";
@Inject
@OpenStackRestClient(RestClientType.DEFAULT)
private Client resourceClient;
@Inject
@ConfigParam
String neutronUrl;
private WebResource resource;
@PostConstruct
public void init() {
LOG.debug("Using Jersey client " + resourceClient.hashCode());
resource = resourceClient.resource(neutronUrl);
}
/*
* NETWORKS
*/
/** {@inheritDoc} */
@Override
public List listNetworks() {
Networks networks = get(Networks.class, resource.path(PATH_NETWORKS).queryParam(QUERY_PARAM_ACCEPT, QUERY_PARAM_ACCEPT_JSON));
return networks.getNetwork();
}
/** {@inheritDoc} */
@Override
public List listNetworksByTenantId(String tenantId) {
Networks networks = get(
Networks.class,
resource.path(PATH_NETWORKS).queryParam(PARAMETER_TENANT_ID, tenantId)
.queryParam(QUERY_PARAM_ACCEPT, QUERY_PARAM_ACCEPT_JSON));
return networks.getNetwork();
}
/** {@inheritDoc} */
@Override
public Network showNetwork(String networkId) {
Network network = get(Network.class,
resource.path(PATH_NETWORKS + "/" + networkId).queryParam(QUERY_PARAM_ACCEPT, QUERY_PARAM_ACCEPT_JSON));
return network;
}
/** {@inheritDoc} */
@Override
public Network createNetwork(Network network) {
Network createdNetwork = post(Network.class, network,
resource.path(PATH_NETWORKS).queryParam(QUERY_PARAM_ACCEPT, QUERY_PARAM_ACCEPT_JSON));
return createdNetwork;
}
/** {@inheritDoc} */
@Override
public void removeNetwork(String networkId) {
delete(resource.path(PATH_NETWORKS + "/" + networkId));
}
/*
* SUBNETS
*/
/** {@inheritDoc} */
@Override
public List listSubnets() {
Subnets subnets = get(Subnets.class, resource.path(PATH_SUBNETS).queryParam(QUERY_PARAM_ACCEPT, QUERY_PARAM_ACCEPT_JSON));
return subnets.getSubnet();
}
/** {@inheritDoc} */
@Override
public List listSubnetsByTenantId(String tenantId) {
Subnets subnets = get(
Subnets.class,
resource.path(PATH_SUBNETS).queryParam(PARAMETER_TENANT_ID, tenantId)
.queryParam(QUERY_PARAM_ACCEPT, QUERY_PARAM_ACCEPT_JSON));
return subnets.getSubnet();
}
/** {@inheritDoc} */
@Override
public Subnet showSubnet(String subnetId) {
Subnet subnet = get(Subnet.class,
resource.path(PATH_SUBNETS + "/" + subnetId).queryParam(QUERY_PARAM_ACCEPT, QUERY_PARAM_ACCEPT_JSON));
return subnet;
}
/** {@inheritDoc} */
@Override
public Subnet createSubnet(Subnet subnet) {
Subnet createdSubnet = post(Subnet.class, subnet,
resource.path(PATH_SUBNETS).queryParam(QUERY_PARAM_ACCEPT, QUERY_PARAM_ACCEPT_JSON));
return createdSubnet;
}
/** {@inheritDoc} */
@Override
public void removeSubnet(String subnetId) {
delete(resource.path(PATH_SUBNETS + "/" + subnetId));
}
/*
* PORTS
*/
/** {@inheritDoc} */
@Override
public List listPortsByNetworkId(String networkId) {
Ports ports = get(
Ports.class,
resource.path(PATH_PORTS).queryParam(PARAMETER_NETWORK_ID, networkId)
.queryParam(QUERY_PARAM_ACCEPT, QUERY_PARAM_ACCEPT_JSON));
return ports.getPort();
}
/*
* ROUTERS
*/
/** {@inheritDoc} */
@Override
public List listRouters() {
Routers routers = get(Routers.class, resource.path(PATH_ROUTERS).queryParam(QUERY_PARAM_ACCEPT, QUERY_PARAM_ACCEPT_JSON));
return routers.getRouter();
}
/** {@inheritDoc} */
@Override
public List listRoutersByTenantId(String tenantId) {
Routers routers = get(
Routers.class,
resource.path(PATH_ROUTERS).queryParam(PARAMETER_TENANT_ID, tenantId)
.queryParam(QUERY_PARAM_ACCEPT, QUERY_PARAM_ACCEPT_JSON));
return routers.getRouter();
}
/** {@inheritDoc} */
@Override
public Router showRouter(String routerId) {
Router router = get(Router.class,
resource.path(PATH_ROUTERS + "/" + routerId).queryParam(QUERY_PARAM_ACCEPT, QUERY_PARAM_ACCEPT_JSON));
return router;
}
/** {@inheritDoc} */
@Override
public Router createRouter(Router router) {
Router createdRouter = post(Router.class, router,
resource.path(PATH_ROUTERS).queryParam(QUERY_PARAM_ACCEPT, QUERY_PARAM_ACCEPT_JSON));
return createdRouter;
}
/** {@inheritDoc} */
@Override
public void removeRouter(String routerId) {
delete(resource.path(PATH_ROUTERS + "/" + routerId));
}
/** {@inheritDoc} */
@Override
public RouterInterface addRouterInterface(String routerId, RouterInterface routerInterface) {
RouterInterface createdRouterInterface = put(
RouterInterface.class,
routerInterface,
resource.path(PATH_ROUTERS + "/" + routerId + "/" + PATH_ADD_ROUTER_INTERFACE).queryParam(QUERY_PARAM_ACCEPT,
QUERY_PARAM_ACCEPT_JSON));
return createdRouterInterface;
}
@Override
public RouterInterface removeRouterInterface(String routerId, RouterInterface routerInterface) {
RouterInterface createdRouterInterface = put(
RouterInterface.class,
routerInterface,
resource.path(PATH_ROUTERS + "/" + routerId + "/" + PATH_REMOVE_ROUTER_INTERFACE).queryParam(QUERY_PARAM_ACCEPT,
QUERY_PARAM_ACCEPT_JSON));
return createdRouterInterface;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy