Committed by
Gerrit Code Review
Make OpenFlow port configurable via cfg command
Example: cfg set org.onosproject.openflow.controller.impl.OpenFlowControllerImpl openflowPort 6633 Change-Id: I2fa4b0db671003d0b357e63df619f1b0dec38e03
Showing
2 changed files
with
36 additions
and
9 deletions
... | @@ -55,6 +55,10 @@ | ... | @@ -55,6 +55,10 @@ |
55 | <groupId>org.apache.felix</groupId> | 55 | <groupId>org.apache.felix</groupId> |
56 | <artifactId>maven-scr-plugin</artifactId> | 56 | <artifactId>maven-scr-plugin</artifactId> |
57 | </plugin> | 57 | </plugin> |
58 | + <plugin> | ||
59 | + <groupId>org.onosproject</groupId> | ||
60 | + <artifactId>onos-maven-plugin</artifactId> | ||
61 | + </plugin> | ||
58 | </plugins> | 62 | </plugins> |
59 | </build> | 63 | </build> |
60 | 64 | ... | ... |
... | @@ -15,6 +15,7 @@ | ... | @@ -15,6 +15,7 @@ |
15 | */ | 15 | */ |
16 | package org.onosproject.openflow.controller.impl; | 16 | package org.onosproject.openflow.controller.impl; |
17 | 17 | ||
18 | +import com.google.common.base.Strings; | ||
18 | import com.google.common.collect.ArrayListMultimap; | 19 | import com.google.common.collect.ArrayListMultimap; |
19 | import com.google.common.collect.Lists; | 20 | import com.google.common.collect.Lists; |
20 | import com.google.common.collect.Multimap; | 21 | import com.google.common.collect.Multimap; |
... | @@ -22,9 +23,11 @@ import org.apache.felix.scr.annotations.Activate; | ... | @@ -22,9 +23,11 @@ import org.apache.felix.scr.annotations.Activate; |
22 | import org.apache.felix.scr.annotations.Component; | 23 | import org.apache.felix.scr.annotations.Component; |
23 | import org.apache.felix.scr.annotations.Deactivate; | 24 | import org.apache.felix.scr.annotations.Deactivate; |
24 | import org.apache.felix.scr.annotations.Modified; | 25 | import org.apache.felix.scr.annotations.Modified; |
26 | +import org.apache.felix.scr.annotations.Property; | ||
25 | import org.apache.felix.scr.annotations.Reference; | 27 | import org.apache.felix.scr.annotations.Reference; |
26 | import org.apache.felix.scr.annotations.ReferenceCardinality; | 28 | import org.apache.felix.scr.annotations.ReferenceCardinality; |
27 | import org.apache.felix.scr.annotations.Service; | 29 | import org.apache.felix.scr.annotations.Service; |
30 | +import org.onosproject.cfg.ComponentConfigService; | ||
28 | import org.onosproject.net.driver.DefaultDriverProviderService; | 31 | import org.onosproject.net.driver.DefaultDriverProviderService; |
29 | import org.onosproject.net.driver.DriverService; | 32 | import org.onosproject.net.driver.DriverService; |
30 | import org.onosproject.openflow.controller.DefaultOpenFlowPacketContext; | 33 | import org.onosproject.openflow.controller.DefaultOpenFlowPacketContext; |
... | @@ -77,11 +80,14 @@ import java.util.concurrent.Executors; | ... | @@ -77,11 +80,14 @@ import java.util.concurrent.Executors; |
77 | import java.util.concurrent.locks.Lock; | 80 | import java.util.concurrent.locks.Lock; |
78 | import java.util.concurrent.locks.ReentrantLock; | 81 | import java.util.concurrent.locks.ReentrantLock; |
79 | 82 | ||
83 | +import static org.onlab.util.Tools.get; | ||
80 | import static org.onlab.util.Tools.groupedThreads; | 84 | import static org.onlab.util.Tools.groupedThreads; |
81 | 85 | ||
82 | @Component(immediate = true) | 86 | @Component(immediate = true) |
83 | @Service | 87 | @Service |
84 | public class OpenFlowControllerImpl implements OpenFlowController { | 88 | public class OpenFlowControllerImpl implements OpenFlowController { |
89 | + private static final int DEFAULT_OFPORT = 6633; | ||
90 | + private static final int DEFAULT_WORKER_THREADS = 16; | ||
85 | 91 | ||
86 | private static final Logger log = | 92 | private static final Logger log = |
87 | LoggerFactory.getLogger(OpenFlowControllerImpl.class); | 93 | LoggerFactory.getLogger(OpenFlowControllerImpl.class); |
... | @@ -93,6 +99,17 @@ public class OpenFlowControllerImpl implements OpenFlowController { | ... | @@ -93,6 +99,17 @@ public class OpenFlowControllerImpl implements OpenFlowController { |
93 | @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) | 99 | @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) |
94 | protected DefaultDriverProviderService defaultDriverProviderService; | 100 | protected DefaultDriverProviderService defaultDriverProviderService; |
95 | 101 | ||
102 | + @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) | ||
103 | + protected ComponentConfigService cfgService; | ||
104 | + | ||
105 | + @Property(name = "openflowPort", intValue = DEFAULT_OFPORT, | ||
106 | + label = "Port number used by OpenFlow protocol; default is 6633") | ||
107 | + private int openflowPort = DEFAULT_OFPORT; | ||
108 | + | ||
109 | + @Property(name = "workerThreads", intValue = DEFAULT_WORKER_THREADS, | ||
110 | + label = "Number of controller worker threads; default is 16") | ||
111 | + private int workerThreads = DEFAULT_WORKER_THREADS; | ||
112 | + | ||
96 | private final ExecutorService executorMsgs = | 113 | private final ExecutorService executorMsgs = |
97 | Executors.newFixedThreadPool(32, groupedThreads("onos/of", "event-stats-%d")); | 114 | Executors.newFixedThreadPool(32, groupedThreads("onos/of", "event-stats-%d")); |
98 | 115 | ||
... | @@ -130,6 +147,7 @@ public class OpenFlowControllerImpl implements OpenFlowController { | ... | @@ -130,6 +147,7 @@ public class OpenFlowControllerImpl implements OpenFlowController { |
130 | 147 | ||
131 | @Activate | 148 | @Activate |
132 | public void activate(ComponentContext context) { | 149 | public void activate(ComponentContext context) { |
150 | + cfgService.registerProperties(getClass()); | ||
133 | Map<String, String> properties = readComponentConfiguration(context); | 151 | Map<String, String> properties = readComponentConfiguration(context); |
134 | ctrl.setConfigParams(properties); | 152 | ctrl.setConfigParams(properties); |
135 | ctrl.start(agent, driverService); | 153 | ctrl.start(agent, driverService); |
... | @@ -137,6 +155,7 @@ public class OpenFlowControllerImpl implements OpenFlowController { | ... | @@ -137,6 +155,7 @@ public class OpenFlowControllerImpl implements OpenFlowController { |
137 | 155 | ||
138 | @Deactivate | 156 | @Deactivate |
139 | public void deactivate() { | 157 | public void deactivate() { |
158 | + cfgService.unregisterProperties(getClass(), false); | ||
140 | ctrl.stop(); | 159 | ctrl.stop(); |
141 | } | 160 | } |
142 | 161 | ||
... | @@ -148,22 +167,26 @@ public class OpenFlowControllerImpl implements OpenFlowController { | ... | @@ -148,22 +167,26 @@ public class OpenFlowControllerImpl implements OpenFlowController { |
148 | private Map<String, String> readComponentConfiguration(ComponentContext context) { | 167 | private Map<String, String> readComponentConfiguration(ComponentContext context) { |
149 | Dictionary<?, ?> properties = context.getProperties(); | 168 | Dictionary<?, ?> properties = context.getProperties(); |
150 | Map<String, String> outProperties = new HashMap<>(); | 169 | Map<String, String> outProperties = new HashMap<>(); |
151 | - try { | 170 | + |
152 | - String strDpid = (String) properties.get("corsaDpid"); | 171 | + String port = get(properties, "openflowPort"); |
153 | - if (strDpid != null) { | 172 | + if (!Strings.isNullOrEmpty(port)) { |
154 | - outProperties.put("corsaDpid", strDpid); | 173 | + outProperties.put("openflowport", port); |
155 | } | 174 | } |
156 | - } catch (ClassCastException e) { | 175 | + |
157 | - return outProperties; | 176 | + String thread = get(properties, "workerThreads"); |
177 | + if (!Strings.isNullOrEmpty(thread)) { | ||
178 | + outProperties.put("workerthreads", thread); | ||
158 | } | 179 | } |
180 | + | ||
159 | return outProperties; | 181 | return outProperties; |
160 | } | 182 | } |
161 | 183 | ||
162 | @Modified | 184 | @Modified |
163 | public void modified(ComponentContext context) { | 185 | public void modified(ComponentContext context) { |
164 | - // Blank @Modified method to catch modifications to the context. | 186 | + Map<String, String> properties = readComponentConfiguration(context); |
165 | - // If no @Modified method exists, @Activate is called again | 187 | + ctrl.stop(); |
166 | - // when the context is modified. | 188 | + ctrl.setConfigParams(properties); |
189 | + ctrl.start(agent, driverService); | ||
167 | } | 190 | } |
168 | 191 | ||
169 | @Override | 192 | @Override | ... | ... |
-
Please register or login to post a comment