mirror of
https://github.com/Telecominfraproject/wlan-cloud-opensync-controller.git
synced 2025-11-24 05:44:54 +00:00
WIFI-1110: vifS is not applying as wm is crashing due to garbage in /etc/wireless/config
Further changes to simplify Cloud/OSGW/AP interaction Remove hieuristic config changes handling, goes back to reset of all SSIDs, etc. This will need support from Cloud/UI side if it is to be implemented in the future as the OSGW cannot effectively ascertain updates vs inserts without config change content information. Validate SSID UUID gets added to Wifi_Radio_Config, if not, throw RTE Only process changes for PROTOCOL_STATUS and FIRMWARE_STATUS when they differ from the current state.
This commit is contained in:
@@ -827,8 +827,8 @@ public class OpensyncExternalIntegrationCloud implements OpensyncExternalIntegra
|
|||||||
ret.setSsidProfile(
|
ret.setSsidProfile(
|
||||||
profileContainer.getChildrenOfType(equipmentConfig.getProfileId(), ProfileType.ssid));
|
profileContainer.getChildrenOfType(equipmentConfig.getProfileId(), ProfileType.ssid));
|
||||||
|
|
||||||
ret.setMetricsProfiles(
|
ret.setMetricsProfiles(profileContainer.getChildrenOfType(equipmentConfig.getProfileId(),
|
||||||
profileContainer.getChildrenOfType(equipmentConfig.getProfileId(), ProfileType.service_metrics_collection_config));
|
ProfileType.service_metrics_collection_config));
|
||||||
|
|
||||||
Set<Profile> radiusSet = new HashSet<>();
|
Set<Profile> radiusSet = new HashSet<>();
|
||||||
Set<Long> captiveProfileIds = new HashSet<>();
|
Set<Long> captiveProfileIds = new HashSet<>();
|
||||||
@@ -863,12 +863,12 @@ public class OpensyncExternalIntegrationCloud implements OpensyncExternalIntegra
|
|||||||
|
|
||||||
if (hotspot20ProfileSet.size() > 0) {
|
if (hotspot20ProfileSet.size() > 0) {
|
||||||
for (Profile hotspot20Profile : hotspot20ProfileSet) {
|
for (Profile hotspot20Profile : hotspot20ProfileSet) {
|
||||||
hotspot20OperatorSet.addAll(
|
hotspot20OperatorSet.addAll(profileContainer.getChildrenOfType(hotspot20Profile.getId(),
|
||||||
profileContainer.getChildrenOfType(hotspot20Profile.getId(), ProfileType.passpoint_operator));
|
ProfileType.passpoint_operator));
|
||||||
hotspot20VenueSet.addAll(
|
hotspot20VenueSet.addAll(profileContainer.getChildrenOfType(hotspot20Profile.getId(),
|
||||||
profileContainer.getChildrenOfType(hotspot20Profile.getId(), ProfileType.passpoint_venue));
|
ProfileType.passpoint_venue));
|
||||||
hotspot20ProviderSet.addAll(
|
hotspot20ProviderSet.addAll(profileContainer.getChildrenOfType(hotspot20Profile.getId(),
|
||||||
profileContainer.getChildrenOfType(hotspot20Profile.getId(), ProfileType.passpoint_osu_id_provider));
|
ProfileType.passpoint_osu_id_provider));
|
||||||
}
|
}
|
||||||
hotspotConfig.setHotspot20OperatorSet(hotspot20OperatorSet);
|
hotspotConfig.setHotspot20OperatorSet(hotspot20OperatorSet);
|
||||||
hotspotConfig.setHotspot20ProfileSet(hotspot20ProfileSet);
|
hotspotConfig.setHotspot20ProfileSet(hotspot20ProfileSet);
|
||||||
@@ -1133,9 +1133,10 @@ public class OpensyncExternalIntegrationCloud implements OpensyncExternalIntegra
|
|||||||
if (protocolStatus != null) {
|
if (protocolStatus != null) {
|
||||||
|
|
||||||
protocolStatusData = (EquipmentProtocolStatusData) protocolStatus.getDetails();
|
protocolStatusData = (EquipmentProtocolStatusData) protocolStatus.getDetails();
|
||||||
if (!protocolStatusData.getReportedCC()
|
if (!protocolStatusData.getReportedCC().equals(CountryCode.getByName((radioState.getCountry())))) {
|
||||||
.equals(CountryCode.getByName((radioState.getCountry())))) {
|
|
||||||
protocolStatusData.setReportedCC(CountryCode.getByName((radioState.getCountry())));
|
LOG.debug("Protocol Status reportedCC {} radioStatus.getCountry {} radioStatus CountryCode fromName {}", protocolStatusData.getReportedCC(), radioState.getCountry(), CountryCode.getByName((radioState.getCountry())));
|
||||||
|
protocolStatusData.setReportedCC(CountryCode.getByName((radioState. getCountry())));
|
||||||
protocolStatus.setDetails(protocolStatusData);
|
protocolStatus.setDetails(protocolStatusData);
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
@@ -1452,7 +1453,7 @@ public class OpensyncExternalIntegrationCloud implements OpensyncExternalIntegra
|
|||||||
OvsdbSession ovsdbSession = ovsdbSessionMapInterface.getSession(apId);
|
OvsdbSession ovsdbSession = ovsdbSessionMapInterface.getSession(apId);
|
||||||
|
|
||||||
if (ovsdbSession == null) {
|
if (ovsdbSession == null) {
|
||||||
LOG.debug("awlanNodeDbTableUpdate::Cannot get Session for AP {}", apId);
|
LOG.info("awlanNodeDbTableUpdate::Cannot get Session for AP {}", apId);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1460,11 +1461,17 @@ public class OpensyncExternalIntegrationCloud implements OpensyncExternalIntegra
|
|||||||
long equipmentId = ovsdbSession.getEquipmentId();
|
long equipmentId = ovsdbSession.getEquipmentId();
|
||||||
|
|
||||||
if ((customerId < 0) || (equipmentId < 0)) {
|
if ((customerId < 0) || (equipmentId < 0)) {
|
||||||
LOG.debug("awlanNodeDbTableUpdate::Cannot get valid CustomerId {} or EquipmentId {} for AP {}", customerId,
|
LOG.info("awlanNodeDbTableUpdate::Cannot get valid CustomerId {} or EquipmentId {} for AP {}", customerId,
|
||||||
equipmentId, apId);
|
equipmentId, apId);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Equipment ce = getCustomerEquipment(apId);
|
||||||
|
if (ce == null) {
|
||||||
|
LOG.info("awlanNodeDbTableUpdate::Cannot find AP {}", apId);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
int upgradeStatusFromAp = opensyncAPState.getUpgradeStatus();
|
int upgradeStatusFromAp = opensyncAPState.getUpgradeStatus();
|
||||||
EquipmentUpgradeState fwUpgradeState = null;
|
EquipmentUpgradeState fwUpgradeState = null;
|
||||||
FailureReason fwUpgradeFailureReason = null;
|
FailureReason fwUpgradeFailureReason = null;
|
||||||
@@ -1474,8 +1481,7 @@ public class OpensyncExternalIntegrationCloud implements OpensyncExternalIntegra
|
|||||||
|| opensyncAPState.getFirmwareUrl().equals(OvsdbStringConstants.OVSDB_AWLAN_AP_FACTORY_RESET)
|
|| opensyncAPState.getFirmwareUrl().equals(OvsdbStringConstants.OVSDB_AWLAN_AP_FACTORY_RESET)
|
||||||
|| opensyncAPState.getFirmwareUrl().equals("")) {
|
|| opensyncAPState.getFirmwareUrl().equals("")) {
|
||||||
|
|
||||||
fwUpgradeState = EquipmentUpgradeState.undefined;
|
LOG.debug("Firmware Url {}, no fwUpgradeState", opensyncAPState.getFirmwareUrl());
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
fwUpgradeState = OvsdbToWlanCloudTypeMappingUtility
|
fwUpgradeState = OvsdbToWlanCloudTypeMappingUtility
|
||||||
.getCloudEquipmentUpgradeStateFromOpensyncUpgradeStatus(upgradeStatusFromAp);
|
.getCloudEquipmentUpgradeStateFromOpensyncUpgradeStatus(upgradeStatusFromAp);
|
||||||
@@ -1486,19 +1492,6 @@ public class OpensyncExternalIntegrationCloud implements OpensyncExternalIntegra
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Status protocolStatus = statusServiceInterface.getOrNull(customerId, equipmentId, StatusDataType.PROTOCOL);
|
|
||||||
if (protocolStatus == null) {
|
|
||||||
protocolStatus = new Status();
|
|
||||||
protocolStatus.setCustomerId(customerId);
|
|
||||||
protocolStatus.setEquipmentId(equipmentId);
|
|
||||||
protocolStatus.setStatusDataType(StatusDataType.PROTOCOL);
|
|
||||||
EquipmentProtocolStatusData protocolStatusData = new EquipmentProtocolStatusData();
|
|
||||||
protocolStatus.setDetails(protocolStatusData);
|
|
||||||
|
|
||||||
protocolStatus = statusServiceInterface.update(protocolStatus);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
String reportedFwImageName = null;
|
String reportedFwImageName = null;
|
||||||
String reportedAltFwImageName = null;
|
String reportedAltFwImageName = null;
|
||||||
|
|
||||||
@@ -1515,63 +1508,86 @@ public class OpensyncExternalIntegrationCloud implements OpensyncExternalIntegra
|
|||||||
reportedAltFwImageName = opensyncAPState.getVersionMatrix().get(OvsdbStringConstants.FW_IMAGE_NAME_KEY);
|
reportedAltFwImageName = opensyncAPState.getVersionMatrix().get(OvsdbStringConstants.FW_IMAGE_NAME_KEY);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
EquipmentProtocolStatusData protocolStatusData = (EquipmentProtocolStatusData) protocolStatus.getDetails();
|
|
||||||
protocolStatusData.setReportedSku(opensyncAPState.getSkuNumber());
|
|
||||||
if (reportedFwImageName != null) {
|
|
||||||
protocolStatusData.setReportedSwVersion(reportedFwImageName);
|
|
||||||
}
|
|
||||||
protocolStatusData.setReportedSwAltVersion(reportedAltFwImageName);
|
|
||||||
protocolStatusData.setReportedHwVersion(opensyncAPState.getPlatformVersion());
|
|
||||||
protocolStatusData.setSystemName(opensyncAPState.getModel());
|
|
||||||
|
|
||||||
List<Status> updates = new ArrayList<>();
|
List<Status> updates = new ArrayList<>();
|
||||||
|
|
||||||
// only post update if there is a change
|
Status protocolStatus = configureProtocolStatus(opensyncAPState, customerId, equipmentId, reportedFwImageName,
|
||||||
if (!((EquipmentProtocolStatusData) statusServiceInterface
|
reportedAltFwImageName);
|
||||||
.getOrNull(customerId, equipmentId, StatusDataType.PROTOCOL).getDetails()).equals(protocolStatusData)) {
|
if (protocolStatus != null) {
|
||||||
protocolStatus.setDetails(protocolStatusData);
|
|
||||||
updates.add(protocolStatus);
|
updates.add(protocolStatus);
|
||||||
}
|
}
|
||||||
|
|
||||||
Status firmwareStatus = statusServiceInterface.getOrNull(customerId, equipmentId, StatusDataType.FIRMWARE);
|
Status firmwareStatus = configureFirmwareStatus(customerId, equipmentId, fwUpgradeState, fwUpgradeFailureReason,
|
||||||
if (firmwareStatus == null) {
|
reportedFwImageName, reportedAltFwImageName);
|
||||||
firmwareStatus = new Status();
|
if (firmwareStatus != null) {
|
||||||
firmwareStatus.setCustomerId(customerId);
|
|
||||||
firmwareStatus.setEquipmentId(equipmentId);
|
|
||||||
firmwareStatus.setStatusDataType(StatusDataType.FIRMWARE);
|
|
||||||
firmwareStatus.setDetails(new EquipmentUpgradeStatusData());
|
|
||||||
firmwareStatus = statusServiceInterface.update(firmwareStatus);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
Equipment ce = getCustomerEquipment(apId);
|
|
||||||
if (ce != null) {
|
|
||||||
ce.getDetails();
|
|
||||||
|
|
||||||
if (fwUpgradeState.equals(EquipmentUpgradeState.up_to_date)) {
|
|
||||||
LOG.info("Firmware load is up to date.");
|
|
||||||
|
|
||||||
EquipmentUpgradeStatusData firmwareStatusData = (EquipmentUpgradeStatusData) firmwareStatus
|
|
||||||
.getDetails();
|
|
||||||
if (reportedFwImageName != null) {
|
|
||||||
if (!firmwareStatusData.getActiveSwVersion().equals(reportedFwImageName)
|
|
||||||
|| !firmwareStatusData.getUpgradeState().equals(fwUpgradeState)
|
|
||||||
|| !firmwareStatusData.getAlternateSwVersion().equals(reportedAltFwImageName)) {
|
|
||||||
firmwareStatusData.setActiveSwVersion(reportedFwImageName);
|
|
||||||
firmwareStatusData.setAlternateSwVersion(reportedAltFwImageName);
|
|
||||||
firmwareStatusData.setUpgradeState(fwUpgradeState, fwUpgradeFailureReason);
|
|
||||||
firmwareStatus.setDetails(firmwareStatusData);
|
|
||||||
updates.add(firmwareStatus);
|
updates.add(firmwareStatus);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
if (!updates.isEmpty()) {// may be some updates from
|
||||||
|
// protocol
|
||||||
if (!updates.isEmpty()) { // may be some updates from protocol
|
|
||||||
// status
|
// status
|
||||||
updates = statusServiceInterface.update(updates);
|
updates = statusServiceInterface.update(updates);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private Status configureProtocolStatus(OpensyncAWLANNode opensyncAPState, int customerId, long equipmentId,
|
||||||
|
String reportedSwImageName, String reportedAltSwImageName) {
|
||||||
|
Status protocolStatus = statusServiceInterface.getOrNull(customerId, equipmentId, StatusDataType.PROTOCOL);
|
||||||
|
if (protocolStatus != null) {
|
||||||
|
EquipmentProtocolStatusData protocolStatusData = ((EquipmentProtocolStatusData) protocolStatus.getDetails());
|
||||||
|
if (protocolStatusData.getReportedSku() != null && protocolStatusData.getReportedSku().equals(opensyncAPState.getSkuNumber())
|
||||||
|
&& protocolStatusData.getReportedSwVersion() != null && protocolStatusData.getReportedSwVersion().equals(reportedSwImageName)
|
||||||
|
&& protocolStatusData.getReportedSwAltVersion() != null && protocolStatusData.getReportedSwAltVersion().equals(reportedAltSwImageName)
|
||||||
|
&& protocolStatusData.getReportedHwVersion() != null && protocolStatusData.getReportedHwVersion().equals(opensyncAPState.getPlatformVersion())
|
||||||
|
&& protocolStatusData.getSystemName() != null && protocolStatusData.getSystemName().equals(opensyncAPState.getModel())) {
|
||||||
|
// no changes
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
protocolStatusData.setReportedSku(opensyncAPState.getSkuNumber());
|
||||||
|
if (reportedSwImageName != null) {
|
||||||
|
protocolStatusData.setReportedSwVersion(reportedSwImageName);
|
||||||
|
} else {
|
||||||
|
protocolStatusData.setReportedSwVersion("Unknown");
|
||||||
|
}
|
||||||
|
if (reportedAltSwImageName != null) {
|
||||||
|
protocolStatusData.setReportedSwAltVersion(reportedAltSwImageName);
|
||||||
|
} else {
|
||||||
|
protocolStatusData.setReportedSwAltVersion("Unknown");
|
||||||
|
}
|
||||||
|
protocolStatusData
|
||||||
|
.setReportedHwVersion(opensyncAPState.getPlatformVersion());
|
||||||
|
protocolStatusData.setSystemName(opensyncAPState.getModel());
|
||||||
|
}
|
||||||
|
return protocolStatus;
|
||||||
|
}
|
||||||
|
|
||||||
|
private Status configureFirmwareStatus(int customerId, long equipmentId,EquipmentUpgradeState fwUpgradeState,
|
||||||
|
FailureReason fwUpgradeFailureReason, String reportedFwImageName, String reportedAltFwImageName) {
|
||||||
|
|
||||||
|
Status firmwareStatus = statusServiceInterface.getOrNull(customerId, equipmentId, StatusDataType.FIRMWARE);
|
||||||
|
if (firmwareStatus != null) {
|
||||||
|
EquipmentUpgradeStatusData upgradeStatusData = (EquipmentUpgradeStatusData)firmwareStatus.getDetails();
|
||||||
|
if (upgradeStatusData.getActiveSwVersion() != null && upgradeStatusData.getActiveSwVersion().equals(reportedFwImageName) && upgradeStatusData.getAlternateSwVersion() != null &&upgradeStatusData.getAlternateSwVersion().equals(reportedAltFwImageName) && upgradeStatusData.getUpgradeState() != null && upgradeStatusData.getUpgradeState().equals(fwUpgradeState)) {
|
||||||
|
return null; // no changes
|
||||||
|
}
|
||||||
|
if (reportedFwImageName != null) {
|
||||||
|
upgradeStatusData.setActiveSwVersion(reportedFwImageName);
|
||||||
|
} else {
|
||||||
|
upgradeStatusData.setActiveSwVersion("Unknown");
|
||||||
|
|
||||||
|
}
|
||||||
|
if (reportedAltFwImageName != null) {
|
||||||
|
upgradeStatusData.setAlternateSwVersion(reportedAltFwImageName);
|
||||||
|
} else {
|
||||||
|
((EquipmentUpgradeStatusData) firmwareStatus.getDetails())
|
||||||
|
.setAlternateSwVersion("Unknown");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (fwUpgradeState == null) fwUpgradeState = EquipmentUpgradeState.undefined;
|
||||||
|
|
||||||
|
if (fwUpgradeState.equals(EquipmentUpgradeState.up_to_date)) {
|
||||||
|
LOG.info("Firmware load is up to date.");
|
||||||
|
upgradeStatusData.setUpgradeState(fwUpgradeState);
|
||||||
|
firmwareStatus.setDetails(upgradeStatusData);
|
||||||
} else if (fwUpgradeState.equals(EquipmentUpgradeState.download_complete)
|
} else if (fwUpgradeState.equals(EquipmentUpgradeState.download_complete)
|
||||||
|| fwUpgradeState.equals(EquipmentUpgradeState.apply_complete)
|
|| fwUpgradeState.equals(EquipmentUpgradeState.apply_complete)
|
||||||
|| fwUpgradeState.equals(EquipmentUpgradeState.apply_initiated)
|
|| fwUpgradeState.equals(EquipmentUpgradeState.apply_initiated)
|
||||||
@@ -1583,98 +1599,30 @@ public class OpensyncExternalIntegrationCloud implements OpensyncExternalIntegra
|
|||||||
|
|
||||||
LOG.info("Firmware upgrade is in state {}", fwUpgradeState);
|
LOG.info("Firmware upgrade is in state {}", fwUpgradeState);
|
||||||
|
|
||||||
EquipmentUpgradeStatusData firmwareStatusData = (EquipmentUpgradeStatusData) firmwareStatus
|
upgradeStatusData.setUpgradeState(fwUpgradeState);
|
||||||
.getDetails();
|
|
||||||
if (reportedFwImageName != null) {
|
|
||||||
if (!firmwareStatusData.getActiveSwVersion().equals(reportedFwImageName)
|
|
||||||
|| !firmwareStatusData.getUpgradeState().equals(fwUpgradeState)
|
|
||||||
|| !firmwareStatusData.getAlternateSwVersion().equals(reportedAltFwImageName)) {
|
|
||||||
firmwareStatusData.setActiveSwVersion(reportedFwImageName);
|
|
||||||
firmwareStatusData.setAlternateSwVersion(reportedAltFwImageName);
|
|
||||||
firmwareStatusData.setUpgradeState(fwUpgradeState, fwUpgradeFailureReason);
|
|
||||||
if (fwUpgradeState.equals(EquipmentUpgradeState.apply_initiated)) {
|
if (fwUpgradeState.equals(EquipmentUpgradeState.apply_initiated)) {
|
||||||
firmwareStatusData.setUpgradeStartTime(System.currentTimeMillis());
|
upgradeStatusData.setUpgradeStartTime(System.currentTimeMillis());
|
||||||
} else if (fwUpgradeState.equals(EquipmentUpgradeState.reboot_initiated)
|
} else if (fwUpgradeState.equals(EquipmentUpgradeState.reboot_initiated)
|
||||||
|| fwUpgradeState.equals(EquipmentUpgradeState.rebooting)) {
|
|| fwUpgradeState.equals(EquipmentUpgradeState.rebooting)) {
|
||||||
firmwareStatusData.setRebooted(true);
|
upgradeStatusData.setRebooted(true);
|
||||||
}
|
}
|
||||||
firmwareStatus.setDetails(firmwareStatusData);
|
firmwareStatus.setDetails(upgradeStatusData);
|
||||||
updates.add(firmwareStatus);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!updates.isEmpty()) {// may be some updates from protocol
|
|
||||||
// status
|
|
||||||
updates = statusServiceInterface.update(updates);
|
|
||||||
}
|
|
||||||
|
|
||||||
// no other action here, these are just transient states
|
|
||||||
|
|
||||||
} else if (fwUpgradeState.equals(EquipmentUpgradeState.apply_failed)
|
} else if (fwUpgradeState.equals(EquipmentUpgradeState.apply_failed)
|
||||||
|| fwUpgradeState.equals(EquipmentUpgradeState.download_failed)
|
|| fwUpgradeState.equals(EquipmentUpgradeState.download_failed)
|
||||||
|| fwUpgradeState.equals(EquipmentUpgradeState.reboot_failed)) {
|
|| fwUpgradeState.equals(EquipmentUpgradeState.reboot_failed)) {
|
||||||
LOG.warn("Firmware upgrade is in a failed state {} due to {}", fwUpgradeState, fwUpgradeFailureReason);
|
LOG.warn("Firmware upgrade is in a failed state {} due to {}", fwUpgradeState, fwUpgradeFailureReason);
|
||||||
|
|
||||||
EquipmentUpgradeStatusData firmwareStatusData = (EquipmentUpgradeStatusData) firmwareStatus
|
upgradeStatusData.setUpgradeState(fwUpgradeState, fwUpgradeFailureReason);
|
||||||
.getDetails();
|
firmwareStatus.setDetails(upgradeStatusData);
|
||||||
if (reportedFwImageName != null) {
|
|
||||||
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 {
|
} else {
|
||||||
if (!updates.isEmpty()) {
|
|
||||||
updates = statusServiceInterface.update(updates);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
} else {
|
((EquipmentUpgradeStatusData) firmwareStatus.getDetails())
|
||||||
if (!updates.isEmpty()) {// may be some updates from
|
.setUpgradeState(EquipmentUpgradeState.undefined);
|
||||||
// protocol
|
((EquipmentUpgradeStatusData) firmwareStatus.getDetails())
|
||||||
// status
|
.setUpgradeStartTime(null);
|
||||||
updates = statusServiceInterface.update(updates);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
return firmwareStatus;
|
||||||
} else {
|
|
||||||
LOG.info("Firmware upgrade state is {}", fwUpgradeState);
|
|
||||||
EquipmentUpgradeStatusData firmwareStatusData = (EquipmentUpgradeStatusData) firmwareStatus
|
|
||||||
.getDetails();
|
|
||||||
if (reportedFwImageName != null) {
|
|
||||||
if (!firmwareStatusData.getActiveSwVersion().equals(reportedFwImageName)
|
|
||||||
|| !firmwareStatusData.getUpgradeState().equals(fwUpgradeState)
|
|
||||||
|| !firmwareStatusData.getAlternateSwVersion().equals(reportedAltFwImageName)) {
|
|
||||||
firmwareStatusData.setActiveSwVersion(reportedFwImageName);
|
|
||||||
firmwareStatusData.setAlternateSwVersion(reportedAltFwImageName);
|
|
||||||
firmwareStatusData.setUpgradeState(fwUpgradeState, fwUpgradeFailureReason);
|
|
||||||
firmwareStatus.setDetails(firmwareStatusData);
|
|
||||||
updates.add(firmwareStatus);
|
|
||||||
updates = statusServiceInterface.update(updates);
|
|
||||||
} else {
|
|
||||||
if (!updates.isEmpty()) {// may be some updates from
|
|
||||||
// protocol
|
|
||||||
// status
|
|
||||||
updates = statusServiceInterface.update(updates);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
if (!updates.isEmpty()) {// may be some updates from
|
|
||||||
// protocol
|
|
||||||
// status
|
|
||||||
updates = statusServiceInterface.update(updates);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -1790,7 +1738,6 @@ public class OpensyncExternalIntegrationCloud implements OpensyncExternalIntegra
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -1845,7 +1792,6 @@ public class OpensyncExternalIntegrationCloud implements OpensyncExternalIntegra
|
|||||||
} else if (clientMacAddress.equals(equipmentServiceInterface.get(equipmentId).getBaseMacAddress())) {
|
} else if (clientMacAddress.equals(equipmentServiceInterface.get(equipmentId).getBaseMacAddress())) {
|
||||||
LOG.info("Not a client device {} ", dhcpLeasedIps);
|
LOG.info("Not a client device {} ", dhcpLeasedIps);
|
||||||
|
|
||||||
|
|
||||||
// In case somehow this equipment has accidentally been
|
// In case somehow this equipment has accidentally been
|
||||||
// tagged as a client, remove
|
// tagged as a client, remove
|
||||||
|
|
||||||
@@ -1859,7 +1805,6 @@ public class OpensyncExternalIntegrationCloud implements OpensyncExternalIntegra
|
|||||||
|
|
||||||
LOG.info("Deleting invalid client {}", clientServiceInterface.delete(customerId, clientMacAddress));
|
LOG.info("Deleting invalid client {}", clientServiceInterface.delete(customerId, clientMacAddress));
|
||||||
|
|
||||||
|
|
||||||
continue;
|
continue;
|
||||||
} else {
|
} else {
|
||||||
LOG.info("Client {} already exists on the cloud, update client values", dhcpLeasedIps);
|
LOG.info("Client {} already exists on the cloud, update client values", dhcpLeasedIps);
|
||||||
@@ -1939,7 +1884,6 @@ public class OpensyncExternalIntegrationCloud implements OpensyncExternalIntegra
|
|||||||
|
|
||||||
LOG.info("Not a client device {} ", dhcpLeasedIps);
|
LOG.info("Not a client device {} ", dhcpLeasedIps);
|
||||||
|
|
||||||
|
|
||||||
// In case somehow this equipment has accidentally been
|
// In case somehow this equipment has accidentally been
|
||||||
// tagged as a client, remove
|
// tagged as a client, remove
|
||||||
|
|
||||||
@@ -1953,12 +1897,10 @@ public class OpensyncExternalIntegrationCloud implements OpensyncExternalIntegra
|
|||||||
|
|
||||||
LOG.info("Deleting invalid client {}", clientServiceInterface.delete(customerId, clientMacAddress));
|
LOG.info("Deleting invalid client {}", clientServiceInterface.delete(customerId, clientMacAddress));
|
||||||
|
|
||||||
|
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
|
|
||||||
ClientInfoDetails clientDetails = (ClientInfoDetails) client.getDetails();
|
ClientInfoDetails clientDetails = (ClientInfoDetails) client.getDetails();
|
||||||
if (dhcpLeasedIps.containsKey("hostname")) {
|
if (dhcpLeasedIps.containsKey("hostname")) {
|
||||||
|
|
||||||
|
|||||||
@@ -200,8 +200,8 @@ public class TipWlanOvsdbClient implements OvsdbClientInterface {
|
|||||||
ovsdbDao.removeAllStatsConfigs(ovsdbClient); // always
|
ovsdbDao.removeAllStatsConfigs(ovsdbClient); // always
|
||||||
ovsdbDao.removeAllPasspointConfigs(ovsdbClient);
|
ovsdbDao.removeAllPasspointConfigs(ovsdbClient);
|
||||||
ovsdbDao.removeWifiRrm(ovsdbClient);
|
ovsdbDao.removeWifiRrm(ovsdbClient);
|
||||||
ovsdbDao.removeAllSsids(ovsdbClient, opensyncAPConfig); // always
|
ovsdbDao.removeAllInetConfigs(ovsdbClient);
|
||||||
ovsdbDao.removeAllGreTunnels(ovsdbClient, opensyncAPConfig);
|
ovsdbDao.removeAllSsids(ovsdbClient); // always
|
||||||
// reconfigure
|
// reconfigure
|
||||||
ovsdbDao.configureWifiRadios(ovsdbClient, opensyncAPConfig);
|
ovsdbDao.configureWifiRadios(ovsdbClient, opensyncAPConfig);
|
||||||
ovsdbDao.configureInterfaces(ovsdbClient);
|
ovsdbDao.configureInterfaces(ovsdbClient);
|
||||||
@@ -216,11 +216,11 @@ public class TipWlanOvsdbClient implements OvsdbClientInterface {
|
|||||||
ovsdbDao.enableNetworkProbeForSyntheticClient(ovsdbClient);
|
ovsdbDao.enableNetworkProbeForSyntheticClient(ovsdbClient);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
ovsdbDao.removeAllPasspointConfigs(ovsdbClient);
|
|
||||||
ovsdbDao.removeAllStatsConfigs(ovsdbClient); // always
|
ovsdbDao.removeAllStatsConfigs(ovsdbClient); // always
|
||||||
|
ovsdbDao.removeAllPasspointConfigs(ovsdbClient);
|
||||||
ovsdbDao.removeWifiRrm(ovsdbClient);
|
ovsdbDao.removeWifiRrm(ovsdbClient);
|
||||||
|
ovsdbDao.removeAllInetConfigs(ovsdbClient);
|
||||||
ovsdbDao.removeAllSsids(ovsdbClient); // always
|
ovsdbDao.removeAllSsids(ovsdbClient); // always
|
||||||
ovsdbDao.removeAllGreTunnels(ovsdbClient, null);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ovsdbDao.getDeviceStatsReportingInterval(ovsdbClient) != collectionIntervalSecDeviceStats) {
|
if (ovsdbDao.getDeviceStatsReportingInterval(ovsdbClient) != collectionIntervalSecDeviceStats) {
|
||||||
@@ -273,8 +273,8 @@ public class TipWlanOvsdbClient implements OvsdbClientInterface {
|
|||||||
ovsdbDao.removeAllStatsConfigs(ovsdbClient); // always
|
ovsdbDao.removeAllStatsConfigs(ovsdbClient); // always
|
||||||
ovsdbDao.removeAllPasspointConfigs(ovsdbClient);
|
ovsdbDao.removeAllPasspointConfigs(ovsdbClient);
|
||||||
ovsdbDao.removeWifiRrm(ovsdbClient);
|
ovsdbDao.removeWifiRrm(ovsdbClient);
|
||||||
ovsdbDao.removeAllSsids(ovsdbClient, opensyncAPConfig); // always
|
ovsdbDao.removeAllInetConfigs(ovsdbClient);
|
||||||
ovsdbDao.removeAllGreTunnels(ovsdbClient, opensyncAPConfig);
|
ovsdbDao.removeAllSsids(ovsdbClient); // always
|
||||||
|
|
||||||
ovsdbDao.configureWifiRadios(ovsdbClient, opensyncAPConfig);
|
ovsdbDao.configureWifiRadios(ovsdbClient, opensyncAPConfig);
|
||||||
ovsdbDao.configureInterfaces(ovsdbClient);
|
ovsdbDao.configureInterfaces(ovsdbClient);
|
||||||
|
|||||||
@@ -120,6 +120,7 @@ import com.vmware.ovsdb.protocol.operation.result.ErrorResult;
|
|||||||
import com.vmware.ovsdb.protocol.operation.result.InsertResult;
|
import com.vmware.ovsdb.protocol.operation.result.InsertResult;
|
||||||
import com.vmware.ovsdb.protocol.operation.result.OperationResult;
|
import com.vmware.ovsdb.protocol.operation.result.OperationResult;
|
||||||
import com.vmware.ovsdb.protocol.operation.result.SelectResult;
|
import com.vmware.ovsdb.protocol.operation.result.SelectResult;
|
||||||
|
import com.vmware.ovsdb.protocol.operation.result.UpdateResult;
|
||||||
import com.vmware.ovsdb.protocol.schema.DatabaseSchema;
|
import com.vmware.ovsdb.protocol.schema.DatabaseSchema;
|
||||||
import com.vmware.ovsdb.protocol.schema.TableSchema;
|
import com.vmware.ovsdb.protocol.schema.TableSchema;
|
||||||
import com.vmware.ovsdb.service.OvsdbClient;
|
import com.vmware.ovsdb.service.OvsdbClient;
|
||||||
@@ -612,9 +613,8 @@ public class OvsdbDao {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* @param ovsdbClient
|
* @param ovsdbClient
|
||||||
* @return value of reporting_interval column for the stats_type=device from
|
* @return value of reporting_interval column for the stats_type=device from the
|
||||||
* the Wifi_Stats_Config table. If value is not provisioned then
|
* Wifi_Stats_Config table. If value is not provisioned then return -1.
|
||||||
* return -1.
|
|
||||||
*/
|
*/
|
||||||
public long getDeviceStatsReportingInterval(OvsdbClient ovsdbClient) {
|
public long getDeviceStatsReportingInterval(OvsdbClient ovsdbClient) {
|
||||||
long ret = -1;
|
long ret = -1;
|
||||||
@@ -658,10 +658,9 @@ public class OvsdbDao {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* @param ovsdbClient
|
* @param ovsdbClient
|
||||||
* @param value
|
* @param value of reporting_interval column for the stats_type=device
|
||||||
* of reporting_interval column for the stats_type=device from
|
* from the Wifi_Stats_Config table. If value is not
|
||||||
* the Wifi_Stats_Config table. If value is not provisioned then
|
* provisioned then return -1.
|
||||||
* return -1.
|
|
||||||
*/
|
*/
|
||||||
public void updateDeviceStatsReportingInterval(OvsdbClient ovsdbClient, long newValue) {
|
public void updateDeviceStatsReportingInterval(OvsdbClient ovsdbClient, long newValue) {
|
||||||
try {
|
try {
|
||||||
@@ -1769,123 +1768,34 @@ public class OvsdbDao {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void removeAllSsids(OvsdbClient ovsdbClient, OpensyncAPConfig opensyncAPConfig) {
|
public void removeAllInetConfigs(OvsdbClient ovsdbClient) {
|
||||||
|
|
||||||
final Map<String, WifiVifConfigInfo> currentWifiVifConfigInfo = getProvisionedWifiVifConfigs(ovsdbClient);
|
|
||||||
final Map<String, WifiRadioConfigInfo> currentWifiRadioConfigInfo = getProvisionedWifiRadioConfigs(ovsdbClient);
|
|
||||||
Map<RadioType, String> ifNameByFreqBand = new HashMap<>();
|
|
||||||
Set<String> keysToKeep = new HashSet<>();
|
|
||||||
Set<Integer> vlansToKeep = new HashSet<>();
|
|
||||||
List<String> vifConfigsToDelete = new ArrayList<>();
|
|
||||||
List<Operation> operations = new ArrayList<>();
|
|
||||||
|
|
||||||
for (WifiRadioConfigInfo radioConfig : currentWifiRadioConfigInfo.values()) {
|
|
||||||
|
|
||||||
RadioType key = OvsdbToWlanCloudTypeMappingUtility.getRadioTypeForOvsdbRadioFreqBand(radioConfig.freqBand);
|
|
||||||
String ifName = null;
|
|
||||||
|
|
||||||
if (radioConfig.ifName.equals(radio0)) {
|
|
||||||
ifName = defaultRadio0;
|
|
||||||
} else if (radioConfig.ifName.equals(radio1)) {
|
|
||||||
ifName = defaultRadio1;
|
|
||||||
} else if (radioConfig.ifName.equals(radio2)) {
|
|
||||||
ifName = defaultRadio2;
|
|
||||||
}
|
|
||||||
if (ifName == null) {
|
|
||||||
throw new RuntimeException(
|
|
||||||
"Invalid radio if_name " + radioConfig.ifName + " reported for " + radioConfig.freqBand);
|
|
||||||
}
|
|
||||||
|
|
||||||
ifNameByFreqBand.put(key, ifName);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
opensyncAPConfig.getSsidProfile().stream().forEach(p -> {
|
|
||||||
SsidConfiguration ssidConfig = (SsidConfiguration) p.getDetails();
|
|
||||||
String ssid = ssidConfig.getSsid();
|
|
||||||
Set<RadioType> appliedRadios = ssidConfig.getAppliedRadios();
|
|
||||||
|
|
||||||
if (ssidConfig.getVlanId() != null && ssidConfig.getVlanId() > 1) {
|
|
||||||
vlansToKeep.add(ssidConfig.getVlanId());
|
|
||||||
}
|
|
||||||
|
|
||||||
keysToKeep.addAll(currentWifiVifConfigInfo.keySet().stream().filter(new Predicate<String>() {
|
|
||||||
@Override
|
|
||||||
public boolean test(String t) {
|
|
||||||
|
|
||||||
return t.contains(ssid);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
}).filter(new Predicate<String>() {
|
|
||||||
@Override
|
|
||||||
public boolean test(String t) {
|
|
||||||
|
|
||||||
for (RadioType radioType : appliedRadios) {
|
|
||||||
if (t.contains(ifNameByFreqBand.get(radioType))) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return false;
|
|
||||||
|
|
||||||
}
|
|
||||||
}).collect(Collectors.toSet()));
|
|
||||||
});
|
|
||||||
|
|
||||||
for (String vifConfigKey : currentWifiVifConfigInfo.keySet()) {
|
|
||||||
if (!keysToKeep.contains(vifConfigKey)) {
|
|
||||||
vifConfigsToDelete.add(currentWifiVifConfigInfo.get(vifConfigKey).ifName);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
for (String interfaceName : vifConfigsToDelete) {
|
|
||||||
List<Condition> conditions = new ArrayList<>();
|
|
||||||
conditions.add(new Condition("if_name", Function.EQUALS, new Atom<>(interfaceName)));
|
|
||||||
operations.add(new Delete(wifiVifConfigDbTable, conditions));
|
|
||||||
operations.add(new Delete(wifiInetConfigDbTable, conditions));
|
|
||||||
LOG.info("Vif {} to be deleted from {} and {} ovsdb tables", interfaceName, wifiVifConfigDbTable,
|
|
||||||
wifiInetConfigDbTable);
|
|
||||||
}
|
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
Collection<WifiInetConfigInfo> provisionedWifiInetConfigs = getProvisionedWifiInetConfigs(ovsdbClient).values();
|
||||||
|
List<Operation> operations = new ArrayList<>();
|
||||||
|
List<Condition> conditions = new ArrayList<>();
|
||||||
|
|
||||||
|
|
||||||
|
for (WifiInetConfigInfo wifiInetConfigInfo : provisionedWifiInetConfigs) {
|
||||||
|
|
||||||
|
if (wifiInetConfigInfo.vlanId > 1 || wifiInetConfigInfo.ifType.equals("vif") || wifiInetConfigInfo.ifType.equals("gre")) {
|
||||||
|
conditions = new ArrayList<>();
|
||||||
|
conditions.add(new Condition("if_name", Function.EQUALS, new Atom<>(wifiInetConfigInfo.ifName)));
|
||||||
|
operations.add(new Delete(wifiInetConfigDbTable, conditions));
|
||||||
|
}
|
||||||
|
}
|
||||||
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);
|
||||||
|
|
||||||
if (LOG.isDebugEnabled()) {
|
if (LOG.isDebugEnabled()) {
|
||||||
LOG.info("Removed VIF and Inet Configurations no longer in use from {} and {}", wifiVifConfigDbTable,
|
LOG.debug("Removed all existing vif, vlan, and gre interface configs from {}:", wifiInetConfigDbTable);
|
||||||
wifiInetConfigDbTable);
|
|
||||||
|
|
||||||
for (OperationResult res : result) {
|
for (OperationResult res : result) {
|
||||||
LOG.info("Op Result {}", res);
|
LOG.debug("Op Result {}", res);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
operations = new ArrayList<>();
|
} catch (OvsdbClientException | TimeoutException | ExecutionException | InterruptedException e) {
|
||||||
// Add if_names from the vifs to delete, and from any vlans not in
|
LOG.error("Error in removeAllInetConfigs", e);
|
||||||
// the configuredVlanId list above
|
|
||||||
for (WifiInetConfigInfo inetConfigInfo : getProvisionedWifiInetConfigs(ovsdbClient).values()) {
|
|
||||||
if (inetConfigInfo.vlanId > 1 && !vlansToKeep.contains(inetConfigInfo.vlanId)) {
|
|
||||||
List<Condition> conditions = new ArrayList<>();
|
|
||||||
conditions.add(new Condition("if_name", Function.EQUALS, new Atom<>(inetConfigInfo.ifName)));
|
|
||||||
operations.add(new Delete(wifiInetConfigDbTable, conditions));
|
|
||||||
LOG.info("Vlan {} to be deleted from {} ovsdb table", inetConfigInfo.ifName, wifiInetConfigDbTable);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
fResult = ovsdbClient.transact(ovsdbName, operations);
|
|
||||||
result = fResult.get(ovsdbTimeoutSec, TimeUnit.SECONDS);
|
|
||||||
|
|
||||||
if (LOG.isDebugEnabled()) {
|
|
||||||
LOG.info("Removed vlan interfaces no longer in use from {} ", wifiInetConfigDbTable);
|
|
||||||
|
|
||||||
for (OperationResult res : result) {
|
|
||||||
LOG.info("Op Result {}", res);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
} catch (OvsdbClientException | InterruptedException | ExecutionException | TimeoutException e) {
|
|
||||||
LOG.error("Error in removeAllSsids", e);
|
|
||||||
throw new RuntimeException(e);
|
throw new RuntimeException(e);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1894,32 +1804,14 @@ public class OvsdbDao {
|
|||||||
public void removeAllSsids(OvsdbClient ovsdbClient) {
|
public void removeAllSsids(OvsdbClient ovsdbClient) {
|
||||||
try {
|
try {
|
||||||
|
|
||||||
removeAllPasspointConfigs(ovsdbClient);
|
|
||||||
|
|
||||||
List<Operation> operations = new ArrayList<>();
|
List<Operation> operations = new ArrayList<>();
|
||||||
|
|
||||||
operations = new ArrayList<>();
|
operations = new ArrayList<>();
|
||||||
List<Condition> conditions = new ArrayList<>();
|
operations.add(new Delete(wifiVifConfigDbTable));
|
||||||
conditions.add(new Condition("if_type", Function.EQUALS, new Atom<>("vif")));
|
|
||||||
operations.add(new Delete(wifiInetConfigDbTable, conditions));
|
|
||||||
|
|
||||||
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);
|
||||||
|
|
||||||
if (LOG.isDebugEnabled()) {
|
|
||||||
LOG.debug("Removed all existing vif interfaces configs from {}:", wifiInetConfigDbTable);
|
|
||||||
|
|
||||||
for (OperationResult res : result) {
|
|
||||||
LOG.debug("Op Result {}", res);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
operations = new ArrayList<>();
|
|
||||||
operations.add(new Delete(wifiVifConfigDbTable));
|
|
||||||
|
|
||||||
fResult = ovsdbClient.transact(ovsdbName, operations);
|
|
||||||
result = fResult.get(ovsdbTimeoutSec, TimeUnit.SECONDS);
|
|
||||||
|
|
||||||
if (LOG.isDebugEnabled()) {
|
if (LOG.isDebugEnabled()) {
|
||||||
LOG.debug("Removed all existing SSIDs from {}:", wifiVifConfigDbTable);
|
LOG.debug("Removed all existing SSIDs from {}:", wifiVifConfigDbTable);
|
||||||
|
|
||||||
@@ -1928,22 +1820,6 @@ public class OvsdbDao {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
operations = new ArrayList<>();
|
|
||||||
conditions = new ArrayList<>();
|
|
||||||
conditions.add(new Condition("vlan_id", Function.GREATER_THAN, new Atom<>(1)));
|
|
||||||
operations.add(new Delete(wifiInetConfigDbTable, conditions));
|
|
||||||
|
|
||||||
fResult = ovsdbClient.transact(ovsdbName, operations);
|
|
||||||
result = fResult.get(ovsdbTimeoutSec, TimeUnit.SECONDS);
|
|
||||||
|
|
||||||
if (LOG.isDebugEnabled()) {
|
|
||||||
LOG.debug("Removed all existing vlan interfaces configs from {}:", wifiInetConfigDbTable);
|
|
||||||
|
|
||||||
for (OperationResult res : result) {
|
|
||||||
LOG.debug("Op Result {}", res);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
LOG.info("Removed all ssids");
|
LOG.info("Removed all ssids");
|
||||||
|
|
||||||
} catch (OvsdbClientException | TimeoutException | ExecutionException | InterruptedException e) {
|
} catch (OvsdbClientException | TimeoutException | ExecutionException | InterruptedException e) {
|
||||||
@@ -2712,7 +2588,7 @@ public class OvsdbDao {
|
|||||||
String ipAssignScheme, List<MacAddress> macBlockList, boolean rateLimitEnable, int ssidDlLimit,
|
String ipAssignScheme, List<MacAddress> macBlockList, boolean rateLimitEnable, int ssidDlLimit,
|
||||||
int ssidUlLimit, int clientDlLimit, int clientUlLimit, int rtsCtsThreshold, int fragThresholdBytes,
|
int ssidUlLimit, int clientDlLimit, int clientUlLimit, int rtsCtsThreshold, int fragThresholdBytes,
|
||||||
int dtimPeriod, Map<String, String> captiveMap, List<String> walledGardenAllowlist,
|
int dtimPeriod, Map<String, String> captiveMap, List<String> walledGardenAllowlist,
|
||||||
Map<Short, Set<String>> bonjourServiceMap, boolean isUpdate) {
|
Map<Short, Set<String>> bonjourServiceMap) {
|
||||||
|
|
||||||
List<Operation> operations = new ArrayList<>();
|
List<Operation> operations = new ArrayList<>();
|
||||||
Map<String, Value> updateColumns = new HashMap<>();
|
Map<String, Value> updateColumns = new HashMap<>();
|
||||||
@@ -2818,31 +2694,19 @@ public class OvsdbDao {
|
|||||||
updateBlockList(updateColumns, macBlockList);
|
updateBlockList(updateColumns, macBlockList);
|
||||||
Row row = new Row(updateColumns);
|
Row row = new Row(updateColumns);
|
||||||
|
|
||||||
//////
|
|
||||||
|
|
||||||
if (isUpdate) {
|
|
||||||
List<Condition> conditions = new ArrayList<>();
|
|
||||||
|
|
||||||
conditions.add(new Condition("if_name", Function.EQUALS, new Atom<>(vifInterfaceName)));
|
|
||||||
operations.add(new Update(wifiVifConfigDbTable, conditions, row));
|
|
||||||
|
|
||||||
} else {
|
|
||||||
operations.add(new Insert(wifiVifConfigDbTable, row));
|
operations.add(new Insert(wifiVifConfigDbTable, row));
|
||||||
}
|
|
||||||
|
|
||||||
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);
|
||||||
|
|
||||||
if (isUpdate) {
|
|
||||||
for (OperationResult res : result) {
|
|
||||||
LOG.info("Op Result {}", res);
|
|
||||||
}
|
|
||||||
LOG.info("Updated existing SSID {} on interface {} / {}", ssid, vifInterfaceName, radioFreqBand);
|
|
||||||
} else {
|
|
||||||
Uuid vifConfigUuid = null;
|
Uuid vifConfigUuid = null;
|
||||||
for (OperationResult res : result) {
|
for (OperationResult res : result) {
|
||||||
LOG.info("Op Result {}", res);
|
InsertResult insertResult = null;
|
||||||
if (res instanceof InsertResult) {
|
if (res instanceof InsertResult) {
|
||||||
|
insertResult = (InsertResult) res;
|
||||||
|
LOG.info("configureSingleSsid:InsertResult {}", insertResult);
|
||||||
vifConfigUuid = ((InsertResult) res).getUuid();
|
vifConfigUuid = ((InsertResult) res).getUuid();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -2852,8 +2716,9 @@ public class OvsdbDao {
|
|||||||
updateColumns.clear();
|
updateColumns.clear();
|
||||||
operations.clear();
|
operations.clear();
|
||||||
updateVifConfigsSetForRadio(ovsdbClient, ssid, radioFreqBand, operations, updateColumns, vifConfigUuid);
|
updateVifConfigsSetForRadio(ovsdbClient, ssid, radioFreqBand, operations, updateColumns, vifConfigUuid);
|
||||||
LOG.info("Provisioned SSID {} on interface {} / {}", ssid, vifInterfaceName, radioFreqBand);
|
LOG.info("configureSingleSsid:Provisioned SSID {} on interface {} / {}", ssid, vifInterfaceName,
|
||||||
}
|
radioFreqBand);
|
||||||
|
|
||||||
|
|
||||||
Map<String, WifiInetConfigInfo> inetConfigs = getProvisionedWifiInetConfigs(ovsdbClient);
|
Map<String, WifiInetConfigInfo> inetConfigs = getProvisionedWifiInetConfigs(ovsdbClient);
|
||||||
|
|
||||||
@@ -2932,19 +2797,34 @@ public class OvsdbDao {
|
|||||||
mutations.add(mutation);
|
mutations.add(mutation);
|
||||||
operations.add(new Mutate(wifiRadioConfigDbTable, conditions, mutations));
|
operations.add(new Mutate(wifiRadioConfigDbTable, conditions, mutations));
|
||||||
|
|
||||||
LOG.info("Sending batch of operations : {} ", operations);
|
|
||||||
|
|
||||||
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);
|
||||||
|
|
||||||
if (LOG.isDebugEnabled()) {
|
for (OperationResult res : result) {
|
||||||
LOG.info("Updated WifiRadioConfig {} for SSID {}:", radioFreqBand, ssid);
|
if (res instanceof UpdateResult) {
|
||||||
|
LOG.debug("updateVifConfigsSetForRadio:result {}", (UpdateResult) res);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// confirm the table was updated with the new Wifi_VIF_Config Uuid
|
||||||
|
operations.clear();
|
||||||
|
operations.add(new Select(wifiRadioConfigDbTable, conditions));
|
||||||
|
fResult = ovsdbClient.transact(ovsdbName, operations);
|
||||||
|
result = fResult.get(ovsdbTimeoutSec, TimeUnit.SECONDS);
|
||||||
|
|
||||||
for (OperationResult res : result) {
|
for (OperationResult res : result) {
|
||||||
LOG.info("Op Result {}", res);
|
if (res instanceof SelectResult) {
|
||||||
|
SelectResult selectResult = (SelectResult) res;
|
||||||
|
Row row = selectResult.getRows().get(0);
|
||||||
|
if (!row.getSetColumn("vif_configs").contains(vifConfigUuid)) {
|
||||||
|
throw new RuntimeException("Wifi_Radio_Config " + row
|
||||||
|
+ "vif_configs table was not updated {} for new Wifi_VIF_Config " + vifConfigUuid);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
LOG.info("Updated WifiRadioConfig {} for SSID {}:", radioFreqBand, ssid);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
public void configureSsids(OvsdbClient ovsdbClient, OpensyncAPConfig opensyncApConfig) {
|
public void configureSsids(OvsdbClient ovsdbClient, OpensyncAPConfig opensyncApConfig) {
|
||||||
|
|
||||||
@@ -3181,44 +3061,7 @@ public class OvsdbDao {
|
|||||||
|
|
||||||
try {
|
try {
|
||||||
|
|
||||||
boolean isUpdate = false;
|
|
||||||
|
|
||||||
Map<String, WifiVifConfigInfo> provisionedVifs = getProvisionedWifiVifConfigs(ovsdbClient);
|
Map<String, WifiVifConfigInfo> provisionedVifs = getProvisionedWifiVifConfigs(ovsdbClient);
|
||||||
final String ifPrefix = ifName;
|
|
||||||
|
|
||||||
List<String> filteredKeyList = provisionedVifs.keySet().stream().filter(new Predicate<String>() {
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean test(String t) {
|
|
||||||
LOG.info("Checking for Ssid {} in Key {}", ssidConfig.getSsid(), t);
|
|
||||||
return t.contains(ssidConfig.getSsid());
|
|
||||||
}
|
|
||||||
|
|
||||||
}).filter(new Predicate<String>() {
|
|
||||||
@Override
|
|
||||||
public boolean test(String t) {
|
|
||||||
LOG.info("Checking for ifPrefix {} in Key {}", ifPrefix, t);
|
|
||||||
return t.contains(ifPrefix);
|
|
||||||
}
|
|
||||||
}).collect(Collectors.toList());
|
|
||||||
|
|
||||||
if (filteredKeyList.size() > 1) {
|
|
||||||
LOG.warn(
|
|
||||||
"Current configuration has multiple interfaces present on the same frequency band with the same Ssid. This is invalid, deleting these configurations and re-creating.");
|
|
||||||
List<String> invalidIfNames = new ArrayList<>();
|
|
||||||
for (String key : filteredKeyList) {
|
|
||||||
invalidIfNames.add(provisionedVifs.get(key).ifName);
|
|
||||||
}
|
|
||||||
removeInvalidInterfaceConfigurations(ovsdbClient, invalidIfNames);
|
|
||||||
} else if (filteredKeyList.size() == 1) {
|
|
||||||
ifName = provisionedVifs.get(filteredKeyList.get(0)).ifName;
|
|
||||||
isUpdate = true;
|
|
||||||
LOG.info("Update pre-existing Wifi_VIF_Config for ssid {} with if_name {}",
|
|
||||||
ssidConfig.getSsid(), ifName);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!isUpdate) {
|
|
||||||
provisionedVifs = getProvisionedWifiVifConfigs(ovsdbClient);
|
|
||||||
|
|
||||||
List<String> interfaces = new ArrayList<>();
|
List<String> interfaces = new ArrayList<>();
|
||||||
interfaces.add(ifName);
|
interfaces.add(ifName);
|
||||||
@@ -3245,15 +3088,14 @@ public class OvsdbDao {
|
|||||||
LOG.info("Configuring new Wifi_VIF_Config for ssid {} with if_name {}",
|
LOG.info("Configuring new Wifi_VIF_Config for ssid {} with if_name {}",
|
||||||
ssidConfig.getSsid(), ifName);
|
ssidConfig.getSsid(), ifName);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
configureSingleSsid(ovsdbClient, ifName, ssidConfig.getSsid(), ssidBroadcast, security, freqBand,
|
configureSingleSsid(ovsdbClient, ifName, ssidConfig.getSsid(), ssidBroadcast, security, freqBand,
|
||||||
ssidConfig.getVlanId() != null ? ssidConfig.getVlanId() : 1, rrmEnabled, enable80211r,
|
ssidConfig.getVlanId() != null ? ssidConfig.getVlanId() : 1, rrmEnabled, enable80211r,
|
||||||
mobilityDomain, enable80211v, enable80211k, minHwMode, enabled, keyRefresh, uapsdEnabled,
|
mobilityDomain, enable80211v, enable80211k, minHwMode, enabled, keyRefresh, uapsdEnabled,
|
||||||
apBridge, ssidConfig.getForwardMode(), gateway, inet, dns, ipAssignScheme, macBlockList,
|
apBridge, ssidConfig.getForwardMode(), gateway, inet, dns, ipAssignScheme, macBlockList,
|
||||||
rateLimitEnable, ssidDlLimit, ssidUlLimit, clientDlLimit, clientUlLimit, rtsCtsThreshold,
|
rateLimitEnable, ssidDlLimit, ssidUlLimit, clientDlLimit, clientUlLimit, rtsCtsThreshold,
|
||||||
fragThresholdBytes, dtimPeriod, captiveMap, walledGardenAllowlist, bonjourServiceMap,
|
fragThresholdBytes, dtimPeriod, captiveMap, walledGardenAllowlist, bonjourServiceMap
|
||||||
isUpdate);
|
);
|
||||||
|
|
||||||
} catch (IllegalStateException e) {
|
} catch (IllegalStateException e) {
|
||||||
// could not provision this SSID, but still can go on
|
// could not provision this SSID, but still can go on
|
||||||
@@ -3476,11 +3318,9 @@ public class OvsdbDao {
|
|||||||
ssidConfig.getRadiusAcountingServiceInterval().toString());
|
ssidConfig.getRadiusAcountingServiceInterval().toString());
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
LOG.info(
|
LOG.info("No radius_acct_interval defined for ssid {}, Setting radius_acct_interval to 0",
|
||||||
"No radius_acct_interval defined for ssid {}, Setting radius_acct_interval to 0",
|
|
||||||
ssidConfig.getSsid(), rServer);
|
ssidConfig.getSsid(), rServer);
|
||||||
security.put("radius_acct_interval",
|
security.put("radius_acct_interval", "0");
|
||||||
"0");
|
|
||||||
}
|
}
|
||||||
LOG.info(
|
LOG.info(
|
||||||
"set Radius Accounting server attributes radius_acct_ip {} radius_acct_port {} radius_acct_secret {} radius_acct_interval {}",
|
"set Radius Accounting server attributes radius_acct_ip {} radius_acct_port {} radius_acct_secret {} radius_acct_interval {}",
|
||||||
@@ -4980,8 +4820,6 @@ public class OvsdbDao {
|
|||||||
: radioConfig.getBestApSettings().getValue();
|
: radioConfig.getBestApSettings().getValue();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
int multicastRateMbps = 0;
|
int multicastRateMbps = 0;
|
||||||
switch (multicastRate) {
|
switch (multicastRate) {
|
||||||
case rate6mbps:
|
case rate6mbps:
|
||||||
|
|||||||
@@ -126,7 +126,7 @@ public class OpensyncGatewayTipWlanOvsdbClientTest {
|
|||||||
Mockito.verify(ovsdbSessionMapInterface).getSession("Test_Client_21P10C68818122");
|
Mockito.verify(ovsdbSessionMapInterface).getSession("Test_Client_21P10C68818122");
|
||||||
Mockito.verify(ovsdbSession).getOvsdbClient();
|
Mockito.verify(ovsdbSession).getOvsdbClient();
|
||||||
Mockito.verify(opensyncExternalIntegrationInterface).getApConfig("Test_Client_21P10C68818122");
|
Mockito.verify(opensyncExternalIntegrationInterface).getApConfig("Test_Client_21P10C68818122");
|
||||||
Mockito.verify(ovsdbDao).removeAllSsids(ovsdbClient, apConfig);
|
Mockito.verify(ovsdbDao).removeAllSsids(ovsdbClient);
|
||||||
Mockito.verify(ovsdbDao).removeAllStatsConfigs(ovsdbClient);
|
Mockito.verify(ovsdbDao).removeAllStatsConfigs(ovsdbClient);
|
||||||
Mockito.verify(ovsdbDao).configureWifiRadios(ovsdbClient, apConfig);
|
Mockito.verify(ovsdbDao).configureWifiRadios(ovsdbClient, apConfig);
|
||||||
Mockito.verify(ovsdbDao).configureSsids(ovsdbClient, apConfig);
|
Mockito.verify(ovsdbDao).configureSsids(ovsdbClient, apConfig);
|
||||||
|
|||||||
Reference in New Issue
Block a user