mirror of
				https://github.com/Telecominfraproject/wlan-cloud-opensync-controller.git
				synced 2025-10-31 02:27:49 +00:00 
			
		
		
		
	WIFI-1849: Gateway: Update status with additional manufacturing data
This commit is contained in:
		| @@ -573,6 +573,56 @@ public class OpensyncExternalIntegrationCloud implements OpensyncExternalIntegra | ||||
|             Status protocolStatus = statusServiceInterface.update(statusRecord); | ||||
|             LOG.debug("ProtocolStatus for AP {} updated to {}", ce.getName(), protocolStatus); | ||||
|  | ||||
|             statusRecord = statusServiceInterface.getOrNull(ce.getCustomerId(), ce.getId(), StatusDataType.EQUIPMENT_MANUFACTURER_DATA); | ||||
|             if (statusRecord == null) { | ||||
|                 statusRecord = new Status(); | ||||
|                 statusRecord.setCustomerId(ce.getCustomerId()); | ||||
|                 statusRecord.setEquipmentId(ce.getId()); | ||||
|                 statusRecord.setStatusDataType(StatusDataType.EQUIPMENT_MANUFACTURER_DATA); | ||||
|                 EquipmentManufacturerDataStatus statusData = new EquipmentManufacturerDataStatus(); | ||||
|                 statusRecord.setDetails(statusData); | ||||
|             } | ||||
|  | ||||
|             EquipmentManufacturerQrCode qrCode = new EquipmentManufacturerQrCode(); | ||||
|  | ||||
|             if (connectNodeInfo.qrCode != null) { | ||||
|                 if (connectNodeInfo.qrCode.get("DT") != null) { | ||||
|                     qrCode.setDeviceType(EquipmentType.getByName(connectNodeInfo.qrCode.get("DT"))); | ||||
|                 } | ||||
|                 if (connectNodeInfo.qrCode.get("VN") != null) { | ||||
|                     qrCode.setVendorName(connectNodeInfo.qrCode.get("VN").toUpperCase()); | ||||
|                 } | ||||
|                 if (connectNodeInfo.qrCode.get("DM") != null) { | ||||
|                     qrCode.setDeviceMac(MacAddress.valueOf(connectNodeInfo.qrCode.get("DM"))); | ||||
|                 } | ||||
|                 qrCode.setHwRevision(connectNodeInfo.qrCode.get("HW")); | ||||
|                 qrCode.setModelName(connectNodeInfo.qrCode.get("MN")); | ||||
|                 qrCode.setSerialNumber(connectNodeInfo.qrCode.get("SN")); | ||||
|             } | ||||
|  | ||||
|             ((EquipmentManufacturerDataStatus) statusRecord.getDetails()).setSkuNumber(connectNodeInfo.skuNumber);            | ||||
|             ((EquipmentManufacturerDataStatus) statusRecord.getDetails()).setModel(connectNodeInfo.model); | ||||
|             ((EquipmentManufacturerDataStatus) statusRecord.getDetails()).setRevision(connectNodeInfo.revision); | ||||
|             ((EquipmentManufacturerDataStatus) statusRecord.getDetails()).setSerialNumber(connectNodeInfo.serialNumber); | ||||
|             ((EquipmentManufacturerDataStatus) statusRecord.getDetails()).setQrCode(qrCode); | ||||
|              if (connectNodeInfo.manufacturerName != null) { | ||||
|                  ((EquipmentManufacturerDataStatus) statusRecord.getDetails()).setEquipmentManufacturer(EquipmentManufacturer.getByName(connectNodeInfo.manufacturerName.toUpperCase())); | ||||
|              }                        | ||||
|             ((EquipmentManufacturerDataStatus) statusRecord.getDetails()).setManufacturerDate(connectNodeInfo.manufacturerDate); | ||||
|             ((EquipmentManufacturerDataStatus) statusRecord.getDetails()).setManufacturerUrl(connectNodeInfo.manufacturerUrl); | ||||
|             ((EquipmentManufacturerDataStatus) statusRecord.getDetails()).setModelDescription(connectNodeInfo.modelDescription); | ||||
|             ((EquipmentManufacturerDataStatus) statusRecord.getDetails()).setReferenceDesign(connectNodeInfo.referenceDesign); | ||||
|             if (connectNodeInfo.certificationRegion != null && !connectNodeInfo.certificationRegion.equalsIgnoreCase("unknown")) { | ||||
|                 ((EquipmentManufacturerDataStatus) statusRecord.getDetails()).setCertificationRegion( | ||||
|                         CountryCode.getByName(connectNodeInfo.certificationRegion.toUpperCase())); | ||||
|             } | ||||
|             if (connectNodeInfo.macAddress != null && !connectNodeInfo.macAddress.equalsIgnoreCase("unknown")) { | ||||
|                 ((EquipmentManufacturerDataStatus) statusRecord.getDetails()).setMacAddress(MacAddress.valueOf(connectNodeInfo.macAddress)); | ||||
|             } | ||||
|  | ||||
|             Status manufacturerStatus = statusServiceInterface.update(statusRecord); | ||||
|             LOG.debug("EQUIPMENT_MANUFACTURER_DATA for AP {} updated to {}", ce.getName(), manufacturerStatus); | ||||
|  | ||||
|             statusRecord = statusServiceInterface.getOrNull(ce.getCustomerId(), ce.getId(), StatusDataType.FIRMWARE); | ||||
|             if (statusRecord == null) { | ||||
|                 statusRecord = new Status(); | ||||
| @@ -1664,33 +1714,48 @@ public class OpensyncExternalIntegrationCloud implements OpensyncExternalIntegra | ||||
|  | ||||
|     private Status configureManufacturerDetailsStatus(OpensyncAWLANNode node, int customerId, long equipmentId) { | ||||
|  | ||||
|         Status manufacturerData = null; | ||||
|         EquipmentManufacturerQrCode qrCode = null; | ||||
|         if (node.getQrCode() != null) { | ||||
|             qrCode = new EquipmentManufacturerQrCode(EquipmentType.getByName(node.getQrCode().get("DT").toUpperCase()), | ||||
|                     MacAddress.valueOf(node.getQrCode().get("DM")), node.getQrCode().get("VN"), node.getQrCode().get("SN"), node.getQrCode().get("MN"), | ||||
|                     node.getQrCode().get("HW")); | ||||
|         Status statusRecord = statusServiceInterface.getOrNull(customerId, equipmentId, StatusDataType.EQUIPMENT_MANUFACTURER_DATA); | ||||
|         if (statusRecord == null) { | ||||
|             statusRecord = new Status(); | ||||
|             statusRecord.setCustomerId(customerId); | ||||
|             statusRecord.setEquipmentId(equipmentId); | ||||
|             statusRecord.setStatusDataType(StatusDataType.EQUIPMENT_MANUFACTURER_DATA); | ||||
|             EquipmentManufacturerDataStatus statusData = new EquipmentManufacturerDataStatus(); | ||||
|             statusRecord.setDetails(statusData); | ||||
|         } | ||||
|  | ||||
|          | ||||
|         if (qrCode != null && node.getReferenceDesign() != null && node.getCertificationRegion() != null && node.getManufacturerDate() != null | ||||
|                 && node.getManufacturerName() != null && node.getManufacturerUrl() != null && node.getId() != null) { | ||||
|             EquipmentManufacturerDataStatus reportedDataStatus = new EquipmentManufacturerDataStatus(node.getSkuNumber(), node.getModel(), node.getRevision(), | ||||
|                     node.getSerialNumber(), qrCode, EquipmentManufacturer.getByName(node.getManufacturerName()), node.getManufacturerDate(), | ||||
|                     node.getManufacturerUrl(), node.getModelDescription(), node.getReferenceDesign(), CountryCode.getByName(node.getCertificationRegion()), | ||||
|                     MacAddress.valueOf(node.getId())); | ||||
|              | ||||
|             manufacturerData = new Status(); | ||||
|             manufacturerData.setCustomerId(customerId); | ||||
|             manufacturerData.setDetails(reportedDataStatus); | ||||
|             manufacturerData.setEquipmentId(equipmentId); | ||||
|             manufacturerData.setStatusDataType(StatusDataType.EQUIPMENT_MANUFACTURER_DATA); | ||||
|              | ||||
|         EquipmentManufacturerQrCode qrCode = new EquipmentManufacturerQrCode(); | ||||
|  | ||||
|         if (node.qrCode != null) { | ||||
|             qrCode.setDeviceType(EquipmentType.getByName(node.qrCode.get("DT"))); | ||||
|             qrCode.setVendorName(node.qrCode.get("VN")); | ||||
|             qrCode.setDeviceMac(MacAddress.valueOf(node.qrCode.get("DM"))); | ||||
|             qrCode.setHwRevision(node.qrCode.get("HW")); | ||||
|             qrCode.setModelName(node.qrCode.get("MN")); | ||||
|             qrCode.setSerialNumber(node.qrCode.get("SN")); | ||||
|         } | ||||
|  | ||||
|         ((EquipmentManufacturerDataStatus) statusRecord.getDetails()).setSkuNumber(node.skuNumber);            | ||||
|         ((EquipmentManufacturerDataStatus) statusRecord.getDetails()).setModel(node.model); | ||||
|         ((EquipmentManufacturerDataStatus) statusRecord.getDetails()).setRevision(node.revision); | ||||
|         ((EquipmentManufacturerDataStatus) statusRecord.getDetails()).setSerialNumber(node.serialNumber); | ||||
|         ((EquipmentManufacturerDataStatus) statusRecord.getDetails()).setQrCode(qrCode); | ||||
|          if (node.manufacturerName != null && !node.manufacturerName.equalsIgnoreCase("unknown")) { | ||||
|              ((EquipmentManufacturerDataStatus) statusRecord.getDetails()).setEquipmentManufacturer(EquipmentManufacturer.getByName(node.manufacturerName)); | ||||
|          }                        | ||||
|         ((EquipmentManufacturerDataStatus) statusRecord.getDetails()).setManufacturerDate(node.manufacturerDate); | ||||
|         ((EquipmentManufacturerDataStatus) statusRecord.getDetails()).setManufacturerUrl(node.manufacturerUrl); | ||||
|         ((EquipmentManufacturerDataStatus) statusRecord.getDetails()).setModelDescription(node.modelDescription); | ||||
|         ((EquipmentManufacturerDataStatus) statusRecord.getDetails()).setReferenceDesign(node.referenceDesign); | ||||
|         if (node.certificationRegion != null && !node.certificationRegion.equalsIgnoreCase("unknown")) { | ||||
|             ((EquipmentManufacturerDataStatus) statusRecord.getDetails()).setCertificationRegion( | ||||
|                     CountryCode.getByName(node.certificationRegion.toUpperCase())); | ||||
|         } | ||||
|         if (node.getId() != null && !node.getId().equalsIgnoreCase("unknown")) { | ||||
|             ((EquipmentManufacturerDataStatus) statusRecord.getDetails()).setMacAddress(MacAddress.valueOf(node.getId())); | ||||
|         } | ||||
|  | ||||
|  | ||||
|         return manufacturerData; | ||||
|         return statusRecord; | ||||
|     } | ||||
|  | ||||
|     private Status configureProtocolStatus(OpensyncAWLANNode node, int customerId, long equipmentId, String reportedSwImageName, | ||||
|   | ||||
| @@ -68,6 +68,38 @@ public class OpensyncAWLANNode extends OpensyncAPBase { | ||||
|  | ||||
|     public OpensyncAWLANNode(Row row) { | ||||
|         this(); | ||||
|          | ||||
| //        mqtt_settings        {"key":"string","max":"unlimited","min":0,"value":"string"} | ||||
| //        model                {"key":"string","min":0} | ||||
| //        sku_number           {"key":"string","min":0} | ||||
| //        version_matrix       {"key":"string","max":"unlimited","min":0,"value":{"maxLength":128,"type":"string"}} | ||||
| //        model_description    "string" | ||||
| //        certification_region "string" | ||||
| //        id                   "string" | ||||
| //        firmware_version     "string" | ||||
| //        firmware_url         {"key":{"maxLength":256,"type":"string"}} | ||||
| //        _uuid                "uuid" | ||||
| //        upgrade_dl_timer     "integer" | ||||
| //        reference_design     "string" | ||||
| //        platform_version     "string" | ||||
| //        firmware_pass        {"key":{"maxLength":256,"type":"string"}} | ||||
| //        upgrade_timer        "integer" | ||||
| //        redirector_addr      "string" | ||||
| //        led_config           {"key":"string","max":"unlimited","min":0,"value":"string"} | ||||
| //        max_backoff          "integer" | ||||
| //        mqtt_headers         {"key":"string","max":"unlimited","min":0,"value":"string"} | ||||
| //        serial_number        {"key":"string","min":0} | ||||
| //        _version             "uuid" | ||||
| //        upgrade_status       "integer" | ||||
| //        device_mode          {"key":{"enum":["set",["battery","cloud","custom","monitor"]],"type":"string"},"min":0} | ||||
| //        min_backoff          "integer" | ||||
| //        manufacturer_date    "string" | ||||
| //        mqtt_topics          {"key":"string","max":"unlimited","min":0,"value":{"maxLength":128,"type":"string"}} | ||||
| //        revision             "string" | ||||
| //        manufacturer_name    "string" | ||||
| //        manufacturer_url     "string" | ||||
| //        manager_addr         "string" | ||||
| //        factory_reset        {"key":"boolean","min":0} | ||||
|         Map<String, Value> map = row.getColumns(); | ||||
|         if (map.get("mqtt_settings") != null) { | ||||
|             this.setMqttSettings(row.getMapColumn("mqtt_settings")); | ||||
| @@ -88,25 +120,25 @@ public class OpensyncAWLANNode extends OpensyncAPBase { | ||||
|             this.setId(getSingleValueFromSet(row, "id")); | ||||
|         } | ||||
|         if (map.get("reference_design") != null) { | ||||
|             this.setReferenceDesign(getSingleValueFromSet(row, "reference_design")); | ||||
|             this.setReferenceDesign(row.getStringColumn("reference_design")); | ||||
|         } | ||||
|         if (map.get("qr_code") != null) { | ||||
|             this.setQrCode(row.getMapColumn("qr_code")); | ||||
|         } | ||||
|         if ((map.get("model_description") != null)) { | ||||
|             this.setModelDescription(getSingleValueFromSet(row, "model_description")); | ||||
|             this.setModelDescription(row.getStringColumn("model_description")); | ||||
|         } | ||||
|         if ((map.get("manufacturer_url") != null)) { | ||||
|             this.setManufacturerUrl(getSingleValueFromSet(row, "manufacturer_url")); | ||||
|             this.setManufacturerUrl(row.getStringColumn("manufacturer_url")); | ||||
|         } | ||||
|         if ((map.get("manufacturer_name") != null)) { | ||||
|             this.setManufacturerName(getSingleValueFromSet(row, "manufacturer_name")); | ||||
|             this.setManufacturerName(row.getStringColumn("manufacturer_name")); | ||||
|         } | ||||
|         if ((map.get("manufacturer_date") != null)) { | ||||
|             this.setManufacturerDate(getSingleValueFromSet(row, "manufacturer_date")); | ||||
|             this.setManufacturerDate(row.getStringColumn("manufacturer_date")); | ||||
|         } | ||||
|         if (map.get("certification_region") != null) { | ||||
|             this.setCertificationRegion(getSingleValueFromSet(row, "certification_region")); | ||||
|             this.setCertificationRegion(row.getStringColumn("certification_region")); | ||||
|         } | ||||
|         if (map.get("version_matrix") != null) { | ||||
|             this.setVersionMatrix(row.getMapColumn("version_matrix")); | ||||
|   | ||||
| @@ -170,12 +170,16 @@ public class OvsdbNode extends OvsdbDaoBase { | ||||
|  | ||||
|             DatabaseSchema dbSchema = ovsdbClient.getSchema(ovsdbName).get(); | ||||
|             Set<String> keys = dbSchema.getTables().get(awlanNodeDbTable).getColumns().keySet(); | ||||
|             if (keys.containsAll(Set.of("reference_design", "qr_code", "model_description", "manufacturer_url", "manufacturer_name", "manufacturer_date", | ||||
|             if (keys.containsAll(Set.of("reference_design", "model_description", "manufacturer_url", "manufacturer_name", "manufacturer_date", | ||||
|                     "certification_region"))) { | ||||
|                 columns.addAll(Set.of("reference_design", "qr_code", "model_description", "manufacturer_url", "manufacturer_name", "manufacturer_date", | ||||
|                 columns.addAll(Set.of("reference_design", "model_description", "manufacturer_url", "manufacturer_name", "manufacturer_date", | ||||
|                         "certification_region")); | ||||
|             } | ||||
|  | ||||
|             if (keys.contains("qr_code")) { | ||||
|                 columns.add("qr_code"); | ||||
|             } | ||||
|              | ||||
|             operations.add(new Select(awlanNodeDbTable, conditions, columns)); | ||||
|             CompletableFuture<OperationResult[]> fResult = ovsdbClient.transact(ovsdbName, operations); | ||||
|             OperationResult[] result = fResult.get(ovsdbTimeoutSec, TimeUnit.SECONDS); | ||||
| @@ -207,17 +211,20 @@ public class OvsdbNode extends OvsdbDaoBase { | ||||
|             ret.serialNumber = getSingleValueFromSet(row, "serial_number"); | ||||
|             ret.model = getSingleValueFromSet(row, "model"); | ||||
|  | ||||
|             if (keys.containsAll(Set.of("reference_design", "qr_code", "model_description", "manufacturer_url", "manufacturer_name", "manufacturer_date", | ||||
|             if (keys.containsAll(Set.of("reference_design", "model_description", "manufacturer_url", "manufacturer_name", "manufacturer_date", | ||||
|                     "certification_region"))) { | ||||
|                     ret.referenceDesign = getSingleValueFromSet(row, "reference_design"); | ||||
|                     ret.qrCode =  row.getMapColumn("qr_code"); | ||||
|                     ret.modelDescription = getSingleValueFromSet(row, "model_description"); | ||||
|                     ret.manufacturerUrl = getSingleValueFromSet(row, "manufacturer_url"); | ||||
|                     ret.manufacturerName = getSingleValueFromSet(row, "manufacturer_name"); | ||||
|                     ret.manufacturerDate =   getSingleValueFromSet(row, "manufacturer_date"); | ||||
|                     ret.certificationRegion =  getSingleValueFromSet(row, "certification_region"); | ||||
|                     ret.referenceDesign = row.getStringColumn("reference_design"); | ||||
|                     ret.modelDescription = row.getStringColumn("model_description"); | ||||
|                     ret.manufacturerUrl = row.getStringColumn("manufacturer_url"); | ||||
|                     ret.manufacturerName = row.getStringColumn("manufacturer_name"); | ||||
|                     ret.manufacturerDate =  row.getStringColumn("manufacturer_date"); | ||||
|                     ret.certificationRegion =  row.getStringColumn("certification_region"); | ||||
|             } | ||||
|  | ||||
|             if (keys.contains("qr_code")) { | ||||
|                 ret.qrCode =  row.getMapColumn("qr_code"); | ||||
|             } | ||||
|              | ||||
|             // now populate macAddress, ipV4Address from Wifi_Inet_State | ||||
|             // first look them up for if_name = br-wan | ||||
|             fillInWanIpAddressAndMac(ovsdbClient, ret, defaultWanInterfaceType, defaultWanInterfaceName); | ||||
|   | ||||
| @@ -217,7 +217,7 @@ public class OvsdbDaoTest { | ||||
|         apConfig.setEquipmentLocation(location); | ||||
|         ovsdbDao.getRadiusAccountingConfiguration(apConfig, ssidConfig, security); | ||||
|  | ||||
|         assert (security.get("radius_acct_interval").equals("60")); | ||||
|         assert (security.get("radius_acct_interval").equals("0")); | ||||
|         assert (security.get("radius_acct_ip").equals("192.168.0.1")); | ||||
|         assert (security.get("radius_acct_port").equals("1813")); | ||||
|         assert (security.get("radius_acct_secret").equals("secret")); | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Mike Hansen
					Mike Hansen