Adding configurability for registration of flow-based intent compilers.
Added configurability of the intent manager number of workers. Change-Id: Id5e221e077ef3246a7f274bad2e40166313899f5
Showing
8 changed files
with
211 additions
and
34 deletions
... | @@ -85,19 +85,23 @@ public class IntentManager | ... | @@ -85,19 +85,23 @@ public class IntentManager |
85 | public static final String INTENT_NULL = "Intent cannot be null"; | 85 | public static final String INTENT_NULL = "Intent cannot be null"; |
86 | public static final String INTENT_ID_NULL = "Intent key cannot be null"; | 86 | public static final String INTENT_ID_NULL = "Intent key cannot be null"; |
87 | 87 | ||
88 | - private static final int NUM_THREADS = 12; | ||
89 | - | ||
90 | private static final EnumSet<IntentState> RECOMPILE | 88 | private static final EnumSet<IntentState> RECOMPILE |
91 | = EnumSet.of(INSTALL_REQ, FAILED, WITHDRAW_REQ); | 89 | = EnumSet.of(INSTALL_REQ, FAILED, WITHDRAW_REQ); |
92 | private static final EnumSet<IntentState> WITHDRAW | 90 | private static final EnumSet<IntentState> WITHDRAW |
93 | = EnumSet.of(WITHDRAW_REQ, WITHDRAWING, WITHDRAWN); | 91 | = EnumSet.of(WITHDRAW_REQ, WITHDRAWING, WITHDRAWN); |
94 | - private static final boolean DEFAULT_SKIP_RELEASE_RESOURCES_ON_WITHDRAWAL = false; | ||
95 | 92 | ||
93 | + private static final boolean DEFAULT_SKIP_RELEASE_RESOURCES_ON_WITHDRAWAL = false; | ||
96 | @Property(name = "skipReleaseResourcesOnWithdrawal", | 94 | @Property(name = "skipReleaseResourcesOnWithdrawal", |
97 | boolValue = DEFAULT_SKIP_RELEASE_RESOURCES_ON_WITHDRAWAL, | 95 | boolValue = DEFAULT_SKIP_RELEASE_RESOURCES_ON_WITHDRAWAL, |
98 | label = "Indicates whether skipping resource releases on withdrawal is enabled or not") | 96 | label = "Indicates whether skipping resource releases on withdrawal is enabled or not") |
99 | private boolean skipReleaseResourcesOnWithdrawal = DEFAULT_SKIP_RELEASE_RESOURCES_ON_WITHDRAWAL; | 97 | private boolean skipReleaseResourcesOnWithdrawal = DEFAULT_SKIP_RELEASE_RESOURCES_ON_WITHDRAWAL; |
100 | 98 | ||
99 | + private static final int DEFAULT_NUM_THREADS = 12; | ||
100 | + @Property(name = "numThreads", | ||
101 | + intValue = DEFAULT_NUM_THREADS, | ||
102 | + label = "Number of worker threads") | ||
103 | + private int numThreads = DEFAULT_NUM_THREADS; | ||
104 | + | ||
101 | @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) | 105 | @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) |
102 | protected CoreService coreService; | 106 | protected CoreService coreService; |
103 | 107 | ||
... | @@ -119,7 +123,6 @@ public class IntentManager | ... | @@ -119,7 +123,6 @@ public class IntentManager |
119 | @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) | 123 | @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) |
120 | protected ComponentConfigService configService; | 124 | protected ComponentConfigService configService; |
121 | 125 | ||
122 | - | ||
123 | private ExecutorService batchExecutor; | 126 | private ExecutorService batchExecutor; |
124 | private ExecutorService workerExecutor; | 127 | private ExecutorService workerExecutor; |
125 | 128 | ||
... | @@ -147,7 +150,7 @@ public class IntentManager | ... | @@ -147,7 +150,7 @@ public class IntentManager |
147 | trackerService.setDelegate(topoDelegate); | 150 | trackerService.setDelegate(topoDelegate); |
148 | eventDispatcher.addSink(IntentEvent.class, listenerRegistry); | 151 | eventDispatcher.addSink(IntentEvent.class, listenerRegistry); |
149 | batchExecutor = newSingleThreadExecutor(groupedThreads("onos/intent", "batch")); | 152 | batchExecutor = newSingleThreadExecutor(groupedThreads("onos/intent", "batch")); |
150 | - workerExecutor = newFixedThreadPool(NUM_THREADS, groupedThreads("onos/intent", "worker-%d")); | 153 | + workerExecutor = newFixedThreadPool(numThreads, groupedThreads("onos/intent", "worker-%d")); |
151 | idGenerator = coreService.getIdGenerator("intent-ids"); | 154 | idGenerator = coreService.getIdGenerator("intent-ids"); |
152 | Intent.bindIdGenerator(idGenerator); | 155 | Intent.bindIdGenerator(idGenerator); |
153 | log.info("Started"); | 156 | log.info("Started"); |
... | @@ -183,11 +186,25 @@ public class IntentManager | ... | @@ -183,11 +186,25 @@ public class IntentManager |
183 | if (skipReleaseResourcesOnWithdrawal && !newTestEnabled) { | 186 | if (skipReleaseResourcesOnWithdrawal && !newTestEnabled) { |
184 | store.unsetDelegate(testOnlyDelegate); | 187 | store.unsetDelegate(testOnlyDelegate); |
185 | store.setDelegate(delegate); | 188 | store.setDelegate(delegate); |
186 | - logConfig("Reconfigured"); | 189 | + skipReleaseResourcesOnWithdrawal = false; |
190 | + logConfig("Reconfigured skip release resources on withdrawal"); | ||
187 | } else if (!skipReleaseResourcesOnWithdrawal && newTestEnabled) { | 191 | } else if (!skipReleaseResourcesOnWithdrawal && newTestEnabled) { |
188 | store.unsetDelegate(delegate); | 192 | store.unsetDelegate(delegate); |
189 | store.setDelegate(testOnlyDelegate); | 193 | store.setDelegate(testOnlyDelegate); |
190 | - logConfig("Reconfigured"); | 194 | + skipReleaseResourcesOnWithdrawal = true; |
195 | + logConfig("Reconfigured skip release resources on withdrawal"); | ||
196 | + } | ||
197 | + | ||
198 | + s = Tools.get(context.getProperties(), "numThreads"); | ||
199 | + int newNumThreads = isNullOrEmpty(s) ? numThreads : Integer.parseInt(s); | ||
200 | + if (newNumThreads != numThreads) { | ||
201 | + numThreads = newNumThreads; | ||
202 | + ExecutorService oldWorkerExecutor = workerExecutor; | ||
203 | + workerExecutor = newFixedThreadPool(numThreads, groupedThreads("onos/intent", "worker-%d")); | ||
204 | + if (oldWorkerExecutor != null) { | ||
205 | + oldWorkerExecutor.shutdown(); | ||
206 | + } | ||
207 | + logConfig("Reconfigured number of worker threads"); | ||
191 | } | 208 | } |
192 | } | 209 | } |
193 | 210 | ||
... | @@ -281,7 +298,6 @@ public class IntentManager | ... | @@ -281,7 +298,6 @@ public class IntentManager |
281 | @Override | 298 | @Override |
282 | public Iterable<Intent> getPending() { | 299 | public Iterable<Intent> getPending() { |
283 | checkPermission(INTENT_READ); | 300 | checkPermission(INTENT_READ); |
284 | - | ||
285 | return store.getPending(); | 301 | return store.getPending(); |
286 | } | 302 | } |
287 | 303 | ... | ... |
core/net/src/main/java/org/onosproject/net/intent/impl/compiler/IntentConfigurableRegistrator.java
0 → 100644
1 | +/* | ||
2 | + * Copyright 2016 Open Networking Laboratory | ||
3 | + * | ||
4 | + * Licensed under the Apache License, Version 2.0 (the "License"); | ||
5 | + * you may not use this file except in compliance with the License. | ||
6 | + * You may obtain a copy of the License at | ||
7 | + * | ||
8 | + * http://www.apache.org/licenses/LICENSE-2.0 | ||
9 | + * | ||
10 | + * Unless required by applicable law or agreed to in writing, software | ||
11 | + * distributed under the License is distributed on an "AS IS" BASIS, | ||
12 | + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
13 | + * See the License for the specific language governing permissions and | ||
14 | + * limitations under the License. | ||
15 | + */ | ||
16 | + | ||
17 | +package org.onosproject.net.intent.impl.compiler; | ||
18 | + | ||
19 | +import com.google.common.collect.Maps; | ||
20 | +import org.apache.felix.scr.annotations.Activate; | ||
21 | +import org.apache.felix.scr.annotations.Component; | ||
22 | +import org.apache.felix.scr.annotations.Deactivate; | ||
23 | +import org.apache.felix.scr.annotations.Modified; | ||
24 | +import org.apache.felix.scr.annotations.Property; | ||
25 | +import org.apache.felix.scr.annotations.Reference; | ||
26 | +import org.apache.felix.scr.annotations.ReferenceCardinality; | ||
27 | +import org.apache.felix.scr.annotations.Service; | ||
28 | +import org.onlab.util.Tools; | ||
29 | +import org.onosproject.cfg.ComponentConfigService; | ||
30 | +import org.onosproject.net.intent.Intent; | ||
31 | +import org.onosproject.net.intent.IntentCompiler; | ||
32 | +import org.onosproject.net.intent.IntentExtensionService; | ||
33 | +import org.osgi.service.component.ComponentContext; | ||
34 | +import org.slf4j.Logger; | ||
35 | + | ||
36 | +import java.util.Map; | ||
37 | + | ||
38 | +import static com.google.common.base.Strings.isNullOrEmpty; | ||
39 | +import static org.slf4j.LoggerFactory.getLogger; | ||
40 | + | ||
41 | +/** | ||
42 | + * Auxiliary utility to register either flow-rule compilers or flow-objective | ||
43 | + * compilers. | ||
44 | + */ | ||
45 | +@Component | ||
46 | +@Service(value = IntentConfigurableRegistrator.class) | ||
47 | +public class IntentConfigurableRegistrator { | ||
48 | + | ||
49 | + private final Logger log = getLogger(getClass()); | ||
50 | + | ||
51 | + @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) | ||
52 | + protected IntentExtensionService extensionService; | ||
53 | + | ||
54 | + @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) | ||
55 | + protected ComponentConfigService cfgService; | ||
56 | + | ||
57 | + private static final boolean DEFAULT_FLOW_OBJECTIVES = false; | ||
58 | + @Property(name = "useFlowObjectives", | ||
59 | + boolValue = DEFAULT_FLOW_OBJECTIVES, | ||
60 | + label = "Indicates whether to use flow objective-based compilers") | ||
61 | + private boolean useFlowObjectives = DEFAULT_FLOW_OBJECTIVES; | ||
62 | + | ||
63 | + private final Map<Class<Intent>, IntentCompiler<Intent>> flowRuleBased = Maps.newConcurrentMap(); | ||
64 | + private final Map<Class<Intent>, IntentCompiler<Intent>> flowObjectiveBased = Maps.newConcurrentMap(); | ||
65 | + | ||
66 | + @Activate | ||
67 | + public void activate() { | ||
68 | + cfgService.registerProperties(getClass()); | ||
69 | + log.info("Started"); | ||
70 | + } | ||
71 | + | ||
72 | + @Deactivate | ||
73 | + public void deactivate() { | ||
74 | + cfgService.unregisterProperties(getClass(), false); | ||
75 | + log.info("Stopped"); | ||
76 | + } | ||
77 | + | ||
78 | + @Modified | ||
79 | + public void modified(ComponentContext context) { | ||
80 | + if (context == null) { | ||
81 | + log.info("Default config"); | ||
82 | + return; | ||
83 | + } | ||
84 | + | ||
85 | + boolean newFlowObjectives; | ||
86 | + try { | ||
87 | + String s = Tools.get(context.getProperties(), "useFlowObjectives"); | ||
88 | + newFlowObjectives = isNullOrEmpty(s) ? useFlowObjectives : Boolean.parseBoolean(s.trim()); | ||
89 | + } catch (ClassCastException e) { | ||
90 | + newFlowObjectives = useFlowObjectives; | ||
91 | + } | ||
92 | + | ||
93 | + if (useFlowObjectives != newFlowObjectives) { | ||
94 | + useFlowObjectives = newFlowObjectives; | ||
95 | + changeCompilers(); | ||
96 | + log.info("Reconfigured use of flow objectives"); | ||
97 | + } | ||
98 | + } | ||
99 | + | ||
100 | + /** | ||
101 | + * Registers the specified compiler for the given intent class. | ||
102 | + * | ||
103 | + * @param cls intent class | ||
104 | + * @param compiler intent compiler | ||
105 | + * @param flowBased true if the compiler is flow based | ||
106 | + * @param <T> the type of intent | ||
107 | + */ | ||
108 | + @SuppressWarnings("unchecked") | ||
109 | + <T extends Intent> void registerCompiler(Class<T> cls, IntentCompiler<T> compiler, | ||
110 | + boolean flowBased) { | ||
111 | + if (flowBased) { | ||
112 | + flowObjectiveBased.put((Class<Intent>) cls, (IntentCompiler<Intent>) compiler); | ||
113 | + } else { | ||
114 | + flowRuleBased.put((Class<Intent>) cls, (IntentCompiler<Intent>) compiler); | ||
115 | + } | ||
116 | + if (flowBased == useFlowObjectives) { | ||
117 | + extensionService.registerCompiler(cls, compiler); | ||
118 | + } | ||
119 | + } | ||
120 | + | ||
121 | + /** | ||
122 | + * Unregisters the compiler for the specified intent class. | ||
123 | + * | ||
124 | + * @param cls intent class | ||
125 | + * @param flowBased true if the compiler is flow based | ||
126 | + * @param <T> the type of intent | ||
127 | + */ | ||
128 | + @SuppressWarnings("unchecked") | ||
129 | + <T extends Intent> void unregisterCompiler(Class<T> cls, boolean flowBased) { | ||
130 | + if (flowBased) { | ||
131 | + flowObjectiveBased.remove(cls); | ||
132 | + } else { | ||
133 | + flowRuleBased.remove(cls); | ||
134 | + } | ||
135 | + if (flowBased == useFlowObjectives) { | ||
136 | + extensionService.unregisterCompiler(cls); | ||
137 | + } | ||
138 | + } | ||
139 | + | ||
140 | + private void changeCompilers() { | ||
141 | + if (useFlowObjectives) { | ||
142 | + flowRuleBased.forEach((cls, compiler) -> extensionService.unregisterCompiler(cls)); | ||
143 | + flowObjectiveBased.forEach((cls, compiler) -> extensionService.registerCompiler(cls, compiler)); | ||
144 | + } else { | ||
145 | + flowObjectiveBased.forEach((cls, compiler) -> extensionService.unregisterCompiler(cls)); | ||
146 | + flowRuleBased.forEach((cls, compiler) -> extensionService.registerCompiler(cls, compiler)); | ||
147 | + } | ||
148 | + } | ||
149 | + | ||
150 | +} |
... | @@ -37,7 +37,6 @@ import org.onosproject.net.flow.TrafficTreatment; | ... | @@ -37,7 +37,6 @@ import org.onosproject.net.flow.TrafficTreatment; |
37 | import org.onosproject.net.intent.FlowRuleIntent; | 37 | import org.onosproject.net.intent.FlowRuleIntent; |
38 | import org.onosproject.net.intent.Intent; | 38 | import org.onosproject.net.intent.Intent; |
39 | import org.onosproject.net.intent.IntentCompiler; | 39 | import org.onosproject.net.intent.IntentCompiler; |
40 | -import org.onosproject.net.intent.IntentExtensionService; | ||
41 | import org.onosproject.net.intent.LinkCollectionIntent; | 40 | import org.onosproject.net.intent.LinkCollectionIntent; |
42 | import org.onosproject.net.resource.link.LinkResourceAllocations; | 41 | import org.onosproject.net.resource.link.LinkResourceAllocations; |
43 | 42 | ||
... | @@ -51,7 +50,7 @@ import java.util.stream.Collectors; | ... | @@ -51,7 +50,7 @@ import java.util.stream.Collectors; |
51 | public class LinkCollectionIntentCompiler implements IntentCompiler<LinkCollectionIntent> { | 50 | public class LinkCollectionIntentCompiler implements IntentCompiler<LinkCollectionIntent> { |
52 | 51 | ||
53 | @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) | 52 | @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) |
54 | - protected IntentExtensionService intentManager; | 53 | + protected IntentConfigurableRegistrator registrator; |
55 | 54 | ||
56 | @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) | 55 | @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) |
57 | protected CoreService coreService; | 56 | protected CoreService coreService; |
... | @@ -61,12 +60,12 @@ public class LinkCollectionIntentCompiler implements IntentCompiler<LinkCollecti | ... | @@ -61,12 +60,12 @@ public class LinkCollectionIntentCompiler implements IntentCompiler<LinkCollecti |
61 | @Activate | 60 | @Activate |
62 | public void activate() { | 61 | public void activate() { |
63 | appId = coreService.registerApplication("org.onosproject.net.intent"); | 62 | appId = coreService.registerApplication("org.onosproject.net.intent"); |
64 | - intentManager.registerCompiler(LinkCollectionIntent.class, this); | 63 | + registrator.registerCompiler(LinkCollectionIntent.class, this, false); |
65 | } | 64 | } |
66 | 65 | ||
67 | @Deactivate | 66 | @Deactivate |
68 | public void deactivate() { | 67 | public void deactivate() { |
69 | - intentManager.unregisterCompiler(LinkCollectionIntent.class); | 68 | + registrator.unregisterCompiler(LinkCollectionIntent.class, false); |
70 | } | 69 | } |
71 | 70 | ||
72 | @Override | 71 | @Override | ... | ... |
... | @@ -15,12 +15,8 @@ | ... | @@ -15,12 +15,8 @@ |
15 | */ | 15 | */ |
16 | package org.onosproject.net.intent.impl.compiler; | 16 | package org.onosproject.net.intent.impl.compiler; |
17 | 17 | ||
18 | -import java.util.ArrayList; | 18 | +import com.google.common.collect.HashMultimap; |
19 | -import java.util.Collections; | 19 | +import com.google.common.collect.SetMultimap; |
20 | -import java.util.List; | ||
21 | -import java.util.Set; | ||
22 | -import java.util.stream.Collectors; | ||
23 | - | ||
24 | import org.apache.felix.scr.annotations.Activate; | 20 | import org.apache.felix.scr.annotations.Activate; |
25 | import org.apache.felix.scr.annotations.Component; | 21 | import org.apache.felix.scr.annotations.Component; |
26 | import org.apache.felix.scr.annotations.Deactivate; | 22 | import org.apache.felix.scr.annotations.Deactivate; |
... | @@ -42,12 +38,14 @@ import org.onosproject.net.flowobjective.Objective; | ... | @@ -42,12 +38,14 @@ import org.onosproject.net.flowobjective.Objective; |
42 | import org.onosproject.net.intent.FlowObjectiveIntent; | 38 | import org.onosproject.net.intent.FlowObjectiveIntent; |
43 | import org.onosproject.net.intent.Intent; | 39 | import org.onosproject.net.intent.Intent; |
44 | import org.onosproject.net.intent.IntentCompiler; | 40 | import org.onosproject.net.intent.IntentCompiler; |
45 | -import org.onosproject.net.intent.IntentExtensionService; | ||
46 | import org.onosproject.net.intent.LinkCollectionIntent; | 41 | import org.onosproject.net.intent.LinkCollectionIntent; |
47 | import org.onosproject.net.resource.link.LinkResourceAllocations; | 42 | import org.onosproject.net.resource.link.LinkResourceAllocations; |
48 | 43 | ||
49 | -import com.google.common.collect.HashMultimap; | 44 | +import java.util.ArrayList; |
50 | -import com.google.common.collect.SetMultimap; | 45 | +import java.util.Collections; |
46 | +import java.util.List; | ||
47 | +import java.util.Set; | ||
48 | +import java.util.stream.Collectors; | ||
51 | 49 | ||
52 | /** | 50 | /** |
53 | * Compiler to produce flow objectives from link collections. | 51 | * Compiler to produce flow objectives from link collections. |
... | @@ -56,7 +54,7 @@ import com.google.common.collect.SetMultimap; | ... | @@ -56,7 +54,7 @@ import com.google.common.collect.SetMultimap; |
56 | public class LinkCollectionIntentFlowObjectivesCompiler implements IntentCompiler<LinkCollectionIntent> { | 54 | public class LinkCollectionIntentFlowObjectivesCompiler implements IntentCompiler<LinkCollectionIntent> { |
57 | 55 | ||
58 | @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) | 56 | @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) |
59 | - protected IntentExtensionService intentManager; | 57 | + protected IntentConfigurableRegistrator registrator; |
60 | 58 | ||
61 | @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) | 59 | @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) |
62 | protected CoreService coreService; | 60 | protected CoreService coreService; |
... | @@ -66,12 +64,12 @@ public class LinkCollectionIntentFlowObjectivesCompiler implements IntentCompile | ... | @@ -66,12 +64,12 @@ public class LinkCollectionIntentFlowObjectivesCompiler implements IntentCompile |
66 | @Activate | 64 | @Activate |
67 | public void activate() { | 65 | public void activate() { |
68 | appId = coreService.registerApplication("org.onosproject.net.intent"); | 66 | appId = coreService.registerApplication("org.onosproject.net.intent"); |
69 | - //intentManager.registerCompiler(LinkCollectionIntent.class, this); | 67 | + registrator.registerCompiler(LinkCollectionIntent.class, this, true); |
70 | } | 68 | } |
71 | 69 | ||
72 | @Deactivate | 70 | @Deactivate |
73 | public void deactivate() { | 71 | public void deactivate() { |
74 | - //intentManager.unregisterCompiler(LinkCollectionIntent.class); | 72 | + registrator.unregisterCompiler(LinkCollectionIntent.class, true); |
75 | } | 73 | } |
76 | 74 | ||
77 | @Override | 75 | @Override | ... | ... |
... | @@ -37,7 +37,6 @@ import org.onosproject.net.flow.TrafficTreatment; | ... | @@ -37,7 +37,6 @@ import org.onosproject.net.flow.TrafficTreatment; |
37 | import org.onosproject.net.intent.FlowRuleIntent; | 37 | import org.onosproject.net.intent.FlowRuleIntent; |
38 | import org.onosproject.net.intent.Intent; | 38 | import org.onosproject.net.intent.Intent; |
39 | import org.onosproject.net.intent.IntentCompiler; | 39 | import org.onosproject.net.intent.IntentCompiler; |
40 | -import org.onosproject.net.intent.IntentExtensionService; | ||
41 | import org.onosproject.net.intent.PathIntent; | 40 | import org.onosproject.net.intent.PathIntent; |
42 | import org.onosproject.net.newresource.ResourceService; | 41 | import org.onosproject.net.newresource.ResourceService; |
43 | import org.onosproject.net.resource.link.LinkResourceAllocations; | 42 | import org.onosproject.net.resource.link.LinkResourceAllocations; |
... | @@ -59,7 +58,7 @@ public class PathIntentCompiler | ... | @@ -59,7 +58,7 @@ public class PathIntentCompiler |
59 | protected CoreService coreService; | 58 | protected CoreService coreService; |
60 | 59 | ||
61 | @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) | 60 | @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) |
62 | - protected IntentExtensionService intentManager; | 61 | + protected IntentConfigurableRegistrator registrator; |
63 | 62 | ||
64 | @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) | 63 | @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) |
65 | protected ResourceService resourceService; | 64 | protected ResourceService resourceService; |
... | @@ -69,12 +68,12 @@ public class PathIntentCompiler | ... | @@ -69,12 +68,12 @@ public class PathIntentCompiler |
69 | @Activate | 68 | @Activate |
70 | public void activate() { | 69 | public void activate() { |
71 | appId = coreService.registerApplication("org.onosproject.net.intent"); | 70 | appId = coreService.registerApplication("org.onosproject.net.intent"); |
72 | - intentManager.registerCompiler(PathIntent.class, this); | 71 | + registrator.registerCompiler(PathIntent.class, this, false); |
73 | } | 72 | } |
74 | 73 | ||
75 | @Deactivate | 74 | @Deactivate |
76 | public void deactivate() { | 75 | public void deactivate() { |
77 | - intentManager.unregisterCompiler(PathIntent.class); | 76 | + registrator.unregisterCompiler(PathIntent.class, false); |
78 | } | 77 | } |
79 | 78 | ||
80 | @Override | 79 | @Override | ... | ... |
core/net/src/main/java/org/onosproject/net/intent/impl/compiler/PathIntentFlowObjectiveCompiler.java
... | @@ -38,7 +38,6 @@ import org.onosproject.net.flowobjective.Objective; | ... | @@ -38,7 +38,6 @@ import org.onosproject.net.flowobjective.Objective; |
38 | import org.onosproject.net.intent.FlowObjectiveIntent; | 38 | import org.onosproject.net.intent.FlowObjectiveIntent; |
39 | import org.onosproject.net.intent.Intent; | 39 | import org.onosproject.net.intent.Intent; |
40 | import org.onosproject.net.intent.IntentCompiler; | 40 | import org.onosproject.net.intent.IntentCompiler; |
41 | -import org.onosproject.net.intent.IntentExtensionService; | ||
42 | import org.onosproject.net.intent.PathIntent; | 41 | import org.onosproject.net.intent.PathIntent; |
43 | import org.onosproject.net.newresource.ResourceService; | 42 | import org.onosproject.net.newresource.ResourceService; |
44 | import org.onosproject.net.resource.link.LinkResourceAllocations; | 43 | import org.onosproject.net.resource.link.LinkResourceAllocations; |
... | @@ -60,7 +59,7 @@ public class PathIntentFlowObjectiveCompiler | ... | @@ -60,7 +59,7 @@ public class PathIntentFlowObjectiveCompiler |
60 | protected CoreService coreService; | 59 | protected CoreService coreService; |
61 | 60 | ||
62 | @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) | 61 | @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) |
63 | - protected IntentExtensionService intentManager; | 62 | + protected IntentConfigurableRegistrator registrator; |
64 | 63 | ||
65 | @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) | 64 | @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) |
66 | protected ResourceService resourceService; | 65 | protected ResourceService resourceService; |
... | @@ -70,12 +69,12 @@ public class PathIntentFlowObjectiveCompiler | ... | @@ -70,12 +69,12 @@ public class PathIntentFlowObjectiveCompiler |
70 | @Activate | 69 | @Activate |
71 | public void activate() { | 70 | public void activate() { |
72 | appId = coreService.registerApplication("org.onosproject.net.intent"); | 71 | appId = coreService.registerApplication("org.onosproject.net.intent"); |
73 | - //intentManager.registerCompiler(PathIntent.class, this); | 72 | + registrator.registerCompiler(PathIntent.class, this, true); |
74 | } | 73 | } |
75 | 74 | ||
76 | @Deactivate | 75 | @Deactivate |
77 | public void deactivate() { | 76 | public void deactivate() { |
78 | - //intentManager.unregisterCompiler(PathIntent.class); | 77 | + registrator.unregisterCompiler(PathIntent.class, true); |
79 | } | 78 | } |
80 | 79 | ||
81 | @Override | 80 | @Override | ... | ... |
... | @@ -20,6 +20,7 @@ import org.junit.After; | ... | @@ -20,6 +20,7 @@ import org.junit.After; |
20 | import org.junit.Before; | 20 | import org.junit.Before; |
21 | import org.junit.Test; | 21 | import org.junit.Test; |
22 | import org.onosproject.TestApplicationId; | 22 | import org.onosproject.TestApplicationId; |
23 | +import org.onosproject.cfg.ComponentConfigAdapter; | ||
23 | import org.onosproject.core.ApplicationId; | 24 | import org.onosproject.core.ApplicationId; |
24 | import org.onosproject.core.CoreService; | 25 | import org.onosproject.core.CoreService; |
25 | import org.onosproject.core.IdGenerator; | 26 | import org.onosproject.core.IdGenerator; |
... | @@ -74,6 +75,7 @@ public class LinkCollectionIntentCompilerTest { | ... | @@ -74,6 +75,7 @@ public class LinkCollectionIntentCompilerTest { |
74 | 75 | ||
75 | private CoreService coreService; | 76 | private CoreService coreService; |
76 | private IntentExtensionService intentExtensionService; | 77 | private IntentExtensionService intentExtensionService; |
78 | + private IntentConfigurableRegistrator registrator; | ||
77 | private IdGenerator idGenerator = new MockIdGenerator(); | 79 | private IdGenerator idGenerator = new MockIdGenerator(); |
78 | 80 | ||
79 | private LinkCollectionIntent intent; | 81 | private LinkCollectionIntent intent; |
... | @@ -101,7 +103,13 @@ public class LinkCollectionIntentCompilerTest { | ... | @@ -101,7 +103,13 @@ public class LinkCollectionIntentCompilerTest { |
101 | intentExtensionService = createMock(IntentExtensionService.class); | 103 | intentExtensionService = createMock(IntentExtensionService.class); |
102 | intentExtensionService.registerCompiler(LinkCollectionIntent.class, sut); | 104 | intentExtensionService.registerCompiler(LinkCollectionIntent.class, sut); |
103 | intentExtensionService.unregisterCompiler(LinkCollectionIntent.class); | 105 | intentExtensionService.unregisterCompiler(LinkCollectionIntent.class); |
104 | - sut.intentManager = intentExtensionService; | 106 | + |
107 | + registrator = new IntentConfigurableRegistrator(); | ||
108 | + registrator.extensionService = intentExtensionService; | ||
109 | + registrator.cfgService = new ComponentConfigAdapter(); | ||
110 | + registrator.activate(); | ||
111 | + | ||
112 | + sut.registrator = registrator; | ||
105 | 113 | ||
106 | replay(coreService, intentExtensionService); | 114 | replay(coreService, intentExtensionService); |
107 | } | 115 | } | ... | ... |
... | @@ -21,6 +21,7 @@ import org.junit.Before; | ... | @@ -21,6 +21,7 @@ import org.junit.Before; |
21 | import org.junit.Test; | 21 | import org.junit.Test; |
22 | import org.onlab.packet.VlanId; | 22 | import org.onlab.packet.VlanId; |
23 | import org.onosproject.TestApplicationId; | 23 | import org.onosproject.TestApplicationId; |
24 | +import org.onosproject.cfg.ComponentConfigAdapter; | ||
24 | import org.onosproject.core.ApplicationId; | 25 | import org.onosproject.core.ApplicationId; |
25 | import org.onosproject.core.CoreService; | 26 | import org.onosproject.core.CoreService; |
26 | import org.onosproject.core.IdGenerator; | 27 | import org.onosproject.core.IdGenerator; |
... | @@ -67,6 +68,7 @@ public class PathIntentCompilerTest { | ... | @@ -67,6 +68,7 @@ public class PathIntentCompilerTest { |
67 | 68 | ||
68 | private CoreService coreService; | 69 | private CoreService coreService; |
69 | private IntentExtensionService intentExtensionService; | 70 | private IntentExtensionService intentExtensionService; |
71 | + private IntentConfigurableRegistrator registrator; | ||
70 | private IdGenerator idGenerator = new MockIdGenerator(); | 72 | private IdGenerator idGenerator = new MockIdGenerator(); |
71 | private PathIntentCompiler sut; | 73 | private PathIntentCompiler sut; |
72 | 74 | ||
... | @@ -142,7 +144,13 @@ public class PathIntentCompilerTest { | ... | @@ -142,7 +144,13 @@ public class PathIntentCompilerTest { |
142 | intentExtensionService = createMock(IntentExtensionService.class); | 144 | intentExtensionService = createMock(IntentExtensionService.class); |
143 | intentExtensionService.registerCompiler(PathIntent.class, sut); | 145 | intentExtensionService.registerCompiler(PathIntent.class, sut); |
144 | intentExtensionService.unregisterCompiler(PathIntent.class); | 146 | intentExtensionService.unregisterCompiler(PathIntent.class); |
145 | - sut.intentManager = intentExtensionService; | 147 | + |
148 | + registrator = new IntentConfigurableRegistrator(); | ||
149 | + registrator.extensionService = intentExtensionService; | ||
150 | + registrator.cfgService = new ComponentConfigAdapter(); | ||
151 | + registrator.activate(); | ||
152 | + | ||
153 | + sut.registrator = registrator; | ||
146 | 154 | ||
147 | replay(coreService, intentExtensionService); | 155 | replay(coreService, intentExtensionService); |
148 | } | 156 | } | ... | ... |
-
Please register or login to post a comment