TW-20 - propagate config changes to AP when they happen on a portal

This commit is contained in:
DTop
2020-02-13 12:16:13 -05:00
parent 981723f2a3
commit 1d64d5840b
4 changed files with 42 additions and 7 deletions

View File

@@ -0,0 +1,9 @@
package ai.connectus.opensync.external.integration;
import java.util.Set;
public interface ConnectusOvsdbClientInterface {
Set<String> getConnectedClientIds();
String changeRedirectorAddress(String apId, String newRedirectorAddress);
void processConfigChanged(String apId);
}

View File

@@ -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;
}

View File

@@ -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<String> getConnectedClients()

View File

@@ -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);
}
}