mirror of
https://github.com/Telecominfraproject/wlan-cloud-opensync-controller.git
synced 2025-11-01 02:57: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);
|
Status protocolStatus = statusServiceInterface.update(statusRecord);
|
||||||
LOG.debug("ProtocolStatus for AP {} updated to {}", ce.getName(), protocolStatus);
|
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);
|
statusRecord = statusServiceInterface.getOrNull(ce.getCustomerId(), ce.getId(), StatusDataType.FIRMWARE);
|
||||||
if (statusRecord == null) {
|
if (statusRecord == null) {
|
||||||
statusRecord = new Status();
|
statusRecord = new Status();
|
||||||
@@ -1664,33 +1714,48 @@ public class OpensyncExternalIntegrationCloud implements OpensyncExternalIntegra
|
|||||||
|
|
||||||
private Status configureManufacturerDetailsStatus(OpensyncAWLANNode node, int customerId, long equipmentId) {
|
private Status configureManufacturerDetailsStatus(OpensyncAWLANNode node, int customerId, long equipmentId) {
|
||||||
|
|
||||||
Status manufacturerData = null;
|
Status statusRecord = statusServiceInterface.getOrNull(customerId, equipmentId, StatusDataType.EQUIPMENT_MANUFACTURER_DATA);
|
||||||
EquipmentManufacturerQrCode qrCode = null;
|
if (statusRecord == null) {
|
||||||
if (node.getQrCode() != null) {
|
statusRecord = new Status();
|
||||||
qrCode = new EquipmentManufacturerQrCode(EquipmentType.getByName(node.getQrCode().get("DT").toUpperCase()),
|
statusRecord.setCustomerId(customerId);
|
||||||
MacAddress.valueOf(node.getQrCode().get("DM")), node.getQrCode().get("VN"), node.getQrCode().get("SN"), node.getQrCode().get("MN"),
|
statusRecord.setEquipmentId(equipmentId);
|
||||||
node.getQrCode().get("HW"));
|
statusRecord.setStatusDataType(StatusDataType.EQUIPMENT_MANUFACTURER_DATA);
|
||||||
|
EquipmentManufacturerDataStatus statusData = new EquipmentManufacturerDataStatus();
|
||||||
|
statusRecord.setDetails(statusData);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
EquipmentManufacturerQrCode qrCode = new EquipmentManufacturerQrCode();
|
||||||
|
|
||||||
if (qrCode != null && node.getReferenceDesign() != null && node.getCertificationRegion() != null && node.getManufacturerDate() != null
|
if (node.qrCode != null) {
|
||||||
&& node.getManufacturerName() != null && node.getManufacturerUrl() != null && node.getId() != null) {
|
qrCode.setDeviceType(EquipmentType.getByName(node.qrCode.get("DT")));
|
||||||
EquipmentManufacturerDataStatus reportedDataStatus = new EquipmentManufacturerDataStatus(node.getSkuNumber(), node.getModel(), node.getRevision(),
|
qrCode.setVendorName(node.qrCode.get("VN"));
|
||||||
node.getSerialNumber(), qrCode, EquipmentManufacturer.getByName(node.getManufacturerName()), node.getManufacturerDate(),
|
qrCode.setDeviceMac(MacAddress.valueOf(node.qrCode.get("DM")));
|
||||||
node.getManufacturerUrl(), node.getModelDescription(), node.getReferenceDesign(), CountryCode.getByName(node.getCertificationRegion()),
|
qrCode.setHwRevision(node.qrCode.get("HW"));
|
||||||
MacAddress.valueOf(node.getId()));
|
qrCode.setModelName(node.qrCode.get("MN"));
|
||||||
|
qrCode.setSerialNumber(node.qrCode.get("SN"));
|
||||||
manufacturerData = new Status();
|
|
||||||
manufacturerData.setCustomerId(customerId);
|
|
||||||
manufacturerData.setDetails(reportedDataStatus);
|
|
||||||
manufacturerData.setEquipmentId(equipmentId);
|
|
||||||
manufacturerData.setStatusDataType(StatusDataType.EQUIPMENT_MANUFACTURER_DATA);
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
((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 statusRecord;
|
||||||
return manufacturerData;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private Status configureProtocolStatus(OpensyncAWLANNode node, int customerId, long equipmentId, String reportedSwImageName,
|
private Status configureProtocolStatus(OpensyncAWLANNode node, int customerId, long equipmentId, String reportedSwImageName,
|
||||||
|
|||||||
@@ -68,6 +68,38 @@ public class OpensyncAWLANNode extends OpensyncAPBase {
|
|||||||
|
|
||||||
public OpensyncAWLANNode(Row row) {
|
public OpensyncAWLANNode(Row row) {
|
||||||
this();
|
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();
|
Map<String, Value> map = row.getColumns();
|
||||||
if (map.get("mqtt_settings") != null) {
|
if (map.get("mqtt_settings") != null) {
|
||||||
this.setMqttSettings(row.getMapColumn("mqtt_settings"));
|
this.setMqttSettings(row.getMapColumn("mqtt_settings"));
|
||||||
@@ -88,25 +120,25 @@ public class OpensyncAWLANNode extends OpensyncAPBase {
|
|||||||
this.setId(getSingleValueFromSet(row, "id"));
|
this.setId(getSingleValueFromSet(row, "id"));
|
||||||
}
|
}
|
||||||
if (map.get("reference_design") != null) {
|
if (map.get("reference_design") != null) {
|
||||||
this.setReferenceDesign(getSingleValueFromSet(row, "reference_design"));
|
this.setReferenceDesign(row.getStringColumn("reference_design"));
|
||||||
}
|
}
|
||||||
if (map.get("qr_code") != null) {
|
if (map.get("qr_code") != null) {
|
||||||
this.setQrCode(row.getMapColumn("qr_code"));
|
this.setQrCode(row.getMapColumn("qr_code"));
|
||||||
}
|
}
|
||||||
if ((map.get("model_description") != null)) {
|
if ((map.get("model_description") != null)) {
|
||||||
this.setModelDescription(getSingleValueFromSet(row, "model_description"));
|
this.setModelDescription(row.getStringColumn("model_description"));
|
||||||
}
|
}
|
||||||
if ((map.get("manufacturer_url") != null)) {
|
if ((map.get("manufacturer_url") != null)) {
|
||||||
this.setManufacturerUrl(getSingleValueFromSet(row, "manufacturer_url"));
|
this.setManufacturerUrl(row.getStringColumn("manufacturer_url"));
|
||||||
}
|
}
|
||||||
if ((map.get("manufacturer_name") != null)) {
|
if ((map.get("manufacturer_name") != null)) {
|
||||||
this.setManufacturerName(getSingleValueFromSet(row, "manufacturer_name"));
|
this.setManufacturerName(row.getStringColumn("manufacturer_name"));
|
||||||
}
|
}
|
||||||
if ((map.get("manufacturer_date") != null)) {
|
if ((map.get("manufacturer_date") != null)) {
|
||||||
this.setManufacturerDate(getSingleValueFromSet(row, "manufacturer_date"));
|
this.setManufacturerDate(row.getStringColumn("manufacturer_date"));
|
||||||
}
|
}
|
||||||
if (map.get("certification_region") != null) {
|
if (map.get("certification_region") != null) {
|
||||||
this.setCertificationRegion(getSingleValueFromSet(row, "certification_region"));
|
this.setCertificationRegion(row.getStringColumn("certification_region"));
|
||||||
}
|
}
|
||||||
if (map.get("version_matrix") != null) {
|
if (map.get("version_matrix") != null) {
|
||||||
this.setVersionMatrix(row.getMapColumn("version_matrix"));
|
this.setVersionMatrix(row.getMapColumn("version_matrix"));
|
||||||
|
|||||||
@@ -170,12 +170,16 @@ public class OvsdbNode extends OvsdbDaoBase {
|
|||||||
|
|
||||||
DatabaseSchema dbSchema = ovsdbClient.getSchema(ovsdbName).get();
|
DatabaseSchema dbSchema = ovsdbClient.getSchema(ovsdbName).get();
|
||||||
Set<String> keys = dbSchema.getTables().get(awlanNodeDbTable).getColumns().keySet();
|
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"))) {
|
"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"));
|
"certification_region"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (keys.contains("qr_code")) {
|
||||||
|
columns.add("qr_code");
|
||||||
|
}
|
||||||
|
|
||||||
operations.add(new Select(awlanNodeDbTable, conditions, columns));
|
operations.add(new Select(awlanNodeDbTable, conditions, columns));
|
||||||
CompletableFuture<OperationResult[]> fResult = ovsdbClient.transact(ovsdbName, operations);
|
CompletableFuture<OperationResult[]> fResult = ovsdbClient.transact(ovsdbName, operations);
|
||||||
OperationResult[] result = fResult.get(ovsdbTimeoutSec, TimeUnit.SECONDS);
|
OperationResult[] result = fResult.get(ovsdbTimeoutSec, TimeUnit.SECONDS);
|
||||||
@@ -207,15 +211,18 @@ public class OvsdbNode extends OvsdbDaoBase {
|
|||||||
ret.serialNumber = getSingleValueFromSet(row, "serial_number");
|
ret.serialNumber = getSingleValueFromSet(row, "serial_number");
|
||||||
ret.model = getSingleValueFromSet(row, "model");
|
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"))) {
|
"certification_region"))) {
|
||||||
ret.referenceDesign = getSingleValueFromSet(row, "reference_design");
|
ret.referenceDesign = row.getStringColumn("reference_design");
|
||||||
ret.qrCode = row.getMapColumn("qr_code");
|
ret.modelDescription = row.getStringColumn("model_description");
|
||||||
ret.modelDescription = getSingleValueFromSet(row, "model_description");
|
ret.manufacturerUrl = row.getStringColumn("manufacturer_url");
|
||||||
ret.manufacturerUrl = getSingleValueFromSet(row, "manufacturer_url");
|
ret.manufacturerName = row.getStringColumn("manufacturer_name");
|
||||||
ret.manufacturerName = getSingleValueFromSet(row, "manufacturer_name");
|
ret.manufacturerDate = row.getStringColumn("manufacturer_date");
|
||||||
ret.manufacturerDate = getSingleValueFromSet(row, "manufacturer_date");
|
ret.certificationRegion = row.getStringColumn("certification_region");
|
||||||
ret.certificationRegion = getSingleValueFromSet(row, "certification_region");
|
}
|
||||||
|
|
||||||
|
if (keys.contains("qr_code")) {
|
||||||
|
ret.qrCode = row.getMapColumn("qr_code");
|
||||||
}
|
}
|
||||||
|
|
||||||
// now populate macAddress, ipV4Address from Wifi_Inet_State
|
// now populate macAddress, ipV4Address from Wifi_Inet_State
|
||||||
|
|||||||
@@ -217,7 +217,7 @@ public class OvsdbDaoTest {
|
|||||||
apConfig.setEquipmentLocation(location);
|
apConfig.setEquipmentLocation(location);
|
||||||
ovsdbDao.getRadiusAccountingConfiguration(apConfig, ssidConfig, security);
|
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_ip").equals("192.168.0.1"));
|
||||||
assert (security.get("radius_acct_port").equals("1813"));
|
assert (security.get("radius_acct_port").equals("1813"));
|
||||||
assert (security.get("radius_acct_secret").equals("secret"));
|
assert (security.get("radius_acct_secret").equals("secret"));
|
||||||
|
|||||||
Reference in New Issue
Block a user