90372753468c06a092b93097477c5bb9cc607cbb
[netvirt.git] / cloud-servicechain / impl / src / main / java / org / opendaylight / netvirt / cloudservicechain / CloudServiceChainProvider.java
1 /*
2  * Copyright (c) 2015 Ericsson India Global Services Pvt Ltd. and others.  All rights reserved.
3  *
4  * This program and the accompanying materials are made available under the
5  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6  * and is available at http://www.eclipse.org/legal/epl-v10.html
7  */
8 package org.opendaylight.netvirt.cloudservicechain;
9
10 import javax.inject.Inject;
11 import javax.inject.Singleton;
12 import org.opendaylight.netvirt.cloudservicechain.api.ICloudServiceChain;
13 import org.slf4j.Logger;
14 import org.slf4j.LoggerFactory;
15
16 @Singleton
17 public class CloudServiceChainProvider implements ICloudServiceChain {
18
19     private static final Logger LOG = LoggerFactory.getLogger(CloudServiceChainProvider.class);
20     private final VPNServiceChainHandler vpnServiceChainHandler;
21     private final ElanServiceChainHandler elanServiceChainHandler;
22
23     @Inject
24     public CloudServiceChainProvider(final VPNServiceChainHandler vpnServiceChainHandler,
25                                      final ElanServiceChainHandler elanServiceChainHandler) {
26         this.vpnServiceChainHandler = vpnServiceChainHandler;
27         this.elanServiceChainHandler = elanServiceChainHandler;
28     }
29
30     @Override
31     public void programVpnToScfPipeline(String vpnId, short tableId, long scfTag, int lportTag, int addOrRemove) {
32         LOG.info("L3VPN Service chaining :programVpnToScfPipeline [Started] {} {} {} {} {}",
33                  vpnId, tableId,scfTag, lportTag, addOrRemove);
34         vpnServiceChainHandler.programVpnToScfPipeline(vpnId, tableId, scfTag, lportTag, addOrRemove);
35     }
36
37     @Override
38     public void programScfToVpnPipeline(String vpnId, long scfTag, int scsTag, long dpnId, int lportTag,
39                                         boolean isLastServiceChain, int addOrRemove) {
40         LOG.info("L3VPN Service chaining :programScfToVpnPipeline [Started] {} {} {} {}", vpnId, scfTag,
41                  dpnId, lportTag);
42         vpnServiceChainHandler.programScfToVpnPipeline(vpnId, scfTag, scsTag, dpnId, lportTag, isLastServiceChain,
43                                                        addOrRemove);
44     }
45
46     /* (non-Javadoc)
47      * @see org.opendaylight.netvirtchain.api.IVpnServiceChain#removeVpnPseudoPortFlows(java.lang.String, int)
48      */
49     @Override
50     public void removeVpnPseudoPortFlows(String vpnInstanceName, int vpnPseudoLportTag) {
51         LOG.info("L3VPN Service chaining :removeVpnPseudoPortFlows [Started] vpnPseudoLportTag={}", vpnPseudoLportTag);
52         vpnServiceChainHandler.removeVpnPseudoPortFlows(vpnInstanceName, vpnPseudoLportTag);
53     }
54
55     @Override
56     public void programElanScfPipeline(String elanName, short tableId, long scfTag, int elanLportTag,
57                                        boolean isLastServiceChain, int addOrRemove) {
58         LOG.info("ELAN Service chaining :programElanScfPipeline [Started] {} {} {} {} {}",
59                  elanName, tableId, scfTag, elanLportTag, addOrRemove);
60         elanServiceChainHandler.programElanScfPipeline(elanName, tableId, scfTag, elanLportTag, addOrRemove);
61     }
62
63     @Override
64     public void programElanScfPipeline(String elanName, short tableId, int scfTag, int elanLportTag, int addOrRemove) {
65         LOG.info("ELAN Service chaining :programElanScfPipeline [Started] {} {} {} {} {}",
66                  elanName, tableId, scfTag, elanLportTag, addOrRemove);
67         elanServiceChainHandler.programElanScfPipeline(elanName, tableId, scfTag, elanLportTag, addOrRemove);
68     }
69
70     @Override
71     public void removeElanPseudoPortFlows(String elanName, int elanPseudoLportTag) {
72         LOG.info("ELAN Service chaining :removeElanPseudoPortFlows [Started] elanPseudoLportTag={}",
73                  elanPseudoLportTag);
74         elanServiceChainHandler.removeElanPseudoPortFlows(elanName, elanPseudoLportTag);
75     }
76
77 }