1 package org.opendaylight.mwtn.aaiConnector.impl;
5 import org.opendaylight.mwtn.base.http.BaseHTTPResponse;
6 import org.opendaylight.mwtn.base.internalTypes.InventoryInformation;
7 import org.opendaylight.mwtn.base.netconf.ONFCoreNetworkElementRepresentation;
8 import org.opendaylight.mwtn.config.impl.AaiConfig;
9 import org.opendaylight.mwtn.config.impl.HtDevicemanagerConfiguration;
10 import org.opendaylight.mwtn.config.impl.HtDevicemanagerConfiguration.IConfigChangedListener;
11 import org.opendaylight.mwtn.devicemanager.impl.DeviceManagerImpl;
12 import org.slf4j.Logger;
13 import org.slf4j.LoggerFactory;
15 public class AaiProviderClient implements AutoCloseable {
17 private static Logger LOG = LoggerFactory.getLogger(AaiProviderClient.class);
18 private static boolean reloadConfigFlag;
19 private AaiConfig config;
20 private DeviceManagerImpl deviceManager;
21 private HtDevicemanagerConfiguration htconfig;
22 private final IConfigChangedListener configChangedListener = new IConfigChangedListener() {
25 public void onConfigChanged() {
26 reloadConfigFlag=true;
31 public AaiConfig getConfig() {return this.config;}
33 private class AaiCreateRequestRunnable implements Runnable {
35 private static final int RESPCODE_NOTFOUND = BaseHTTPResponse.CODE404;
36 private static final int RESPCODE_FOUND = BaseHTTPResponse.CODE200;
37 private final AaiWebApiClient mClient;
38 private final String pnfId;
39 private final String type;
40 private final String model;
41 private final String vendor;
42 private final String oamIp;
43 private final List<String> ifaces;
45 public AaiCreateRequestRunnable(String pnfId, String type, String model, String vendor, String oamIp,
46 List<String> ifaces) {
53 this.timeout=AaiProviderClient.this.config.getConnectionTimeout();
54 this.mClient = new AaiWebApiClient(
55 AaiProviderClient.this.config.getBaseUrl(),
56 AaiProviderClient.this.config.getHeaders(),
57 AaiProviderClient.this.config.getTrustAll(),
58 AaiProviderClient.this.config.getPcks12CertificateFilename(),
59 AaiProviderClient.this.config.getPcks12CertificatePassphrase()
65 LOG.debug("check if pnfid "+pnfId+" exists");
66 this.mClient.setTimeout(timeout);
67 BaseHTTPResponse response=this.mClient.pnfCheckIfExists(pnfId);
68 if(response.code==RESPCODE_NOTFOUND)
70 LOG.debug("do pnfCreate for "+pnfId);
71 this.mClient.pnfCreate(pnfId, type, model, vendor, oamIp, ifaces);
73 else if(response.code==RESPCODE_FOUND)
75 LOG.debug("pnfid "+pnfId+" found, nothing to do");
79 LOG.warn("unhandled response code: "+response.toString());
84 private class AaiDeleteRequestRunnable implements Runnable {
86 private final AaiWebApiClient mClient;
87 private final String pnfId;
91 public AaiDeleteRequestRunnable(String pnfId) {
93 this.timeout=AaiProviderClient.this.config.getConnectionTimeout();
94 this.mClient = new AaiWebApiClient(
95 AaiProviderClient.this.config.getBaseUrl(),
96 AaiProviderClient.this.config.getHeaders(),
97 AaiProviderClient.this.config.getTrustAll(),
98 AaiProviderClient.this.config.getPcks12CertificateFilename(),
99 AaiProviderClient.this.config.getPcks12CertificatePassphrase()
105 this.mClient.setTimeout(this.timeout);
106 this.mClient.pnfDelete(pnfId);
110 public AaiProviderClient(HtDevicemanagerConfiguration cfg,DeviceManagerImpl devMgr) {
111 this.config = cfg.getAai();
113 this.htconfig.registerConfigChangedListener(configChangedListener);
114 this.deviceManager = devMgr;
118 private void _reload()
122 this.config=AaiConfig.reload();
123 LOG.info("config reloaded:"+config==null?"null":config.toString());
125 reloadConfigFlag=false;
127 public void onDeviceRegistered(String mountPointName) {
129 if(this.config.isOff())
131 ONFCoreNetworkElementRepresentation ne =this.deviceManager!=null?this.deviceManager.getNeByMountpoint(mountPointName):null;
132 this.onDeviceRegistered(mountPointName,ne!=null?ne.getInventoryInformation("MWPS"):InventoryInformation.DEFAULT);
135 public void onDeviceRegistered(String mountPointName,InventoryInformation i) {
137 if(this.config.isOff())
139 new Thread(new AaiCreateRequestRunnable(mountPointName, i.getType(), i.getModel(), i.getVendor(), i.getDeviceIpv4(), i.getInterfaceUuidList())).start();
141 public void onDeviceUnregistered(String mountPointName) {
143 if(this.config.isOff())
145 if(this.config.doDeleteOnMountPointRemoved())
146 new Thread(new AaiDeleteRequestRunnable(mountPointName)).start();
148 LOG.debug("prevent deleting device "+mountPointName+" by config");
152 public void close() throws Exception {
153 this.htconfig.unregisterConfigChangedListener(configChangedListener);