diff --git a/providers/openflow/message/pom.xml b/providers/openflow/message/pom.xml new file mode 100644 index 0000000000..fdbcc2ab50 --- /dev/null +++ b/providers/openflow/message/pom.xml @@ -0,0 +1,40 @@ + + + + 4.0.0 + + org.onosproject + onos-of-providers + 1.5.0-SNAPSHOT + ../pom.xml + + + onos-of-provider-message + bundle + + ONOS OpenFlow control message provider + + + + org.onosproject + onos-app-cpman-api + ${project.version} + + + diff --git a/providers/openflow/message/src/main/java/org/onosproject/provider/of/message/impl/OpenFlowControlMessageProvider.java b/providers/openflow/message/src/main/java/org/onosproject/provider/of/message/impl/OpenFlowControlMessageProvider.java new file mode 100644 index 0000000000..d1325ee618 --- /dev/null +++ b/providers/openflow/message/src/main/java/org/onosproject/provider/of/message/impl/OpenFlowControlMessageProvider.java @@ -0,0 +1,65 @@ +/* + * Copyright 2016 Open Networking Laboratory + * + * 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.provider.of.message.impl; + +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.cpman.message.ControlMessageProvider; +import org.onosproject.cpman.message.ControlMessageProviderRegistry; +import org.onosproject.cpman.message.ControlMessageProviderService; +import org.onosproject.net.provider.AbstractProvider; +import org.onosproject.net.provider.ProviderId; +import org.slf4j.Logger; + +import static org.slf4j.LoggerFactory.getLogger; + +/** + * Provider which uses an OpenFlow controller to collect control message. + */ +@Component(immediate = true) +public class OpenFlowControlMessageProvider extends AbstractProvider + implements ControlMessageProvider { + + private static final Logger LOG = getLogger(OpenFlowControlMessageProvider.class); + + @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) + protected ControlMessageProviderRegistry providerRegistry; + + private ControlMessageProviderService providerService; + + /** + * Creates a provider with the supplier identifier. + */ + public OpenFlowControlMessageProvider() { + super(new ProviderId("of", "org.onosproject.provider.openflow")); + } + + @Activate + protected void activate() { + providerService = providerRegistry.register(this); + LOG.info("Started"); + } + + @Deactivate + protected void deactivate() { + providerRegistry.unregister(this); + providerService = null; + LOG.info("Stopped"); + } +} diff --git a/providers/openflow/message/src/main/java/org/onosproject/provider/of/message/impl/package-info.java b/providers/openflow/message/src/main/java/org/onosproject/provider/of/message/impl/package-info.java new file mode 100644 index 0000000000..d43fe2bd7c --- /dev/null +++ b/providers/openflow/message/src/main/java/org/onosproject/provider/of/message/impl/package-info.java @@ -0,0 +1,19 @@ +/* + * Copyright 2016 Open Networking Laboratory + * + * 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. + */ +/** + * Provider which uses an OpenFlow controller to collect control message. + */ +package org.onosproject.provider.of.message.impl; \ No newline at end of file diff --git a/providers/openflow/message/src/test/java/org/onosproject/provider/of/message/impl/OpenFlowControlMessageProviderTest.java b/providers/openflow/message/src/test/java/org/onosproject/provider/of/message/impl/OpenFlowControlMessageProviderTest.java new file mode 100644 index 0000000000..aa579dc1e1 --- /dev/null +++ b/providers/openflow/message/src/test/java/org/onosproject/provider/of/message/impl/OpenFlowControlMessageProviderTest.java @@ -0,0 +1,22 @@ +/* + * Copyright 2016 Open Networking Laboratory + * + * 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.provider.of.message.impl; + +/** + * OpenFlow control message provider test class. + */ +public class OpenFlowControlMessageProviderTest { +} \ No newline at end of file diff --git a/providers/openflow/pom.xml b/providers/openflow/pom.xml index 530f6f86c5..af38b0bf23 100644 --- a/providers/openflow/pom.xml +++ b/providers/openflow/pom.xml @@ -39,6 +39,9 @@ meter base app + + + message