X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=controller.git;a=blobdiff_plain;f=opendaylight%2Fnorthbound%2Fnetworkconfiguration%2Fbridgedomain%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fnetworkconfig%2Fbridgedomain%2Fnorthbound%2FBridgeDomainNorthbound.java;h=08a7149d7afa6c3b533beb472d19ce91587feed2;hp=da7faa2c78d9cf9b4155ce244cbd190ea649b4a8;hb=a5776dc4a7de1f36b61446d36a8ebd7ce4ded951;hpb=f5ae77b71afeee5667bf2a8ad9d0753025ee1947 diff --git a/opendaylight/northbound/networkconfiguration/bridgedomain/src/main/java/org/opendaylight/controller/networkconfig/bridgedomain/northbound/BridgeDomainNorthbound.java b/opendaylight/northbound/networkconfiguration/bridgedomain/src/main/java/org/opendaylight/controller/networkconfig/bridgedomain/northbound/BridgeDomainNorthbound.java index da7faa2c78..08a7149d7a 100644 --- a/opendaylight/northbound/networkconfiguration/bridgedomain/src/main/java/org/opendaylight/controller/networkconfig/bridgedomain/northbound/BridgeDomainNorthbound.java +++ b/opendaylight/northbound/networkconfiguration/bridgedomain/src/main/java/org/opendaylight/controller/networkconfig/bridgedomain/northbound/BridgeDomainNorthbound.java @@ -12,11 +12,10 @@ package org.opendaylight.controller.networkconfig.bridgedomain.northbound; import java.util.HashMap; import java.util.Map; +import javax.ws.rs.Consumes; import javax.ws.rs.POST; -import javax.ws.rs.PUT; import javax.ws.rs.Path; import javax.ws.rs.PathParam; -import javax.ws.rs.Produces; import javax.ws.rs.core.Context; import javax.ws.rs.core.MediaType; import javax.ws.rs.core.Response; @@ -24,16 +23,13 @@ import javax.ws.rs.core.SecurityContext; import org.codehaus.enunciate.jaxrs.ResponseCode; import org.codehaus.enunciate.jaxrs.StatusCodes; -import org.codehaus.enunciate.jaxrs.TypeHint; import org.opendaylight.controller.connectionmanager.IConnectionManager; import org.opendaylight.controller.northbound.commons.exception.NotAcceptableException; import org.opendaylight.controller.northbound.commons.exception.ResourceNotFoundException; import org.opendaylight.controller.northbound.commons.exception.ServiceUnavailableException; -import org.opendaylight.controller.sal.connection.ConnectionConstants; import org.opendaylight.controller.sal.core.Node; import org.opendaylight.controller.sal.networkconfig.bridgedomain.ConfigConstants; import org.opendaylight.controller.sal.networkconfig.bridgedomain.IBridgeDomainConfigService; -import org.opendaylight.controller.sal.utils.NetUtils; import org.opendaylight.controller.sal.utils.ServiceHelper; import org.opendaylight.controller.sal.utils.Status; import org.opendaylight.controller.sal.utils.StatusCode; @@ -72,152 +68,6 @@ public class BridgeDomainNorthbound { .getGlobalInstance(IConnectionManager.class, this); } - /** - * If a Network Configuration Service needs a special Management Connection and if the - * Node Type is unknown, use this REST api to connect to the management session. - *
-     *
-     * Example :
-     *
-     * Request :
-     * http://localhost:8080/controller/nb/v2/networkconfig/bridgedomain/connect/mgmt1/1.1.1.1/6634
-     *
-     * Response :
-     * Node :
-     * xml :
-     * <node>
-     *    <id>mgmt1</id>
-     *    <type>STUB</type>
-     * </node>
-     *
-     * json:
-     * {"id": "mgmt1","type": "STUB"}
-     *
-     *
- * @param nodeName User-Defined name of the node to connect with. This can be any alpha numeric value - * @param ipAddress IP Address of the Node to connect with. - * @param port Layer4 Port of the management session to connect with. - * @return Node If the connection is successful, HTTP 404 otherwise. - */ - - @Path("/connect/{nodeName}/{ipAddress}/{port}/") - @PUT - @Produces({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML }) - @TypeHint(Node.class) - @StatusCodes( { - @ResponseCode(code = 201, condition = "Node connected successfully"), - @ResponseCode(code = 404, condition = "Could not connect to the Node with the specified parameters"), - @ResponseCode(code = 406, condition = "Invalid IP Address or Port parameter passed."), - @ResponseCode(code = 503, condition = "Connection Manager Service not available")} ) - public Node connect( - @PathParam(value = "nodeName") String nodeName, - @PathParam(value = "ipAddress") String ipAddress, - @PathParam(value = "port") String port) { - - IConnectionManager connectionManager = getConnectionManager(); - if (connectionManager == null) { - throw new ServiceUnavailableException("IConnectionManager not available."); - } - - if (!NetUtils.isIPv4AddressValid(ipAddress)) { - throw new NotAcceptableException("Invalid ip address "+ipAddress); - } - - try { - Integer.parseInt(port); - } catch (Exception e) { - throw new NotAcceptableException("Invalid Layer4 Port "+port); - } - - Map params = new HashMap(); - params.put(ConnectionConstants.ADDRESS, ipAddress); - params.put(ConnectionConstants.PORT, port); - - Node node = null; - try { - node = connectionManager.connect(nodeName, params); - if (node == null) { - throw new ResourceNotFoundException("Failed to connect to Node at "+ipAddress+":"+port); - } - return node; - } catch (Exception e) { - throw new ResourceNotFoundException(e.getMessage()); - } - } - - /** - * If a Network Configuration Service needs a special Management Connection, and if the - * node Type is known, the user can choose to use this REST api to connect to the management session. - *
-     *
-     * Example :
-     *
-     * Request :
-     * http://localhost:8080/controller/nb/v2/networkconfig/bridgedomain/connect/STUB/mgmt1/1.1.1.1/6634
-     *
-     * Response : Node :
-     * xml :
-     * <node>
-     *    <id>mgmt1</id>
-     *    <type>STUB</type>
-     * </node>
-     *
-     * json:
-     * {"id": "mgmt1","type": "STUB"}
-     *
-     *
- * @param nodeName User-Defined name of the node to connect with. This can be any alpha numeric value - * @param ipAddress IP Address of the Node to connect with. - * @param port Layer4 Port of the management session to connect with. - * @return Node If the connection is successful, HTTP 404 otherwise. - */ - - @Path("/connect/{nodeType}/{nodeId}/{ipAddress}/{port}/") - @PUT - @Produces({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML }) - @TypeHint(Node.class) - @StatusCodes( { - @ResponseCode(code = 201, condition = "Node connected successfully"), - @ResponseCode(code = 404, condition = "Could not connect to the Node with the specified parameters"), - @ResponseCode(code = 406, condition = "Invalid IP Address or Port parameter passed."), - @ResponseCode(code = 503, condition = "Connection Manager Service not available")} ) - public Node connect( - @PathParam(value = "nodeType") String nodeType, - @PathParam(value = "nodeId") String nodeId, - @PathParam(value = "ipAddress") String ipAddress, - @PathParam(value = "port") String port) { - - IConnectionManager connectionManager = getConnectionManager(); - if (connectionManager == null) { - throw new ServiceUnavailableException("IConnectionManager not available."); - } - - if (!NetUtils.isIPv4AddressValid(ipAddress)) { - throw new NotAcceptableException("Invalid ip address "+ipAddress); - } - - try { - Integer.parseInt(port); - } catch (Exception e) { - throw new NotAcceptableException("Invalid Layer4 Port "+port); - } - - Map params = new HashMap(); - params.put(ConnectionConstants.ADDRESS, ipAddress); - params.put(ConnectionConstants.PORT, port); - - Node node = null; - try { - node = connectionManager.connect(nodeType, nodeId, params); - if (node == null) { - throw new ResourceNotFoundException("Failed to connect to Node at "+ipAddress+":"+port); - } - return node; - } catch (Exception e) { - throw new ResourceNotFoundException(e.getMessage()); - } - } - /** * Create a Bridge. *
@@ -231,6 +81,7 @@ public class BridgeDomainNorthbound {
      * @param nodeType Node Type of the node with the management session.
      * @param nodeId Node Identifier of the node with the management session.
      * @param bridgeName Name / Identifier for a bridge to be created.
+     * @param bridgeConfigs Additional Bridge Configurations.
      */
 
    @Path("/bridge/{nodeType}/{nodeId}/{bridgeName}")
@@ -243,7 +94,8 @@ public class BridgeDomainNorthbound {
    public Response createBridge(
            @PathParam(value = "nodeType") String nodeType,
            @PathParam(value = "nodeId") String nodeId,
-           @PathParam(value = "bridgeName") String name) {
+           @PathParam(value = "bridgeName") String name,
+           Map bridgeConfigs) {
 
        IBridgeDomainConfigService configurationService = getConfigurationService();
        if (configurationService == null) {
@@ -253,7 +105,8 @@ public class BridgeDomainNorthbound {
        Node node = Node.fromString(nodeType, nodeId);
        Status status = null;
        try {
-           status = configurationService.createBridgeDomain(node, name, null);
+           Map configs = this.buildConfig(bridgeConfigs);
+           status = configurationService.createBridgeDomain(node, name, configs);
            if (status.getCode().equals(StatusCode.SUCCESS)) {
                return Response.status(Response.Status.CREATED).build();
            }
@@ -277,10 +130,12 @@ public class BridgeDomainNorthbound {
     * @param nodeId Node Identifier of the node with the management session.
     * @param bridgeName Name / Identifier of the bridge to which a Port is being added.
     * @param portName Name / Identifier of a Port that is being added to a bridge.
+    * @param portConfigs Additional Port Configurations.
     */
 
    @Path("/port/{nodeType}/{nodeId}/{bridgeName}/{portName}")
    @POST
+   @Consumes({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
    @StatusCodes( { @ResponseCode(code = 201, condition = "Port added successfully"),
        @ResponseCode(code = 404, condition = "Could not add Port to the Bridge"),
        @ResponseCode(code = 412, condition = "Failed to add Port due to an exception"),
@@ -290,7 +145,8 @@ public class BridgeDomainNorthbound {
            @PathParam(value = "nodeType") String nodeType,
            @PathParam(value = "nodeId") String nodeId,
            @PathParam(value = "bridgeName") String bridge,
-           @PathParam(value = "portName") String port) {
+           @PathParam(value = "portName") String port,
+           Map portConfigs) {
 
        IBridgeDomainConfigService configurationService = getConfigurationService();
        if (configurationService == null) {
@@ -300,7 +156,8 @@ public class BridgeDomainNorthbound {
        Node node = Node.fromString(nodeType, nodeId);
        Status status = null;
        try {
-           status = configurationService.addPort(node, bridge, port, null);
+           Map configs = this.buildConfig(portConfigs);
+           status = configurationService.addPort(node, bridge, port, configs);
            if (status.getCode().equals(StatusCode.SUCCESS)) {
                return Response.status(Response.Status.CREATED).build();
            }
@@ -310,7 +167,16 @@ public class BridgeDomainNorthbound {
        throw new ResourceNotFoundException(status.getDescription());
    }
 
-   /**
+   private Map buildConfig(Map rawConfigs) {
+       if (rawConfigs == null) return null;
+       Map configs = new HashMap();
+       for (String key : rawConfigs.keySet()) {
+           ConfigConstants cc = ConfigConstants.valueOf(key.toUpperCase());
+           configs.put(cc, rawConfigs.get(key));
+       }
+       return configs;
+   }
+/**
     * Add a Port,Vlan to a Bridge
     * 
     *