ONOS-5503 Added CLIs for administering OFAgent

Change-Id: I58256316e2054952da9dce04bf927901761807e5
diff --git a/apps/ofagent/src/main/java/org/onosproject/ofagent/impl/DefaultOFAgent.java b/apps/ofagent/src/main/java/org/onosproject/ofagent/impl/DefaultOFAgent.java
index cac1e03..586ce3a 100644
--- a/apps/ofagent/src/main/java/org/onosproject/ofagent/impl/DefaultOFAgent.java
+++ b/apps/ofagent/src/main/java/org/onosproject/ofagent/impl/DefaultOFAgent.java
@@ -17,6 +17,7 @@
 
 import com.google.common.base.MoreObjects;
 import com.google.common.collect.ImmutableSet;
+import com.google.common.collect.Sets;
 import org.onosproject.incubator.net.virtual.NetworkId;
 import org.onosproject.ofagent.api.OFAgent;
 import org.onosproject.ofagent.api.OFController;
@@ -96,23 +97,10 @@
         return new Builder();
     }
 
-    /**
-     * Returns new builder instance from the existing agent.
-     *
-     * @param ofAgent the existing agent
-     * @return default ofagent builder
-     */
-    public static Builder builder(OFAgent ofAgent) {
-        return new Builder()
-                .networkId(ofAgent.networkId())
-                .controllers(ofAgent.controllers())
-                .state(ofAgent.state());
-    }
-
     public static final class Builder implements OFAgent.Builder {
 
         private NetworkId networkId;
-        private Set<OFController> controllers;
+        private Set<OFController> controllers = Sets.newHashSet();
         private State state;
 
         private Builder() {
@@ -128,6 +116,14 @@
         }
 
         @Override
+        public Builder from(OFAgent ofAgent) {
+            this.networkId = ofAgent.networkId();
+            this.controllers = Sets.newHashSet(ofAgent.controllers());
+            this.state = ofAgent.state();
+            return this;
+        }
+
+        @Override
         public Builder networkId(NetworkId networkId) {
             this.networkId = networkId;
             return this;
@@ -140,6 +136,18 @@
         }
 
         @Override
+        public OFAgent.Builder addController(OFController controller) {
+            this.controllers.add(controller);
+            return this;
+        }
+
+        @Override
+        public OFAgent.Builder deleteController(OFController controller) {
+            this.controllers.remove(controller);
+            return this;
+        }
+
+        @Override
         public Builder state(State state) {
             this.state = state;
             return this;