Mahesh Poojary S
Committed by Gerrit Code Review

[ONOS-3114] sfc Service and Manager

Change-Id: Iaa44ee134de8b30397a1fb808523c81d2c370cd9
......@@ -32,6 +32,7 @@
<description>ONOS framework applications</description>
<modules>
<module>sfcmgr</module>
<module>vtnrsc</module>
<module>vtnmgr</module>
<module>vtnweb</module>
......
<?xml version="1.0"?>
<!--
~ Copyright 2015 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.
-->
<project
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.onosproject</groupId>
<artifactId>onos-app-vtn</artifactId>
<version>1.4.0-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath>
</parent>
<artifactId>onos-app-sfc-mgr</artifactId>
<packaging>bundle</packaging>
<dependencies>
<dependency>
<groupId>org.onosproject</groupId>
<artifactId>onos-api</artifactId>
</dependency>
<dependency>
<groupId>org.apache.felix</groupId>
<artifactId>org.apache.felix.scr.annotations</artifactId>
</dependency>
<dependency>
<groupId>org.onosproject</groupId>
<artifactId>onos-core-serializers</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>org.onosproject</groupId>
<artifactId>onos-app-vtn-rsc</artifactId>
<version>${project.version}</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.felix</groupId>
<artifactId>maven-bundle-plugin</artifactId>
<configuration>
<instructions>
<Export-Package>
org.onosproject.openflow.*,org.projectfloodlight.openflow.*
</Export-Package>
</instructions>
</configuration>
</plugin>
</plugins>
</build>
</project>
/*
* Copyright 2015 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.
*/
/**
* Service function forwarder for SFC.
*/
package org.onosproject.sfc.forwarder;
/*
* Copyright 2015 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.
*/
/**
* Service for installing flow classifier rules in OVS.
*/
package org.onosproject.sfc.installer;
......@@ -13,40 +13,58 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.onosproject.sfc;
import org.onosproject.vtnrsc.PortChain;
package org.onosproject.sfc.manager;
/**
* SFC application that applies flows to the device.
*/
public interface SfcService {
/**
* Applies flow classification to OVS.
*
* @param portChain Port-Chain.
* When port-pair is created, check whether Forwarding Rule needs to be
* updated in OVS.
*/
void InstallFlowClassification(PortChain portChain);
public void onPortPairCreated();
/**
* When port-pair is deleted, check whether Forwarding Rule needs to be
* updated in OVS.
*/
public void onPortPairDeleted();
/**
* When port-pair-group is created, check whether Forwarding Rule needs to
* be updated in OVS.
*/
public void onPortPairGroupCreated();
/**
* When port-pair-group is deleted, check whether Forwarding Rule needs to
* be updated in OVS.
*/
public void onPortPairGroupDeleted();
/**
* When flow-classifier is created, check whether Forwarding Rule needs to
* be updated in OVS.
*/
public void onFlowClassifierCreated();
/**
* Remove flow classification from OVS.
*
* @param portChain Port-Chain.
* When flow-classifier is deleted, check whether Forwarding Rule needs to
* be updated in OVS.
*/
void UnInstallFlowClassification(PortChain portChain);
public void onFlowClassifierDeleted();
/**
* Applies Service Function chain to OVS.
*
* @param portChain Port-Chain.
* When port-chain is created, check whether Forwarding Rule needs to be
* updated in OVS.
*/
void InstallServiceFunctionChain(PortChain portChain);
public void onPortChainCreated();
/**
* Remove Service Function chain from OVS.
*
* @param portChain Port-Chain.
* When port-chain is deleted, check whether Forwarding Rule needs to be
* updated in OVS.
*/
void UnInstallServiceFunctionChain(PortChain portChain);
public void onPortChainDeleted();
}
......
......@@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.onosproject.sfc.impl;
package org.onosproject.sfc.manager.impl;
import static org.slf4j.LoggerFactory.getLogger;
......@@ -21,7 +21,8 @@ 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.Service;
import org.onosproject.vtnrsc.sfc.PortChain;
import org.onosproject.sfc.manager.SfcService;
import org.onosproject.vtnrsc.PortChain;
import org.slf4j.Logger;
/**
......@@ -31,7 +32,7 @@ import org.slf4j.Logger;
@Service
public class SfcManager implements SfcService {
private final Logger log = getLogger(SfcManager.class);
private final Logger log = getLogger(getClass());
@Activate
public void activate() {
......@@ -44,26 +45,81 @@ public class SfcManager implements SfcService {
}
@Override
public void InstallFlowClassification(PortChain portChain) {
log.debug("InstallFlowClassification");
//TODO: Installation of flow classification into OVS.
public void onPortPairCreated() {
log.debug("onPortPairCreated");
// TODO: Process port-pair on creation.
// TODO: Parameter also needs to be modified.
}
@Override
public void UnInstallFlowClassification(PortChain portChain) {
log.debug("UnInstallFlowClassification");
//TODO: Un-installation flow classification from OVS
public void onPortPairDeleted() {
log.debug("onPortPairDeleted");
// TODO: Process port-pair on deletion.
// TODO: Parameter also needs to be modified.
}
@Override
public void InstallServiceFunctionChain(PortChain portChain) {
log.debug("InstallServiceFunctionChain");
//TODO: Installation of Service Function chain into OVS.
public void onPortPairGroupCreated() {
log.debug("onPortPairGroupCreated");
// TODO: Process port-pair-group on creation.
// TODO: Parameter also needs to be modified.
}
@Override
public void UnInstallServiceFunctionChain(PortChain portChain) {
log.debug("UnInstallServiceFunctionChain");
//TODO: Un-installation of Service Function chain from OVS.
public void onPortPairGroupDeleted() {
log.debug("onPortPairGroupDeleted");
// TODO: Process port-pair-group on deletion.
// TODO: Parameter also needs to be modified.
}
}
@Override
public void onFlowClassifierCreated() {
log.debug("onFlowClassifierCreated");
// TODO: Process flow-classifier on creation.
// TODO: Parameter also needs to be modified.
}
@Override
public void onFlowClassifierDeleted() {
log.debug("onFlowClassifierDeleted");
// TODO: Process flow-classifier on deletion.
// TODO: Parameter also needs to be modified.
}
@Override
public void onPortChainCreated() {
log.debug("onPortChainCreated");
// TODO: Process port-chain on creation.
// TODO: Parameter also needs to be modified.
}
@Override
public void onPortChainDeleted() {
log.debug("onPortChainDeleted");
// TODO: Process port-chain on deletion.
// TODO: Parameter also needs to be modified.
}
/**
* Install SF Forwarding rule into OVS.
*
* @param portChain
* port chain
*/
public void installForwardingRule(PortChain portChain) {
log.debug("installForwardingRule");
// TODO: Installation of SF Forwarding rule into OVS.
}
/**
* Uninstall SF Forwarding rule from OVS.
*
* @param portChain
* port chain
*/
public void unInstallForwardingRule(PortChain portChain) {
log.debug("unInstallForwardingRule");
// TODO: Uninstallation of SF Forwarding rule from OVS.
}
}
\ No newline at end of file
......
......@@ -17,4 +17,4 @@
/**
* SFC Service manager for interacting with SFC.
*/
package org.onosproject.sfc.impl;
package org.onosproject.sfc.manager.impl;
......
......@@ -17,4 +17,4 @@
/**
* Service for interacting with SFC.
*/
package org.onosproject.sfc;
package org.onosproject.sfc.manager;
......