mirror of
https://github.com/Telecominfraproject/wlan-cloud-opensync-controller.git
synced 2025-11-27 07:13:35 +00:00
Support provisioning of 8 SSIDs per radio. Initial work still depends on AP changes
This commit is contained in:
@@ -8,7 +8,6 @@ import java.util.Date;
|
|||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Locale;
|
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Map.Entry;
|
import java.util.Map.Entry;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
@@ -114,15 +113,18 @@ public class OvsdbDao {
|
|||||||
public String defaultWanInterfaceType;
|
public String defaultWanInterfaceType;
|
||||||
|
|
||||||
@org.springframework.beans.factory.annotation.Value("${connectus.ovsdb.wifi-iface.default_radio1:home-ap-24}")
|
@org.springframework.beans.factory.annotation.Value("${connectus.ovsdb.wifi-iface.default_radio1:home-ap-24}")
|
||||||
public String ifName2pt4GHz;
|
public String ifPfx2pt4GHz;
|
||||||
@org.springframework.beans.factory.annotation.Value("${connectus.ovsdb.wifi-iface.default_radio2:home-ap-l50}")
|
@org.springframework.beans.factory.annotation.Value("${connectus.ovsdb.wifi-iface.default_radio2:home-ap-l50}")
|
||||||
public String ifName5GHzL;
|
public String ifPfx5GHzL;
|
||||||
@org.springframework.beans.factory.annotation.Value("${connectus.ovsdb.wifi-iface.default_radio0:home-ap-u50}")
|
@org.springframework.beans.factory.annotation.Value("${connectus.ovsdb.wifi-iface.default_radio0:home-ap-u50}")
|
||||||
public String ifName5GHzU;
|
public String ifPfx5GHzU;
|
||||||
|
@org.springframework.beans.factory.annotation.Value("${connectus.ovsdb.wifi-iface.max:8}")
|
||||||
|
public int maxInterfacesPerRadio;
|
||||||
|
|
||||||
@org.springframework.beans.factory.annotation.Value("${connectus.ovsdb.awlan-node.upgrade_dl_timer:300}")
|
@org.springframework.beans.factory.annotation.Value("${connectus.ovsdb.awlan-node.upgrade_dl_timer:300}")
|
||||||
public long upgradeDlTimer;
|
public long upgradeDlTimerSeconds;
|
||||||
@org.springframework.beans.factory.annotation.Value("${connectus.ovsdb.awlan-node.upgrade_timer:300}")
|
@org.springframework.beans.factory.annotation.Value("${connectus.ovsdb.awlan-node.upgrade_timer:300}")
|
||||||
public long upgradeTimer;
|
public long upgradeTimerSeconds;
|
||||||
|
|
||||||
public static final String ovsdbName = "Open_vSwitch";
|
public static final String ovsdbName = "Open_vSwitch";
|
||||||
public static final String awlanNodeDbTable = "AWLAN_Node";
|
public static final String awlanNodeDbTable = "AWLAN_Node";
|
||||||
@@ -1353,11 +1355,11 @@ public class OvsdbDao {
|
|||||||
provisionSingleBridgePortInterface(ovsdbClient, patchW2h, defaultWanInterfaceType, "patch", patchW2hOptions,
|
provisionSingleBridgePortInterface(ovsdbClient, patchW2h, defaultWanInterfaceType, "patch", patchW2hOptions,
|
||||||
provisionedInterfaces, provisionedPorts, provisionedBridges);
|
provisionedInterfaces, provisionedPorts, provisionedBridges);
|
||||||
|
|
||||||
provisionSingleBridgePortInterface(ovsdbClient, ifName5GHzU, bridgeNameVifInterfaces, "vif", null,
|
provisionSingleBridgePortInterface(ovsdbClient, ifPfx5GHzU, bridgeNameVifInterfaces, "vif", null,
|
||||||
provisionedInterfaces, provisionedPorts, provisionedBridges);
|
provisionedInterfaces, provisionedPorts, provisionedBridges);
|
||||||
provisionSingleBridgePortInterface(ovsdbClient, ifName5GHzL, bridgeNameVifInterfaces, "vif", null,
|
provisionSingleBridgePortInterface(ovsdbClient, ifPfx5GHzL, bridgeNameVifInterfaces, "vif", null,
|
||||||
provisionedInterfaces, provisionedPorts, provisionedBridges);
|
provisionedInterfaces, provisionedPorts, provisionedBridges);
|
||||||
provisionSingleBridgePortInterface(ovsdbClient, ifName2pt4GHz, bridgeNameVifInterfaces, "vif", null,
|
provisionSingleBridgePortInterface(ovsdbClient, ifPfx2pt4GHz, bridgeNameVifInterfaces, "vif", null,
|
||||||
provisionedInterfaces, provisionedPorts, provisionedBridges);
|
provisionedInterfaces, provisionedPorts, provisionedBridges);
|
||||||
|
|
||||||
} catch (OvsdbClientException | TimeoutException | ExecutionException | InterruptedException e) {
|
} catch (OvsdbClientException | TimeoutException | ExecutionException | InterruptedException e) {
|
||||||
@@ -2350,33 +2352,49 @@ public class OvsdbDao {
|
|||||||
String freqBand = null;
|
String freqBand = null;
|
||||||
|
|
||||||
if (radioType == RadioType.is2dot4GHz) {
|
if (radioType == RadioType.is2dot4GHz) {
|
||||||
ifName = ifName2pt4GHz;
|
ifName = ifPfx2pt4GHz;
|
||||||
freqBand = "2.4G";
|
freqBand = "2.4G";
|
||||||
} else if (radioType == RadioType.is5GHzL) {
|
} else if (radioType == RadioType.is5GHzL) {
|
||||||
ifName = ifName5GHzL;
|
ifName = ifPfx5GHzL;
|
||||||
freqBand = "5GL";
|
freqBand = "5GL";
|
||||||
} else if (radioType == RadioType.is5GHzU) {
|
} else if (radioType == RadioType.is5GHzU) {
|
||||||
ifName = ifName5GHzU;
|
ifName = ifPfx5GHzU;
|
||||||
freqBand = "5GU";
|
freqBand = "5GU";
|
||||||
} else if (radioType == RadioType.is5GHz) {
|
} else if (radioType == RadioType.is5GHz) {
|
||||||
ifName = ifName5GHzU;
|
ifName = ifPfx5GHzU;
|
||||||
freqBand = "5G";
|
freqBand = "5G";
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!getProvisionedWifiVifConfigs(ovsdbClient).containsKey(ifName + "_" + ssidConfig.getSsid())) {
|
int numberOfInterfaces = 0;
|
||||||
try {
|
for (String key : getProvisionedWifiVifConfigs(ovsdbClient).keySet()) {
|
||||||
|
if (key.startsWith(ifName)) {
|
||||||
configureSingleSsid(ovsdbClient, defaultLanInterfaceName, ifName, ssidConfig.getSsid(),
|
numberOfInterfaces++;
|
||||||
ssidBroadcast, security, freqBand, ssidConfig.getVlanId(), rrmEnabled, enable80211r,
|
|
||||||
minHwMode, enabled, keyRefresh, uapsdEnabled, apBridge, ssidConfig.getForwardMode(),
|
|
||||||
gateway, inet, dns, ipAssignScheme);
|
|
||||||
|
|
||||||
} catch (IllegalStateException e) {
|
|
||||||
// could not provision this SSID, but still can go on
|
|
||||||
LOG.warn("could not provision SSID {} on {}", ssidConfig.getSsid(), freqBand);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
|
||||||
|
if (numberOfInterfaces >= maxInterfacesPerRadio) {
|
||||||
|
// this cannot occur, log error, do not try to provision
|
||||||
|
throw new IllegalStateException(
|
||||||
|
"Cannot provision more than " + maxInterfacesPerRadio + " interfaces per Wifi Radio");
|
||||||
|
}
|
||||||
|
if (numberOfInterfaces > 0) {
|
||||||
|
// 1st interface has no number, 2nd has '-1', 3rd has
|
||||||
|
// '-2' etc.
|
||||||
|
ifName = ifName + "-" + numberOfInterfaces;
|
||||||
|
}
|
||||||
|
|
||||||
|
configureSingleSsid(ovsdbClient, defaultLanInterfaceName, ifName, ssidConfig.getSsid(),
|
||||||
|
ssidBroadcast, security, freqBand, ssidConfig.getVlanId(), rrmEnabled, enable80211r,
|
||||||
|
minHwMode, enabled, keyRefresh, uapsdEnabled, apBridge, ssidConfig.getForwardMode(),
|
||||||
|
gateway, inet, dns, ipAssignScheme);
|
||||||
|
|
||||||
|
} catch (IllegalStateException e) {
|
||||||
|
// could not provision this SSID, but still can go on
|
||||||
|
LOG.warn("could not provision SSID {} on {}", ssidConfig.getSsid(), freqBand);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2918,9 +2936,9 @@ public class OvsdbDao {
|
|||||||
|
|
||||||
List<Operation> operations = new ArrayList<>();
|
List<Operation> operations = new ArrayList<>();
|
||||||
Map<String, Value> updateColumns = new HashMap<>();
|
Map<String, Value> updateColumns = new HashMap<>();
|
||||||
updateColumns.put("upgrade_dl_timer", new Atom<Long>(upgradeDlTimer));
|
updateColumns.put("upgrade_dl_timer", new Atom<>(upgradeDlTimerSeconds));
|
||||||
updateColumns.put("firmware_pass", new Atom<String>(validationCode));
|
updateColumns.put("firmware_pass", new Atom<>(validationCode));
|
||||||
updateColumns.put("firmware_url", new Atom<String>(firmwareUrl));
|
updateColumns.put("firmware_url", new Atom<>(firmwareUrl));
|
||||||
updateColumns.put("version_matrix", com.vmware.ovsdb.protocol.operation.notation.Map.of(versionMap));
|
updateColumns.put("version_matrix", com.vmware.ovsdb.protocol.operation.notation.Map.of(versionMap));
|
||||||
|
|
||||||
Row row = new Row(updateColumns);
|
Row row = new Row(updateColumns);
|
||||||
@@ -2944,7 +2962,7 @@ public class OvsdbDao {
|
|||||||
LOG.debug("flashFirmware for {} to version {}", apId, firmwareVersion);
|
LOG.debug("flashFirmware for {} to version {}", apId, firmwareVersion);
|
||||||
List<Operation> operations = new ArrayList<>();
|
List<Operation> operations = new ArrayList<>();
|
||||||
Map<String, Value> updateColumns = new HashMap<>();
|
Map<String, Value> updateColumns = new HashMap<>();
|
||||||
updateColumns.put("upgrade_timer", new Atom<Long>(upgradeTimer));
|
updateColumns.put("upgrade_timer", new Atom<>(upgradeTimerSeconds));
|
||||||
|
|
||||||
Row row = new Row(updateColumns);
|
Row row = new Row(updateColumns);
|
||||||
operations.add(new Update(awlanNodeDbTable, row));
|
operations.add(new Update(awlanNodeDbTable, row));
|
||||||
|
|||||||
Reference in New Issue
Block a user