Fix imports after lisp model update
[groupbasedpolicy.git] / renderers / vpp / src / main / java / org / opendaylight / groupbasedpolicy / renderer / vpp / util / LispUtil.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.util;
10
11 import java.security.InvalidParameterException;
12
13 import org.opendaylight.groupbasedpolicy.renderer.vpp.commands.lisp.dom.EidDom;
14 import org.opendaylight.groupbasedpolicy.renderer.vpp.commands.lisp.dom.HmacKeyDom;
15 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv4Address;
16 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.InstanceIdType;
17 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.LispAddressFamily;
18 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.lisp.address.Address;
19 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.lisp.address.address.Ipv4;
20 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.lisp.address.address.Ipv4Builder;
21 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.lisp.address.address.Ipv4Prefix;
22 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.lisp.address.address.Ipv4PrefixBuilder;
23 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.gpe.rev170801.gpe.entry.table.grouping.gpe.entry.table.gpe.entry.LocalEid;
24 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.gpe.rev170801.gpe.entry.table.grouping.gpe.entry.table.gpe.entry.LocalEidBuilder;
25 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.gpe.rev170801.gpe.entry.table.grouping.gpe.entry.table.gpe.entry.RemoteEid;
26 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.gpe.rev170801.gpe.entry.table.grouping.gpe.entry.table.gpe.entry.RemoteEidBuilder;
27 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.lisp.rev170911.HmacKeyType;
28 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.lisp.rev170911.dp.subtable.grouping.local.mappings.local.mapping.Eid;
29 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.lisp.rev170911.hmac.key.grouping.HmacKey;
30 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.NodeId;
31 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.Node;
32 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
33
34 import com.google.common.base.Function;
35
36 /**
37  * Created by Shakib Ahmed on 3/21/17.
38  */
39 public class LispUtil {
40     private LispUtil() {
41
42     }
43
44     public static Function<String, InstanceIdentifier<Node>> HOSTNAME_TO_IID = host -> {
45         return VppIidFactory.getNetconfNodeIid(new NodeId(host));
46     };
47
48     public static Eid toEid(Address address, long vni, Class<? extends LispAddressFamily> addressType) {
49         EidDom eidDom = new EidDom();
50         eidDom.setAddress(address);
51         eidDom.setVni(vni);
52         eidDom.setAddressFamily(addressType);
53         return eidDom.getSALObject();
54     }
55
56     public static RemoteEid toRemoteEid(Address address, long vni, Class<? extends LispAddressFamily> addressType) {
57         RemoteEidBuilder remoteEidBuilder = new RemoteEidBuilder();
58         remoteEidBuilder.setAddress(address);
59         remoteEidBuilder.setVirtualNetworkId(new InstanceIdType(vni));
60         remoteEidBuilder.setAddressType(addressType);
61         return remoteEidBuilder.build();
62     }
63
64     public static LocalEid toLocalEid(Address address, long vni, Class<? extends LispAddressFamily> addressType) {
65         LocalEidBuilder localEidBuilder = new LocalEidBuilder();
66         localEidBuilder.setAddress(address);
67         localEidBuilder.setVirtualNetworkId(new InstanceIdType(vni));
68         localEidBuilder.setAddressType(addressType);
69         return localEidBuilder.build();
70     }
71
72     public static HmacKey toHmacKey(HmacKeyType keyType, String key) {
73         HmacKeyDom hmacKeyDom = new HmacKeyDom();
74         hmacKeyDom.setKey(key);
75         hmacKeyDom.setKeyType(keyType);
76         return hmacKeyDom.getSALObject();
77     }
78
79     public static Ipv4 toIpv4(String ipStr) throws InvalidParameterException {
80         String[] strArray = ipStr.split("/");
81         if (strArray.length == 0 || strArray.length > 2) {
82             throw new InvalidParameterException("Parameter " + ipStr + " is invalid for IPv4");
83         }
84
85         if(strArray.length == 2) {
86             int mask = Integer.valueOf(strArray[1]);
87             if(mask != 32) {
88                 throw new InvalidParameterException("Parameter " + ipStr + " is invalid for IPv4");
89             }
90         }
91
92         return new Ipv4Builder().setIpv4(new Ipv4Address(strArray[0])).build();
93     }
94
95     public static Ipv4Prefix toLispIpv4Prefix(org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf
96                                                   .inet.types.rev130715.Ipv4Prefix ipv4Prefix) {
97         return new Ipv4PrefixBuilder().setIpv4Prefix(ipv4Prefix).build();
98     }
99 }