mirror of
https://github.com/Telecominfraproject/wlan-cloud-opensync-controller.git
synced 2025-11-23 05:14:51 +00:00
SSID (Wifi_VIF_Config) attributes for min_hw_mode, Wifi_Inet_Config updates for SSID update
This commit is contained in:
@@ -22,6 +22,7 @@ import com.telecominfraproject.wlan.core.model.equipment.RadioType;
|
|||||||
import com.telecominfraproject.wlan.equipment.models.ApElementConfiguration;
|
import com.telecominfraproject.wlan.equipment.models.ApElementConfiguration;
|
||||||
import com.telecominfraproject.wlan.equipment.models.ElementRadioConfiguration;
|
import com.telecominfraproject.wlan.equipment.models.ElementRadioConfiguration;
|
||||||
import com.telecominfraproject.wlan.equipment.models.RadioConfiguration;
|
import com.telecominfraproject.wlan.equipment.models.RadioConfiguration;
|
||||||
|
import com.telecominfraproject.wlan.equipment.models.RadioMode;
|
||||||
import com.telecominfraproject.wlan.equipment.models.StateSetting;
|
import com.telecominfraproject.wlan.equipment.models.StateSetting;
|
||||||
import com.telecominfraproject.wlan.opensync.external.integration.models.ConnectNodeInfo;
|
import com.telecominfraproject.wlan.opensync.external.integration.models.ConnectNodeInfo;
|
||||||
import com.telecominfraproject.wlan.opensync.external.integration.models.OpensyncAPConfig;
|
import com.telecominfraproject.wlan.opensync.external.integration.models.OpensyncAPConfig;
|
||||||
@@ -645,6 +646,7 @@ public class OvsdbDao {
|
|||||||
columns.add("uapsd_enable");
|
columns.add("uapsd_enable");
|
||||||
columns.add("vif_radio_idx");
|
columns.add("vif_radio_idx");
|
||||||
columns.add("security");
|
columns.add("security");
|
||||||
|
columns.add("vlan_id");
|
||||||
|
|
||||||
try {
|
try {
|
||||||
LOG.debug("Retrieving WifiVifConfig:");
|
LOG.debug("Retrieving WifiVifConfig:");
|
||||||
@@ -675,6 +677,10 @@ public class OvsdbDao {
|
|||||||
wifiVifConfigInfo.vifRadioIdx = row.getIntegerColumn("vif_radio_idx").intValue();
|
wifiVifConfigInfo.vifRadioIdx = row.getIntegerColumn("vif_radio_idx").intValue();
|
||||||
wifiVifConfigInfo.security = row.getMapColumn("security");
|
wifiVifConfigInfo.security = row.getMapColumn("security");
|
||||||
|
|
||||||
|
if (row.getColumns().get("vlan_id") != null && row.getColumns().get("vlan_id").getClass()
|
||||||
|
.equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
|
||||||
|
wifiVifConfigInfo.vlanId = (row.getIntegerColumn("vlan_id").intValue());
|
||||||
|
}
|
||||||
ret.put(wifiVifConfigInfo.ifName + '_' + wifiVifConfigInfo.ssid, wifiVifConfigInfo);
|
ret.put(wifiVifConfigInfo.ifName + '_' + wifiVifConfigInfo.ssid, wifiVifConfigInfo);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -701,6 +707,7 @@ public class OvsdbDao {
|
|||||||
columns.add("if_type");
|
columns.add("if_type");
|
||||||
columns.add("ip_assign_scheme");
|
columns.add("ip_assign_scheme");
|
||||||
columns.add("network");
|
columns.add("network");
|
||||||
|
columns.add("vlan_id");
|
||||||
|
|
||||||
try {
|
try {
|
||||||
LOG.debug("Retrieving WifiInetConfig:");
|
LOG.debug("Retrieving WifiInetConfig:");
|
||||||
@@ -725,7 +732,10 @@ public class OvsdbDao {
|
|||||||
wifiInetConfigInfo.ifType = row.getStringColumn("if_type");
|
wifiInetConfigInfo.ifType = row.getStringColumn("if_type");
|
||||||
wifiInetConfigInfo.ipAssignScheme = row.getStringColumn("ip_assign_scheme");
|
wifiInetConfigInfo.ipAssignScheme = row.getStringColumn("ip_assign_scheme");
|
||||||
wifiInetConfigInfo.network = row.getBooleanColumn("network");
|
wifiInetConfigInfo.network = row.getBooleanColumn("network");
|
||||||
|
if (row.getColumns().get("vlan_id") != null && row.getColumns().get("vlan_id").getClass()
|
||||||
|
.equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
|
||||||
|
wifiInetConfigInfo.vlanId = (row.getIntegerColumn("vlan_id").intValue());
|
||||||
|
}
|
||||||
ret.put(wifiInetConfigInfo.ifName, wifiInetConfigInfo);
|
ret.put(wifiInetConfigInfo.ifName, wifiInetConfigInfo);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1676,7 +1686,7 @@ public class OvsdbDao {
|
|||||||
public void configureSingleSsid(OvsdbClient ovsdbClient, String bridge, String ifName, String ssid,
|
public void configureSingleSsid(OvsdbClient ovsdbClient, String bridge, String ifName, String ssid,
|
||||||
boolean ssidBroadcast, Map<String, String> security,
|
boolean ssidBroadcast, Map<String, String> security,
|
||||||
Map<String, WifiRadioConfigInfo> provisionedWifiRadioConfigs, String radioIfName, int vlanId,
|
Map<String, WifiRadioConfigInfo> provisionedWifiRadioConfigs, String radioIfName, int vlanId,
|
||||||
int vifRadioIdx, boolean rrmEnabled, boolean enabled) {
|
int vifRadioIdx, boolean rrmEnabled, String minHwMode, boolean enabled) {
|
||||||
|
|
||||||
List<Operation> operations = new ArrayList<>();
|
List<Operation> operations = new ArrayList<>();
|
||||||
Map<String, Value> updateColumns = new HashMap<>();
|
Map<String, Value> updateColumns = new HashMap<>();
|
||||||
@@ -1694,8 +1704,9 @@ public class OvsdbDao {
|
|||||||
updateColumns.put("ssid_broadcast", new Atom<>(ssidBroadcast ? "enabled" : "disabled"));
|
updateColumns.put("ssid_broadcast", new Atom<>(ssidBroadcast ? "enabled" : "disabled"));
|
||||||
updateColumns.put("uapsd_enable", new Atom<>(true));
|
updateColumns.put("uapsd_enable", new Atom<>(true));
|
||||||
updateColumns.put("vif_radio_idx", new Atom<Integer>(vifRadioIdx));
|
updateColumns.put("vif_radio_idx", new Atom<Integer>(vifRadioIdx));
|
||||||
|
updateColumns.put("min_hw_mode", new Atom<>(minHwMode));
|
||||||
|
|
||||||
updateColumns.put("vlan_id", new Atom<>(vlanId));
|
updateColumns.put("vlan_id", new Atom<Integer>(vlanId));
|
||||||
|
|
||||||
@SuppressWarnings("unchecked")
|
@SuppressWarnings("unchecked")
|
||||||
com.vmware.ovsdb.protocol.operation.notation.Map<String, String> securityMap = com.vmware.ovsdb.protocol.operation.notation.Map
|
com.vmware.ovsdb.protocol.operation.notation.Map<String, String> securityMap = com.vmware.ovsdb.protocol.operation.notation.Map
|
||||||
@@ -1756,6 +1767,11 @@ public class OvsdbDao {
|
|||||||
LOG.debug("Op Result {}", res);
|
LOG.debug("Op Result {}", res);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Map<String, WifiInetConfigInfo> inetConfigs = getProvisionedWifiInetConfigs(ovsdbClient);
|
||||||
|
if (inetConfigs.containsKey(ifName))
|
||||||
|
updateWifiInetConfig(ovsdbClient, vlanId, ifName, enabled);
|
||||||
|
else
|
||||||
|
insertWifiInetConfigForVif(ovsdbClient, vlanId, ifName, enabled);
|
||||||
|
|
||||||
LOG.info("Provisioned SSID {} on interface {} / {}", ssid, ifName, radioIfName);
|
LOG.info("Provisioned SSID {} on interface {} / {}", ssid, ifName, radioIfName);
|
||||||
|
|
||||||
@@ -1790,6 +1806,16 @@ public class OvsdbDao {
|
|||||||
String ssidSecurityMode = ssidConfig.getSecureMode().name();
|
String ssidSecurityMode = ssidConfig.getSecureMode().name();
|
||||||
String opensyncSecurityMode = "OPEN";
|
String opensyncSecurityMode = "OPEN";
|
||||||
|
|
||||||
|
RadioMode radioMode = ((ApElementConfiguration) opensyncApConfig.getCustomerEquipment().getDetails())
|
||||||
|
.getAdvancedRadioMap().get(radioType).getRadioMode();
|
||||||
|
|
||||||
|
String minHwMode = "11n"; // min_hw_mode is 11ac, wifi 5, we can also take ++ (11ax) but 2.4GHz only
|
||||||
|
// Wifi4 --
|
||||||
|
if (!radioType.equals(RadioType.is2dot4GHz))
|
||||||
|
minHwMode = "11ac";
|
||||||
|
if (!radioType.equals(RadioType.is2dot4GHz) && radioMode.equals(RadioMode.modeX))
|
||||||
|
minHwMode = "11x";
|
||||||
|
|
||||||
if (ssidSecurityMode.equalsIgnoreCase("wpaPSK") || ssidSecurityMode.equalsIgnoreCase("wpa2PSK"))
|
if (ssidSecurityMode.equalsIgnoreCase("wpaPSK") || ssidSecurityMode.equalsIgnoreCase("wpa2PSK"))
|
||||||
opensyncSecurityMode = "WPA-PSK";
|
opensyncSecurityMode = "WPA-PSK";
|
||||||
else if (ssidSecurityMode.equalsIgnoreCase("wep"))
|
else if (ssidSecurityMode.equalsIgnoreCase("wep"))
|
||||||
@@ -1828,7 +1854,8 @@ public class OvsdbDao {
|
|||||||
try {
|
try {
|
||||||
configureSingleSsid(ovsdbClient, bridge, ifName, ssidConfig.getSsid(), ssidBroadcast, security,
|
configureSingleSsid(ovsdbClient, bridge, ifName, ssidConfig.getSsid(), ssidBroadcast, security,
|
||||||
provisionedWifiRadioConfigs, radioIfName, ssidConfig.getVlanId(), vifRadioIdx,
|
provisionedWifiRadioConfigs, radioIfName, ssidConfig.getVlanId(), vifRadioIdx,
|
||||||
rrmEnabled, enabled);
|
rrmEnabled, minHwMode, enabled);
|
||||||
|
|
||||||
} 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
|
||||||
LOG.warn("could not provision SSID {} on {}", ssidConfig.getSsid(), radioIfName);
|
LOG.warn("could not provision SSID {} on {}", ssidConfig.getSsid(), radioIfName);
|
||||||
@@ -1840,6 +1867,82 @@ public class OvsdbDao {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void insertWifiInetConfigForVif(OvsdbClient ovsdbClient, int vlanId, String ifName, boolean enabled) {
|
||||||
|
|
||||||
|
List<Operation> operations = new ArrayList<>();
|
||||||
|
Map<String, Value> updateColumns = new HashMap<>();
|
||||||
|
|
||||||
|
try {
|
||||||
|
/// usr/plume/tools/ovsh i Wifi_Inet_Config NAT:=false enabled:=true
|
||||||
|
/// if_name:=home-ap-24 if_type:=vif ip_assign_scheme:=none
|
||||||
|
/// network:=true
|
||||||
|
|
||||||
|
updateColumns.put("NAT", new Atom<>(false));
|
||||||
|
updateColumns.put("enabled", new Atom<Boolean>(enabled));
|
||||||
|
updateColumns.put("if_name", new Atom<String>(ifName));
|
||||||
|
updateColumns.put("if_type", new Atom<>("vif"));
|
||||||
|
updateColumns.put("ip_assign_scheme", new Atom<>("none"));
|
||||||
|
updateColumns.put("network", new Atom<>(true));
|
||||||
|
updateColumns.put("vlan_id", new Atom<Integer>(vlanId));
|
||||||
|
|
||||||
|
Row row = new Row(updateColumns);
|
||||||
|
operations.add(new Insert(wifiInetConfigDbTable, row));
|
||||||
|
|
||||||
|
CompletableFuture<OperationResult[]> fResult = ovsdbClient.transact(ovsdbName, operations);
|
||||||
|
OperationResult[] result = fResult.get(ovsdbTimeoutSec, TimeUnit.SECONDS);
|
||||||
|
|
||||||
|
LOG.debug("Provisioned WifiInetConfig {}", ifName);
|
||||||
|
|
||||||
|
for (OperationResult res : result) {
|
||||||
|
LOG.debug("Op Result {}", res);
|
||||||
|
}
|
||||||
|
|
||||||
|
} catch (OvsdbClientException | TimeoutException | ExecutionException | InterruptedException e) {
|
||||||
|
LOG.error("Error in configureWifiInet", e);
|
||||||
|
throw new RuntimeException(e);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private void updateWifiInetConfig(OvsdbClient ovsdbClient, int vlanId, String ifName, boolean enabled
|
||||||
|
) {
|
||||||
|
|
||||||
|
List<Operation> operations = new ArrayList<>();
|
||||||
|
Map<String, Value> updateColumns = new HashMap<>();
|
||||||
|
List<Condition> conditions = new ArrayList<>();
|
||||||
|
conditions.add(new Condition("if_name", Function.EQUALS, new Atom<>(ifName)));
|
||||||
|
|
||||||
|
try {
|
||||||
|
/// usr/plume/tools/ovsh i Wifi_Inet_Config NAT:=false enabled:=true
|
||||||
|
/// if_name:=home-ap-24 if_type:=vif ip_assign_scheme:=none
|
||||||
|
/// network:=true
|
||||||
|
|
||||||
|
updateColumns.put("NAT", new Atom<>(false));
|
||||||
|
updateColumns.put("enabled", new Atom<Boolean>(enabled));
|
||||||
|
updateColumns.put("if_type", new Atom<>("vif"));
|
||||||
|
updateColumns.put("ip_assign_scheme", new Atom<>("none"));
|
||||||
|
updateColumns.put("network", new Atom<>(true));
|
||||||
|
updateColumns.put("vlan_id", new Atom<Integer>(vlanId));
|
||||||
|
|
||||||
|
Row row = new Row(updateColumns);
|
||||||
|
operations.add(new Update(wifiInetConfigDbTable, conditions, row));
|
||||||
|
|
||||||
|
CompletableFuture<OperationResult[]> fResult = ovsdbClient.transact(ovsdbName, operations);
|
||||||
|
OperationResult[] result = fResult.get(ovsdbTimeoutSec, TimeUnit.SECONDS);
|
||||||
|
|
||||||
|
LOG.debug("Provisioned WifiInetConfig {}", ifName);
|
||||||
|
|
||||||
|
for (OperationResult res : result) {
|
||||||
|
LOG.debug("Op Result {}", res);
|
||||||
|
}
|
||||||
|
|
||||||
|
} catch (OvsdbClientException | TimeoutException | ExecutionException | InterruptedException e) {
|
||||||
|
LOG.error("Error in configureWifiInet", e);
|
||||||
|
throw new RuntimeException(e);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
public void configureWifiInet(OvsdbClient ovsdbClient, Map<String, WifiInetConfigInfo> provisionedWifiInetConfigs,
|
public void configureWifiInet(OvsdbClient ovsdbClient, Map<String, WifiInetConfigInfo> provisionedWifiInetConfigs,
|
||||||
String ifName) {
|
String ifName) {
|
||||||
List<Operation> operations = new ArrayList<>();
|
List<Operation> operations = new ArrayList<>();
|
||||||
|
|||||||
@@ -12,6 +12,7 @@ public class WifiInetConfigInfo implements Cloneable{
|
|||||||
public boolean network;
|
public boolean network;
|
||||||
|
|
||||||
public Uuid uuid;
|
public Uuid uuid;
|
||||||
|
public int vlanId;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public WifiInetConfigInfo clone() {
|
public WifiInetConfigInfo clone() {
|
||||||
@@ -26,8 +27,8 @@ public class WifiInetConfigInfo implements Cloneable{
|
|||||||
@Override
|
@Override
|
||||||
public String toString() {
|
public String toString() {
|
||||||
return String.format(
|
return String.format(
|
||||||
"WifiInetConfigInfo [nat=%s, enabled=%s, ifName=%s, ifType=%s, ipAssignScheme=%s, network=%s, uuid=%s]",
|
"WifiInetConfigInfo [nat=%s, enabled=%s, ifName=%s, ifType=%s, ipAssignScheme=%s, network=%s, uuid=%s, vlanId=%s]",
|
||||||
nat, enabled, ifName, ifType, ipAssignScheme, network, uuid);
|
nat, enabled, ifName, ifType, ipAssignScheme, network, uuid, vlanId);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -22,6 +22,7 @@ public class WifiVifConfigInfo implements Cloneable{
|
|||||||
public Map<String,String> security;
|
public Map<String,String> security;
|
||||||
|
|
||||||
public Uuid uuid;
|
public Uuid uuid;
|
||||||
|
public int vlanId;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public WifiVifConfigInfo clone() {
|
public WifiVifConfigInfo clone() {
|
||||||
@@ -40,9 +41,9 @@ public class WifiVifConfigInfo implements Cloneable{
|
|||||||
@Override
|
@Override
|
||||||
public String toString() {
|
public String toString() {
|
||||||
return String.format(
|
return String.format(
|
||||||
"WifiVifConfigInfo [bridge=%s, btm=%s, enabled=%s, ftPsk=%s, groupRekey=%s, ifName=%s, mode=%s, rrm=%s, ssid=%s, ssidBroadcast=%s, uapsdEnable=%s, vifRadioIdx=%s, security=%s, uuid=%s]",
|
"WifiVifConfigInfo [bridge=%s, btm=%s, enabled=%s, ftPsk=%s, groupRekey=%s, ifName=%s, mode=%s, rrm=%s, ssid=%s, ssidBroadcast=%s, uapsdEnable=%s, vifRadioIdx=%s, security=%s, uuid=%s, vlanId=%s]",
|
||||||
bridge, btm, enabled, ftPsk, groupRekey, ifName, mode, rrm, ssid, ssidBroadcast, uapsdEnable,
|
bridge, btm, enabled, ftPsk, groupRekey, ifName, mode, rrm, ssid, ssidBroadcast, uapsdEnable,
|
||||||
vifRadioIdx, security, uuid);
|
vifRadioIdx, security, uuid,vlanId);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user