2  * ============LICENSE_START========================================================================
 
   3  * ONAP : ccsdk feature sdnr wt
 
   4  * =================================================================================================
 
   5  * Copyright (C) 2019 highstreet technologies GmbH Intellectual Property. All rights reserved.
 
   6  * =================================================================================================
 
   7  * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
 
   8  * in compliance with the License. You may obtain a copy of the License at
 
  10  * http://www.apache.org/licenses/LICENSE-2.0
 
  12  * Unless required by applicable law or agreed to in writing, software distributed under the License
 
  13  * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
 
  14  * or implied. See the License for the specific language governing permissions and limitations under
 
  16  * ============LICENSE_END==========================================================================
 
  18 package org.onap.ccsdk.features.sdnr.wt.devicemanager.onf.ifpac;
 
  20 import java.util.List;
 
  21 import org.eclipse.jdt.annotation.Nullable;
 
  22 import org.onap.ccsdk.features.sdnr.wt.netconfnodestateservice.Capabilities;
 
  23 import org.onap.ccsdk.features.sdnr.wt.netconfnodestateservice.NetconfAccessor;
 
  24 import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
 
  25 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.ptp.dataset.rev170208.InstanceList;
 
  26 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.ptp.dataset.rev170208.InstanceListKey;
 
  27 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.ptp.dataset.rev170208.instance.list.PortDsList;
 
  28 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.ptp.dataset.rev170208.port.ds.entry.PortIdentity;
 
  29 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
 
  30 import org.slf4j.Logger;
 
  31 import org.slf4j.LoggerFactory;
 
  34  * Reading PTP specific information from networkelement and creating log-trace output.
 
  38 public class WrapperPTPModelRev170208 {
 
  40     private static final Logger LOG = LoggerFactory.getLogger(WrapperPTPModelRev170208.class);
 
  42     protected static final InstanceIdentifier<InstanceList> PTPINSTANCES_IID = InstanceIdentifier
 
  43             .builder(InstanceList.class, new InstanceListKey(1)).build();
 
  46      * Query synchronization information out of NE
 
  49     public static void initSynchronizationExtension(NetconfAccessor acessor) {
 
  51         String mountPointNodeName = acessor.getNodeId().getValue();
 
  52         Capabilities capabilities = acessor.getCapabilites();
 
  54             if (!capabilities.isSupportingNamespaceAndRevision(InstanceList.QNAME)) {
 
  55                 LOG.debug("Mountpoint {} does not support PTP", mountPointNodeName);
 
  57                 StringBuffer sb = new StringBuffer();
 
  59                 sb.append(mountPointNodeName);
 
  60                 sb.append(" does support synchronisation.\n");
 
  61                 InstanceList ptpInstance = readPTPClockInstances(acessor);
 
  62                 if (ptpInstance != null) {
 
  63                     List<PortDsList> dsList = ptpInstance.getPortDsList();
 
  66                         for (PortDsList portDs : dsList) {
 
  67                             PortIdentity portId = portDs.getPortIdentity();
 
  70                                 sb.append(portId.getPortNumber());
 
  71                                 sb.append("]{ ClockId: ");
 
  72                                 sb.append(portId.getClockIdentity());
 
  73                                 sb.append(", Portstate: ");
 
  74                                 sb.append(portDs.getPortState());
 
  77                                 sb.append("Incomplete port #" + t + ", ");
 
  82                         sb.append("dsList contains null");
 
  85                     sb.append("ptpInstance equals null");
 
  87                 LOG.trace(sb.toString());
 
  89         } catch (Exception e) {
 
  90             LOG.info("Inconsistent synchronisation structure: " + e.getMessage());
 
  95     private static InstanceList readPTPClockInstances(NetconfAccessor acessor) {
 
  96         return acessor.getTransactionUtils().readData(acessor.getDataBroker(), LogicalDatastoreType.OPERATIONAL,