blob: 6ead9856214708a08ce3c1ff5ac195df0c1bac89 [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
18import org.apache.felix.scr.annotations.Activate;
19import org.apache.felix.scr.annotations.Component;
20import org.apache.felix.scr.annotations.Deactivate;
21import org.apache.felix.scr.annotations.Reference;
22import org.apache.felix.scr.annotations.ReferenceCardinality;
23import 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
85import static org.onosproject.incubator.net.l2monitoring.soam.loss.LossMeasurementThreshold.*;
86
87/**
88 * Enables the CFM REST Web Service component at /onos/cfm.
89 * Each codec for the rest interfaces should be registered here.
90 */
91@Component(immediate = true)
92public class CfmWebComponent {
93 private final Logger log = LoggerFactory.getLogger(getClass());
94
95 @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
96 protected CodecService codecService;
97
98 @Activate
99 public void activate() {
100 codecService.registerCodec(MaintenanceDomain.class,
101 new MaintenanceDomainCodec());
102 codecService.registerCodec(MaintenanceAssociation.class,
103 new MaintenanceAssociationCodec());
104 codecService.registerCodec(org.onosproject.incubator.net.l2monitoring.cfm.Component.class,
105 new ComponentCodec());
106 codecService.registerCodec(VlanId.class, new VidCodec());
107 codecService.registerCodec(Mep.class, new MepCodec());
108 codecService.registerCodec(MepEntry.class, new MepEntryCodec());
109 codecService.registerCodec(MepLbCreate.class, new MepLbCreateCodec());
110 codecService.registerCodec(MepLbEntry.class, new MepLbEntryCodec());
111 codecService.registerCodec(MepLtCreate.class, new MepLtCreateCodec());
112 codecService.registerCodec(RemoteMepEntry.class, new RemoteMepEntryCodec());
113 codecService.registerCodec(FngAddress.class, new FngAddressCodec());
114
115
116 codecService.registerCodec(DelayMeasurementCreate.class,
117 new DmCreateCodec());
118 codecService.registerCodec(DelayMeasurementEntry.class,
119 new DmEntryCodec());
120 codecService.registerCodec(DelayMeasurementStat.class,
121 new DelayMeasurementStatCodec());
122 codecService.registerCodec(DelayMeasurementStatCurrent.class,
123 new DelayMeasurementStatCurrentCodec());
124 codecService.registerCodec(DelayMeasurementStatHistory.class,
125 new DelayMeasurementStatHistoryCodec());
126 codecService.registerCodec(MeasurementOption.class,
127 new DmMeasurementOptionCodec());
128
129 codecService.registerCodec(LossMeasurementCreate.class,
130 new LmCreateCodec());
131 codecService.registerCodec(LossMeasurementThreshold.class,
132 new LossMeasurementThresholdCodec());
133 codecService.registerCodec(LossMeasurementEntry.class,
134 new LmEntryCodec());
135 codecService.registerCodec(LossMeasurementStat.class,
136 new LossMeasurementStatCodec());
137 codecService.registerCodec(LossMeasurementStatCurrent.class,
138 new LossMeasurementStatCurrentCodec());
139 codecService.registerCodec(LossMeasurementStatHistory.class,
140 new LossMeasurementStatHistoryCodec());
141 codecService.registerCodec(LossAvailabilityStat.class,
142 new LossAvailabilityStatCodec());
143 codecService.registerCodec(LossAvailabilityStatCurrent.class,
144 new LossAvailabilityStatCurrentCodec());
145 codecService.registerCodec(LossAvailabilityStatHistory.class,
146 new LossAvailabilityStatHistoryCodec());
147 codecService.registerCodec(CounterOption.class,
148 new LmCounterOptionCodec());
149 codecService.registerCodec(ThresholdOption.class,
150 new LmThresholdOptionCodec());
151
152 codecService.registerCodec(StartTime.class, new StartTimeCodec());
153 codecService.registerCodec(StopTime.class, new StopTimeCodec());
154
155 log.info("CFM Web Component Started");
156 }
157
158 @Deactivate
159 public void deactivate() {
160 log.info("CFM Web Component Stopped");
161 codecService.unregisterCodec(MaintenanceDomain.class);
162 codecService.unregisterCodec(MaintenanceAssociation.class);
163 codecService.unregisterCodec(org.onosproject.incubator.net.l2monitoring.cfm.Component.class);
164 codecService.unregisterCodec(VlanId.class);
165 codecService.unregisterCodec(Mep.class);
166 codecService.unregisterCodec(MepEntry.class);
167 codecService.unregisterCodec(MepLbCreate.class);
168 codecService.unregisterCodec(MepLbEntry.class);
169 codecService.unregisterCodec(MepLtCreate.class);
170 codecService.unregisterCodec(RemoteMepEntry.class);
171 codecService.unregisterCodec(FngAddress.class);
172
173 codecService.unregisterCodec(DelayMeasurementCreate.class);
174 codecService.unregisterCodec(DelayMeasurementEntry.class);
175 codecService.unregisterCodec(DelayMeasurementStat.class);
176 codecService.unregisterCodec(DelayMeasurementStatCurrent.class);
177 codecService.unregisterCodec(DelayMeasurementStatHistory.class);
178 codecService.unregisterCodec(MeasurementOption.class);
179 codecService.unregisterCodec(StartTime.class);
180 codecService.unregisterCodec(StopTime.class);
181
182 codecService.unregisterCodec(LossMeasurementCreate.class);
183 codecService.unregisterCodec(LossMeasurementThreshold.class);
184 codecService.unregisterCodec(LossMeasurementEntry.class);
185 codecService.unregisterCodec(LossMeasurementStat.class);
186 codecService.unregisterCodec(LossMeasurementStatCurrent.class);
187 codecService.unregisterCodec(LossMeasurementStatHistory.class);
188 codecService.unregisterCodec(LossAvailabilityStat.class);
189 codecService.unregisterCodec(LossAvailabilityStatCurrent.class);
190 codecService.unregisterCodec(LossAvailabilityStatHistory.class);
191 codecService.unregisterCodec(CounterOption.class);
192 codecService.unregisterCodec(ThresholdOption.class);
193
194 }
195}