Brian O'Connor

Updating DefaultOvsdbClient

- Updating setControllerAuto to use setControllersWithUUID
  and cleaned up unnecessary conversions
- Removed commented out code in setControllersWithUUID
- Removed old setControllers method

Change-Id: I1ee89d5237e58b64e880d9a6db4cee16815dd9a8
...@@ -93,18 +93,24 @@ public interface OvsdbClientService extends OvsdbRPC { ...@@ -93,18 +93,24 @@ public interface OvsdbClientService extends OvsdbRPC {
93 Set<ControllerInfo> getControllers(DeviceId openflowDeviceId); 93 Set<ControllerInfo> getControllers(DeviceId openflowDeviceId);
94 94
95 /** 95 /**
96 - * sets the controllers of the node to the ones passed in the list. 96 + * Sets the Controllers for the specified bridge.
97 + * <p/>
98 + * This method will replace the existing controller list with the new controller
99 + * list.
97 * 100 *
98 - * @param bridgeUuid UUid for the bridge we are settings the controls on 101 + * @param bridgeUuid bridge uuid
99 - * @param controllers of controllers; empty if no controller is find 102 + * @param controllers list of controllers
100 */ 103 */
101 void setControllersWithUUID(UUID bridgeUuid, List<ControllerInfo> controllers); 104 void setControllersWithUUID(UUID bridgeUuid, List<ControllerInfo> controllers);
102 105
103 /** 106 /**
104 - * sets the controllers of the node to the ones passed in the list. 107 + * Sets the Controllers for the specified device.
108 + * <p/>
109 + * This method will replace the existing controller list with the new controller
110 + * list.
105 * 111 *
106 - * @param deviceId deviceId for the bridge we are settings the controls on 112 + * @param deviceId device id (likely Openflow device)
107 - * @param controllers of controllers; empty if no controller is find 113 + * @param controllers list of controllers
108 */ 114 */
109 void setControllersWithDeviceId(DeviceId deviceId, List<ControllerInfo> controllers); 115 void setControllersWithDeviceId(DeviceId deviceId, List<ControllerInfo> controllers);
110 116
......
...@@ -17,6 +17,7 @@ package org.onosproject.ovsdb.controller.driver; ...@@ -17,6 +17,7 @@ package org.onosproject.ovsdb.controller.driver;
17 17
18 import com.fasterxml.jackson.databind.JsonNode; 18 import com.fasterxml.jackson.databind.JsonNode;
19 import com.google.common.base.Function; 19 import com.google.common.base.Function;
20 +import com.google.common.collect.ImmutableList;
20 import com.google.common.collect.Lists; 21 import com.google.common.collect.Lists;
21 import com.google.common.collect.Maps; 22 import com.google.common.collect.Maps;
22 import com.google.common.collect.Sets; 23 import com.google.common.collect.Sets;
...@@ -481,30 +482,21 @@ public class DefaultOvsdbClient ...@@ -481,30 +482,21 @@ public class DefaultOvsdbClient
481 } 482 }
482 483
483 /** 484 /**
484 - * Sets the Controller. 485 + * Sets the bridge's controller automatically.
486 + * <p/>
487 + * The connection is a TCP connection to the local ONOS instance's IP
488 + * and the default OpenFlow port.
485 * 489 *
486 * @param bridgeUuid bridge uuid 490 * @param bridgeUuid bridge uuid
487 */ 491 */
488 private void setControllerAuto(String bridgeUuid) { 492 private void setControllerAuto(String bridgeUuid) {
489 - String controllerUuid = null; 493 + IpAddress ipAddress = IpAddress.valueOf(((InetSocketAddress) channel.localAddress()).getAddress());
490 - String iPAddress = IpAddress.valueOf(((InetSocketAddress) channel 494 + ControllerInfo controllerInfo = new ControllerInfo(ipAddress, OvsdbConstant.OFPORT, "tcp");
491 - .localAddress()) 495 + log.debug("Automatically setting controller for bridge {} to {}",
492 - .getAddress() 496 + bridgeUuid, controllerInfo.target());
493 - .getHostAddress()) 497 + setControllersWithUUID(UUID.uuid(bridgeUuid), ImmutableList.of(controllerInfo));
494 - .toString();
495 -
496 - String target = "tcp:" + iPAddress + ":" + OvsdbConstant.OFPORT;
497 - log.debug("controller IP {}: port {}", iPAddress, OvsdbConstant.OFPORT);
498 -
499 - setController(bridgeUuid, target);
500 -
501 } 498 }
502 499
503 - /**
504 - * Sets the Controllers.
505 - *
506 - * @param bridgeUuid bridge uuid
507 - */
508 @Override 500 @Override
509 public void setControllersWithUUID(UUID bridgeUuid, List<ControllerInfo> controllers) { 501 public void setControllersWithUUID(UUID bridgeUuid, List<ControllerInfo> controllers) {
510 502
...@@ -539,7 +531,6 @@ public class DefaultOvsdbClient ...@@ -539,7 +531,6 @@ public class DefaultOvsdbClient
539 return; 531 return;
540 } 532 }
541 533
542 -// removeControllers.forEach(c -> controllerRowStore.deleteRow(c.getRow().uuid().value()));
543 removeControllers.forEach(c -> deleteConfig(OvsdbConstant.CONTROLLER, "_uuid", c.getRow().uuid().value(), 534 removeControllers.forEach(c -> deleteConfig(OvsdbConstant.CONTROLLER, "_uuid", c.getRow().uuid().value(),
544 OvsdbConstant.BRIDGE, "controller")); 535 OvsdbConstant.BRIDGE, "controller"));
545 536
...@@ -549,16 +540,9 @@ public class DefaultOvsdbClient ...@@ -549,16 +540,9 @@ public class DefaultOvsdbClient
549 controller.setTarget(c.target()); 540 controller.setTarget(c.target());
550 return controller; 541 return controller;
551 }).forEach(c -> { 542 }).forEach(c -> {
552 -// UUID uuid = c.getRow().uuid();
553 -// controllerRowStore.insertRow(uuid.value(), c.getRow());
554 -// newControllerUuids.add(uuid);
555 -
556 String uuid = insertConfig(OvsdbConstant.CONTROLLER, "_uuid", 543 String uuid = insertConfig(OvsdbConstant.CONTROLLER, "_uuid",
557 OvsdbConstant.BRIDGE, "controller", bridgeUuid.value(), 544 OvsdbConstant.BRIDGE, "controller", bridgeUuid.value(),
558 c.getRow()); 545 c.getRow());
559 - log.warn("insertConfig uuid {}", uuid);
560 - log.warn("row uuid {}", c.getRow().uuid());
561 - //log.warn("rowStore uuid {}", controllerRowStore.getRowStore());
562 newControllerUuids.add(UUID.uuid(uuid)); 546 newControllerUuids.add(UUID.uuid(uuid));
563 547
564 }); 548 });
...@@ -574,55 +558,13 @@ public class DefaultOvsdbClient ...@@ -574,55 +558,13 @@ public class DefaultOvsdbClient
574 Bridge bridge = (Bridge) TableGenerator.getTable(dbSchema, bridgeRow, OvsdbTable.BRIDGE); 558 Bridge bridge = (Bridge) TableGenerator.getTable(dbSchema, bridgeRow, OvsdbTable.BRIDGE);
575 bridge.setController(OvsdbSet.ovsdbSet(newControllerUuids)); 559 bridge.setController(OvsdbSet.ovsdbSet(newControllerUuids));
576 updateConfig(OvsdbConstant.BRIDGE, "_uuid", bridgeUuid.value(), bridge.getRow()); 560 updateConfig(OvsdbConstant.BRIDGE, "_uuid", bridgeUuid.value(), bridge.getRow());
577 -
578 - //rowStore.insertRow(bridgeUuid.value(), bridge.getRow()); //TODO do we need to do this?
579 } 561 }
580 562
581 - /**
582 - * Sets the Controllers.
583 - *
584 - * @param deviceId bridge uuid
585 - */
586 @Override 563 @Override
587 public void setControllersWithDeviceId(DeviceId deviceId, List<ControllerInfo> controllers) { 564 public void setControllersWithDeviceId(DeviceId deviceId, List<ControllerInfo> controllers) {
588 setControllersWithUUID(getBridgeUUID(deviceId), controllers); 565 setControllersWithUUID(getBridgeUUID(deviceId), controllers);
589 } 566 }
590 567
591 - private void setController(String bridgeUuid, String target) {
592 - String controllerUuid;
593 - DatabaseSchema dbSchema = schema.get(OvsdbConstant.DATABASENAME);
594 -
595 - // 1. get the bridge row
596 - // 2. delete different controllers and save the same controller.
597 - // 3. add new controllers
598 - // 4. update bridge row
599 -
600 -
601 - controllerUuid = getControllerUuid(OvsdbConstant.CONTROLLER, target);
602 -
603 - Controller controller = (Controller) TableGenerator
604 - .createTable(dbSchema, OvsdbTable.CONTROLLER);
605 - if (controller != null) {
606 - controller.setTarget(target);
607 - if (controllerUuid == null) {
608 -
609 - insertConfig(OvsdbConstant.CONTROLLER, "_uuid",
610 - OvsdbConstant.BRIDGE, "controller", bridgeUuid,
611 - controller.getRow());
612 -
613 - } else {
614 -
615 - Bridge bridge = (Bridge) TableGenerator
616 - .createTable(dbSchema, OvsdbTable.BRIDGE);
617 - Set<UUID> controllerUuids = new HashSet<>();
618 - controllerUuids.add(UUID.uuid(controllerUuid));
619 - bridge.setController(OvsdbSet.ovsdbSet(controllerUuids));
620 - updateConfig(OvsdbConstant.CONTROLLER, "_uuid", bridgeUuid, bridge.getRow());
621 -
622 - }
623 - }
624 - }
625 -
626 @Override 568 @Override
627 public void dropBridge(String bridgeName) { 569 public void dropBridge(String bridgeName) {
628 String bridgeUUID = getBridgeUuid(bridgeName); 570 String bridgeUUID = getBridgeUuid(bridgeName);
......