/* * Copyright © 2015 Copyright (c) 2015 SNLAB and others. 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.alto.spce.impl.util; import com.google.common.base.Optional; import org.opendaylight.controller.md.sal.binding.api.DataBroker; import org.opendaylight.controller.md.sal.binding.api.ReadOnlyTransaction; import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.MacAddress; import org.opendaylight.yang.gen.v1.urn.opendaylight.host.tracker.rev140624.HostNode; import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.NetworkTopology; import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.NodeId; import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.TopologyId; import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.TpId; import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.Topology; import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.TopologyKey; import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.Node; import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.NodeKey; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.util.concurrent.ExecutionException; public class InventoryReader { private Logger LOG = LoggerFactory.getLogger(InventoryReader.class); private DataBroker dataBroker; public InventoryReader(DataBroker dataBroker) { this.dataBroker = dataBroker; } public TpId getNodeConnectorByMac(MacAddress macAddress) { TpId tpId = null; InstanceIdentifier<HostNode> hostId = InstanceIdentifier.builder(NetworkTopology.class) .child(Topology.class, new TopologyKey(new TopologyId("flow:1"))) .child(Node.class, new NodeKey( new NodeId("host:"+macAddress.getValue()))) .augmentation(HostNode.class) .build(); ReadOnlyTransaction readOnlyTransaction = dataBroker.newReadOnlyTransaction(); try { Optional<HostNode> dataObjectOptional = null; dataObjectOptional = readOnlyTransaction.read(LogicalDatastoreType.OPERATIONAL, hostId).get(); if (dataObjectOptional.isPresent()) { HostNode hostNode = dataObjectOptional.get(); String attPoint = hostNode.getAttachmentPoints().get(0).getKey().getTpId().getValue(); tpId = new TpId(attPoint); } } catch (InterruptedException | ExecutionException e) { LOG.error("Failed to read nodes from Operation data store."); readOnlyTransaction.close(); } readOnlyTransaction.close(); return tpId; } }