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;
* instantiated in order to get an fully working implementation
* Object
*/
+ @Override
public Object[] getImplementations() {
Object[] res = { AffinityManagerImpl.class };
return res;
* 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>>();
// 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.");
}
}
}
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;
+ ".conf";
affinityGroupFileName = ROOT + "affinityConfig_group" + this.getContainerName()
+ ".conf";
-
+ log.debug("configuration file names " + affinityLinkFileName + "and " + affinityGroupFileName);
// Instantiate cluster synced variables
allocateCaches();
retrieveCaches();
@Override
public AffinityGroup getAffinityGroup(String groupName) {
+ log.debug("getAffinityGroup" + groupName);
return affinityGroupList.get(groupName);
}
<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>
<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>
+#!/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
-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>