Use plain @Nullable
[genius.git] / commons / testutils / src / main / java / org / opendaylight / genius / testutils / interfacemanager / InterfaceStateHelper.java
1 /*
2  * Copyright © 2017 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.genius.testutils.interfacemanager;
9
10 import com.google.common.collect.Lists;
11 import java.math.BigInteger;
12
13 import java.time.ZonedDateTime;
14 import java.time.format.DateTimeFormatter;
15
16 import org.opendaylight.genius.interfacemanager.globals.InterfaceInfo;
17 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.iana._if.type.rev140508.Other;
18 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.InterfacesState;
19 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.state.Interface;
20 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.state.Interface.AdminStatus;
21 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.state.Interface.OperStatus;
22 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.state.InterfaceBuilder;
23 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.state.InterfaceKey;
24 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.state._interface.StatisticsBuilder;
25 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.DateAndTime;
26 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.PhysAddress;
27 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeConnectorId;
28 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
29
30 public final class InterfaceStateHelper {
31
32     private InterfaceStateHelper() {
33     }
34
35     public static InstanceIdentifier<Interface> buildStateInterfaceIid(String interfaceName) {
36         return InstanceIdentifier
37                 .builder(InterfacesState.class)
38                 .child(Interface.class, new InterfaceKey(interfaceName))
39                 .build();
40     }
41
42     public static Interface buildStateFromInterfaceInfo(InterfaceInfo interfaceInfo) {
43         BigInteger dpId = interfaceInfo.getDpId();
44         int portno = interfaceInfo.getPortNo();
45         NodeConnectorId nodeConnectorId = new NodeConnectorId("openflow:" + dpId.toString() + ":" + portno);
46         return new InterfaceBuilder()
47                 .setType(Other.class)
48                 .setIfIndex(interfaceInfo.getInterfaceTag())
49                 .setAdminStatus(AdminStatus.Up)
50                 .setOperStatus(OperStatus.Up)
51                 .setLowerLayerIf(Lists.newArrayList(nodeConnectorId.getValue()))
52                 .setPhysAddress(new PhysAddress(interfaceInfo.getMacAddress()))
53                 .withKey(new InterfaceKey(interfaceInfo.getInterfaceName()))
54                 .setStatistics(new StatisticsBuilder()
55                         .setDiscontinuityTime(new DateAndTime(
56                                 DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(ZonedDateTime.now())))
57                         .build())
58                 .build();
59     }
60 }