af1baa494f7ce541f0b4d6213c5e6d4e1b51215f
[vpnservice.git] / mdsalutil / mdsalutil-impl / src / main / java / org / opendaylight / vpnservice / mdsalutil / internal / MDSALUtilProvider.java
1 package org.opendaylight.vpnservice.mdsalutil.internal;
2
3 import java.util.List;
4
5 import org.opendaylight.controller.md.sal.binding.api.DataBroker;
6 import org.opendaylight.controller.sal.binding.api.BindingAwareConsumer;
7 import org.opendaylight.controller.sal.binding.api.BindingAwareBroker.ConsumerContext;
8 import org.opendaylight.vpnservice.mdsalutil.ActionInfo;
9 import org.opendaylight.vpnservice.mdsalutil.FlowEntity;
10 import org.opendaylight.vpnservice.mdsalutil.GroupEntity;
11 import org.opendaylight.vpnservice.mdsalutil.interfaces.IMdsalApiManager;
12 import org.opendaylight.yang.gen.v1.urn.opendaylight.packet.service.rev130709.PacketProcessingService;
13 import org.slf4j.Logger;
14 import org.slf4j.LoggerFactory;
15
16 public class MDSALUtilProvider implements BindingAwareConsumer, IMdsalApiManager, AutoCloseable {
17
18     private static final Logger s_logger = LoggerFactory.getLogger(MDSALUtilProvider.class);
19     private MDSALManager mdSalMgr;
20
21     @Override
22     public void onSessionInitialized(ConsumerContext session) {
23
24         s_logger.info( " Session Initiated for MD SAL Util Provider") ;
25
26         try {
27             final DataBroker dataBroker;
28             final PacketProcessingService packetProcessingService;
29             dataBroker = session.getSALService(DataBroker.class);
30              // TODO - Verify this.
31              packetProcessingService = session.getRpcService(PacketProcessingService.class);
32              mdSalMgr = new MDSALManager( dataBroker, packetProcessingService) ;
33         }catch( Exception e) {
34             s_logger.error( "Error initializing MD SAL Util Services " + e );
35         }
36     }
37
38
39     @Override
40     public void close() throws Exception {
41         mdSalMgr.close();
42         s_logger.info("MDSAL Manager Closed");
43     }
44
45
46     @Override
47     public void installFlow(FlowEntity flowEntity) {
48           mdSalMgr.installFlow(flowEntity);
49     }
50
51     @Override
52     public void removeFlow(FlowEntity flowEntity) {
53         mdSalMgr.removeFlow(flowEntity);
54     }
55
56     @Override
57     public void installGroup(GroupEntity groupEntity) {
58         mdSalMgr.installGroup(groupEntity);
59     }
60
61
62     @Override
63     public void modifyGroup(GroupEntity groupEntity) {
64         mdSalMgr.modifyGroup(groupEntity);
65     }
66
67
68     @Override
69     public void removeGroup(GroupEntity groupEntity) {
70         mdSalMgr.removeGroup(groupEntity);
71     }
72
73
74     @Override
75     public void sendPacketOut(long lDpnId, int groupId, byte[] payload) {
76         mdSalMgr.sendPacketOut(lDpnId, groupId, payload);
77     }
78
79
80     @Override
81     public void sendPacketOutWithActions(long lDpnId, long groupId,
82             byte[] payload, List<ActionInfo> actionInfos) {
83         mdSalMgr.sendPacketOutWithActions(lDpnId, groupId, payload, actionInfos);
84     }
85
86
87     @Override
88     public void sendARPPacketOutWithActions(long dpid, byte[] payload,
89             List<ActionInfo> action_info) {
90         mdSalMgr.sendARPPacketOutWithActions(dpid, payload, action_info);
91     }
92
93 }