New northbound API for affinity objects. 89/1589/2
authorSuchi Raman <suchi.raman@plexxi.com>
Tue, 1 Oct 2013 15:33:43 +0000 (11:33 -0400)
committerGerrit Code Review <gerrit@opendaylight.org>
Tue, 1 Oct 2013 23:40:55 +0000 (23:40 +0000)
Signed-off-by: Suchi Raman <suchi.raman@plexxi.com>
affinity/implementation/src/main/java/org/opendaylight/affinity/affinity/internal/Activator.java
affinity/implementation/src/main/java/org/opendaylight/affinity/affinity/internal/AffinityManagerImpl.java
affinity/yang/pom.xml
pom.xml
scripts/affinity.py
scripts/osgi.txt

index e9332dfc05ba0dce750e9d2abb629739433c2f7c..a386eeecc184c4e73f7f8310ed5f41b5c96b8a5a 100644 (file)
@@ -21,6 +21,7 @@ import org.opendaylight.controller.hosttracker.IfIptoHost;
 import org.opendaylight.controller.sal.core.ComponentActivatorAbstractBase;
 import org.opendaylight.affinity.affinity.IAffinityManager;
 import org.opendaylight.affinity.affinity.IAffinityManagerAware;
+import org.opendaylight.controller.sal.utils.IObjectReader;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.opendaylight.controller.sal.flowprogrammer.IFlowProgrammerService;
@@ -63,6 +64,7 @@ public class Activator extends ComponentActivatorAbstractBase {
      * instantiated in order to get an fully working implementation
      * Object
      */
+    @Override
     public Object[] getImplementations() {
         Object[] res = { AffinityManagerImpl.class };
         return res;
@@ -81,6 +83,7 @@ public class Activator extends ComponentActivatorAbstractBase {
      * also optional per-container different behavior if needed, usually
      * should not be the case though.
      */
+    @Override
     public void configureInstance(Component c, Object imp, String containerName) {
         if (imp.equals(AffinityManagerImpl.class)) {
             Dictionary<String, Set<String>> props = new Hashtable<String, Set<String>>();
@@ -90,29 +93,33 @@ public class Activator extends ComponentActivatorAbstractBase {
             // export the service
             c.setInterface(new String[] {
                     IAffinityManager.class.getName(),
-                    ICacheUpdateAware.class.getName(),
-                    IConfigurationContainerAware.class.getName() }, props);
+                    IConfigurationContainerAware.class.getName(),
+                    IObjectReader.class.getName(),
+                    ICacheUpdateAware.class.getName() }, props);
 
             // Now lets add a service dependency to make sure the
             // provider of service exists
             c.add(createContainerServiceDependency(containerName).setService(
                     IAffinityManagerAware.class).setCallbacks(
                     "setAffinityManagerAware", "unsetAffinityManagerAware")
-                    .setRequired(false));
+                    .setRequired(true));
             c.add(createContainerServiceDependency(containerName).setService(
                     IClusterContainerServices.class).setCallbacks(
                     "setClusterContainerService",
                     "unsetClusterContainerService").setRequired(true));
-            c.add(createContainerServiceDependency(containerName).setService(
+            /*
+              c.add(createContainerServiceDependency(containerName).setService(
                     IFlowProgrammerService.class).setCallbacks(
                     "setFlowProgrammerService", "unsetFlowProgrammerService")
                     .setRequired(true));
+            */
             c.add(createContainerServiceDependency(containerName).setService(
                     ISwitchManager.class).setCallbacks(
                     "setSwitchManager", "unsetSwitchManager")
                     .setRequired(true));
             c.add(createContainerServiceDependency(containerName).setService(IfIptoHost.class)
                   .setCallbacks("setHostTracker", "unsetHostTracker").setRequired(true));
+            logger.debug("Done configuring instance of AffinityImpl class.");
         }
     }
 }
index c65531f57f611b85d2761d11560e6e0d4393c859..16773a148d32910fa3b4acbdb1c57bcf0c4616c5 100644 (file)
@@ -122,7 +122,7 @@ public class AffinityManagerImpl implements IAffinityManager, IConfigurationCont
     private static boolean hostRefresh = true;
     private int hostRetryCount = 5;
     private IClusterContainerServices clusterContainerService = null;
-    private String containerName = null;
+    private String containerName = GlobalConstants.DEFAULT.toString();
     private boolean isDefaultContainer = true;
     private static final int REPLACE_RETRY = 1;
 
@@ -154,7 +154,7 @@ public class AffinityManagerImpl implements IAffinityManager, IConfigurationCont
             + ".conf";
         affinityGroupFileName = ROOT + "affinityConfig_group" + this.getContainerName()
             + ".conf";
-
+        log.debug("configuration file names " + affinityLinkFileName + "and " + affinityGroupFileName);
         // Instantiate cluster synced variables
         allocateCaches();
         retrieveCaches();
@@ -422,6 +422,7 @@ public class AffinityManagerImpl implements IAffinityManager, IConfigurationCont
 
     @Override
     public AffinityGroup getAffinityGroup(String groupName) {
+        log.debug("getAffinityGroup" + groupName);
         return affinityGroupList.get(groupName);
     }
 
index 1c8406141092cbb7c48f94b36d36fd55828f3d1a..a03171b78ff2c7bce3584cfc53c3cca63ace4d2e 100644 (file)
@@ -7,13 +7,13 @@
         <version>1.0-SNAPSHOT</version>
     </parent -->
     <scm>
-      <connection>scm:git:ssh://git.opendaylight.org:29418/controller.git</connection>
-      <developerConnection>scm:git:ssh://git.opendaylight.org:29418/controller.git</developerConnection>
+      <connection>scm:git:ssh://git.opendaylight.org:29418/affinity.git</connection>
+      <developerConnection>scm:git:ssh://git.opendaylight.org:29418/affinity.git</developerConnection>
       <url>https://wiki.opendaylight.org/view/OpenDaylight_Controller:MD-SAL</url>
     </scm>
 
     <modelVersion>4.0.0</modelVersion>
-    <groupId>org.opendaylight.controller.model</groupId>
+    <groupId>org.opendaylight.affinity</groupId>
     <artifactId>model-parent</artifactId>
     <version>1.0-SNAPSHOT</version>
     <packaging>jar</packaging>
diff --git a/pom.xml b/pom.xml
index d2a42d1d2eedd95dc74b88dc67e50a73977d10c6..e73ef46272090fa41441f7e66c24765d5cedd1a2 100644 (file)
--- a/pom.xml
+++ b/pom.xml
@@ -49,7 +49,7 @@
 
     <modules>
       <module>affinity/api</module> 
-      <module>affinity/yang</module> 
+<!--      <module>affinity/yang</module>  -->
       <module>affinity/implementation</module>
       <module>affinity/integrationtest</module>
       <module>affinity/northbound</module>
index f3ca7ed8c519fc11f4fb4e7e64b2210ba18cc880..0cd8832f31c146ab4969104c0382c7d304bc41f4 100644 (file)
@@ -1,27 +1,78 @@
+#!/usr/local/bin/python
+
 import httplib2
 import json
+import sys
+
+#
+# Configure an affinity link and set its waypoint address. 
+#
+
+def rest_method(url, verb): 
+    global h
+
+    print "REST call " + url
+    resp, content = h.request(url, verb)
+
+    if (resp.status != 200):
+        print "Error code %d" % (resp.status)
+        return
+    
+    if (verb == "GET"): 
+        print content
+
+    print "done"
+    
+
+def waypoint_demo():
+    # Create two affinity groups
+
+    print "create web servers group"
+    put_url = 'http://localhost:8080/affinity/nb/v2/affinity/default/create/group/webservers'
+    rest_method(put_url, "POST")
+
+    print "create external addresses"
+    put_url = 'http://localhost:8080/affinity/nb/v2/affinity/default/create/group/external'
+    rest_method(put_url, "PUT")
+
+    print "create link inflows"
+    put_url = 'http://localhost:8080/affinity/nb/v2/affinity/default/create/link/inflows'
+    rest_method(put_url, "PUT")
+
+    print "add ip to webservers"
+    put_url = 'http://localhost:8080/affinity/nb/v2/affinity/default/add/ip/webservers/192.168.1.1'
+    rest_method(put_url, "PUT")
+
+    print "add ip to webservers"
+    put_url = 'http://localhost:8080/affinity/nb/v2/affinity/default/add/ip/webservers/192.168.1.2'
+    rest_method(put_url, "PUT")
+
+    print "add ip to external"    
+    put_url = 'http://localhost:8080/affinity/nb/v2/affinity/default/add/ip/external/10.10.0.0'
+    rest_method(put_url, "PUT")
 
-h = httplib2.Http(".cache")
-h.add_credentials('admin', 'admin')
 
-resp, content = h.request('http://localhost:8080/controller/nb/v2/affinity/default/affinities', "GET")
-content
+def get_all_affinity_groups(): 
+    print "get all affinity groups"
+    get_url = 'http://localhost:8080/affinity/nb/v2/affinity/default/affinity-groups'
+    rest_method(get_url, "GET")
 
-put_url = 'http://localhost:8080/controller/nb/v2/affinity/default/test1/192.168.1.1/192.168.1.2/isolate'
-resp, content = h.request(put_url, "PUT")
-resp
-content
+def get_affinity_group(): 
+    print "get affinity group"
+    get_url = 'http://localhost:8080/affinity/nb/v2/affinity/default/group/webserver'
+    rest_method(get_url, "GET")
 
-resp, content = h.request('http://localhost:8080/controller/nb/v2/affinity/default/affinities', "GET")
-content
+# Add waypoint IP to an affinity link.
+def main():
+    global h
+    h = httplib2.Http(".cache")
+    h.add_credentials('admin', 'admin')
 
-#####
+    waypoint_demo()
+#    get_all_affinity_groups()
+#    get_affinity_group()
+if __name__ == "__main__":
+    main()
 
-resp, content = h.request('http://localhost:8080/controller/nb/v2/statistics/default/flowstats', "GET")
-resp
-content
+    
 
-post_url = 'http://localhost:8080/controller/nb/v2/affinity/default/affinity-config'
-resp, content = h.request(post_url, "POST")
-resp
-content
index 20684c1fd884e2848845d67bd7d626e34d1dd90c..659b54361afd55f3be7f9f91299b8da87b3c7b19 100644 (file)
@@ -1,6 +1,42 @@
-install file:/Users/sraman/.m2/repository/org/opendaylight/controller/affinity/0.4.1-SNAPSHOT/affinity-0.4.1-SNAPSHOT.jar
-install file:/Users/sraman/.m2/repository/org/opendaylight/controller/affinity/implementation/0.4.1-SNAPSHOT/implementation-0.4.1-SNAPSHOT.jar
-install file:/Users/sraman/.m2/repository/org/opendaylight/controller/affinity/northbound/0.4.1-SNAPSHOT/northbound-0.4.1-SNAPSHOT.jar
+# Start the controller. 
+~/controller/opendaylight/distribution/opendaylight/target/distribution.opendaylight-0.1.1-SNAPSHOT-osgipackage/opendaylight/run.sh
+
+# Add jar files.
+install file:/Users/sraman/affinity/l2agent/target/l2agent-0.4.0-SNAPSHOT.jar
+install file:/Users/sraman/affinity/affinity/api/target/affinity-0.4.0-SNAPSHOT.jar
+install file:/Users/sraman/affinity/affinity/implementation/target/affinity.implementation-0.4.0-SNAPSHOT.jar
+install file:/Users/sraman/affinity/affinity/northbound/target/affinity.northbound-0.4.0-SNAPSHOT.jar
+
+install file:/Users/sraman/affinity/analytics/api/target/analytics-0.4.0-SNAPSHOT.jar
+install file:/Users/sraman/affinity/analytics/implementation/target/analytics.implementation-0.4.0-SNAPSHOT.jar
+install file:/Users/sraman/affinity/analytics/northbound/target/analytics.northbound-0.4.0-SNAPSHOT.jar
+
+setloglevel org.opendaylight.affinity debug
+setloglevel org.opendaylight.affinity.affinity debug
+setloglevel org.opendaylight.affinity.affinity.internal debug
+setloglevel org.opendaylight.affinity.affinity.internal.Activator debug
+setloglevel org.opendaylight.affinity.analytics debug
+setloglevel org.opendaylight.affinity.analytics.internal debug
+setloglevel org.opendaylight.affinity.analytics.internal.Activator debug
+setloglevel org.opendaylight.affinity.l2agent debug
+setloglevel org.opendaylight.affinity.l2agent.Activator debug
+setloglevel org.opendaylight.affinity.l2agent.L2Agent debug
+setloglevel org.opendaylight.controller.sal.implementation.internal.FlowProgrammerService trace
+setloglevel org.opendaylight.controller.sal.core.ComponentActivatorAbstractBase trace
+
+start 153
+start 154
+start 155
+start 156
+start 157
+start 158
+start 159
+
+ss| grep affinity
+########################################
+#install file:/Users/sraman/.m2/repository/org/opendaylight/controller/affinity/0.4.1-SNAPSHOT/affinity-0.4.1-SNAPSHOT.jar
+#install file:/Users/sraman/.m2/repository/org/opendaylight/controller/affinity/implementation/0.4.1-SNAPSHOT/implementation-0.4.1-SNAPSHOT.jar
+#install file:/Users/sraman/.m2/repository/org/opendaylight/controller/affinity/northbound/0.4.1-SNAPSHOT/northbound-0.4.1-SNAPSHOT.jar
 
 ss | grep affinity
 start <id_affinity>