Showing
10 changed files
with
148 additions
and
93 deletions
| 1 | +package org.onlab.onos.cluster; | ||
| 2 | + | ||
| 3 | +import org.onlab.onos.event.AbstractEvent; | ||
| 4 | + | ||
| 5 | +/** | ||
| 6 | + * Describes cluster-related event. | ||
| 7 | + */ | ||
| 8 | +public class ClusterEvent extends AbstractEvent<ClusterEvent.Type, ControllerInstance> { | ||
| 9 | + | ||
| 10 | + /** | ||
| 11 | + * Type of device events. | ||
| 12 | + */ | ||
| 13 | + public enum Type { | ||
| 14 | + /** | ||
| 15 | + * Signifies that a new cluster instance has been administratively added. | ||
| 16 | + */ | ||
| 17 | + INSTANCE_ADDED, | ||
| 18 | + | ||
| 19 | + /** | ||
| 20 | + * Signifies that a cluster instance has been administratively removed. | ||
| 21 | + */ | ||
| 22 | + INSTANCE_REMOVED, | ||
| 23 | + | ||
| 24 | + /** | ||
| 25 | + * Signifies that a cluster instance became active. | ||
| 26 | + */ | ||
| 27 | + INSTANCE_ACTIVE, | ||
| 28 | + | ||
| 29 | + /** | ||
| 30 | + * Signifies that a cluster instance became inactive. | ||
| 31 | + */ | ||
| 32 | + INSTANCE_INACTIVE | ||
| 33 | + } | ||
| 34 | + // TODO: do we need to fix the verv/adjective mix? discuss | ||
| 35 | + | ||
| 36 | + /** | ||
| 37 | + * Creates an event of a given type and for the specified instance and the | ||
| 38 | + * current time. | ||
| 39 | + * | ||
| 40 | + * @param type cluster event type | ||
| 41 | + * @param instance cluster device subject | ||
| 42 | + */ | ||
| 43 | + public ClusterEvent(Type type, ControllerInstance instance) { | ||
| 44 | + super(type, instance); | ||
| 45 | + } | ||
| 46 | + | ||
| 47 | + /** | ||
| 48 | + * Creates an event of a given type and for the specified device and time. | ||
| 49 | + * | ||
| 50 | + * @param type device event type | ||
| 51 | + * @param instance event device subject | ||
| 52 | + * @param time occurrence time | ||
| 53 | + */ | ||
| 54 | + public ClusterEvent(Type type, ControllerInstance instance, long time) { | ||
| 55 | + super(type, instance, time); | ||
| 56 | + } | ||
| 57 | + | ||
| 58 | +} |
| 1 | +package org.onlab.onos.cluster; | ||
| 2 | + | ||
| 3 | +import java.util.Set; | ||
| 4 | + | ||
| 5 | +/** | ||
| 6 | + * Service for obtaining information about the individual instances within | ||
| 7 | + * the controller cluster. | ||
| 8 | + */ | ||
| 9 | +public interface ClusterService { | ||
| 10 | + | ||
| 11 | + /** | ||
| 12 | + * Returns the set of current cluster members. | ||
| 13 | + * | ||
| 14 | + * @return set of cluster members | ||
| 15 | + */ | ||
| 16 | + Set<ControllerInstance> getInstances(); | ||
| 17 | + | ||
| 18 | + /** | ||
| 19 | + * Returns the availability state of the specified controller instance. | ||
| 20 | + * | ||
| 21 | + * @return availability state | ||
| 22 | + */ | ||
| 23 | + ControllerInstance.State getState(ControllerInstance instance); | ||
| 24 | + // TODO: determine if this would be better attached to ControllerInstance directly | ||
| 25 | + | ||
| 26 | + | ||
| 27 | + // addListener, removeListener | ||
| 28 | + | ||
| 29 | +} |
| 1 | +package org.onlab.onos.cluster; | ||
| 2 | + | ||
| 3 | +import org.onlab.packet.IpAddress; | ||
| 4 | + | ||
| 5 | +/** | ||
| 6 | + * Represents a controller instance as a member in a cluster. | ||
| 7 | + */ | ||
| 8 | +public interface ControllerInstance { | ||
| 9 | + | ||
| 10 | + /** Represents the operational state of the instance. */ | ||
| 11 | + public enum State { | ||
| 12 | + /** | ||
| 13 | + * Signifies that the instance is active and operating normally. | ||
| 14 | + */ | ||
| 15 | + ACTIVE, | ||
| 16 | + | ||
| 17 | + /** | ||
| 18 | + * Signifies that the instance is inactive, which means either down or | ||
| 19 | + * up, but not operational. | ||
| 20 | + */ | ||
| 21 | + INACTIVE | ||
| 22 | + } | ||
| 23 | + | ||
| 24 | + /** | ||
| 25 | + * Returns the instance identifier. | ||
| 26 | + * | ||
| 27 | + * @return instance identifier | ||
| 28 | + */ | ||
| 29 | + InstanceId id(); | ||
| 30 | + | ||
| 31 | + /** | ||
| 32 | + * Returns the IP address of the controller instance. | ||
| 33 | + * | ||
| 34 | + * @return IP address | ||
| 35 | + */ | ||
| 36 | + IpAddress ip(); | ||
| 37 | + | ||
| 38 | +} |
| ... | @@ -19,7 +19,7 @@ public class FlowRuleEvent extends AbstractEvent<FlowRuleEvent.Type, FlowRule> { | ... | @@ -19,7 +19,7 @@ public class FlowRuleEvent extends AbstractEvent<FlowRuleEvent.Type, FlowRule> { |
| 19 | /** | 19 | /** |
| 20 | * Signifies that a flow rule has been removed. | 20 | * Signifies that a flow rule has been removed. |
| 21 | */ | 21 | */ |
| 22 | - RULE_REMOVED, | 22 | + RULE_REMOVED |
| 23 | } | 23 | } |
| 24 | 24 | ||
| 25 | /** | 25 | /** | ... | ... |
| ... | @@ -23,6 +23,8 @@ public interface FlowRuleService { | ... | @@ -23,6 +23,8 @@ public interface FlowRuleService { |
| 23 | */ | 23 | */ |
| 24 | Iterable<FlowEntry> getFlowEntries(DeviceId deviceId); | 24 | Iterable<FlowEntry> getFlowEntries(DeviceId deviceId); |
| 25 | 25 | ||
| 26 | + // TODO: add createFlowRule factory method and execute operations method | ||
| 27 | + | ||
| 26 | /** | 28 | /** |
| 27 | * Applies the specified flow rules onto their respective devices. These | 29 | * Applies the specified flow rules onto their respective devices. These |
| 28 | * flow rules will be retained by the system and re-applied anytime the | 30 | * flow rules will be retained by the system and re-applied anytime the |
| ... | @@ -46,9 +48,6 @@ public interface FlowRuleService { | ... | @@ -46,9 +48,6 @@ public interface FlowRuleService { |
| 46 | void removeFlowRules(FlowRule... flowRules); | 48 | void removeFlowRules(FlowRule... flowRules); |
| 47 | 49 | ||
| 48 | 50 | ||
| 49 | - // void addInitialFlowContributor(InitialFlowContributor contributor); | ||
| 50 | - // void removeInitialFlowContributor(InitialFlowContributor contributor); | ||
| 51 | - | ||
| 52 | /** | 51 | /** |
| 53 | * Adds the specified flow rule listener. | 52 | * Adds the specified flow rule listener. |
| 54 | * | 53 | * | ... | ... |
| ... | @@ -7,7 +7,6 @@ | ... | @@ -7,7 +7,6 @@ |
| 7 | description="ONOS 3rd party dependencies"> | 7 | description="ONOS 3rd party dependencies"> |
| 8 | <bundle>mvn:commons-lang/commons-lang/2.6</bundle> | 8 | <bundle>mvn:commons-lang/commons-lang/2.6</bundle> |
| 9 | <bundle>mvn:com.google.guava/guava/18.0</bundle> | 9 | <bundle>mvn:com.google.guava/guava/18.0</bundle> |
| 10 | - | ||
| 11 | <bundle>mvn:io.netty/netty/3.9.2.Final</bundle> | 10 | <bundle>mvn:io.netty/netty/3.9.2.Final</bundle> |
| 12 | </feature> | 11 | </feature> |
| 13 | 12 | ||
| ... | @@ -63,7 +62,7 @@ | ... | @@ -63,7 +62,7 @@ |
| 63 | <feature name="onos-openflow" version="1.0.0" | 62 | <feature name="onos-openflow" version="1.0.0" |
| 64 | description="ONOS OpenFlow API, Controller & Providers"> | 63 | description="ONOS OpenFlow API, Controller & Providers"> |
| 65 | <feature>onos-api</feature> | 64 | <feature>onos-api</feature> |
| 66 | - | 65 | + <bundle>mvn:io.netty/netty/3.9.2.Final</bundle> |
| 67 | <bundle>mvn:org.onlab.onos/onos-of-api/1.0.0-SNAPSHOT</bundle> | 66 | <bundle>mvn:org.onlab.onos/onos-of-api/1.0.0-SNAPSHOT</bundle> |
| 68 | <bundle>mvn:org.onlab.onos/onos-of-ctl/1.0.0-SNAPSHOT</bundle> | 67 | <bundle>mvn:org.onlab.onos/onos-of-ctl/1.0.0-SNAPSHOT</bundle> |
| 69 | 68 | ||
| ... | @@ -77,8 +76,9 @@ | ... | @@ -77,8 +76,9 @@ |
| 77 | 76 | ||
| 78 | <feature name="onos-app-tvue" version="1.0.0" | 77 | <feature name="onos-app-tvue" version="1.0.0" |
| 79 | description="ONOS sample topology viewer application"> | 78 | description="ONOS sample topology viewer application"> |
| 80 | - <feature>onos-api</feature> | ||
| 81 | <feature>onos-thirdparty-web</feature> | 79 | <feature>onos-thirdparty-web</feature> |
| 80 | + <feature>onos-api</feature> | ||
| 81 | + <feature>onos-core</feature> | ||
| 82 | <bundle>mvn:org.onlab.onos/onos-app-tvue/1.0.0-SNAPSHOT</bundle> | 82 | <bundle>mvn:org.onlab.onos/onos-app-tvue/1.0.0-SNAPSHOT</bundle> |
| 83 | </feature> | 83 | </feature> |
| 84 | 84 | ... | ... |
| ... | @@ -15,107 +15,27 @@ | ... | @@ -15,107 +15,27 @@ |
| 15 | 15 | ||
| 16 | <description>ONOS OpenFlow controller subsystem API</description> | 16 | <description>ONOS OpenFlow controller subsystem API</description> |
| 17 | 17 | ||
| 18 | - <properties> | ||
| 19 | - <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> | ||
| 20 | - <powermock.version>1.5.5</powermock.version> | ||
| 21 | - <restlet.version>2.1.4</restlet.version> | ||
| 22 | - <cobertura-maven-plugin.version>2.6</cobertura-maven-plugin.version> | ||
| 23 | - <!-- Following 2 findbugs version needs to be updated in sync to match the | ||
| 24 | - findbugs version used in findbugs-plugin --> | ||
| 25 | - <findbugs.version>3.0.0</findbugs.version> | ||
| 26 | - <findbugs-plugin.version>3.0.0</findbugs-plugin.version> | ||
| 27 | - <findbugs.effort>Max</findbugs.effort> | ||
| 28 | - <findbugs.excludeFilterFile>${project.basedir}/conf/findbugs/exclude.xml | ||
| 29 | - </findbugs.excludeFilterFile> | ||
| 30 | - <checkstyle-plugin.version>2.12</checkstyle-plugin.version> | ||
| 31 | - <!-- To publish javadoc to github, | ||
| 32 | - uncomment com.github.github site-maven-plugin and | ||
| 33 | - see https://github.com/OPENNETWORKINGLAB/ONOS/pull/425 | ||
| 34 | - <github.global.server>github</github.global.server> | ||
| 35 | - --> | ||
| 36 | - <metrics.version>3.0.2</metrics.version> | ||
| 37 | - <maven.surefire.plugin.version>2.16</maven.surefire.plugin.version> | ||
| 38 | - </properties> | ||
| 39 | - | ||
| 40 | <dependencies> | 18 | <dependencies> |
| 41 | <dependency> | 19 | <dependency> |
| 42 | <groupId>org.onlab.onos</groupId> | 20 | <groupId>org.onlab.onos</groupId> |
| 43 | <artifactId>onos-of-api</artifactId> | 21 | <artifactId>onos-of-api</artifactId> |
| 44 | </dependency> | 22 | </dependency> |
| 45 | - <!-- ONOS's direct dependencies --> | ||
| 46 | - <dependency> | ||
| 47 | - <groupId>org.apache.felix</groupId> | ||
| 48 | - <artifactId>org.apache.felix.scr.annotations</artifactId> | ||
| 49 | - <version>1.9.6</version> | ||
| 50 | - </dependency> | ||
| 51 | - <dependency> | ||
| 52 | - <groupId>ch.qos.logback</groupId> | ||
| 53 | - <artifactId>logback-classic</artifactId> | ||
| 54 | - <version>1.1.2</version> | ||
| 55 | - </dependency> | ||
| 56 | - <dependency> | ||
| 57 | - <groupId>ch.qos.logback</groupId> | ||
| 58 | - <artifactId>logback-core</artifactId> | ||
| 59 | - <version>1.1.2</version> | ||
| 60 | - </dependency> | ||
| 61 | - <dependency> | ||
| 62 | - <groupId>org.slf4j</groupId> | ||
| 63 | - <artifactId>slf4j-api</artifactId> | ||
| 64 | - <version>1.7.5</version> | ||
| 65 | - </dependency> | ||
| 66 | - <dependency> | ||
| 67 | - <!-- findbugs suppression annotation and @GuardedBy, etc. --> | ||
| 68 | - <groupId>com.google.code.findbugs</groupId> | ||
| 69 | - <artifactId>annotations</artifactId> | ||
| 70 | - <version>${findbugs.version}</version> | ||
| 71 | - </dependency> | ||
| 72 | <dependency> | 23 | <dependency> |
| 73 | - <groupId>org.projectfloodlight</groupId> | ||
| 74 | - <artifactId>openflowj</artifactId> | ||
| 75 | - <version>0.3.8-SNAPSHOT</version> | ||
| 76 | - </dependency> | ||
| 77 | - <!-- Floodlight's dependencies --> | ||
| 78 | - <dependency> | ||
| 79 | - <!-- dependency to old version of netty? --> | ||
| 80 | <groupId>io.netty</groupId> | 24 | <groupId>io.netty</groupId> |
| 81 | <artifactId>netty</artifactId> | 25 | <artifactId>netty</artifactId> |
| 82 | - <version>3.9.2.Final</version> | ||
| 83 | - </dependency> | ||
| 84 | - <!-- Dependency for libraries used for testing --> | ||
| 85 | - <dependency> | ||
| 86 | - <groupId>junit</groupId> | ||
| 87 | - <artifactId>junit</artifactId> | ||
| 88 | - <version>4.11</version> | ||
| 89 | - <scope>test</scope> | ||
| 90 | - </dependency> | ||
| 91 | - <dependency> | ||
| 92 | - <groupId>org.easymock</groupId> | ||
| 93 | - <artifactId>easymock</artifactId> | ||
| 94 | - <version>3.2</version> | ||
| 95 | - <scope>test</scope> | ||
| 96 | </dependency> | 26 | </dependency> |
| 97 | <dependency> | 27 | <dependency> |
| 98 | - <groupId>org.powermock</groupId> | 28 | + <groupId>org.apache.felix</groupId> |
| 99 | - <artifactId>powermock-module-junit4</artifactId> | 29 | + <artifactId>org.apache.felix.scr.annotations</artifactId> |
| 100 | - <version>${powermock.version}</version> | ||
| 101 | - <scope>test</scope> | ||
| 102 | - </dependency> | ||
| 103 | - <dependency> | ||
| 104 | - <groupId>org.powermock</groupId> | ||
| 105 | - <artifactId>powermock-api-easymock</artifactId> | ||
| 106 | - <version>${powermock.version}</version> | ||
| 107 | - <scope>test</scope> | ||
| 108 | </dependency> | 30 | </dependency> |
| 109 | </dependencies> | 31 | </dependencies> |
| 110 | 32 | ||
| 111 | - | ||
| 112 | <build> | 33 | <build> |
| 113 | <plugins> | 34 | <plugins> |
| 114 | <plugin> | 35 | <plugin> |
| 115 | <groupId>org.apache.felix</groupId> | 36 | <groupId>org.apache.felix</groupId> |
| 116 | <artifactId>maven-scr-plugin</artifactId> | 37 | <artifactId>maven-scr-plugin</artifactId> |
| 117 | </plugin> | 38 | </plugin> |
| 118 | - | ||
| 119 | </plugins> | 39 | </plugins> |
| 120 | </build> | 40 | </build> |
| 121 | 41 | ... | ... |
| ... | @@ -26,8 +26,8 @@ rm -fr $ONOS_STAGE # Remove this when package script is completed | ... | @@ -26,8 +26,8 @@ rm -fr $ONOS_STAGE # Remove this when package script is completed |
| 26 | mkdir -p $ONOS_STAGE | 26 | mkdir -p $ONOS_STAGE |
| 27 | cd $ONOS_STAGE | 27 | cd $ONOS_STAGE |
| 28 | 28 | ||
| 29 | -# Unroll the Apache Karaf bits and make the ONOS top-level directories. | 29 | +# Unroll the Apache Karaf bits, prune them and make the ONOS top-level directories. |
| 30 | -unzip $KARAF_ZIP | 30 | +unzip $KARAF_ZIP && rm -rm $KARAF_DIST/demos |
| 31 | mkdir bin | 31 | mkdir bin |
| 32 | 32 | ||
| 33 | # Stage the ONOS admin scripts | 33 | # Stage the ONOS admin scripts |
| ... | @@ -43,11 +43,11 @@ perl -pi.old -e "s|^(featuresRepositories=.*)|\1,mvn:org.onlab.onos/onos-feature | ... | @@ -43,11 +43,11 @@ perl -pi.old -e "s|^(featuresRepositories=.*)|\1,mvn:org.onlab.onos/onos-feature |
| 43 | 43 | ||
| 44 | # Patch the Apache Karaf distribution file to load ONOS features | 44 | # Patch the Apache Karaf distribution file to load ONOS features |
| 45 | perl -pi.old -e 's|^(featuresBoot=.*)|\1,onos-api,onos-core,onos-cli,onos-rest,onos-gui,onos-openflow,onos-app-tvue|' \ | 45 | perl -pi.old -e 's|^(featuresBoot=.*)|\1,onos-api,onos-core,onos-cli,onos-rest,onos-gui,onos-openflow,onos-app-tvue|' \ |
| 46 | - /tmp/onos-1.0.0-SNAPSHOT/apache-karaf-3.0.1/etc/org.apache.karaf.features.cfg | 46 | + $ONOS_STAGE/$KARAF_DIST/etc/org.apache.karaf.features.cfg |
| 47 | 47 | ||
| 48 | # Patch the Apache Karaf distribution with ONOS branding bundle | 48 | # Patch the Apache Karaf distribution with ONOS branding bundle |
| 49 | cp $M2_REPO/org/onlab/onos/onos-branding/$ONOS_VERSION/onos-branding-*.jar \ | 49 | cp $M2_REPO/org/onlab/onos/onos-branding/$ONOS_VERSION/onos-branding-*.jar \ |
| 50 | - $ONOS_STAGE/apache-karaf-*/lib | 50 | + $ONOS_STAGE/$KARAF_DIST/lib |
| 51 | 51 | ||
| 52 | # Now package up the ONOS tar file | 52 | # Now package up the ONOS tar file |
| 53 | cd $ONOS_STAGE_ROOT | 53 | cd $ONOS_STAGE_ROOT | ... | ... |
-
Please register or login to post a comment