Cleanup of Lisp in VPP renderer
[groupbasedpolicy.git] / renderers / vpp / src / main / java / org / opendaylight / groupbasedpolicy / renderer / vpp / commands / lisp / LispCommandWrapper.java
1 /*
2  * Copyright (c) 2017 Cisco Systems. 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
9 package org.opendaylight.groupbasedpolicy.renderer.vpp.commands.lisp;
10
11 import java.util.Collections;
12
13 import org.opendaylight.groupbasedpolicy.renderer.vpp.commands.lisp.dom.GbpGpeEntryDom;
14 import org.opendaylight.groupbasedpolicy.renderer.vpp.commands.lisp.dom.GpeEnableDom;
15 import org.opendaylight.groupbasedpolicy.renderer.vpp.commands.lisp.dom.InterfaceDom;
16 import org.opendaylight.groupbasedpolicy.renderer.vpp.commands.lisp.dom.ItrRemoteLocatorSetDom;
17 import org.opendaylight.groupbasedpolicy.renderer.vpp.commands.lisp.dom.LispDom;
18 import org.opendaylight.groupbasedpolicy.renderer.vpp.commands.lisp.dom.LocalMappingDom;
19 import org.opendaylight.groupbasedpolicy.renderer.vpp.commands.lisp.dom.LocatorSetDom;
20 import org.opendaylight.groupbasedpolicy.renderer.vpp.commands.lisp.dom.MapRegisterDom;
21 import org.opendaylight.groupbasedpolicy.renderer.vpp.commands.lisp.dom.MapResolverDom;
22 import org.opendaylight.groupbasedpolicy.renderer.vpp.commands.lisp.dom.MapServerDom;
23 import org.opendaylight.groupbasedpolicy.renderer.vpp.commands.lisp.dom.NativeForwardPathDom;
24 import org.opendaylight.groupbasedpolicy.renderer.vpp.commands.lisp.dom.VniTableDom;
25 import org.opendaylight.groupbasedpolicy.renderer.vpp.commands.lisp.dom.VrfSubtableDom;
26 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddress;
27 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.gpe.rev170801.NativeForwardPathsTables;
28 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.gpe.rev170801._native.forward.paths.tables._native.forward.paths.table.NativeForwardPath;
29 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.gpe.rev170801.gpe.entry.table.grouping.gpe.entry.table.GpeEntry;
30 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.gpe.rev170801.gpe.entry.table.grouping.gpe.entry.table.gpe.entry.RemoteEid;
31 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.gpe.rev170801.gpe.feature.data.grouping.GpeFeatureData;
32 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.lisp.rev171013.Lisp;
33 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.lisp.rev171013.MapReplyAction;
34 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.lisp.rev171013.MappingId;
35 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.lisp.rev171013.dp.subtable.grouping.local.mappings.LocalMapping;
36 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.lisp.rev171013.dp.subtable.grouping.local.mappings.local.mapping.Eid;
37 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.lisp.rev171013.eid.table.grouping.eid.table.VniTable;
38 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.lisp.rev171013.hmac.key.grouping.HmacKey;
39 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.lisp.rev171013.itr.remote.locator.sets.grouping.ItrRemoteLocatorSet;
40 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.lisp.rev171013.lisp.feature.data.grouping.LispFeatureData;
41 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.lisp.rev171013.locator.sets.grouping.locator.sets.LocatorSet;
42 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.lisp.rev171013.map.register.grouping.MapRegister;
43 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.lisp.rev171013.map.resolvers.grouping.map.resolvers.MapResolver;
44 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.lisp.rev171013.map.servers.grouping.map.servers.MapServer;
45
46 public class LispCommandWrapper {
47     public static AbstractLispCommand<Lisp> enableLisp() {
48         LispDom lispDom = new LispDom();
49         lispDom.setEnabled(true);
50         return new ConfigureLispStatusCommand(lispDom);
51     }
52
53     public static AbstractLispCommand<LocatorSet> addLocatorSet(String locatorName, String interfaceName,
54         short priority, short weight) {
55         InterfaceDom interfaceDom = new InterfaceDom();
56         interfaceDom.setInterfaceName(interfaceName);
57         interfaceDom.setPriority(priority);
58         interfaceDom.setWeight(weight);
59
60         LocatorSetDom locatorSetDom = new LocatorSetDom();
61         locatorSetDom.setInterfaces(Collections.singletonList(interfaceDom.getSALObject()));
62         locatorSetDom.setLocatorName(locatorName);
63         return new ConfigureLocatorSetCommand(locatorSetDom);
64     }
65
66     public static AbstractLispCommand<VniTable> mapVniToVrf(long vni, long vrfTableId) {
67         VrfSubtableDom vrfSubtableDom = new VrfSubtableDom();
68         vrfSubtableDom.setTableId(vrfTableId);
69
70         VniTableDom vniTableDom = new VniTableDom();
71         vniTableDom.setVirtualNetworkIdentifier(vni);
72         vniTableDom.setVrfSubtable(vrfSubtableDom.getSALObject());
73
74         return new ConfigureVrfToVniMappingCommand(vniTableDom);
75     }
76
77     public static AbstractLispCommand<MapRegister> enableMapRegister() {
78         MapRegisterDom mapRegisterDom = new MapRegisterDom();
79         mapRegisterDom.setEnabled(true);
80         return new ConfigureMapRegisterStatusCommand(mapRegisterDom);
81     }
82
83     public static AbstractLispCommand<MapResolver> addMapResolver(IpAddress ipAddress) {
84         MapResolverDom mapResolverDom = new MapResolverDom();
85         mapResolverDom.setIpAddress(ipAddress);
86
87         return new ConfigureMapResolverCommand(mapResolverDom);
88     }
89
90     public static AbstractLispCommand<MapServer> addMapServer(IpAddress ipAddress) {
91         MapServerDom mapServerDom = new MapServerDom();
92         mapServerDom.setIpAddress(ipAddress);
93
94         return new ConfigureMapServerCommand(mapServerDom);
95     }
96
97     public static AbstractLispCommand<LocalMapping> addLocalMappingInEidTable(String mappingName, Eid eid,
98         String locatorName, HmacKey hmacKey) {
99         LocalMappingDom localMappingDom = new LocalMappingDom();
100         localMappingDom.setMappingId(new MappingId(mappingName));
101         localMappingDom.setEid(eid);
102         localMappingDom.setLocatorName(locatorName);
103         localMappingDom.setHmacKey(hmacKey);
104
105         return new ConfigureLocalMappingInEidTableCommand(localMappingDom);
106     }
107
108     public static AbstractLispCommand<LocalMapping> deleteLocalMappingFromEidTable(String mappingName, long vni) {
109         LocalMappingDom localMappingDom = new LocalMappingDom();
110         localMappingDom.setMappingId(new MappingId(mappingName));
111         localMappingDom.setVni(vni);
112
113         return new ConfigureLocalMappingInEidTableCommand(localMappingDom);
114     }
115
116     public static AbstractLispCommand<LispFeatureData> deleteLispFeatureData() {
117         return new DeleteLispFeatureDataCommand();
118     }
119
120     public static AbstractLispCommand<GpeFeatureData> enableGpe() {
121         GpeEnableDom gpeEnableDom = new GpeEnableDom();
122         gpeEnableDom.setEnabled(true);
123
124         return new ConfigureGpeCommand(gpeEnableDom);
125     }
126
127     public static AbstractLispCommand<GpeEntry> addGpeSendMapregisterAction(String entryName, RemoteEid rEid, long vni,
128         long vrf) {
129         GbpGpeEntryDom gpeEntryDom = new GbpGpeEntryDom();
130         gpeEntryDom.setId(entryName);
131         gpeEntryDom.setRemoteEid(rEid);
132         gpeEntryDom.setVni(vni);
133         gpeEntryDom.setVrf(vrf);
134         gpeEntryDom.setAction(MapReplyAction.SendMapRequest);
135
136         return new ConfigureGpeEntryCommand(gpeEntryDom);
137     }
138
139     public static AbstractLispCommand<GpeEntry> deleteGpeEntry(String entryName) {
140         GbpGpeEntryDom gpeEntryDom = new GbpGpeEntryDom();
141         gpeEntryDom.setId(entryName);
142
143         return new ConfigureGpeEntryCommand(gpeEntryDom);
144     }
145
146     public static AbstractLispCommand<ItrRemoteLocatorSet> addItrRloc(String locatorSetName) {
147         ItrRemoteLocatorSetDom itrRemoteLocatorSetDom = new ItrRemoteLocatorSetDom();
148         itrRemoteLocatorSetDom.setLocatorSetName(locatorSetName);
149
150         return new ConfigureItrRemoteLocatorSetCommand(itrRemoteLocatorSetDom);
151     }
152
153     public static AbstractLispCommand<NativeForwardPath> addNativeForwardEntry(long vrf, IpAddress nextHopIp) {
154         NativeForwardPathDom nativeForwardPathDom = new NativeForwardPathDom();
155         nativeForwardPathDom.setVrfId(vrf);
156         nativeForwardPathDom.setNextHopIp(nextHopIp);
157         return new ConfigureNativeForwardPathCommand(nativeForwardPathDom);
158     }
159
160     public static AbstractLispCommand<NativeForwardPathsTables> deleteNativeForwardPathsTables() {
161         return new DeleteNativeForwardPathsTablesDeleteCommand();
162     }
163 }