blob: 0cef175fe66dd76d3dfe8bb95a9a558fd1aba483 [file] [log] [blame]
Sean Condon0e89bda2017-03-21 14:23:19 +00001/*
2 * Copyright 2017-present Open Networking Foundation
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 */
16package org.onosproject.cfm;
17
Ray Milkeyd84f89b2018-08-17 14:54:17 -070018import org.osgi.service.component.annotations.Activate;
19import org.osgi.service.component.annotations.Component;
20import org.osgi.service.component.annotations.Deactivate;
21import org.osgi.service.component.annotations.Reference;
22import org.osgi.service.component.annotations.ReferenceCardinality;
Sean Condon0e89bda2017-03-21 14:23:19 +000023import org.onlab.packet.VlanId;
24import org.onosproject.cfm.web.ComponentCodec;
25import org.onosproject.cfm.web.FngAddressCodec;
26import org.onosproject.cfm.web.MaintenanceAssociationCodec;
27import org.onosproject.cfm.web.MaintenanceDomainCodec;
28import org.onosproject.cfm.web.MepCodec;
29import org.onosproject.cfm.web.MepEntryCodec;
30import org.onosproject.cfm.web.MepLbCreateCodec;
31import org.onosproject.cfm.web.MepLbEntryCodec;
32import org.onosproject.cfm.web.MepLtCreateCodec;
33import org.onosproject.cfm.web.RemoteMepEntryCodec;
34import org.onosproject.cfm.web.VidCodec;
35import org.onosproject.codec.CodecService;
36import org.onosproject.incubator.net.l2monitoring.cfm.MaintenanceAssociation;
37import org.onosproject.incubator.net.l2monitoring.cfm.MaintenanceDomain;
38import org.onosproject.incubator.net.l2monitoring.cfm.Mep;
39import org.onosproject.incubator.net.l2monitoring.cfm.Mep.FngAddress;
40import org.onosproject.incubator.net.l2monitoring.cfm.MepEntry;
41import org.onosproject.incubator.net.l2monitoring.cfm.MepLbCreate;
42import org.onosproject.incubator.net.l2monitoring.cfm.MepLbEntry;
43import org.onosproject.incubator.net.l2monitoring.cfm.MepLtCreate;
44import org.onosproject.incubator.net.l2monitoring.cfm.RemoteMepEntry;
45import org.onosproject.incubator.net.l2monitoring.soam.StartTime;
46import org.onosproject.incubator.net.l2monitoring.soam.StopTime;
47import org.onosproject.incubator.net.l2monitoring.soam.delay.DelayMeasurementCreate;
48import org.onosproject.incubator.net.l2monitoring.soam.delay.DelayMeasurementCreate.MeasurementOption;
49import org.onosproject.incubator.net.l2monitoring.soam.delay.DelayMeasurementEntry;
50import org.onosproject.incubator.net.l2monitoring.soam.delay.DelayMeasurementStat;
51import org.onosproject.incubator.net.l2monitoring.soam.delay.DelayMeasurementStatCurrent;
52import org.onosproject.incubator.net.l2monitoring.soam.delay.DelayMeasurementStatHistory;
53import org.onosproject.incubator.net.l2monitoring.soam.loss.LossAvailabilityStat;
54import org.onosproject.incubator.net.l2monitoring.soam.loss.LossAvailabilityStatCurrent;
55import org.onosproject.incubator.net.l2monitoring.soam.loss.LossAvailabilityStatHistory;
56import org.onosproject.incubator.net.l2monitoring.soam.loss.LossMeasurementCreate;
57import org.onosproject.incubator.net.l2monitoring.soam.loss.LossMeasurementCreate.CounterOption;
58import org.onosproject.incubator.net.l2monitoring.soam.loss.LossMeasurementEntry;
59import org.onosproject.incubator.net.l2monitoring.soam.loss.LossMeasurementStat;
60import org.onosproject.incubator.net.l2monitoring.soam.loss.LossMeasurementStatCurrent;
61import org.onosproject.incubator.net.l2monitoring.soam.loss.LossMeasurementStatHistory;
62import org.onosproject.incubator.net.l2monitoring.soam.loss.LossMeasurementThreshold;
63import org.onosproject.soam.web.DelayMeasurementStatCodec;
64import org.onosproject.soam.web.DelayMeasurementStatCurrentCodec;
65import org.onosproject.soam.web.DelayMeasurementStatHistoryCodec;
66import org.onosproject.soam.web.DmCreateCodec;
67import org.onosproject.soam.web.DmEntryCodec;
68import org.onosproject.soam.web.DmMeasurementOptionCodec;
69import org.onosproject.soam.web.LmCounterOptionCodec;
70import org.onosproject.soam.web.LmCreateCodec;
71import org.onosproject.soam.web.LmEntryCodec;
72import org.onosproject.soam.web.LmThresholdOptionCodec;
73import org.onosproject.soam.web.LossAvailabilityStatCodec;
74import org.onosproject.soam.web.LossAvailabilityStatCurrentCodec;
75import org.onosproject.soam.web.LossAvailabilityStatHistoryCodec;
76import org.onosproject.soam.web.LossMeasurementStatCodec;
77import org.onosproject.soam.web.LossMeasurementStatCurrentCodec;
78import org.onosproject.soam.web.LossMeasurementStatHistoryCodec;
79import org.onosproject.soam.web.LossMeasurementThresholdCodec;
80import org.onosproject.soam.web.StartTimeCodec;
81import org.onosproject.soam.web.StopTimeCodec;
82import org.slf4j.Logger;
83import org.slf4j.LoggerFactory;
84
Sean Condon0e89bda2017-03-21 14:23:19 +000085/**
86 * Enables the CFM REST Web Service component at /onos/cfm.
87 * Each codec for the rest interfaces should be registered here.
88 */
89@Component(immediate = true)
90public class CfmWebComponent {
91 private final Logger log = LoggerFactory.getLogger(getClass());
92
Ray Milkeyd84f89b2018-08-17 14:54:17 -070093 @Reference(cardinality = ReferenceCardinality.MANDATORY)
Sean Condon0e89bda2017-03-21 14:23:19 +000094 protected CodecService codecService;
95
Sean Condon3a1efef2018-02-24 13:16:03 +000096 /**
97 * On activation of this component register these codecs with the codec service.
98 */
Sean Condon0e89bda2017-03-21 14:23:19 +000099 @Activate
100 public void activate() {
101 codecService.registerCodec(MaintenanceDomain.class,
102 new MaintenanceDomainCodec());
103 codecService.registerCodec(MaintenanceAssociation.class,
104 new MaintenanceAssociationCodec());
105 codecService.registerCodec(org.onosproject.incubator.net.l2monitoring.cfm.Component.class,
106 new ComponentCodec());
107 codecService.registerCodec(VlanId.class, new VidCodec());
108 codecService.registerCodec(Mep.class, new MepCodec());
109 codecService.registerCodec(MepEntry.class, new MepEntryCodec());
110 codecService.registerCodec(MepLbCreate.class, new MepLbCreateCodec());
111 codecService.registerCodec(MepLbEntry.class, new MepLbEntryCodec());
112 codecService.registerCodec(MepLtCreate.class, new MepLtCreateCodec());
113 codecService.registerCodec(RemoteMepEntry.class, new RemoteMepEntryCodec());
114 codecService.registerCodec(FngAddress.class, new FngAddressCodec());
115
116
117 codecService.registerCodec(DelayMeasurementCreate.class,
118 new DmCreateCodec());
119 codecService.registerCodec(DelayMeasurementEntry.class,
120 new DmEntryCodec());
121 codecService.registerCodec(DelayMeasurementStat.class,
122 new DelayMeasurementStatCodec());
123 codecService.registerCodec(DelayMeasurementStatCurrent.class,
124 new DelayMeasurementStatCurrentCodec());
125 codecService.registerCodec(DelayMeasurementStatHistory.class,
126 new DelayMeasurementStatHistoryCodec());
127 codecService.registerCodec(MeasurementOption.class,
128 new DmMeasurementOptionCodec());
129
130 codecService.registerCodec(LossMeasurementCreate.class,
131 new LmCreateCodec());
132 codecService.registerCodec(LossMeasurementThreshold.class,
133 new LossMeasurementThresholdCodec());
134 codecService.registerCodec(LossMeasurementEntry.class,
135 new LmEntryCodec());
136 codecService.registerCodec(LossMeasurementStat.class,
137 new LossMeasurementStatCodec());
138 codecService.registerCodec(LossMeasurementStatCurrent.class,
139 new LossMeasurementStatCurrentCodec());
140 codecService.registerCodec(LossMeasurementStatHistory.class,
141 new LossMeasurementStatHistoryCodec());
142 codecService.registerCodec(LossAvailabilityStat.class,
143 new LossAvailabilityStatCodec());
144 codecService.registerCodec(LossAvailabilityStatCurrent.class,
145 new LossAvailabilityStatCurrentCodec());
146 codecService.registerCodec(LossAvailabilityStatHistory.class,
147 new LossAvailabilityStatHistoryCodec());
148 codecService.registerCodec(CounterOption.class,
149 new LmCounterOptionCodec());
Sean Condon3a1efef2018-02-24 13:16:03 +0000150 codecService.registerCodec(LossMeasurementThreshold.ThresholdOption.class,
Sean Condon0e89bda2017-03-21 14:23:19 +0000151 new LmThresholdOptionCodec());
152
153 codecService.registerCodec(StartTime.class, new StartTimeCodec());
154 codecService.registerCodec(StopTime.class, new StopTimeCodec());
155
156 log.info("CFM Web Component Started");
157 }
158
Sean Condon3a1efef2018-02-24 13:16:03 +0000159 /**
160 * On deactivation of this component unregister these codecs from the codec service.
161 */
Sean Condon0e89bda2017-03-21 14:23:19 +0000162 @Deactivate
163 public void deactivate() {
164 log.info("CFM Web Component Stopped");
165 codecService.unregisterCodec(MaintenanceDomain.class);
166 codecService.unregisterCodec(MaintenanceAssociation.class);
167 codecService.unregisterCodec(org.onosproject.incubator.net.l2monitoring.cfm.Component.class);
168 codecService.unregisterCodec(VlanId.class);
169 codecService.unregisterCodec(Mep.class);
170 codecService.unregisterCodec(MepEntry.class);
171 codecService.unregisterCodec(MepLbCreate.class);
172 codecService.unregisterCodec(MepLbEntry.class);
173 codecService.unregisterCodec(MepLtCreate.class);
174 codecService.unregisterCodec(RemoteMepEntry.class);
175 codecService.unregisterCodec(FngAddress.class);
176
177 codecService.unregisterCodec(DelayMeasurementCreate.class);
178 codecService.unregisterCodec(DelayMeasurementEntry.class);
179 codecService.unregisterCodec(DelayMeasurementStat.class);
180 codecService.unregisterCodec(DelayMeasurementStatCurrent.class);
181 codecService.unregisterCodec(DelayMeasurementStatHistory.class);
182 codecService.unregisterCodec(MeasurementOption.class);
183 codecService.unregisterCodec(StartTime.class);
184 codecService.unregisterCodec(StopTime.class);
185
186 codecService.unregisterCodec(LossMeasurementCreate.class);
187 codecService.unregisterCodec(LossMeasurementThreshold.class);
188 codecService.unregisterCodec(LossMeasurementEntry.class);
189 codecService.unregisterCodec(LossMeasurementStat.class);
190 codecService.unregisterCodec(LossMeasurementStatCurrent.class);
191 codecService.unregisterCodec(LossMeasurementStatHistory.class);
192 codecService.unregisterCodec(LossAvailabilityStat.class);
193 codecService.unregisterCodec(LossAvailabilityStatCurrent.class);
194 codecService.unregisterCodec(LossAvailabilityStatHistory.class);
195 codecService.unregisterCodec(CounterOption.class);
Sean Condon3a1efef2018-02-24 13:16:03 +0000196 codecService.unregisterCodec(LossMeasurementThreshold.ThresholdOption.class);
Sean Condon0e89bda2017-03-21 14:23:19 +0000197
198 }
199}