blob: af6edf9a3ddc00b6e398509b1f94148cf0302808 [file] [log] [blame]
/*
* Copyright 2016-present Open Networking Foundation
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.onosproject.drivers.optical;
import static org.onosproject.net.config.basics.SubjectFactories.CONNECT_POINT_SUBJECT_FACTORY;
import static org.onosproject.net.config.basics.SubjectFactories.DEVICE_SUBJECT_FACTORY;
import java.util.List;
import org.apache.felix.scr.annotations.Activate;
import org.apache.felix.scr.annotations.Component;
import org.apache.felix.scr.annotations.Deactivate;
import org.apache.felix.scr.annotations.Reference;
import org.apache.felix.scr.annotations.ReferenceCardinality;
import org.onosproject.driver.optical.config.FlowTableConfig;
import org.onosproject.driver.optical.config.LambdaConfig;
import org.onosproject.net.ConnectPoint;
import org.onosproject.net.DeviceId;
import org.onosproject.net.config.ConfigFactory;
import org.onosproject.net.config.NetworkConfigRegistry;
import org.onosproject.net.config.NetworkConfigRegistryAdapter;
import org.onosproject.net.driver.AbstractDriverLoader;
import org.onosproject.net.optical.OpticalDevice;
import org.onosproject.ui.UiGlyph;
import org.onosproject.ui.UiGlyphFactory;
import org.onosproject.ui.UiExtensionService;
import com.google.common.collect.ImmutableList;
/**
* Loader for other optical device drivers.
*/
@Component(immediate = true)
public class OpticalDriversLoader extends AbstractDriverLoader {
// OSGI: help bundle plugin discover runtime package dependency.
@SuppressWarnings("unused")
private OpticalDevice optical;
@Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
protected NetworkConfigRegistry registry = new NetworkConfigRegistryAdapter();
@Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
protected UiExtensionService uiExtensionService;
private UiGlyphFactory glyphFactory =
() -> ImmutableList.of(
new UiGlyph("policon", "0 0 64 64",
"M 32.024746,2 30.163615,19.069136 24.258784,3.015638 "
+ "26.879599,19.985033 17.021343,6.007051 23.943688,21.71947 "
+ "10.8045,10.769161 21.557349,24.15439 6.031794,16.978659 "
+ "19.883076,27.1245 3.027943,24.21114 19.033986,30.42674 "
+ "2,31.97526 19.069136,33.83639 3.015638,39.74122 "
+ "19.985033,37.12041 6.007051,46.97866 21.719466,40.05632 "
+ "10.769161,53.19551 24.154391,42.44265 16.978659,57.96822 "
+ "27.124504,44.11693 24.21114,60.97206 30.426738,44.96602 "
+ "31.975259,62 33.83639,44.93086 39.74122,60.98437 "
+ "37.120405,44.01497 46.978663,57.99296 40.056317,42.28054 "
+ "53.195507,53.23084 42.442656,39.84561 57.968215,47.02135 "
+ "44.116927,36.8755 60.972063,39.78886 44.966018,33.57327 "
+ "62,32.02475 44.930865,30.16362 60.984369,24.25878 "
+ "44.014972,26.8796 57.992959,17.021342 42.280539,23.94369 "
+ "53.23084,10.8045 39.845614,21.55735 47.021349,6.031794 "
+ "36.875501,19.883076 39.788865,3.027943 33.573267,19.033986 Z "
+ "m -0.05497,19.23081 A 10.768943,10.768943 0 0 1 "
+ "42.769201,31.96977 10.768943,10.768943 0 0 1 "
+ "32.030235,42.7692 10.768943,10.768943 0 0 1 "
+ "21.230812,32.03023 10.768943,10.768943 0 0 1 "
+ "31.969778,21.23081 Z")
);
private final List<ConfigFactory> factories = ImmutableList.of(
new ConfigFactory<DeviceId, FlowTableConfig>(DEVICE_SUBJECT_FACTORY,
FlowTableConfig.class,
FlowTableConfig.CONFIG_KEY) {
@Override
public FlowTableConfig createConfig() {
return new FlowTableConfig();
}
},
new ConfigFactory<ConnectPoint, LambdaConfig>(CONNECT_POINT_SUBJECT_FACTORY,
LambdaConfig.class,
LambdaConfig.CONFIG_KEY) {
@Override
public LambdaConfig createConfig() {
return new LambdaConfig();
}
});
public OpticalDriversLoader() {
super("/optical-drivers.xml");
}
@Activate
@Override
protected void activate() {
factories.forEach(registry::registerConfigFactory);
uiExtensionService.register(glyphFactory);
super.activate();
}
@Deactivate
@Override
protected void deactivate() {
factories.forEach(registry::unregisterConfigFactory);
uiExtensionService.unregister(glyphFactory);
super.deactivate();
}
}