From 1d64d5840b7d11f6f13820a47c1866596a7e4629 Mon Sep 17 00:00:00 2001 From: DTop Date: Thu, 13 Feb 2020 12:16:13 -0500 Subject: [PATCH] TW-20 - propagate config changes to AP when they happen on a portal --- .../ConnectusOvsdbClientInterface.java | 9 ++++++++ .../OpensyncKDCGatewayController.java | 9 ++++++-- ....java => OpenSyncConnectusController.java} | 8 +++---- .../opensync/ovsdb/ConnectusOvsdbClient.java | 23 ++++++++++++++++++- 4 files changed, 42 insertions(+), 7 deletions(-) create mode 100644 opensync_ext_interface/src/main/java/ai/connectus/opensync/external/integration/ConnectusOvsdbClientInterface.java rename opensync_gateway/src/main/java/ai/connectus/opensync/experiment/{OpenSyncExperimentController.java => OpenSyncConnectusController.java} (87%) diff --git a/opensync_ext_interface/src/main/java/ai/connectus/opensync/external/integration/ConnectusOvsdbClientInterface.java b/opensync_ext_interface/src/main/java/ai/connectus/opensync/external/integration/ConnectusOvsdbClientInterface.java new file mode 100644 index 0000000..d7413cc --- /dev/null +++ b/opensync_ext_interface/src/main/java/ai/connectus/opensync/external/integration/ConnectusOvsdbClientInterface.java @@ -0,0 +1,9 @@ +package ai.connectus.opensync.external.integration; + +import java.util.Set; + +public interface ConnectusOvsdbClientInterface { + Set getConnectedClientIds(); + String changeRedirectorAddress(String apId, String newRedirectorAddress); + void processConfigChanged(String apId); +} diff --git a/opensync_ext_kdc/src/main/java/ai/connectus/opensync/external/integration/controller/OpensyncKDCGatewayController.java b/opensync_ext_kdc/src/main/java/ai/connectus/opensync/external/integration/controller/OpensyncKDCGatewayController.java index 691bf7d..42eb2ab 100644 --- a/opensync_ext_kdc/src/main/java/ai/connectus/opensync/external/integration/controller/OpensyncKDCGatewayController.java +++ b/opensync_ext_kdc/src/main/java/ai/connectus/opensync/external/integration/controller/OpensyncKDCGatewayController.java @@ -23,7 +23,6 @@ import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RestController; import com.whizcontrol.core.model.json.BaseJsonModel; -import com.whizcontrol.core.model.service.CloudServiceType; import com.whizcontrol.core.model.service.ServiceInstanceInformation; import com.whizcontrol.core.server.container.ConnectorProperties; import com.whizcontrol.customerequipmentgateway.models.CEGWBaseCommand; @@ -41,6 +40,7 @@ import com.whizcontrol.equipmentroutinginfo.models.EquipmentRoutingRecord; import com.whizcontrol.equipmentroutinginfo.models.RoutingRegisterResponse; import com.whizcontrol.server.exceptions.ConfigurationException; +import ai.connectus.opensync.external.integration.ConnectusOvsdbClientInterface; import ai.connectus.opensync.external.integration.OvsdbSession; import ai.connectus.opensync.external.integration.OvsdbSessionMapInterface; @@ -64,6 +64,9 @@ public class OpensyncKDCGatewayController { @Autowired private ServiceInstanceInformation serviceInstanceInfo; + @Autowired + private ConnectusOvsdbClientInterface connectusOvsdbClient; + /** * Flag indicates if this gateway has registered with routing service */ @@ -224,7 +227,9 @@ public class OpensyncKDCGatewayController { CustomerEquipmentCommandResponse response = new CustomerEquipmentCommandResponse(CEGWCommandResultCode.Success.ordinal(), "Received Command " + command.getCommandType() + " for " + qrCode); - //TODO: implement sending command via ovsdb session. + if(command instanceof CEGWConfigChangeNotification) { + connectusOvsdbClient.processConfigChanged(qrCode); + } return response; } diff --git a/opensync_gateway/src/main/java/ai/connectus/opensync/experiment/OpenSyncExperimentController.java b/opensync_gateway/src/main/java/ai/connectus/opensync/experiment/OpenSyncConnectusController.java similarity index 87% rename from opensync_gateway/src/main/java/ai/connectus/opensync/experiment/OpenSyncExperimentController.java rename to opensync_gateway/src/main/java/ai/connectus/opensync/experiment/OpenSyncConnectusController.java index e1ccb01..4109f08 100644 --- a/opensync_gateway/src/main/java/ai/connectus/opensync/experiment/OpenSyncExperimentController.java +++ b/opensync_gateway/src/main/java/ai/connectus/opensync/experiment/OpenSyncConnectusController.java @@ -12,16 +12,16 @@ import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; -import ai.connectus.opensync.ovsdb.ConnectusOvsdbClient; +import ai.connectus.opensync.external.integration.ConnectusOvsdbClientInterface; @Profile("ovsdb_manager") @RestController -public class OpenSyncExperimentController { +public class OpenSyncConnectusController { - private static final Logger LOG = LoggerFactory.getLogger(OpenSyncExperimentController.class); + private static final Logger LOG = LoggerFactory.getLogger(OpenSyncConnectusController.class); @Autowired - ConnectusOvsdbClient connectusOvsdbClient; + ConnectusOvsdbClientInterface connectusOvsdbClient; @RequestMapping(value = "/connectedClients", method = RequestMethod.GET) public List getConnectedClients() diff --git a/opensync_gateway/src/main/java/ai/connectus/opensync/ovsdb/ConnectusOvsdbClient.java b/opensync_gateway/src/main/java/ai/connectus/opensync/ovsdb/ConnectusOvsdbClient.java index 2443b1f..fa92251 100644 --- a/opensync_gateway/src/main/java/ai/connectus/opensync/ovsdb/ConnectusOvsdbClient.java +++ b/opensync_gateway/src/main/java/ai/connectus/opensync/ovsdb/ConnectusOvsdbClient.java @@ -15,6 +15,7 @@ import com.vmware.ovsdb.callback.ConnectionCallback; import com.vmware.ovsdb.service.OvsdbClient; import com.vmware.ovsdb.service.OvsdbPassiveConnectionListener; +import ai.connectus.opensync.external.integration.ConnectusOvsdbClientInterface; import ai.connectus.opensync.external.integration.OpensyncExternalIntegrationInterface; import ai.connectus.opensync.external.integration.OvsdbSession; import ai.connectus.opensync.external.integration.OvsdbSessionMapInterface; @@ -26,7 +27,7 @@ import io.netty.handler.ssl.SslContext; @Profile("ovsdb_manager") @Component -public class ConnectusOvsdbClient { +public class ConnectusOvsdbClient implements ConnectusOvsdbClientInterface { private static final Logger LOG = LoggerFactory.getLogger(ConnectusOvsdbClient.class); @@ -177,4 +178,24 @@ public class ConnectusOvsdbClient { return ret; } + @Override + public void processConfigChanged(String apId) { + LOG.debug("Starting processConfigChanged for {}", apId); + + OvsdbSession ovsdbSession = ovsdbSessionMapInterface.getSession(apId); + if(ovsdbSession == null) { + throw new IllegalStateException("AP with id " + apId + " is not connected") ; + } + + OvsdbClient ovsdbClient = ovsdbSession.getOvsdbClient(); + OpensyncAPConfig opensyncAPConfig = extIntegrationInterface.getApConfig(apId); + + if(opensyncAPConfig!=null) { + ovsdbDao.removeAllSsids(ovsdbClient); + ovsdbDao.configureWifiRadios(ovsdbClient, opensyncAPConfig.getRadioConfig()); + ovsdbDao.configureSsids(ovsdbClient, opensyncAPConfig.getSsidConfigs()); + } + + LOG.debug("Finished processConfigChanged for {}", apId); + } }