/*
* Copyright (c) 2017 Cisco Systems. All rights reserved.
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v1.0 which accompanies this distribution,
* and is available at http://www.eclipse.org/legal/epl-v10.html
*/
package org.opendaylight.groupbasedpolicy.renderer.vpp.commands.lisp;
import org.opendaylight.groupbasedpolicy.renderer.vpp.commands.lisp.dom.InterfaceDom;
import org.opendaylight.groupbasedpolicy.renderer.vpp.commands.lisp.dom.LispDom;
import org.opendaylight.groupbasedpolicy.renderer.vpp.commands.lisp.dom.LocalMappingDom;
import org.opendaylight.groupbasedpolicy.renderer.vpp.commands.lisp.dom.LocatorSetDom;
import org.opendaylight.groupbasedpolicy.renderer.vpp.commands.lisp.dom.MapRegisterDom;
import org.opendaylight.groupbasedpolicy.renderer.vpp.commands.lisp.dom.MapResolverDom;
import org.opendaylight.groupbasedpolicy.renderer.vpp.commands.lisp.dom.MapServerDom;
import org.opendaylight.groupbasedpolicy.renderer.vpp.commands.lisp.dom.VniTableDom;
import org.opendaylight.groupbasedpolicy.renderer.vpp.commands.lisp.dom.VrfSubtableDom;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddress;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.lisp.rev170315.Lisp;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.lisp.rev170315.MappingId;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.lisp.rev170315.dp.subtable.grouping.local.mappings.LocalMapping;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.lisp.rev170315.dp.subtable.grouping.local.mappings.local.mapping.Eid;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.lisp.rev170315.eid.table.grouping.eid.table.VniTable;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.lisp.rev170315.hmac.key.grouping.HmacKey;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.lisp.rev170315.lisp.feature.data.grouping.LispFeatureData;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.lisp.rev170315.locator.sets.grouping.locator.sets.LocatorSet;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.lisp.rev170315.map.register.grouping.MapRegister;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.lisp.rev170315.map.resolvers.grouping.map.resolvers.MapResolver;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.lisp.rev170315.map.servers.grouping.map.servers.MapServer;
import java.util.Arrays;
/**
* Created by Shakib Ahmed on 3/21/17.
*/
public class LispCommandWrapper {
public static AbstractLispCommand<Lisp> enableLisp() {
LispDom lispDom = new LispDom();
lispDom.setEnabled(true);
return new ConfigureLispStatusCommand(lispDom);
}
public static AbstractLispCommand<LocatorSet> addLocatorSet(String locatorName,
String interfaceName,
short priority,
short weight) {
InterfaceDom interfaceDom = new InterfaceDom();
interfaceDom.setInterfaceName(interfaceName);
interfaceDom.setPriority(priority);
interfaceDom.setWeight(weight);
LocatorSetDom locatorSetDom = new LocatorSetDom();
locatorSetDom.setInterfaces(Arrays.asList(interfaceDom.getSALObject()));
locatorSetDom.setLocatorName(locatorName);
return new ConfigureLocatorSetCommand(locatorSetDom);
}
public static AbstractLispCommand<VniTable> mapVniToVrf(long vni, long vrfTableId) {
VrfSubtableDom vrfSubtableDom = new VrfSubtableDom();
vrfSubtableDom.setTableId(vrfTableId);
VniTableDom vniTableDom = new VniTableDom();
vniTableDom.setVirtualNetworkIdentifier(vni);
vniTableDom.setVrfSubtable(vrfSubtableDom.getSALObject());
return new ConfigureVrfToVniMappingCommand(vniTableDom);
}
public static AbstractLispCommand<MapRegister> enableMapRegister() {
MapRegisterDom mapRegisterDom = new MapRegisterDom();
mapRegisterDom.setEnabled(true);
return new ConfigureMapRegisterStatusCommand(mapRegisterDom);
}
public static AbstractLispCommand<MapResolver> addMapResolver(IpAddress ipAddress) {
MapResolverDom mapResolverDom = new MapResolverDom();
mapResolverDom.setIpAddress(ipAddress);
return new ConfigureMapResolverCommand(mapResolverDom);
}
public static AbstractLispCommand<MapServer> addMapServer(IpAddress ipAddress) {
MapServerDom mapServerDom = new MapServerDom();
mapServerDom.setIpAddress(ipAddress);
return new ConfigureMapServerCommand(mapServerDom);
}
public static AbstractLispCommand<LocalMapping> addLocalMappingInEidTable(String mappingName,
Eid eid,
String locatorName,
HmacKey hmacKey) {
LocalMappingDom localMappingDom = new LocalMappingDom();
localMappingDom.setMappingId(new MappingId(mappingName));
localMappingDom.setEid(eid);
localMappingDom.setLocatorName(locatorName);
localMappingDom.setHmacKey(hmacKey);
return new ConfigureLocalMappingInEidTableCommand(localMappingDom);
}
public static AbstractLispCommand<LocalMapping> deleteLocalMappingFromEidTable(String mappingName,
long vni) {
LocalMappingDom localMappingDom = new LocalMappingDom();
localMappingDom.setMappingId(new MappingId(mappingName));
localMappingDom.setVni(vni);
return new ConfigureLocalMappingInEidTableCommand(localMappingDom);
}
public static AbstractLispCommand<LispFeatureData> deleteLispFeatureData() {
return new DeleteLispFeatureDataCommand();
}
}