From ae4d2d2339c3e90a942bf6ae71f5190396e0a192 Mon Sep 17 00:00:00 2001 From: Mike Hansen Date: Fri, 18 Sep 2020 12:45:57 -0400 Subject: [PATCH] WIFI-816: OSGW add retrieval of FW_IMAGE_ACTIVE and FW_IMAGE_INACTIVE and update cloud database via Status --- .../OpensyncExternalIntegrationCloud.java | 94 +++++++++++++++---- ...ternalIntegrationMqttMessageProcessor.java | 6 +- .../dao/utilities/OvsdbStringConstants.java | 17 ++++ .../OvsdbToWlanCloudTypeMappingUtility.java | 14 +-- 4 files changed, 98 insertions(+), 33 deletions(-) create mode 100644 opensync-gateway/src/main/java/com/telecominfraproject/wlan/opensync/ovsdb/dao/utilities/OvsdbStringConstants.java diff --git a/opensync-ext-cloud/src/main/java/com/telecominfraproject/wlan/opensync/external/integration/OpensyncExternalIntegrationCloud.java b/opensync-ext-cloud/src/main/java/com/telecominfraproject/wlan/opensync/external/integration/OpensyncExternalIntegrationCloud.java index 9e3438b..9125fe2 100644 --- a/opensync-ext-cloud/src/main/java/com/telecominfraproject/wlan/opensync/external/integration/OpensyncExternalIntegrationCloud.java +++ b/opensync-ext-cloud/src/main/java/com/telecominfraproject/wlan/opensync/external/integration/OpensyncExternalIntegrationCloud.java @@ -68,6 +68,7 @@ import com.telecominfraproject.wlan.opensync.external.integration.models.Opensyn import com.telecominfraproject.wlan.opensync.external.integration.models.OpensyncAWLANNode; import com.telecominfraproject.wlan.opensync.external.integration.models.OpensyncWifiAssociatedClients; import com.telecominfraproject.wlan.opensync.ovsdb.dao.models.enumerations.DhcpFpDeviceType; +import com.telecominfraproject.wlan.opensync.ovsdb.dao.utilities.OvsdbStringConstants; import com.telecominfraproject.wlan.opensync.ovsdb.dao.utilities.OvsdbToWlanCloudTypeMappingUtility; import com.telecominfraproject.wlan.profile.ProfileServiceInterface; import com.telecominfraproject.wlan.profile.models.Profile; @@ -129,7 +130,7 @@ public class OpensyncExternalIntegrationCloud implements OpensyncExternalIntegra @Autowired private OpensyncCloudGatewayController gatewayController; - private String fwImageNameKey = "FW_IMAGE_NAME"; + @Value("${tip.wlan.ovsdb.autoProvisionedCustomerId:1970}") private int autoProvisionedCustomerId; @Value("${tip.wlan.ovsdb.autoProvisionedLocationId:8}") @@ -336,8 +337,8 @@ public class OpensyncExternalIntegrationCloud implements OpensyncExternalIntegra LOG.info("AP {} got connected to the gateway", apId); LOG.info("ConnectNodeInfo {}", connectNodeInfo); - if (connectNodeInfo.versionMatrix.containsKey(fwImageNameKey)) { - reconcileFwVersionToTrack(ce, connectNodeInfo.versionMatrix.get(fwImageNameKey), connectNodeInfo.model); + if (connectNodeInfo.versionMatrix.containsKey(OvsdbStringConstants.FW_IMAGE_ACTIVE_KEY)) { + reconcileFwVersionToTrack(ce, connectNodeInfo.versionMatrix.get(OvsdbStringConstants.FW_IMAGE_ACTIVE_KEY), connectNodeInfo.model); } else { LOG.info("Cloud based firmware upgrade is not supported for this AP"); } @@ -460,9 +461,19 @@ public class OpensyncExternalIntegrationCloud implements OpensyncExternalIntegra protocolStatusData.setCountryCode("CA"); protocolStatusData.setReportedCC(CountryCode.ca); protocolStatusData.setReportedHwVersion(connectNodeInfo.platformVersion); - if (connectNodeInfo.versionMatrix.containsKey(fwImageNameKey)) { - protocolStatusData.setReportedSwVersion(connectNodeInfo.versionMatrix.get(fwImageNameKey)); - protocolStatusData.setReportedSwAltVersion(connectNodeInfo.versionMatrix.get(fwImageNameKey)); + if (connectNodeInfo.versionMatrix.containsKey(OvsdbStringConstants.FW_IMAGE_ACTIVE_KEY)) { + protocolStatusData.setReportedSwVersion(connectNodeInfo.versionMatrix.get(OvsdbStringConstants.FW_IMAGE_ACTIVE_KEY)); + } else if (connectNodeInfo.versionMatrix.containsKey(OvsdbStringConstants.FW_IMAGE_NAME_KEY)){ + protocolStatusData.setReportedSwVersion(connectNodeInfo.versionMatrix.get(OvsdbStringConstants.FW_IMAGE_NAME_KEY)); + } else { + protocolStatusData.setReportedSwVersion("Unknown"); + } + if (connectNodeInfo.versionMatrix.containsKey(OvsdbStringConstants.FW_IMAGE_INACTIVE_KEY)) { + protocolStatusData.setReportedSwAltVersion(connectNodeInfo.versionMatrix.get(OvsdbStringConstants.FW_IMAGE_INACTIVE_KEY)); + }else if (connectNodeInfo.versionMatrix.containsKey(OvsdbStringConstants.FW_IMAGE_NAME_KEY)){ + protocolStatusData.setReportedSwVersion(connectNodeInfo.versionMatrix.get(OvsdbStringConstants.FW_IMAGE_NAME_KEY)); + } else { + protocolStatusData.setReportedSwVersion("Unknown"); } try { protocolStatusData.setReportedIpV4Addr(InetAddress.getByName(connectNodeInfo.ipV4Address)); @@ -488,11 +499,27 @@ public class OpensyncExternalIntegrationCloud implements OpensyncExternalIntegra } EquipmentUpgradeStatusData fwUpgradeStatusData = (EquipmentUpgradeStatusData) statusRecord.getDetails(); - if (connectNodeInfo.versionMatrix.containsKey(fwImageNameKey)) { - fwUpgradeStatusData.setActiveSwVersion(connectNodeInfo.versionMatrix.get(fwImageNameKey)); - fwUpgradeStatusData.setAlternateSwVersion(connectNodeInfo.versionMatrix.get(fwImageNameKey)); + if (connectNodeInfo.versionMatrix.containsKey(OvsdbStringConstants.FW_IMAGE_ACTIVE_KEY)) { + fwUpgradeStatusData.setActiveSwVersion(connectNodeInfo.versionMatrix.get(OvsdbStringConstants.FW_IMAGE_ACTIVE_KEY)); + } else if (connectNodeInfo.versionMatrix.containsKey(OvsdbStringConstants.FW_IMAGE_NAME_KEY)){ + fwUpgradeStatusData.setActiveSwVersion(connectNodeInfo.versionMatrix.get(OvsdbStringConstants.FW_IMAGE_NAME_KEY)); + } else { + fwUpgradeStatusData.setActiveSwVersion("Unknown"); } + if (connectNodeInfo.versionMatrix.containsKey(OvsdbStringConstants.FW_IMAGE_INACTIVE_KEY)) { + fwUpgradeStatusData.setAlternateSwVersion(connectNodeInfo.versionMatrix.get(OvsdbStringConstants.FW_IMAGE_INACTIVE_KEY)); + } else if (connectNodeInfo.versionMatrix.containsKey(OvsdbStringConstants.FW_IMAGE_NAME_KEY)){ + fwUpgradeStatusData.setAlternateSwVersion(connectNodeInfo.versionMatrix.get(OvsdbStringConstants.FW_IMAGE_NAME_KEY)); + } else { + fwUpgradeStatusData.setAlternateSwVersion("Unknown"); + } + + if (fwUpgradeStatusData.getUpgradeState() == null) { fwUpgradeStatusData.setUpgradeState(EquipmentUpgradeState.undefined); + fwUpgradeStatusData.setUpgradeStartTime(null); + + } + statusRecord.setDetails(fwUpgradeStatusData); statusServiceInterface.update(statusRecord); @@ -1232,9 +1259,14 @@ public class OpensyncExternalIntegrationCloud implements OpensyncExternalIntegra } String reportedFwImageName = null; + String reportedAltFwImageName = null; - if (opensyncAPState.getVersionMatrix().containsKey(fwImageNameKey)) { - reportedFwImageName = opensyncAPState.getVersionMatrix().get(fwImageNameKey); + if (opensyncAPState.getVersionMatrix().containsKey(OvsdbStringConstants.FW_IMAGE_ACTIVE_KEY)) { + reportedFwImageName = opensyncAPState.getVersionMatrix().get(OvsdbStringConstants.FW_IMAGE_ACTIVE_KEY); + } + + if (opensyncAPState.getVersionMatrix().containsKey(OvsdbStringConstants.FW_IMAGE_INACTIVE_KEY)) { + reportedAltFwImageName = opensyncAPState.getVersionMatrix().get(OvsdbStringConstants.FW_IMAGE_INACTIVE_KEY); } EquipmentProtocolStatusData protocolStatusData = (EquipmentProtocolStatusData) protocolStatus.getDetails(); @@ -1242,7 +1274,7 @@ public class OpensyncExternalIntegrationCloud implements OpensyncExternalIntegra if (reportedFwImageName != null) { protocolStatusData.setReportedSwVersion(reportedFwImageName); } - protocolStatusData.setReportedSwAltVersion(reportedFwImageName); + protocolStatusData.setReportedSwAltVersion(reportedAltFwImageName); protocolStatusData.setReportedHwVersion(opensyncAPState.getPlatformVersion()); protocolStatusData.setSystemName(opensyncAPState.getModel()); @@ -1277,8 +1309,9 @@ public class OpensyncExternalIntegrationCloud implements OpensyncExternalIntegra .getDetails(); if (reportedFwImageName != null) { if (!firmwareStatusData.getActiveSwVersion().equals(reportedFwImageName) - || !firmwareStatusData.getUpgradeState().equals(fwUpgradeState)) { + || !firmwareStatusData.getUpgradeState().equals(fwUpgradeState) || !firmwareStatusData.getAlternateSwVersion().equals(reportedAltFwImageName)) { firmwareStatusData.setActiveSwVersion(reportedFwImageName); + firmwareStatusData.setAlternateSwVersion(reportedAltFwImageName); firmwareStatusData.setUpgradeState(fwUpgradeState, fwUpgradeFailureReason); firmwareStatus.setDetails(firmwareStatusData); updates.add(firmwareStatus); @@ -1306,8 +1339,9 @@ public class OpensyncExternalIntegrationCloud implements OpensyncExternalIntegra .getDetails(); if (reportedFwImageName != null) { if (!firmwareStatusData.getActiveSwVersion().equals(reportedFwImageName) - || !firmwareStatusData.getUpgradeState().equals(fwUpgradeState)) { + || !firmwareStatusData.getUpgradeState().equals(fwUpgradeState) || !firmwareStatusData.getAlternateSwVersion().equals(reportedAltFwImageName)) { firmwareStatusData.setActiveSwVersion(reportedFwImageName); + firmwareStatusData.setAlternateSwVersion(reportedAltFwImageName); firmwareStatusData.setUpgradeState(fwUpgradeState, fwUpgradeFailureReason); if (fwUpgradeState.equals(EquipmentUpgradeState.apply_initiated)) { firmwareStatusData.setUpgradeStartTime(System.currentTimeMillis()); @@ -1335,15 +1369,15 @@ public class OpensyncExternalIntegrationCloud implements OpensyncExternalIntegra EquipmentUpgradeStatusData firmwareStatusData = (EquipmentUpgradeStatusData) firmwareStatus .getDetails(); if (reportedFwImageName != null) { - if (!firmwareStatusData.getActiveSwVersion().equals(reportedFwImageName) + if (!firmwareStatusData.getActiveSwVersion().equals(reportedFwImageName) || !firmwareStatusData.getAlternateSwVersion().equals(reportedAltFwImageName) || !firmwareStatusData.getUpgradeState().equals(fwUpgradeState) || !firmwareStatusData.getReason().equals(fwUpgradeFailureReason)) { firmwareStatusData.setActiveSwVersion(reportedFwImageName); + firmwareStatusData.setAlternateSwVersion(reportedAltFwImageName); firmwareStatusData.setUpgradeState(fwUpgradeState, fwUpgradeFailureReason); firmwareStatus.setDetails(firmwareStatusData); updates.add(firmwareStatus); updates = statusServiceInterface.update(updates); - reconcileFwVersionToTrack(ce, reportedFwImageName, opensyncAPState.getModel()); } else { if (!updates.isEmpty()) { @@ -1831,6 +1865,14 @@ public class OpensyncExternalIntegrationCloud implements OpensyncExternalIntegra clientDhcpDetails.setGatewayIp(InetAddress.getByName(dhcpLeasedIps.get("gateway"))); } catch (UnknownHostException e) { LOG.error("Invalid Gateway IP", e); + + try { + clientDhcpDetails.setGatewayIp(InetAddress.getByAddress(dhcpLeasedIps.get("gateway").getBytes())); + } catch (UnknownHostException e1) { + // TODO Auto-generated catch block + LOG.error("Invalid Gateway Address", e); + } + } } @@ -1839,7 +1881,12 @@ public class OpensyncExternalIntegrationCloud implements OpensyncExternalIntegra clientDhcpDetails.setSubnetMask(InetAddress.getByName(dhcpLeasedIps.get("subnet_mask"))); } catch (UnknownHostException e) { LOG.error("Invalid Subnet Mask", e); - + try { + clientDhcpDetails.setGatewayIp(InetAddress.getByAddress(dhcpLeasedIps.get("subnet_mask").getBytes())); + } catch (UnknownHostException e1) { + // TODO Auto-generated catch block + LOG.error("Invalid Subnet Mask Address", e); + } } } @@ -1848,6 +1895,12 @@ public class OpensyncExternalIntegrationCloud implements OpensyncExternalIntegra clientDhcpDetails.setPrimaryDns(InetAddress.getByName(dhcpLeasedIps.get("primary_dns"))); } catch (UnknownHostException e) { LOG.error("Invalid Primary DNS", e); + try { + clientDhcpDetails.setGatewayIp(InetAddress.getByAddress(dhcpLeasedIps.get("primary_dns").getBytes())); + } catch (UnknownHostException e1) { + // TODO Auto-generated catch block + LOG.error("Invalid Primary DNS Address", e); + } } } @@ -1857,7 +1910,12 @@ public class OpensyncExternalIntegrationCloud implements OpensyncExternalIntegra clientDhcpDetails.setSecondaryDns(InetAddress.getByName(dhcpLeasedIps.get("secondary_dns"))); } catch (UnknownHostException e) { LOG.error("Invalid Secondary DNS", e); - + try { + clientDhcpDetails.setGatewayIp(InetAddress.getByAddress(dhcpLeasedIps.get("secondary_dns").getBytes())); + } catch (UnknownHostException e1) { + // TODO Auto-generated catch block + LOG.error("Invalid Seconary DNS Address", e); + } } } diff --git a/opensync-ext-cloud/src/main/java/com/telecominfraproject/wlan/opensync/external/integration/OpensyncExternalIntegrationMqttMessageProcessor.java b/opensync-ext-cloud/src/main/java/com/telecominfraproject/wlan/opensync/external/integration/OpensyncExternalIntegrationMqttMessageProcessor.java index e101812..6241cbf 100644 --- a/opensync-ext-cloud/src/main/java/com/telecominfraproject/wlan/opensync/external/integration/OpensyncExternalIntegrationMqttMessageProcessor.java +++ b/opensync-ext-cloud/src/main/java/com/telecominfraproject/wlan/opensync/external/integration/OpensyncExternalIntegrationMqttMessageProcessor.java @@ -287,8 +287,6 @@ public class OpensyncExternalIntegrationMqttMessageProcessor { void processEventReport(Report report, int customerId, long equipmentId, String apId, long locationId) { - LOG.debug("Processing EventReport List {}", report.getEventReportList()); - report.getEventReportList().stream().forEach(e -> { LOG.info("Received EventReport {}", e); @@ -1608,7 +1606,7 @@ public class OpensyncExternalIntegrationMqttMessageProcessor { void populateApClientMetrics(List metricRecordList, Report report, int customerId, long equipmentId, long locationId) { - LOG.debug("populateApClientMetrics {} for Customer {} Equipment {}", report.getClientsList(), customerId, + LOG.debug("populateApClientMetrics for Customer {} Equipment {}", customerId, equipmentId); for (ClientReport clReport : report.getClientsList()) { @@ -2100,8 +2098,6 @@ public class OpensyncExternalIntegrationMqttMessageProcessor { ChannelInfo createChannelInfo(long equipmentId, RadioType radioType, List surveySampleList, ChannelBandwidth channelBandwidth) { - LOG.debug("createChannelInfo::SurveySampleList {}", surveySampleList); - int busyTx = 0; /* Tx */ int busySelf = 0; /* Rx_self (derived from succesful Rx frames) */ int busy = 0; /* Busy = Rx + Tx + Interference */ diff --git a/opensync-gateway/src/main/java/com/telecominfraproject/wlan/opensync/ovsdb/dao/utilities/OvsdbStringConstants.java b/opensync-gateway/src/main/java/com/telecominfraproject/wlan/opensync/ovsdb/dao/utilities/OvsdbStringConstants.java new file mode 100644 index 0000000..fe0ef40 --- /dev/null +++ b/opensync-gateway/src/main/java/com/telecominfraproject/wlan/opensync/ovsdb/dao/utilities/OvsdbStringConstants.java @@ -0,0 +1,17 @@ +package com.telecominfraproject.wlan.opensync.ovsdb.dao.utilities; + + +public class OvsdbStringConstants { + + // freq_band + public static final String OVSDB_FREQ_BAND_5G = "5G"; + public static final String OVSDB_FREQ_BAND_5GL = "5GL"; + public static final String OVSDB_FREQ_BAND_5GU = "5GU"; + public static final String OVSDB_FREQ_BAND_2pt4G = "2.4G"; + + // AWLAN_Node version_matrix + public static final String FW_IMAGE_NAME_KEY = "FW_IMAGE_NAME"; + public static final String FW_IMAGE_ACTIVE_KEY = "FW_IMAGE_ACTIVE"; + public static final String FW_IMAGE_INACTIVE_KEY = "FW_IMAGE_INACTIVE"; + +} diff --git a/opensync-gateway/src/main/java/com/telecominfraproject/wlan/opensync/ovsdb/dao/utilities/OvsdbToWlanCloudTypeMappingUtility.java b/opensync-gateway/src/main/java/com/telecominfraproject/wlan/opensync/ovsdb/dao/utilities/OvsdbToWlanCloudTypeMappingUtility.java index c85e022..9de44af 100644 --- a/opensync-gateway/src/main/java/com/telecominfraproject/wlan/opensync/ovsdb/dao/utilities/OvsdbToWlanCloudTypeMappingUtility.java +++ b/opensync-gateway/src/main/java/com/telecominfraproject/wlan/opensync/ovsdb/dao/utilities/OvsdbToWlanCloudTypeMappingUtility.java @@ -14,12 +14,6 @@ import sts.OpensyncStats.StateUpDown; public class OvsdbToWlanCloudTypeMappingUtility { - - public static final String OVSDB_FREQ_BAND_5G = "5G"; - public static final String OVSDB_FREQ_BAND_5GL = "5GL"; - public static final String OVSDB_FREQ_BAND_5GU = "5GU"; - public static final String OVSDB_FREQ_BAND_2pt4G = "2.4G"; - public static ClientType getClientTypeForDhcpFpDeviceType(DhcpFpDeviceType dhcpFpDeviceType) { ClientType ret = ClientType.UNSUPPORTED; @@ -50,13 +44,13 @@ public class OvsdbToWlanCloudTypeMappingUtility { public static RadioType getRadioTypeForOvsdbRadioFreqBand(String ovsdbRadioFreqBand) { switch (ovsdbRadioFreqBand) { - case OVSDB_FREQ_BAND_2pt4G: + case OvsdbStringConstants.OVSDB_FREQ_BAND_2pt4G: return RadioType.is2dot4GHz; - case OVSDB_FREQ_BAND_5G: + case OvsdbStringConstants.OVSDB_FREQ_BAND_5G: return RadioType.is5GHz; - case OVSDB_FREQ_BAND_5GL: + case OvsdbStringConstants.OVSDB_FREQ_BAND_5GL: return RadioType.is5GHzL; - case OVSDB_FREQ_BAND_5GU: + case OvsdbStringConstants.OVSDB_FREQ_BAND_5GU: return RadioType.is5GHzU; default: return RadioType.UNSUPPORTED;