Committed by
Gerrit Code Review
[ONOS-4176] Extract Retriver config into a separate config service
Change-Id: I06a2fa69814bda061b7e481f765d53fd84f8871c
Showing
3 changed files
with
27 additions
and
84 deletions
... | @@ -24,8 +24,6 @@ import org.apache.commons.lang.StringUtils; | ... | @@ -24,8 +24,6 @@ import org.apache.commons.lang.StringUtils; |
24 | import org.apache.felix.scr.annotations.Activate; | 24 | import org.apache.felix.scr.annotations.Activate; |
25 | import org.apache.felix.scr.annotations.Component; | 25 | import org.apache.felix.scr.annotations.Component; |
26 | import org.apache.felix.scr.annotations.Deactivate; | 26 | import org.apache.felix.scr.annotations.Deactivate; |
27 | -import org.apache.felix.scr.annotations.Modified; | ||
28 | -import org.apache.felix.scr.annotations.Property; | ||
29 | import org.apache.felix.scr.annotations.Reference; | 27 | import org.apache.felix.scr.annotations.Reference; |
30 | import org.apache.felix.scr.annotations.ReferenceCardinality; | 28 | import org.apache.felix.scr.annotations.ReferenceCardinality; |
31 | import org.apache.felix.scr.annotations.Service; | 29 | import org.apache.felix.scr.annotations.Service; |
... | @@ -33,14 +31,10 @@ import org.influxdb.InfluxDB; | ... | @@ -33,14 +31,10 @@ import org.influxdb.InfluxDB; |
33 | import org.influxdb.InfluxDBFactory; | 31 | import org.influxdb.InfluxDBFactory; |
34 | import org.influxdb.dto.Query; | 32 | import org.influxdb.dto.Query; |
35 | import org.influxdb.dto.QueryResult; | 33 | import org.influxdb.dto.QueryResult; |
36 | -import org.onlab.util.Tools; | ||
37 | -import org.onosproject.cfg.ComponentConfigService; | ||
38 | import org.onosproject.cluster.NodeId; | 34 | import org.onosproject.cluster.NodeId; |
39 | import org.onosproject.core.CoreService; | 35 | import org.onosproject.core.CoreService; |
40 | -import org.osgi.service.component.ComponentContext; | ||
41 | import org.slf4j.Logger; | 36 | import org.slf4j.Logger; |
42 | 37 | ||
43 | -import java.util.Dictionary; | ||
44 | import java.util.List; | 38 | import java.util.List; |
45 | import java.util.Map; | 39 | import java.util.Map; |
46 | import java.util.Set; | 40 | import java.util.Set; |
... | @@ -58,11 +52,6 @@ public class DefaultInfluxDbMetricsRetriever implements InfluxDbMetricsRetriever | ... | @@ -58,11 +52,6 @@ public class DefaultInfluxDbMetricsRetriever implements InfluxDbMetricsRetriever |
58 | private final Logger log = getLogger(getClass()); | 52 | private final Logger log = getLogger(getClass()); |
59 | 53 | ||
60 | private static final String DEFAULT_PROTOCOL = "http"; | 54 | private static final String DEFAULT_PROTOCOL = "http"; |
61 | - private static final String DEFAULT_ADDRESS = "localhost"; | ||
62 | - private static final int DEFAULT_PORT = 8086; | ||
63 | - private static final String DEFAULT_DATABASE = "onos"; | ||
64 | - private static final String DEFAULT_USERNAME = "onos"; | ||
65 | - private static final String DEFAULT_PASSWORD = "onos.password"; | ||
66 | private static final String DEFAULT_POLICY = "default"; | 55 | private static final String DEFAULT_POLICY = "default"; |
67 | private static final String COLON_SEPARATOR = ":"; | 56 | private static final String COLON_SEPARATOR = ":"; |
68 | private static final String SLASH_SEPARATOR = "//"; | 57 | private static final String SLASH_SEPARATOR = "//"; |
... | @@ -86,58 +75,24 @@ public class DefaultInfluxDbMetricsRetriever implements InfluxDbMetricsRetriever | ... | @@ -86,58 +75,24 @@ public class DefaultInfluxDbMetricsRetriever implements InfluxDbMetricsRetriever |
86 | @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) | 75 | @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) |
87 | protected CoreService coreService; | 76 | protected CoreService coreService; |
88 | 77 | ||
89 | - @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) | 78 | + protected String database; |
90 | - protected ComponentConfigService cfgService; | ||
91 | - | ||
92 | - @Property(name = "address", value = DEFAULT_ADDRESS, | ||
93 | - label = "IP address of influxDB server; " + | ||
94 | - "default is localhost") | ||
95 | - protected String address = DEFAULT_ADDRESS; | ||
96 | - | ||
97 | - @Property(name = "port", intValue = DEFAULT_PORT, | ||
98 | - label = "Port number of influxDB server; " + | ||
99 | - "default is 8086") | ||
100 | - protected int port = DEFAULT_PORT; | ||
101 | - | ||
102 | - @Property(name = "database", value = DEFAULT_DATABASE, | ||
103 | - label = "Database name of influxDB server; " + | ||
104 | - "default is onos") | ||
105 | - protected String database = DEFAULT_DATABASE; | ||
106 | - | ||
107 | - @Property(name = "username", value = DEFAULT_USERNAME, | ||
108 | - label = "Username of influxDB server; default is onos") | ||
109 | - protected String username = DEFAULT_USERNAME; | ||
110 | - | ||
111 | - @Property(name = "password", value = DEFAULT_PASSWORD, | ||
112 | - label = "Password of influxDB server; default is onos.password") | ||
113 | - protected String password = DEFAULT_PASSWORD; | ||
114 | 79 | ||
115 | InfluxDB influxDB; | 80 | InfluxDB influxDB; |
116 | 81 | ||
117 | @Activate | 82 | @Activate |
118 | public void activate() { | 83 | public void activate() { |
119 | - cfgService.registerProperties(getClass()); | ||
120 | coreService.registerApplication("org.onosproject.influxdbmetrics"); | 84 | coreService.registerApplication("org.onosproject.influxdbmetrics"); |
121 | 85 | ||
122 | - config(); | ||
123 | - | ||
124 | log.info("Started"); | 86 | log.info("Started"); |
125 | } | 87 | } |
126 | 88 | ||
127 | @Deactivate | 89 | @Deactivate |
128 | public void deactivate() { | 90 | public void deactivate() { |
129 | - cfgService.unregisterProperties(getClass(), false); | ||
130 | - | ||
131 | log.info("Stopped"); | 91 | log.info("Stopped"); |
132 | } | 92 | } |
133 | 93 | ||
134 | - @Modified | 94 | + @Override |
135 | - public void modified(ComponentContext context) { | 95 | + public void config(String address, int port, String database, String username, String password) { |
136 | - readComponentConfiguration(context); | ||
137 | - config(); | ||
138 | - } | ||
139 | - | ||
140 | - private void config() { | ||
141 | StringBuilder url = new StringBuilder(); | 96 | StringBuilder url = new StringBuilder(); |
142 | url.append(DEFAULT_PROTOCOL); | 97 | url.append(DEFAULT_PROTOCOL); |
143 | url.append(COLON_SEPARATOR + SLASH_SEPARATOR); | 98 | url.append(COLON_SEPARATOR + SLASH_SEPARATOR); |
... | @@ -145,7 +100,8 @@ public class DefaultInfluxDbMetricsRetriever implements InfluxDbMetricsRetriever | ... | @@ -145,7 +100,8 @@ public class DefaultInfluxDbMetricsRetriever implements InfluxDbMetricsRetriever |
145 | url.append(COLON_SEPARATOR); | 100 | url.append(COLON_SEPARATOR); |
146 | url.append(port); | 101 | url.append(port); |
147 | 102 | ||
148 | - influxDB = InfluxDBFactory.connect(url.toString(), username, password); | 103 | + this.influxDB = InfluxDBFactory.connect(url.toString(), username, password); |
104 | + this.database = database; | ||
149 | } | 105 | } |
150 | 106 | ||
151 | @Override | 107 | @Override |
... | @@ -427,38 +383,4 @@ public class DefaultInfluxDbMetricsRetriever implements InfluxDbMetricsRetriever | ... | @@ -427,38 +383,4 @@ public class DefaultInfluxDbMetricsRetriever implements InfluxDbMetricsRetriever |
427 | return null; | 383 | return null; |
428 | } | 384 | } |
429 | } | 385 | } |
430 | - | ||
431 | - /** | ||
432 | - * Extracts properties from the component configuration context. | ||
433 | - * | ||
434 | - * @param context the component context | ||
435 | - */ | ||
436 | - private void readComponentConfiguration(ComponentContext context) { | ||
437 | - Dictionary<?, ?> properties = context.getProperties(); | ||
438 | - | ||
439 | - String addressStr = Tools.get(properties, "address"); | ||
440 | - address = addressStr != null ? addressStr : DEFAULT_ADDRESS; | ||
441 | - log.info("Configured. InfluxDB server address is {}", address); | ||
442 | - | ||
443 | - String databaseStr = Tools.get(properties, "database"); | ||
444 | - database = databaseStr != null ? databaseStr : DEFAULT_DATABASE; | ||
445 | - log.info("Configured. InfluxDB server database is {}", database); | ||
446 | - | ||
447 | - String usernameStr = Tools.get(properties, "username"); | ||
448 | - username = usernameStr != null ? usernameStr : DEFAULT_USERNAME; | ||
449 | - log.info("Configured. InfluxDB server username is {}", username); | ||
450 | - | ||
451 | - String passwordStr = Tools.get(properties, "password"); | ||
452 | - password = passwordStr != null ? passwordStr : DEFAULT_PASSWORD; | ||
453 | - log.info("Configured. InfluxDB server password is {}", password); | ||
454 | - | ||
455 | - Integer portConfigured = Tools.getIntegerProperty(properties, "port"); | ||
456 | - if (portConfigured == null) { | ||
457 | - port = DEFAULT_PORT; | ||
458 | - log.info("InfluxDB port is not configured, default value is {}", port); | ||
459 | - } else { | ||
460 | - port = portConfigured; | ||
461 | - log.info("Configured. InfluxDB port is configured to {}", port); | ||
462 | - } | ||
463 | - } | ||
464 | } | 386 | } | ... | ... |
... | @@ -43,7 +43,6 @@ public class InfluxDbMetricsConfig { | ... | @@ -43,7 +43,6 @@ public class InfluxDbMetricsConfig { |
43 | 43 | ||
44 | private static final String DEFAULT_ADDRESS = "localhost"; | 44 | private static final String DEFAULT_ADDRESS = "localhost"; |
45 | private static final int DEFAULT_PORT = 8086; | 45 | private static final int DEFAULT_PORT = 8086; |
46 | - | ||
47 | private static final String DEFAULT_DATABASE = "onos"; | 46 | private static final String DEFAULT_DATABASE = "onos"; |
48 | private static final String DEFAULT_USERNAME = "onos"; | 47 | private static final String DEFAULT_USERNAME = "onos"; |
49 | private static final String DEFAULT_PASSWORD = "onos.password"; | 48 | private static final String DEFAULT_PASSWORD = "onos.password"; |
... | @@ -55,6 +54,9 @@ public class InfluxDbMetricsConfig { | ... | @@ -55,6 +54,9 @@ public class InfluxDbMetricsConfig { |
55 | protected InfluxDbMetricsReporter influxDbMetricsReporter; | 54 | protected InfluxDbMetricsReporter influxDbMetricsReporter; |
56 | 55 | ||
57 | @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) | 56 | @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) |
57 | + protected InfluxDbMetricsRetriever influxDbMetricsRetriever; | ||
58 | + | ||
59 | + @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) | ||
58 | protected ComponentConfigService cfgService; | 60 | protected ComponentConfigService cfgService; |
59 | 61 | ||
60 | @Property(name = "address", value = DEFAULT_ADDRESS, | 62 | @Property(name = "address", value = DEFAULT_ADDRESS, |
... | @@ -86,6 +88,8 @@ public class InfluxDbMetricsConfig { | ... | @@ -86,6 +88,8 @@ public class InfluxDbMetricsConfig { |
86 | configReporter(influxDbMetricsReporter); | 88 | configReporter(influxDbMetricsReporter); |
87 | influxDbMetricsReporter.startReport(); | 89 | influxDbMetricsReporter.startReport(); |
88 | 90 | ||
91 | + configRetriever(influxDbMetricsRetriever); | ||
92 | + | ||
89 | log.info("Started"); | 93 | log.info("Started"); |
90 | } | 94 | } |
91 | 95 | ||
... | @@ -103,12 +107,18 @@ public class InfluxDbMetricsConfig { | ... | @@ -103,12 +107,18 @@ public class InfluxDbMetricsConfig { |
103 | 107 | ||
104 | configReporter(influxDbMetricsReporter); | 108 | configReporter(influxDbMetricsReporter); |
105 | influxDbMetricsReporter.restartReport(); | 109 | influxDbMetricsReporter.restartReport(); |
110 | + | ||
111 | + configRetriever(influxDbMetricsRetriever); | ||
106 | } | 112 | } |
107 | 113 | ||
108 | private void configReporter(InfluxDbMetricsReporter reporter) { | 114 | private void configReporter(InfluxDbMetricsReporter reporter) { |
109 | reporter.config(address, port, database, username, password); | 115 | reporter.config(address, port, database, username, password); |
110 | } | 116 | } |
111 | 117 | ||
118 | + private void configRetriever(InfluxDbMetricsRetriever retriever) { | ||
119 | + retriever.config(address, port, database, username, password); | ||
120 | + } | ||
121 | + | ||
112 | /** | 122 | /** |
113 | * Extracts properties from the component configuration context. | 123 | * Extracts properties from the component configuration context. |
114 | * | 124 | * | ... | ... |
... | @@ -97,4 +97,15 @@ public interface InfluxDbMetricsRetriever { | ... | @@ -97,4 +97,15 @@ public interface InfluxDbMetricsRetriever { |
97 | * @return metric value of a node | 97 | * @return metric value of a node |
98 | */ | 98 | */ |
99 | List<InfluxMetric> metric(NodeId nodeId, String metricName, int period, TimeUnit unit); | 99 | List<InfluxMetric> metric(NodeId nodeId, String metricName, int period, TimeUnit unit); |
100 | + | ||
101 | + /** | ||
102 | + * Configures default parameters for influx database metrics retriever. | ||
103 | + * | ||
104 | + * @param address IP address of influxDB server | ||
105 | + * @param port Port number of influxDB server | ||
106 | + * @param database Database name of influxDB server | ||
107 | + * @param username Username of influxDB server | ||
108 | + * @param password Password of influxDB server | ||
109 | + */ | ||
110 | + void config(String address, int port, String database, String username, String password); | ||
100 | } | 111 | } | ... | ... |
-
Please register or login to post a comment