import java.net.InetAddress;
import java.net.NetworkInterface;
import java.net.SocketException;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.Enumeration;
+import java.util.HashMap;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
import org.eclipse.osgi.framework.console.CommandInterpreter;
import org.eclipse.osgi.framework.console.CommandProvider;
-import org.opendaylight.ovsdb.lib.database.OVSBridge;
+import org.opendaylight.controller.clustering.services.IClusterGlobalServices;
+import org.opendaylight.controller.sal.connection.ConnectionConstants;
+import org.opendaylight.controller.sal.core.Node;
+import org.opendaylight.controller.sal.core.NodeConnector;
+import org.opendaylight.controller.sal.networkconfig.bridgedomain.ConfigConstants;
+import org.opendaylight.controller.sal.networkconfig.bridgedomain.IPluginInBridgeDomainConfigService;
+import org.opendaylight.controller.sal.utils.NetUtils;
+import org.opendaylight.controller.sal.utils.Status;
+import org.opendaylight.controller.sal.utils.StatusCode;
import org.opendaylight.ovsdb.lib.database.OVSInstance;
import org.opendaylight.ovsdb.lib.database.OvsdbType;
import org.opendaylight.ovsdb.lib.message.TransactBuilder;
import org.opendaylight.ovsdb.lib.notation.OvsDBSet;
import org.opendaylight.ovsdb.lib.notation.UUID;
import org.opendaylight.ovsdb.lib.table.Bridge;
+import org.opendaylight.ovsdb.lib.table.Capability;
import org.opendaylight.ovsdb.lib.table.Controller;
import org.opendaylight.ovsdb.lib.table.Interface;
+import org.opendaylight.ovsdb.lib.table.Manager;
+import org.opendaylight.ovsdb.lib.table.Mirror;
+import org.opendaylight.ovsdb.lib.table.NetFlow;
import org.opendaylight.ovsdb.lib.table.Open_vSwitch;
import org.opendaylight.ovsdb.lib.table.Port;
+import org.opendaylight.ovsdb.lib.table.Qos;
+import org.opendaylight.ovsdb.lib.table.Queue;
+import org.opendaylight.ovsdb.lib.table.SFlow;
+import org.opendaylight.ovsdb.lib.table.SSL;
import org.opendaylight.ovsdb.lib.table.internal.Table;
-import org.opendaylight.controller.clustering.services.IClusterGlobalServices;
-import org.opendaylight.controller.sal.connection.ConnectionConstants;
-import org.opendaylight.controller.sal.core.Node;
-import org.opendaylight.controller.sal.core.NodeConnector;
-import org.opendaylight.controller.sal.networkconfig.bridgedomain.ConfigConstants;
-import org.opendaylight.controller.sal.networkconfig.bridgedomain.IPluginInBridgeDomainConfigService;
-import org.opendaylight.controller.sal.utils.NetUtils;
-import org.opendaylight.controller.sal.utils.Status;
-import org.opendaylight.controller.sal.utils.StatusCode;
import org.osgi.framework.BundleContext;
import org.osgi.framework.FrameworkUtil;
import org.slf4j.Logger;
import com.google.common.util.concurrent.ListenableFuture;
-public class ConfigurationService implements IPluginInBridgeDomainConfigService, CommandProvider
+public class ConfigurationService implements IPluginInBridgeDomainConfigService, OVSDBConfigService,
+ CommandProvider
{
private static final Logger logger = LoggerFactory
.getLogger(ConfigurationService.class);
interfaceRow.setType("internal");
InsertOperation addIntfRequest = new InsertOperation(Interface.NAME.getName(), newInterface, interfaceRow);
+ /* Update config version */
+ String ovsTableUUID = (String) ovsTable.keySet().toArray()[0];
+ Mutation bm = new Mutation("next_cfg", Mutator.SUM, 1);
+ List<Mutation> mutations = new ArrayList<Mutation>();
+ mutations.add(bm);
+
+ UUID uuid = new UUID(ovsTableUUID);
+ Condition condition = new Condition("_uuid", Function.EQUALS, uuid);
+ List<Condition> where = new ArrayList<Condition>();
+ where.add(condition);
+ MutateOperation updateCfgVerRequest = new MutateOperation(Open_vSwitch.NAME.getName(), where, mutations);
+
TransactBuilder transaction = new TransactBuilder();
transaction.addOperations(new ArrayList<Operation>(
- Arrays.asList(addSwitchRequest, addIntfRequest, addPortRequest, addBridgeRequest)));
+ Arrays.asList(addSwitchRequest,
+ addIntfRequest,
+ addPortRequest,
+ addBridgeRequest,
+ updateCfgVerRequest)));
ListenableFuture<List<OperationResult>> transResponse = connection.getRpc().transact(transaction);
List<OperationResult> tr = transResponse.get();
Status status = new Status(StatusCode.SUCCESS);
for (int i = 0; i < tr.size() ; i++) {
if (i < requests.size()) requests.get(i).setResult(tr.get(i));
- if (tr.get(i).getError() != null && tr.get(i).getError().trim().length() > 0) {
+ if (tr.get(i) != null && tr.get(i).getError() != null && tr.get(i).getError().trim().length() > 0) {
OperationResult result = tr.get(i);
status = new Status(StatusCode.BADREQUEST, result.getError() + " : " + result.getDetails());
}
@Override
public Status deletePort(Node node, String bridgeIdentifier, String portIdentifier) {
- try{
- if (connectionService == null) {
- logger.error("Couldn't refer to the ConnectionService");
- return new Status(StatusCode.NOSERVICE);
- }
+ try{
+ if (connectionService == null) {
+ logger.error("Couldn't refer to the ConnectionService");
+ return new Status(StatusCode.NOSERVICE);
+ }
- Connection connection = this.getConnection(node);
- if (connection == null) {
- return new Status(StatusCode.NOSERVICE, "Connection to ovsdb-server not available");
- }
+ Connection connection = this.getConnection(node);
+ if (connection == null) {
+ return new Status(StatusCode.NOSERVICE, "Connection to ovsdb-server not available");
+ }
- Map<String, Table<?>> brTable = inventoryServiceInternal.getTableCache(node, Bridge.NAME.getName());
- Map<String, Table<?>> portTable = inventoryServiceInternal.getTableCache(node, Port.NAME.getName());
- Operation delPortRequest = null;
- String brUuid = null;
- String portUuid = null;
- if(brTable != null){
- for (String uuid : brTable.keySet()) {
- Bridge bridge = (Bridge) brTable.get(uuid);
- if (bridge.getName().contains(bridgeIdentifier)) {
- brUuid = uuid;
+ Map<String, Table<?>> brTable = inventoryServiceInternal.getTableCache(node, Bridge.NAME.getName());
+ Map<String, Table<?>> portTable = inventoryServiceInternal.getTableCache(node, Port.NAME.getName());
+ Operation delPortRequest = null;
+ String brUuid = null;
+ String portUuid = null;
+ if(brTable != null){
+ for (String uuid : brTable.keySet()) {
+ Bridge bridge = (Bridge) brTable.get(uuid);
+ if (bridge.getName().contains(bridgeIdentifier)) {
+ brUuid = uuid;
+ }
}
}
- }
if(portTable != null){
for (String uuid : portTable.keySet()) {
Port port = (Port) portTable.get(uuid);
@Override
public Status deleteBridgeDomain(Node node, String bridgeIdentifier) {
- // TODO Auto-generated method stub
- return null;
+
+ try {
+ if (connectionService == null) {
+ logger.error("Couldn't refer to the ConnectionService");
+ return new Status(StatusCode.NOSERVICE);
+ }
+ Connection connection = this.getConnection(node);
+ if (connection == null) {
+ return new Status(StatusCode.NOSERVICE, "Connection to ovsdb-server not available");
+ }
+ Map<String, Table<?>> ovsTable = inventoryServiceInternal.getTableCache(node, Open_vSwitch.NAME.getName());
+ Map<String, Table<?>> brTable = inventoryServiceInternal.getTableCache(node, Bridge.NAME.getName());
+ Operation delBrRequest = null;
+ String ovsUuid = null;
+ String brUuid = null;
+
+ if (brTable != null) {
+ for (String uuid : brTable.keySet()) {
+ Bridge bridge = (Bridge) brTable.get(uuid);
+ if (bridge.getName().contains(bridgeIdentifier)) {
+ brUuid = uuid;
+ }
+ }
+ }
+ if (ovsTable != null) {
+ ovsUuid = (String) ovsTable.keySet().toArray()[0];
+ }
+ UUID bridgeUuidPair = new UUID(brUuid);
+ Mutation bm = new Mutation("bridges", Mutator.DELETE, bridgeUuidPair);
+ List<Mutation> mutations = new ArrayList<Mutation>();
+ mutations.add(bm);
+
+ UUID uuid = new UUID(ovsUuid);
+ Condition condition = new Condition("_uuid", Function.EQUALS, uuid);
+ List<Condition> where = new ArrayList<Condition>();
+ where.add(condition);
+ delBrRequest = new MutateOperation(Open_vSwitch.NAME.getName(), where, mutations);
+
+ TransactBuilder transaction = new TransactBuilder();
+ transaction.addOperations(new ArrayList<Operation>(Arrays.asList(delBrRequest)));
+
+ ListenableFuture<List<OperationResult>> transResponse = connection.getRpc().transact(transaction);
+ List<OperationResult> tr = transResponse.get();
+ List<Operation> requests = transaction.getRequests();
+ Status status = new Status(StatusCode.SUCCESS);
+ for (int i = 0; i < tr.size(); i++) {
+ if (i < requests.size()) requests.get(i).setResult(tr.get(i));
+ if (tr.get(i) != null && tr.get(i).getError() != null && tr.get(i).getError().trim().length() > 0) {
+ OperationResult result = tr.get(i);
+ status = new Status(StatusCode.BADREQUEST, result.getError() + " : " + result.getDetails());
+ }
+ }
+
+ if (tr.size() > requests.size()) {
+ OperationResult result = tr.get(tr.size() - 1);
+ logger.error("Error creating Bridge : {}\n Error : {}\n Details : {}",
+ bridgeIdentifier, result.getError(), result.getDetails());
+ status = new Status(StatusCode.BADREQUEST, result.getError() + " : " + result.getDetails());
+ }
+ return status;
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return new Status(StatusCode.INTERNALERROR);
}
@Override
return true;
}
+ @Override
+ public Status insertRow(Node node, String tableName, String parent_uuid, Table<?> row) {
+ logger.error("tableName : {}, parent_uuid : {} Row : {}", tableName, parent_uuid, row.toString());
+ Status statusWithUUID = null;
+
+ // Schema based Table handling will help fix this static Table handling.
+
+ if (row.getTableName().getName().equalsIgnoreCase("Bridge")) {
+ statusWithUUID = insertBridgeRow(node, parent_uuid, (Bridge)row);
+ }
+ else if (row.getTableName().getName().equalsIgnoreCase("Capbility")) {
+ statusWithUUID = insertCapabilityRow(node, parent_uuid, (Capability)row);
+ }
+ else if (row.getTableName().getName().equalsIgnoreCase("Controller")) {
+ statusWithUUID = insertControllerRow(node, parent_uuid, (Controller)row);
+ }
+ else if (row.getTableName().getName().equalsIgnoreCase("Interface")) {
+ statusWithUUID = insertInterfaceRow(node, parent_uuid, (Interface)row);
+ }
+ else if (row.getTableName().getName().equalsIgnoreCase("Manager")) {
+ statusWithUUID = insertManagerRow(node, parent_uuid, (Manager)row);
+ }
+ else if (row.getTableName().getName().equalsIgnoreCase("Mirror")) {
+ statusWithUUID = insertMirrorRow(node, parent_uuid, (Mirror)row);
+ }
+ else if (row.getTableName().getName().equalsIgnoreCase("NetFlow")) {
+ statusWithUUID = insertNetFlowRow(node, parent_uuid, (NetFlow)row);
+ }
+ else if (row.getTableName().getName().equalsIgnoreCase("Open_vSwitch")) {
+ statusWithUUID = insertOpen_vSwitchRow(node, (Open_vSwitch)row);
+ }
+ else if (row.getTableName().getName().equalsIgnoreCase("Port")) {
+ statusWithUUID = insertPortRow(node, parent_uuid, (Port)row);
+ }
+ else if (row.getTableName().getName().equalsIgnoreCase("QoS")) {
+ statusWithUUID = insertQosRow(node, parent_uuid, (Qos)row);
+ }
+ else if (row.getTableName().getName().equalsIgnoreCase("Queue")) {
+ statusWithUUID = insertQueueRow(node, parent_uuid, (Queue)row);
+ }
+ else if (row.getTableName().getName().equalsIgnoreCase("sFlow")) {
+ statusWithUUID = insertSflowRow(node, parent_uuid, (SFlow)row);
+ }
+ else if (row.getTableName().getName().equalsIgnoreCase("SSL")) {
+ statusWithUUID = insertSSLRow(node, parent_uuid, (SSL)row);
+ }
+ return statusWithUUID;
+ }
+
+ private Status insertBridgeRow(Node node, String open_VSwitch_uuid, Bridge bridgeRow) {
+ try{
+ if (connectionService == null) {
+ logger.error("Couldn't refer to the ConnectionService");
+ return new Status(StatusCode.NOSERVICE);
+ }
+
+ Connection connection = this.getConnection(node);
+ if (connection == null) {
+ return new Status(StatusCode.NOSERVICE, "Connection to ovsdb-server not available");
+ }
+
+ Map<String, Table<?>> ovsTable = inventoryServiceInternal.getTableCache(node, Open_vSwitch.NAME.getName());
+
+ if (ovsTable == null) {
+ return new Status(StatusCode.NOTFOUND, "There are no Open_vSwitch instance in the Open_vSwitch table");
+ }
+
+ String newBridge = "new_bridge";
+
+ Operation addSwitchRequest = null;
+
+ String ovsTableUUID = open_VSwitch_uuid;
+ if (ovsTableUUID == null) ovsTableUUID = (String) ovsTable.keySet().toArray()[0];
+ UUID bridgeUuidPair = new UUID(newBridge);
+ Mutation bm = new Mutation("bridges", Mutator.INSERT, bridgeUuidPair);
+ List<Mutation> mutations = new ArrayList<Mutation>();
+ mutations.add(bm);
+
+ UUID uuid = new UUID(ovsTableUUID);
+ Condition condition = new Condition("_uuid", Function.EQUALS, uuid);
+ List<Condition> where = new ArrayList<Condition>();
+ where.add(condition);
+ addSwitchRequest = new MutateOperation(Open_vSwitch.NAME.getName(), where, mutations);
+
+ InsertOperation addBridgeRequest = new InsertOperation(Bridge.NAME.getName(), newBridge, bridgeRow);
+
+ TransactBuilder transaction = new TransactBuilder();
+ transaction.addOperations(new ArrayList<Operation>(
+ Arrays.asList(addSwitchRequest,
+ addBridgeRequest)));
+
+ int bridgeInsertIndex = transaction.getRequests().indexOf(addBridgeRequest);
+
+ ListenableFuture<List<OperationResult>> transResponse = connection.getRpc().transact(transaction);
+ List<OperationResult> tr = transResponse.get();
+ List<Operation> requests = transaction.getRequests();
+ Status status = new Status(StatusCode.SUCCESS);
+ for (int i = 0; i < tr.size() ; i++) {
+ if (i < requests.size()) requests.get(i).setResult(tr.get(i));
+ if (tr.get(i) != null && tr.get(i).getError() != null && tr.get(i).getError().trim().length() > 0) {
+ OperationResult result = tr.get(i);
+ status = new Status(StatusCode.BADREQUEST, result.getError() + " : " + result.getDetails());
+ }
+ }
+
+ if (tr.size() > requests.size()) {
+ OperationResult result = tr.get(tr.size()-1);
+ logger.error("Error creating Bridge : {}\n Error : {}\n Details : {}", bridgeRow.getName(),
+ result.getError(),
+ result.getDetails());
+ status = new Status(StatusCode.BADREQUEST, result.getError() + " : " + result.getDetails());
+ }
+ if (status.isSuccess()) {
+ UUID bridgeUUID = tr.get(bridgeInsertIndex).getUuid();
+ status = new Status(StatusCode.SUCCESS, bridgeUUID.toString());
+ }
+ return status;
+ } catch(Exception e){
+ e.printStackTrace();
+ }
+ return new Status(StatusCode.INTERNALERROR);
+ }
+
+ private Status insertPortRow(Node node, String bridge_uuid, Port portRow) {
+ try{
+ if (connectionService == null) {
+ logger.error("Couldn't refer to the ConnectionService");
+ return new Status(StatusCode.NOSERVICE);
+ }
+ Connection connection = this.getConnection(node);
+ if (connection == null) {
+ return new Status(StatusCode.NOSERVICE, "Connection to ovsdb-server not available");
+ }
+
+ Map<String, Table<?>> brTable = inventoryServiceInternal.getTableCache(node, Bridge.NAME.getName());
+ if (brTable == null || brTable.get(bridge_uuid) == null) {
+ return new Status(StatusCode.NOTFOUND, "Bridge with UUID "+bridge_uuid+" Not found");
+ }
+ String newPort = "new_port";
+ UUID portUUID = new UUID(newPort);
+ Mutation bm = new Mutation("ports", Mutator.INSERT, portUUID);
+ List<Mutation> mutations = new ArrayList<Mutation>();
+ mutations.add(bm);
+
+ UUID uuid = new UUID(bridge_uuid);
+ Condition condition = new Condition("_uuid", Function.EQUALS, uuid);
+ List<Condition> where = new ArrayList<Condition>();
+ where.add(condition);
+ Operation addBrMutRequest = new MutateOperation(Bridge.NAME.getName(), where, mutations);
+
+ // Default OVS schema is to have 1 or more interface part of Bridge. Hence it is mandatory to
+ // Insert an Interface in a Port add case :-(.
+
+ String newInterface = "new_interface";
+ Interface interfaceRow = new Interface();
+ interfaceRow.setName(portRow.getName());
+ InsertOperation addIntfRequest = new InsertOperation(Interface.NAME.getName(),
+ newInterface, interfaceRow);
+
+ OvsDBSet<UUID> interfaces = new OvsDBSet<UUID>();
+ UUID interfaceid = new UUID(newInterface);
+ interfaces.add(interfaceid);
+ portRow.setInterfaces(interfaces);
+
+ InsertOperation addPortRequest = new InsertOperation(Port.NAME.getName(), newPort, portRow);
+
+ TransactBuilder transaction = new TransactBuilder();
+ transaction.addOperations(new ArrayList<Operation>
+ (Arrays.asList(addBrMutRequest, addPortRequest, addIntfRequest)));
+ int portInsertIndex = transaction.getRequests().indexOf(addPortRequest);
+ ListenableFuture<List<OperationResult>> transResponse = connection.getRpc().transact(transaction);
+ List<OperationResult> tr = transResponse.get();
+ List<Operation> requests = transaction.getRequests();
+ Status status = new Status(StatusCode.SUCCESS);
+ for (int i = 0; i < tr.size() ; i++) {
+ if (i < requests.size()) requests.get(i).setResult(tr.get(i));
+ if (tr.get(i) != null && tr.get(i).getError() != null && tr.get(i).getError().trim().length() > 0) {
+ OperationResult result = tr.get(i);
+ status = new Status(StatusCode.BADREQUEST, result.getError() + " : " + result.getDetails());
+ }
+ }
+
+ if (tr.size() > requests.size()) {
+ OperationResult result = tr.get(tr.size()-1);
+ logger.error("Error creating port : {}\n Error : {}\n Details : {}", portRow.getName(),
+ result.getError(),
+ result.getDetails());
+ status = new Status(StatusCode.BADREQUEST, result.getError() + " : " + result.getDetails());
+ }
+ if (status.isSuccess()) {
+ uuid = tr.get(portInsertIndex).getUuid();
+ status = new Status(StatusCode.SUCCESS, uuid.toString());
+ }
+
+ return status;
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return new Status(StatusCode.INTERNALERROR);
+ }
+
+ private Status insertInterfaceRow(Node node, String port_uuid, Interface row) {
+ return new Status(StatusCode.NOTIMPLEMENTED, "Insert operation for this Table is not implemented yet.");
+ }
+
+ private Status insertOpen_vSwitchRow(Node node, Open_vSwitch row) {
+ return new Status(StatusCode.NOTIMPLEMENTED, "Insert operation for this Table is not implemented yet.");
+ }
+
+ private Status insertControllerRow(Node node, String bridge_uuid, Controller row) {
+ return new Status(StatusCode.NOTIMPLEMENTED, "Insert operation for this Table is not implemented yet.");
+ }
+
+ private Status insertSSLRow(Node node, String parent_uuid, SSL row) {
+ return new Status(StatusCode.NOTIMPLEMENTED, "Insert operation for this Table is not implemented yet.");
+ }
+
+ private Status insertSflowRow(Node node, String parent_uuid, SFlow row) {
+ return new Status(StatusCode.NOTIMPLEMENTED, "Insert operation for this Table is not implemented yet.");
+ }
+
+ private Status insertQueueRow(Node node, String parent_uuid, Queue row) {
+ return new Status(StatusCode.NOTIMPLEMENTED, "Insert operation for this Table is not implemented yet.");
+ }
+
+ private Status insertQosRow(Node node, String parent_uuid, Qos row) {
+ return new Status(StatusCode.NOTIMPLEMENTED, "Insert operation for this Table is not implemented yet.");
+ }
+
+ private Status insertNetFlowRow(Node node, String parent_uuid, NetFlow row) {
+ return new Status(StatusCode.NOTIMPLEMENTED, "Insert operation for this Table is not implemented yet.");
+ }
+
+ private Status insertMirrorRow(Node node, String parent_uuid, Mirror row) {
+ return new Status(StatusCode.NOTIMPLEMENTED, "Insert operation for this Table is not implemented yet.");
+ }
+
+ private Status insertManagerRow(Node node, String parent_uuid, Manager row) {
+ return new Status(StatusCode.NOTIMPLEMENTED, "Insert operation for this Table is not implemented yet.");
+ }
+
+ private Status insertCapabilityRow(Node node, String parent_uuid, Capability row) {
+ return new Status(StatusCode.NOTIMPLEMENTED, "Insert operation for this Table is not implemented yet.");
+ }
+
+ @Override
+ public Status updateRow(Node node, String rowUUID, Table<?> row) {
+ return new Status(StatusCode.NOTIMPLEMENTED, "Update Row functionality is not implemented yet.");
+ }
+
+ @Override
+ public Status deleteRow(Node node, String tableName, String uuid) {
+ return new Status(StatusCode.NOTIMPLEMENTED, "Delete Row functionality is not implemented yet.");
+ }
+
+ @Override
+ public List<Table<?>> getRows(Node node, String tableName) {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ @Override
+ public Table<?> getRow(Node node, String tableName, String uuid) {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ @Override
+ public List<String> getTables(Node node) {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
public void _ovsconnect (CommandInterpreter ci) {
String bridgeName = ci.nextArgument();
if (bridgeName == null) {
ci.println("Please enter Node Name");
return;
}
-
String bridgeName = ci.nextArgument();
if (bridgeName == null) {
ci.println("Please enter Bridge Name");
return;
}
Status status;
+
try {
- status = this.createBridgeDomain(Node.fromString(nodeName), bridgeName, null);
+ Node node = Node.fromString(nodeName);
+ if (node == null) {
+ ci.println("Invalid Node");
+ return;
+ }
+ status = this.createBridgeDomain(node, bridgeName, null);
ci.println("Bridge creation status : "+status.toString());
} catch (Throwable e) {
// TODO Auto-generated catch block
return;
}
Status status;
+
List<String> brlist = new ArrayList<String>();
try {
- brlist = this.getBridgeDomains(Node.fromString(nodeName));
+ Node node = Node.fromString(nodeName);
+ brlist = this.getBridgeDomains(node);
+ if (node == null) {
+ ci.println("Invalid Node");
+ return;
+ }
ci.println("Existing Bridges: "+brlist.toString());
} catch (Throwable e) {
e.printStackTrace();
}
}
+ public void _deleteBridgeDomain (CommandInterpreter ci) {
+ String nodeName = ci.nextArgument();
+ if (nodeName == null) {
+ ci.println("Please enter Node Name");
+ return;
+ }
+ String bridgeName = ci.nextArgument();
+ if (bridgeName == null) {
+ ci.println("Please enter Bridge Name");
+ return;
+ }
+ Status status;
+ try {
+ Node node = Node.fromString(nodeName);
+ if (node == null) {
+ ci.println("Invalid Node");
+ return;
+ }
+ status = this.deleteBridgeDomain(node, bridgeName);
+ ci.println("Bridge deletion status : "+status.toString());
+ } catch (Throwable e) {
+ e.printStackTrace();
+ ci.println("Failed to delete Bridge "+bridgeName);
+ }
+ }
+
public void _addPort (CommandInterpreter ci) {
String nodeName = ci.nextArgument();
if (nodeName == null) {
}
Status status;
try {
- status = this.addPort(Node.fromString(nodeName), bridgeName, portName, customConfigs);
+ Node node = Node.fromString(nodeName);
+ if (node == null) {
+ ci.println("Invalid Node");
+ return;
+ }
+ status = this.addPort(node, bridgeName, portName, customConfigs);
ci.println("Port creation status : "+status.toString());
} catch (Throwable e) {
// TODO Auto-generated catch block
Status status;
try {
- status = this.deletePort(Node.fromString(nodeName), bridgeName, portName);
+ Node node = Node.fromString(nodeName);
+ if (node == null) {
+ ci.println("Invalid Node");
+ return;
+ }
+ status = this.deletePort(node, bridgeName, portName);
ci.println("Port deletion status : "+status.toString());
} catch (Throwable e) {
// TODO Auto-generated catch block
Status status;
try {
- status = this.addPort(Node.fromString(nodeName), bridgeName, portName, configs);
+ Node node = Node.fromString(nodeName);
+ if (node == null) {
+ ci.println("Invalid Node");
+ return;
+ }
+ status = this.addPort(node, bridgeName, portName, configs);
ci.println("Port creation status : "+status.toString());
} catch (Throwable e) {
// TODO Auto-generated catch block
Status status;
try {
- status = this.addPort(Node.fromString(nodeName), bridgeName, portName, configs);
+ Node node = Node.fromString(nodeName);
+ if (node == null) {
+ ci.println("Invalid Node");
+ return;
+ }
+ status = this.addPort(node, bridgeName, portName, configs);
ci.println("Port creation status : "+status.toString());
} catch (Throwable e) {
// TODO Auto-generated catch block
ci.println("Please enter Node Name");
return;
}
- inventoryServiceInternal.printCache(Node.fromString(nodeName));
+ Node node = Node.fromString(nodeName);
+ if (node == null) {
+ ci.println("Invalid Node");
+ return;
+ }
+ inventoryServiceInternal.printCache(node);
}
public void _forceConnect (CommandInterpreter ci) {
help.append("---OVSDB CLI---\n");
help.append("\t ovsconnect <ConnectionName> <ip-address> - Connect to OVSDB\n");
help.append("\t addBridge <Node> <BridgeName> - Add Bridge\n");
- help.append("\t getBridgeDomains - Get Bridges\n");
+ help.append("\t getBridgeDomains <Node> - Get Bridges\n");
+ help.append("\t deleteBridgeDomain <Node> <BridgeName> - Delete a Bridge\n");
help.append("\t addPort <Node> <BridgeName> <PortName> <type> <options pairs> - Add Port\n");
- help.append("\t delPort <Node> <BridgeName> <PortName> - Delete Port\n");
+ help.append("\t deletePort <Node> <BridgeName> <PortName> - Delete Port\n");
help.append("\t addPortVlan <Node> <BridgeName> <PortName> <vlan> - Add Port, Vlan\n");
help.append("\t addTunnel <Node> <Bridge> <Port> <tunnel-type> <remote-ip> - Add Tunnel\n");
help.append("\t printCache <Node> - Prints Table Cache");