From 17b804bd9cc46825510ac149fdfda97ed7e423b8 Mon Sep 17 00:00:00 2001 From: Brent Salisbury Date: Fri, 8 Nov 2013 03:59:31 -0500 Subject: [PATCH] Implemented the deleteBridgeDomain method in ConfigurationService I missed the last comment from Madhu in p2. I verfied all methods modified. Thanks very much for the assist. Change-Id: I628f31ed8af66d4c18ac2b61b6200043a8b779d8 Signed-off-by: Brent Salisbury --- .../ovsdb/plugin/ConfigurationService.java | 190 +++++++++++++++--- 1 file changed, 157 insertions(+), 33 deletions(-) diff --git a/ovsdb/src/main/java/org/opendaylight/ovsdb/plugin/ConfigurationService.java b/ovsdb/src/main/java/org/opendaylight/ovsdb/plugin/ConfigurationService.java index 61d7a017de..feb63d7bcd 100755 --- a/ovsdb/src/main/java/org/opendaylight/ovsdb/plugin/ConfigurationService.java +++ b/ovsdb/src/main/java/org/opendaylight/ovsdb/plugin/ConfigurationService.java @@ -8,7 +8,6 @@ import java.util.*; import org.eclipse.osgi.framework.console.CommandInterpreter; import org.eclipse.osgi.framework.console.CommandProvider; -import org.opendaylight.ovsdb.lib.database.OVSBridge; import org.opendaylight.ovsdb.lib.database.OVSInstance; import org.opendaylight.ovsdb.lib.database.OvsdbType; import org.opendaylight.ovsdb.lib.message.TransactBuilder; @@ -452,30 +451,30 @@ public class ConfigurationService implements IPluginInBridgeDomainConfigService, @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> brTable = inventoryServiceInternal.getTableCache(node, Bridge.NAME.getName()); - Map> 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> brTable = inventoryServiceInternal.getTableCache(node, Bridge.NAME.getName()); + Map> 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); @@ -554,8 +553,70 @@ public class ConfigurationService implements IPluginInBridgeDomainConfigService, @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> ovsTable = inventoryServiceInternal.getTableCache(node, Open_vSwitch.NAME.getName()); + Map> 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 mutations = new ArrayList(); + mutations.add(bm); + + UUID uuid = new UUID(ovsUuid); + Condition condition = new Condition("_uuid", Function.EQUALS, uuid); + List where = new ArrayList(); + where.add(condition); + delBrRequest = new MutateOperation(Open_vSwitch.NAME.getName(), where, mutations); + + TransactBuilder transaction = new TransactBuilder(); + transaction.addOperations(new ArrayList(Arrays.asList(delBrRequest))); + + ListenableFuture> transResponse = connection.getRpc().transact(transaction); + List tr = transResponse.get(); + List 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 @@ -764,15 +825,20 @@ public class ConfigurationService implements IPluginInBridgeDomainConfigService, 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 @@ -788,9 +854,15 @@ public class ConfigurationService implements IPluginInBridgeDomainConfigService, return; } Status status; + List brlist = new ArrayList(); 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(); @@ -798,6 +870,32 @@ public class ConfigurationService implements IPluginInBridgeDomainConfigService, } } + 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) { @@ -841,7 +939,12 @@ public class ConfigurationService implements IPluginInBridgeDomainConfigService, } 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 @@ -871,7 +974,12 @@ public class ConfigurationService implements IPluginInBridgeDomainConfigService, 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 @@ -918,7 +1026,12 @@ public class ConfigurationService implements IPluginInBridgeDomainConfigService, 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 @@ -973,7 +1086,12 @@ public class ConfigurationService implements IPluginInBridgeDomainConfigService, 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 @@ -988,7 +1106,12 @@ public class ConfigurationService implements IPluginInBridgeDomainConfigService, 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) { @@ -1006,9 +1129,10 @@ public class ConfigurationService implements IPluginInBridgeDomainConfigService, help.append("---OVSDB CLI---\n"); help.append("\t ovsconnect - Connect to OVSDB\n"); help.append("\t addBridge - Add Bridge\n"); - help.append("\t getBridgeDomains - Get Bridges\n"); + help.append("\t getBridgeDomains - Get Bridges\n"); + help.append("\t deleteBridgeDomain - Delete a Bridge\n"); help.append("\t addPort - Add Port\n"); - help.append("\t delPort - Delete Port\n"); + help.append("\t deletePort - Delete Port\n"); help.append("\t addPortVlan - Add Port, Vlan\n"); help.append("\t addTunnel - Add Tunnel\n"); help.append("\t printCache - Prints Table Cache"); -- 2.36.6