Compare commits

...

1 Commits

Author SHA1 Message Date
Mike Hansen
d35a7af319 Merge pull request #102 from Telecominfraproject/WIFI-2080
WIFI-2080 Add support for cell size attributes lightweight provisioni…
2021-07-14 10:09:34 -04:00
18 changed files with 836 additions and 16 deletions

View File

@@ -100,6 +100,7 @@ components:
- EquipmentAddedEvent - EquipmentAddedEvent
- EquipmentChangedEvent - EquipmentChangedEvent
- EquipmentChannelsChangedEvent - EquipmentChannelsChangedEvent
- EquipmentCellSizeAttributesChangedEvent
- EquipmentRemovedEvent - EquipmentRemovedEvent
- StatusChangedEvent - StatusChangedEvent
- StatusRemovedEvent - StatusRemovedEvent
@@ -181,6 +182,7 @@ components:
- $ref: '#/components/schemas/EquipmentAddedEvent' - $ref: '#/components/schemas/EquipmentAddedEvent'
- $ref: '#/components/schemas/EquipmentChangedEvent' - $ref: '#/components/schemas/EquipmentChangedEvent'
- $ref: '#/components/schemas/EquipmentChannelsChangedEvent' - $ref: '#/components/schemas/EquipmentChannelsChangedEvent'
- $ref: '#/components/schemas/EquipmentCellSizeAttributesChangedEvent'
- $ref: '#/components/schemas/EquipmentRemovedEvent' - $ref: '#/components/schemas/EquipmentRemovedEvent'
- $ref: '#/components/schemas/StatusChangedEvent' - $ref: '#/components/schemas/StatusChangedEvent'
- $ref: '#/components/schemas/StatusRemovedEvent' - $ref: '#/components/schemas/StatusRemovedEvent'
@@ -451,6 +453,43 @@ components:
newBackupChannels: newBackupChannels:
$ref: '#/components/schemas/IntegerPerRadioTypeMap' $ref: '#/components/schemas/IntegerPerRadioTypeMap'
EquipmentCellSizeAttributesChangedEvent:
properties:
allOf:
$ref: '#/components/schemas/EquipmentChangedEvent'
cellSizeAttributesMap:
$ref: '#/components/schemas/CellSizeAttributesPerRadioTypeMap'
CellSizeAttributes:
properties:
rxCellSizeDb:
type: integer
format: int32
probeResponseThresholdDb:
type: integer
format: int32
clientDisconnectThresholdDb:
type: integer
format: int32
eirpTxPowerDb:
type: integer
format: int32
multicastRate:
$ref: '#/components/schemas/MulticastRate'
managementRate:
$ref: '#/components/schemas/ManagementRate'
CellSizeAttributesPerRadioTypeMap:
properties:
is5GHz:
$ref: '#/components/schemas/CellSizeAttributes'
is5GHzU:
$ref: '#/components/schemas/CellSizeAttributes'
is5GHzL:
$ref: '#/components/schemas/CellSizeAttributes'
is2dot4GHz:
$ref: '#/components/schemas/CellSizeAttributes'
EquipmentRemovedEvent: EquipmentRemovedEvent:
properties: properties:
eventTimestamp: eventTimestamp:

View File

@@ -0,0 +1,76 @@
package com.telecominfraproject.wlan.equipmentgateway.models;
import java.util.EnumMap;
import java.util.Map;
import java.util.Objects;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.telecominfraproject.wlan.core.model.equipment.RadioType;
import com.telecominfraproject.wlan.equipment.models.CellSizeAttributes;
public class CEGWCellSizeAttributesRequest extends EquipmentCommand {
private static final long serialVersionUID = -5809359509515188374L;
private Map<RadioType, CellSizeAttributes> cellSizeAttributesMap = new EnumMap<>(RadioType.class);
protected CEGWCellSizeAttributesRequest() {
// serial
}
public CEGWCellSizeAttributesRequest(String inventoryId, long equipmentId, Map<RadioType, CellSizeAttributes> cellSizeAttributesMap) {
super(CEGWCommandType.CellSizeAttributesRequest, inventoryId, equipmentId);
this.cellSizeAttributesMap = cellSizeAttributesMap;
}
@JsonIgnore
public CellSizeAttributes getCellSize(RadioType radioType) {
return cellSizeAttributesMap.get(radioType);
}
@JsonIgnore
public void setCellSize(RadioType radioType, CellSizeAttributes cellSizeAttributes) {
this.cellSizeAttributesMap.put(radioType, cellSizeAttributes);
}
public Map<RadioType, CellSizeAttributes> getCellSizeAttributesMap() {
return cellSizeAttributesMap;
}
public void setCellSizeAttributesMap(Map<RadioType, CellSizeAttributes> cellSizeAttributesMap) {
this.cellSizeAttributesMap = cellSizeAttributesMap;
}
@Override
public boolean hasUnsupportedValue() {
if (super.hasUnsupportedValue()) {
return true;
}
if (cellSizeAttributesMap != null && !cellSizeAttributesMap.isEmpty()) {
if (cellSizeAttributesMap.get(RadioType.UNSUPPORTED) != null) {
return true;
}
if (hasUnsupportedValue(cellSizeAttributesMap)) {
return true;
}
}
return false;
}
@Override
public int hashCode() {
return Objects.hash(cellSizeAttributesMap);
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (!super.equals(obj))
return false;
if (getClass() != obj.getClass())
return false;
CEGWCellSizeAttributesRequest other = (CEGWCellSizeAttributesRequest) obj;
return Objects.equals(cellSizeAttributesMap, other.cellSizeAttributesMap);
}
}

View File

@@ -7,7 +7,7 @@ public enum CEGWCommandType {
* Notification to CE for configuration change * Notification to CE for configuration change
*/ */
Unknown, ConfigChangeNotification, FirmwareDownloadRequest, ChangeRedirectorHost, StartDebugEngine, StopDebugEngine, FirmwareFlashRequest, Unknown, ConfigChangeNotification, FirmwareDownloadRequest, ChangeRedirectorHost, StartDebugEngine, StopDebugEngine, FirmwareFlashRequest,
RebootRequest, BlinkRequest, CloseSessionRequest, NeighbourhoodReport, ClientDeauthRequest, CellSizeRequest, RebootRequest, BlinkRequest, CloseSessionRequest, NeighbourhoodReport, ClientDeauthRequest, CellSizeAttributesRequest,
NewChannelRequest, ReportCurrentAPCRequest, FileUpdateRequest, InterferenceThresholdUpdateRequest, NewChannelRequest, ReportCurrentAPCRequest, FileUpdateRequest, InterferenceThresholdUpdateRequest,
BestApConfigurationUpdateRequest, BestApConfigurationUpdateRequest,

View File

@@ -0,0 +1,111 @@
package com.telecominfraproject.wlan.equipment.models;
import java.util.Objects;
import com.telecominfraproject.wlan.core.model.json.BaseJsonModel;
public class CellSizeAttributes extends BaseJsonModel {
private static final long serialVersionUID = -6799381201211331251L;
private Integer rxCellSizeDb;
private Integer probeResponseThresholdDb;
private Integer clientDisconnectThresholdDb;
private Integer eirpTxPowerDb;
private MulticastRate multicastRate;
private ManagementRate managementRate;
public CellSizeAttributes() {
// serialize
}
public CellSizeAttributes(Integer rxCellSizeDb, Integer probeResponseThresholdDb, ManagementRate managementRate,
Integer eirpTxPowerDb, MulticastRate multicastRate, Integer clientDisconnectThresholdDb) {
super();
this.rxCellSizeDb = rxCellSizeDb;
this.probeResponseThresholdDb = probeResponseThresholdDb;
this.clientDisconnectThresholdDb = clientDisconnectThresholdDb;
this.eirpTxPowerDb = eirpTxPowerDb;
this.multicastRate = multicastRate;
this.managementRate = managementRate;
}
public Integer getRxCellSizeDb() {
return rxCellSizeDb;
}
public void setRxCellSizeDb(Integer rxCellSizeDb) {
this.rxCellSizeDb = rxCellSizeDb;
}
public Integer getProbeResponseThresholdDb() {
return probeResponseThresholdDb;
}
public void setProbeResponseThresholdDb(Integer probeResponseThresholdDb) {
this.probeResponseThresholdDb = probeResponseThresholdDb;
}
public Integer getClientDisconnectThresholdDb() {
return clientDisconnectThresholdDb;
}
public void setClientDisconnectThresholdDb(Integer clientDisconnectThresholdDb) {
this.clientDisconnectThresholdDb = clientDisconnectThresholdDb;
}
public Integer getEirpTxPowerDb() {
return eirpTxPowerDb;
}
public void setEirpTxPowerDb(Integer eirpTxPowerDb) {
this.eirpTxPowerDb = eirpTxPowerDb;
}
public MulticastRate getMulticastRate() {
return multicastRate;
}
public void setMulticastRate(MulticastRate multicastRate) {
this.multicastRate = multicastRate;
}
public ManagementRate getManagementRate() {
return managementRate;
}
public void setManagementRate(ManagementRate managementRate) {
this.managementRate = managementRate;
}
@Override
public boolean hasUnsupportedValue()
{
return MulticastRate.isUnsupported(multicastRate) ||
ManagementRate.isUnsupported(managementRate);
}
@Override
public int hashCode() {
return Objects.hash(rxCellSizeDb, probeResponseThresholdDb, clientDisconnectThresholdDb,
eirpTxPowerDb, multicastRate, managementRate);
}
@Override
public boolean equals(Object obj) {
if (this == obj) {
return true;
}
if (!super.equals(obj)) {
return false;
}
if (!(obj instanceof CellSizeAttributes)) {
return false;
}
CellSizeAttributes other = (CellSizeAttributes) obj;
return Objects.equals(rxCellSizeDb, other.rxCellSizeDb)
&& Objects.equals(probeResponseThresholdDb, other.probeResponseThresholdDb)
&& Objects.equals(clientDisconnectThresholdDb, other.clientDisconnectThresholdDb)
&& Objects.equals(eirpTxPowerDb, other.eirpTxPowerDb)
&& Objects.equals(multicastRate, other.multicastRate)
&& Objects.equals(managementRate, other.managementRate);
}
}

View File

@@ -23,7 +23,9 @@ public class ElementRadioConfiguration extends BaseJsonModel
* These are weird since they are dependent on the radio type * These are weird since they are dependent on the radio type
*/ */
public final static int DEFAULT_RX_CELL_SIZE_DB = -90; public final static int DEFAULT_RX_CELL_SIZE_DB = -90;
public final static int DEFAULT_EIRP_TX_POWER = 18; public final static int DEFAULT_EIRP_TX_POWER_DB = 18;
public final static int DEFAULT_PROBE_RESPONSE_THRESHOLD_DB = -90;
public final static int DEFAULT_CLIENT_DISCONNECT_THRESHOLD_DB = -90;
private RadioType radioType; private RadioType radioType;
private Integer channelNumber; // The channel that was picked through the private Integer channelNumber; // The channel that was picked through the
@@ -77,10 +79,10 @@ public class ElementRadioConfiguration extends BaseJsonModel
private ElementRadioConfiguration() { private ElementRadioConfiguration() {
// Tx power default was discussed with Shaikh (set to 18) // Tx power default was discussed with Shaikh (set to 18)
setEirpTxPower(SourceSelectionValue.createProfileInstance(DEFAULT_EIRP_TX_POWER)); setEirpTxPower(SourceSelectionValue.createProfileInstance(DEFAULT_EIRP_TX_POWER_DB));
setRxCellSizeDb(SourceSelectionValue.createProfileInstance(DEFAULT_RX_CELL_SIZE_DB)); setRxCellSizeDb(SourceSelectionValue.createProfileInstance(DEFAULT_RX_CELL_SIZE_DB));
setProbeResponseThresholdDb(SourceSelectionValue.createProfileInstance(-90)); setProbeResponseThresholdDb(SourceSelectionValue.createProfileInstance(DEFAULT_PROBE_RESPONSE_THRESHOLD_DB));
setClientDisconnectThresholdDb(SourceSelectionValue.createProfileInstance(-90)); setClientDisconnectThresholdDb(SourceSelectionValue.createProfileInstance(DEFAULT_CLIENT_DISCONNECT_THRESHOLD_DB));
setPerimeterDetectionEnabled(true); setPerimeterDetectionEnabled(true);
setBestAPSteerType(BestAPSteerType.both); setBestAPSteerType(BestAPSteerType.both);
} }

View File

@@ -0,0 +1,55 @@
package com.telecominfraproject.wlan.equipment.models;
import java.util.EnumMap;
import java.util.Map;
import com.telecominfraproject.wlan.core.model.equipment.RadioType;
import com.telecominfraproject.wlan.core.model.json.BaseJsonModel;
public class EquipmentCellSizeAttributesUpdateRequest extends BaseJsonModel {
private static final long serialVersionUID = 4332550605030562832L;
private long equipmentId;
private Map<RadioType, CellSizeAttributes> cellSizeAttributesMap = new EnumMap<>(RadioType.class);
private Map<RadioType, Boolean> autoCellSizeSelections = new EnumMap<>(RadioType.class);
public long getEquipmentId() {
return equipmentId;
}
public void setEquipmentId(long equipmentId) {
this.equipmentId = equipmentId;
}
public Map<RadioType, CellSizeAttributes> getCellSizeAttributesMap() {
return cellSizeAttributesMap;
}
public void setCellSizeAttributesMap(Map<RadioType, CellSizeAttributes> cellSizeAttributesMap) {
this.cellSizeAttributesMap = cellSizeAttributesMap;
}
public Map<RadioType, Boolean> getAutoCellSizeSelections() {
return autoCellSizeSelections;
}
public void setAutoCellSizeSelections(Map<RadioType, Boolean> autoCellSizeSelections) {
this.autoCellSizeSelections = autoCellSizeSelections;
}
@Override
public boolean hasUnsupportedValue() {
if (super.hasUnsupportedValue()) {
return true;
}
if (cellSizeAttributesMap != null && !cellSizeAttributesMap.isEmpty()) {
if (cellSizeAttributesMap.get(RadioType.UNSUPPORTED) != null) {
return true;
}
if (hasUnsupportedValue(cellSizeAttributesMap)) {
return true;
}
}
return false;
}
}

View File

@@ -9,14 +9,14 @@ import com.telecominfraproject.wlan.core.model.json.JsonDeserializationUtils;
public enum MulticastRate { public enum MulticastRate {
auto(0L), auto(0L),
rate6mbps(1L), rate6mbps(6L),
rate9mbps(2L), rate9mbps(9L),
rate12mbps(3L), rate12mbps(12L),
rate18mbps(4L), rate18mbps(18L),
rate24mbps(5L), rate24mbps(24L),
rate36mbps(6L), rate36mbps(36L),
rate48mbps(7L), rate48mbps(48L),
rate54mbps(8L), rate54mbps(54L),
UNSUPPORTED(-1L); UNSUPPORTED(-1L);

View File

@@ -0,0 +1,34 @@
package com.telecominfraproject.wlan.equipment.models.events;
import java.util.Map;
import com.telecominfraproject.wlan.core.model.equipment.RadioType;
import com.telecominfraproject.wlan.equipment.models.CellSizeAttributes;
import com.telecominfraproject.wlan.equipment.models.Equipment;
public class EquipmentCellSizeAttributesChangedEvent extends EquipmentChangedEvent {
private static final long serialVersionUID = -5336592950746293096L;
private Map<RadioType, CellSizeAttributes> cellSizeAttributesMap;
public EquipmentCellSizeAttributesChangedEvent(Equipment equipment, Map<RadioType, CellSizeAttributes> cellSizeAttributesMap){
super(equipment);
setEquipmentChangeType(EquipmentChangeType.CellSizeAttributesOnly);
this.cellSizeAttributesMap = cellSizeAttributesMap;
}
/**
* Constructor used by JSON
*/
private EquipmentCellSizeAttributesChangedEvent() {
super();
}
public Map<RadioType, CellSizeAttributes> getCellSizeAttributesMap() {
return cellSizeAttributesMap;
}
public void setCellSizeAttributesMap(Map<RadioType, CellSizeAttributes> cellSizeAttributesMap) {
this.cellSizeAttributesMap = cellSizeAttributesMap;
}
}

View File

@@ -10,7 +10,7 @@ import com.telecominfraproject.wlan.core.model.json.JsonDeserializationUtils;
public enum EquipmentChangeType { public enum EquipmentChangeType {
All(0), ChannelsOnly(1), UNSUPPORTED(-1); All(0), ChannelsOnly(1), CellSizeAttributesOnly(2), UNSUPPORTED(-1);
private final int id; private final int id;
private static final Map<Integer, EquipmentChangeType> ELEMENTS = new HashMap<>(); private static final Map<Integer, EquipmentChangeType> ELEMENTS = new HashMap<>();

View File

@@ -11,6 +11,7 @@ import com.telecominfraproject.wlan.core.model.pagination.PaginationResponse;
import com.telecominfraproject.wlan.core.model.pair.PairLongLong; import com.telecominfraproject.wlan.core.model.pair.PairLongLong;
import com.telecominfraproject.wlan.equipment.models.CustomerEquipmentCounts; import com.telecominfraproject.wlan.equipment.models.CustomerEquipmentCounts;
import com.telecominfraproject.wlan.equipment.models.Equipment; import com.telecominfraproject.wlan.equipment.models.Equipment;
import com.telecominfraproject.wlan.equipment.models.EquipmentCellSizeAttributesUpdateRequest;
import com.telecominfraproject.wlan.equipment.models.EquipmentChannelsUpdateRequest; import com.telecominfraproject.wlan.equipment.models.EquipmentChannelsUpdateRequest;
import com.telecominfraproject.wlan.equipment.models.EquipmentDetails; import com.telecominfraproject.wlan.equipment.models.EquipmentDetails;
import com.telecominfraproject.wlan.equipment.models.bulkupdate.rrm.EquipmentRrmBulkUpdateRequest; import com.telecominfraproject.wlan.equipment.models.bulkupdate.rrm.EquipmentRrmBulkUpdateRequest;
@@ -79,6 +80,15 @@ public interface EquipmentServiceInterface {
*/ */
Equipment updateChannels(EquipmentChannelsUpdateRequest channelsUpdateRequest); Equipment updateChannels(EquipmentChannelsUpdateRequest channelsUpdateRequest);
/**
* Updates Equipment Cell Size Attributes
*
* @param CellSizeAttributes
* @return updated Equipment object
* @throws RuntimeException if Equipment record does not exist or if it was modified concurrently
*/
Equipment updateCellSizeAttributes(EquipmentCellSizeAttributesUpdateRequest cellSizeAttributesUpdateRequest);
/** /**
* Deletes Equipment * Deletes Equipment
* *

View File

@@ -17,6 +17,7 @@ import com.telecominfraproject.wlan.core.model.pair.PairLongLong;
import com.telecominfraproject.wlan.equipment.controller.EquipmentController; import com.telecominfraproject.wlan.equipment.controller.EquipmentController;
import com.telecominfraproject.wlan.equipment.models.CustomerEquipmentCounts; import com.telecominfraproject.wlan.equipment.models.CustomerEquipmentCounts;
import com.telecominfraproject.wlan.equipment.models.Equipment; import com.telecominfraproject.wlan.equipment.models.Equipment;
import com.telecominfraproject.wlan.equipment.models.EquipmentCellSizeAttributesUpdateRequest;
import com.telecominfraproject.wlan.equipment.models.EquipmentChannelsUpdateRequest; import com.telecominfraproject.wlan.equipment.models.EquipmentChannelsUpdateRequest;
import com.telecominfraproject.wlan.equipment.models.EquipmentDetails; import com.telecominfraproject.wlan.equipment.models.EquipmentDetails;
import com.telecominfraproject.wlan.equipment.models.bulkupdate.rrm.EquipmentRrmBulkUpdateRequest; import com.telecominfraproject.wlan.equipment.models.bulkupdate.rrm.EquipmentRrmBulkUpdateRequest;
@@ -88,6 +89,12 @@ public class EquipmentServiceLocal implements EquipmentServiceInterface {
return equipmentController.updateChannels(channelsUpdateRequest); return equipmentController.updateChannels(channelsUpdateRequest);
} }
@Override
public Equipment updateCellSizeAttributes(EquipmentCellSizeAttributesUpdateRequest cellSizeAttributesUpdateRequest) {
LOG.debug("calling equipmentController.updateCellSizeAttributes {} ", cellSizeAttributesUpdateRequest);
return equipmentController.updateCellSizeAttributes(cellSizeAttributesUpdateRequest);
}
@Override @Override
public GenericResponse updateRrmBulk(EquipmentRrmBulkUpdateRequest request) { public GenericResponse updateRrmBulk(EquipmentRrmBulkUpdateRequest request) {
LOG.debug("calling equipmentController.updateRrmBulk {} ", request); LOG.debug("calling equipmentController.updateRrmBulk {} ", request);

View File

@@ -23,6 +23,7 @@ import com.telecominfraproject.wlan.core.model.pair.PairLongLong;
import com.telecominfraproject.wlan.datastore.exceptions.DsDataValidationException; import com.telecominfraproject.wlan.datastore.exceptions.DsDataValidationException;
import com.telecominfraproject.wlan.equipment.models.CustomerEquipmentCounts; import com.telecominfraproject.wlan.equipment.models.CustomerEquipmentCounts;
import com.telecominfraproject.wlan.equipment.models.Equipment; import com.telecominfraproject.wlan.equipment.models.Equipment;
import com.telecominfraproject.wlan.equipment.models.EquipmentCellSizeAttributesUpdateRequest;
import com.telecominfraproject.wlan.equipment.models.EquipmentChannelsUpdateRequest; import com.telecominfraproject.wlan.equipment.models.EquipmentChannelsUpdateRequest;
import com.telecominfraproject.wlan.equipment.models.EquipmentDetails; import com.telecominfraproject.wlan.equipment.models.EquipmentDetails;
import com.telecominfraproject.wlan.equipment.models.bulkupdate.rrm.EquipmentRrmBulkUpdateRequest; import com.telecominfraproject.wlan.equipment.models.bulkupdate.rrm.EquipmentRrmBulkUpdateRequest;
@@ -261,6 +262,24 @@ public class EquipmentServiceRemote extends BaseRemoteClient implements Equipmen
return ret; return ret;
} }
@Override
public Equipment updateCellSizeAttributes(EquipmentCellSizeAttributesUpdateRequest cellSizeAttributesUpdateRequest) {
LOG.debug("calling equipment.updateCellSizeAttributes {} ", cellSizeAttributesUpdateRequest);
HttpEntity<String> request = new HttpEntity<String>( cellSizeAttributesUpdateRequest.toString(), headers );
ResponseEntity<Equipment> responseEntity = restTemplate.exchange(
getBaseUrl() + "/cellSize",
HttpMethod.PUT, request, Equipment.class);
Equipment ret = responseEntity.getBody();
LOG.debug("completed equipment.updateCellSizeAttributes {} ", ret);
return ret;
}
@Override @Override
public GenericResponse updateRrmBulk(EquipmentRrmBulkUpdateRequest bulkRequest) { public GenericResponse updateRrmBulk(EquipmentRrmBulkUpdateRequest bulkRequest) {

View File

@@ -30,6 +30,7 @@ import com.telecominfraproject.wlan.core.model.equipment.DeploymentType;
import com.telecominfraproject.wlan.core.model.equipment.EquipmentType; import com.telecominfraproject.wlan.core.model.equipment.EquipmentType;
import com.telecominfraproject.wlan.core.model.equipment.MacAddress; import com.telecominfraproject.wlan.core.model.equipment.MacAddress;
import com.telecominfraproject.wlan.core.model.equipment.RadioType; import com.telecominfraproject.wlan.core.model.equipment.RadioType;
import com.telecominfraproject.wlan.core.model.equipment.SourceType;
import com.telecominfraproject.wlan.core.model.pagination.ColumnAndSort; import com.telecominfraproject.wlan.core.model.pagination.ColumnAndSort;
import com.telecominfraproject.wlan.core.model.pagination.PaginationContext; import com.telecominfraproject.wlan.core.model.pagination.PaginationContext;
import com.telecominfraproject.wlan.core.model.pagination.PaginationResponse; import com.telecominfraproject.wlan.core.model.pagination.PaginationResponse;
@@ -38,12 +39,17 @@ import com.telecominfraproject.wlan.core.model.pair.PairLongLong;
import com.telecominfraproject.wlan.datastore.exceptions.DsDataValidationException; import com.telecominfraproject.wlan.datastore.exceptions.DsDataValidationException;
import com.telecominfraproject.wlan.equipment.models.AntennaType; import com.telecominfraproject.wlan.equipment.models.AntennaType;
import com.telecominfraproject.wlan.equipment.models.ApElementConfiguration; import com.telecominfraproject.wlan.equipment.models.ApElementConfiguration;
import com.telecominfraproject.wlan.equipment.models.CellSizeAttributes;
import com.telecominfraproject.wlan.equipment.models.ChannelPowerLevel; import com.telecominfraproject.wlan.equipment.models.ChannelPowerLevel;
import com.telecominfraproject.wlan.equipment.models.CustomerEquipmentCounts; import com.telecominfraproject.wlan.equipment.models.CustomerEquipmentCounts;
import com.telecominfraproject.wlan.equipment.models.ElementRadioConfiguration; import com.telecominfraproject.wlan.equipment.models.ElementRadioConfiguration;
import com.telecominfraproject.wlan.equipment.models.Equipment; import com.telecominfraproject.wlan.equipment.models.Equipment;
import com.telecominfraproject.wlan.equipment.models.EquipmentCellSizeAttributesUpdateRequest;
import com.telecominfraproject.wlan.equipment.models.EquipmentChannelsUpdateRequest; import com.telecominfraproject.wlan.equipment.models.EquipmentChannelsUpdateRequest;
import com.telecominfraproject.wlan.equipment.models.EquipmentDetails; import com.telecominfraproject.wlan.equipment.models.EquipmentDetails;
import com.telecominfraproject.wlan.equipment.models.ManagementRate;
import com.telecominfraproject.wlan.equipment.models.MulticastRate;
import com.telecominfraproject.wlan.equipment.models.RadioConfiguration;
import com.telecominfraproject.wlan.equipment.models.bulkupdate.rrm.EquipmentRrmBulkUpdateItem; import com.telecominfraproject.wlan.equipment.models.bulkupdate.rrm.EquipmentRrmBulkUpdateItem;
import com.telecominfraproject.wlan.equipment.models.bulkupdate.rrm.EquipmentRrmBulkUpdateRequest; import com.telecominfraproject.wlan.equipment.models.bulkupdate.rrm.EquipmentRrmBulkUpdateRequest;
import com.telecominfraproject.wlan.remote.tests.BaseRemoteTest; import com.telecominfraproject.wlan.remote.tests.BaseRemoteTest;
@@ -1010,6 +1016,249 @@ public class EquipmentServiceRemoteTest extends BaseRemoteTest {
} }
@Test
public void testCellSizeAttrsUpdate() {
int customerId = getNextCustomerId();
//Create test Equipment
Equipment equipment = new Equipment();
equipment.setName("test_cellSizeAttrsUpdate");
equipment.setCustomerId(customerId);
equipment.setProfileId(1);
equipment.setLocationId(2);
equipment.setEquipmentType(EquipmentType.AP);
equipment.setInventoryId("inv-" + equipment.getName());
ApElementConfiguration apConfig = ApElementConfiguration.createWithDefaults();
if (apConfig.getElementRadioConfiguration(RadioType.is5GHz) == null) {
Map<RadioType, ElementRadioConfiguration> radioMapInit = apConfig.getRadioMap();
Map<RadioType, RadioConfiguration> advRadioMapInit = apConfig.getAdvancedRadioMap();
radioMapInit.put(RadioType.is5GHz, ElementRadioConfiguration.createWithDefaults(RadioType.is5GHz));
apConfig.setRadioMap(radioMapInit);
advRadioMapInit.put(RadioType.is5GHz, RadioConfiguration.createWithDefaults(RadioType.is5GHz));
apConfig.setAdvancedRadioMap(advRadioMapInit);
}
equipment.setDetails(apConfig);
Equipment equipmentCreated = remoteInterface.create(equipment);
long equipmentId = equipmentCreated.getId();
Equipment equipmentGet = remoteInterface.get(equipmentId);
assertNotNull(equipmentGet);
ApElementConfiguration apElementConfiguration = (ApElementConfiguration)equipmentGet.getDetails();
assertNotNull(apElementConfiguration);
Map<RadioType, ElementRadioConfiguration> radioMap = apElementConfiguration.getRadioMap();
assertNotNull(radioMap);
Map<RadioType, RadioConfiguration> radioConfigMap = apElementConfiguration.getAdvancedRadioMap();
assertNotNull(radioConfigMap);
checkCellSizeAttrsProfile(radioMap, radioConfigMap);
Map<RadioType, CellSizeAttributes> cellSizeAttributesMap = new EnumMap<>(RadioType.class);
Map<RadioType, Boolean> autoCellSizeSelections = new EnumMap<>(RadioType.class);
CellSizeAttributes cellSizeAttributes2dot4G = new CellSizeAttributes(-87, -85, ManagementRate.rate6mbps,
16, MulticastRate.rate6mbps, -90);
CellSizeAttributes cellSizeAttributes5G = new CellSizeAttributes(-78, -76, ManagementRate.rate12mbps,
13, MulticastRate.rate12mbps, -81);
cellSizeAttributesMap.put(RadioType.is2dot4GHz, cellSizeAttributes2dot4G);
cellSizeAttributesMap.put(RadioType.is5GHz, cellSizeAttributes5G);
autoCellSizeSelections.put(RadioType.is2dot4GHz, false);
autoCellSizeSelections.put(RadioType.is5GHz, false);
EquipmentCellSizeAttributesUpdateRequest cellSizeAttributesUpdateRequest = new EquipmentCellSizeAttributesUpdateRequest();
cellSizeAttributesUpdateRequest.setEquipmentId(equipmentId);
cellSizeAttributesUpdateRequest.setCellSizeAttributesMap(cellSizeAttributesMap);
cellSizeAttributesUpdateRequest.setAutoCellSizeSelections(autoCellSizeSelections);
Equipment equipmentUpdate1 = remoteInterface.updateCellSizeAttributes(cellSizeAttributesUpdateRequest);
Equipment equipmentGetUpdate1 = remoteInterface.get(equipmentId);
assertEqualEquipments(equipmentGetUpdate1, equipmentUpdate1);
apElementConfiguration = (ApElementConfiguration)equipmentGetUpdate1.getDetails();
assertNotNull(apElementConfiguration);
radioMap = apElementConfiguration.getRadioMap();
assertNotNull(radioMap);
radioConfigMap = apElementConfiguration.getAdvancedRadioMap();
checkCellSizeAttrsAutoOrManual(radioMap, radioConfigMap, cellSizeAttributesMap, false);
autoCellSizeSelections.clear();
autoCellSizeSelections.put(RadioType.is2dot4GHz, true);
autoCellSizeSelections.put(RadioType.is5GHz, true);
Equipment equipmentUpdate2 = remoteInterface.updateCellSizeAttributes(cellSizeAttributesUpdateRequest);
Equipment equipmentGetUpdate2 = remoteInterface.get(equipmentId);
assertEqualEquipments(equipmentGetUpdate2, equipmentUpdate2);
apElementConfiguration = (ApElementConfiguration)equipmentGetUpdate2.getDetails();
assertNotNull(apElementConfiguration);
radioMap = apElementConfiguration.getRadioMap();
assertNotNull(radioMap);
radioConfigMap = apElementConfiguration.getAdvancedRadioMap();
assertNotNull(radioConfigMap);
checkCellSizeAttrsAutoOrManual(radioMap, radioConfigMap, cellSizeAttributesMap, true);
// Clean up after test
remoteInterface.delete(equipmentId);
}
private void checkCellSizeAttrsProfile(Map<RadioType, ElementRadioConfiguration> radioMap, Map<RadioType, RadioConfiguration> radioConfigMap) {
assertEquals(SourceType.profile, radioMap.get(RadioType.is2dot4GHz).getRxCellSizeDb().getSource());
assertEquals(ElementRadioConfiguration.DEFAULT_RX_CELL_SIZE_DB, radioMap.get(
RadioType.is2dot4GHz).getRxCellSizeDb().getValue().intValue());
assertEquals(SourceType.profile, radioMap.get(RadioType.is2dot4GHz).getProbeResponseThresholdDb().getSource());
assertEquals(ElementRadioConfiguration.DEFAULT_PROBE_RESPONSE_THRESHOLD_DB, radioMap.get(
RadioType.is2dot4GHz).getProbeResponseThresholdDb().getValue().intValue());
assertEquals(SourceType.profile, radioMap.get(RadioType.is2dot4GHz).getEirpTxPower().getSource());
assertEquals(ElementRadioConfiguration.DEFAULT_EIRP_TX_POWER_DB, radioMap.get(
RadioType.is2dot4GHz).getEirpTxPower().getValue().intValue());
assertEquals(SourceType.profile, radioMap.get(RadioType.is2dot4GHz).getClientDisconnectThresholdDb().getSource());
assertEquals(ElementRadioConfiguration.DEFAULT_CLIENT_DISCONNECT_THRESHOLD_DB, radioMap.get(
RadioType.is2dot4GHz).getClientDisconnectThresholdDb().getValue().intValue());
assertEquals(SourceType.profile, radioConfigMap.get(RadioType.is2dot4GHz).getMulticastRate().getSource());
assertEquals(MulticastRate.auto, radioConfigMap.get(RadioType.is2dot4GHz).getMulticastRate().getValue());
assertEquals(SourceType.profile, radioConfigMap.get(RadioType.is2dot4GHz).getManagementRate().getSource());
assertEquals(ManagementRate.auto, radioConfigMap.get(RadioType.is2dot4GHz).getManagementRate().getValue());
assertEquals(SourceType.profile, radioMap.get(RadioType.is5GHz).getRxCellSizeDb().getSource());
assertEquals(ElementRadioConfiguration.DEFAULT_RX_CELL_SIZE_DB, radioMap.get(
RadioType.is2dot4GHz).getRxCellSizeDb().getValue().intValue());
assertEquals(SourceType.profile, radioMap.get(RadioType.is5GHz).getProbeResponseThresholdDb().getSource());
assertEquals(ElementRadioConfiguration.DEFAULT_PROBE_RESPONSE_THRESHOLD_DB, radioMap.get(
RadioType.is2dot4GHz).getProbeResponseThresholdDb().getValue().intValue());
assertEquals(SourceType.profile, radioMap.get(RadioType.is5GHz).getEirpTxPower().getSource());
assertEquals(ElementRadioConfiguration.DEFAULT_EIRP_TX_POWER_DB, radioMap.get(
RadioType.is2dot4GHz).getEirpTxPower().getValue().intValue());
assertEquals(SourceType.profile, radioMap.get(RadioType.is5GHz).getClientDisconnectThresholdDb().getSource());
assertEquals(ElementRadioConfiguration.DEFAULT_CLIENT_DISCONNECT_THRESHOLD_DB, radioMap.get(
RadioType.is2dot4GHz).getClientDisconnectThresholdDb().getValue().intValue());
assertEquals(SourceType.profile, radioConfigMap.get(RadioType.is5GHz).getMulticastRate().getSource());
assertEquals(MulticastRate.auto, radioConfigMap.get(RadioType.is5GHz).getMulticastRate().getValue());
assertEquals(SourceType.profile, radioConfigMap.get(RadioType.is5GHz).getManagementRate().getSource());
assertEquals(ManagementRate.auto, radioConfigMap.get(RadioType.is5GHz).getManagementRate().getValue());
}
private void checkCellSizeAttrsAutoOrManual(Map<RadioType, ElementRadioConfiguration> radioMap, Map<RadioType, RadioConfiguration> radioConfigMap,
Map<RadioType, CellSizeAttributes> cellSizeAttributesMap, boolean auto) {
CellSizeAttributes cellSizeAttributes2dot4G = cellSizeAttributesMap.get(RadioType.is2dot4GHz);
if (auto) {
assertEquals(SourceType.auto, radioMap.get(RadioType.is2dot4GHz).getRxCellSizeDb().getSource());
} else {
assertEquals(SourceType.manual, radioMap.get(RadioType.is2dot4GHz).getRxCellSizeDb().getSource());
}
assertEquals(cellSizeAttributes2dot4G.getRxCellSizeDb().intValue(), radioMap.get(
RadioType.is2dot4GHz).getRxCellSizeDb().getValue().intValue());
if (auto) {
assertEquals(SourceType.auto, radioMap.get(RadioType.is2dot4GHz).getProbeResponseThresholdDb().getSource());
} else {
assertEquals(SourceType.manual, radioMap.get(RadioType.is2dot4GHz).getProbeResponseThresholdDb().getSource());
}
assertEquals(cellSizeAttributes2dot4G.getProbeResponseThresholdDb().intValue(), radioMap.get(
RadioType.is2dot4GHz).getProbeResponseThresholdDb().getValue().intValue());
if (auto) {
assertEquals(SourceType.auto, radioMap.get(RadioType.is2dot4GHz).getEirpTxPower().getSource());
} else {
assertEquals(SourceType.manual, radioMap.get(RadioType.is2dot4GHz).getEirpTxPower().getSource());
}
assertEquals(cellSizeAttributes2dot4G.getEirpTxPowerDb().intValue(), radioMap.get(
RadioType.is2dot4GHz).getEirpTxPower().getValue().intValue());
if (auto) {
assertEquals(SourceType.auto, radioMap.get(RadioType.is2dot4GHz).getClientDisconnectThresholdDb().getSource());
} else {
assertEquals(SourceType.manual, radioMap.get(RadioType.is2dot4GHz).getClientDisconnectThresholdDb().getSource());
}
assertEquals(cellSizeAttributes2dot4G.getClientDisconnectThresholdDb().intValue(), radioMap.get(
RadioType.is2dot4GHz).getClientDisconnectThresholdDb().getValue().intValue());
if (auto) {
assertEquals(SourceType.auto, radioConfigMap.get(RadioType.is2dot4GHz).getMulticastRate().getSource());
} else {
assertEquals(SourceType.manual, radioConfigMap.get(RadioType.is2dot4GHz).getMulticastRate().getSource());
}
assertEquals(cellSizeAttributes2dot4G.getMulticastRate(),
radioConfigMap.get(RadioType.is2dot4GHz).getMulticastRate().getValue());
if (auto) {
assertEquals(SourceType.auto, radioConfigMap.get(RadioType.is2dot4GHz).getManagementRate().getSource());
} else {
assertEquals(SourceType.manual, radioConfigMap.get(RadioType.is2dot4GHz).getManagementRate().getSource());
}
assertEquals(cellSizeAttributes2dot4G.getManagementRate(),
radioConfigMap.get(RadioType.is2dot4GHz).getManagementRate().getValue());
CellSizeAttributes cellSizeAttributes5G = cellSizeAttributesMap.get(RadioType.is5GHz);
if (auto) {
assertEquals(SourceType.auto, radioMap.get(RadioType.is5GHz).getRxCellSizeDb().getSource());
} else {
assertEquals(SourceType.manual, radioMap.get(RadioType.is5GHz).getRxCellSizeDb().getSource());
}
assertEquals(cellSizeAttributes5G.getRxCellSizeDb().intValue(), radioMap.get(
RadioType.is5GHz).getRxCellSizeDb().getValue().intValue());
if (auto) {
assertEquals(SourceType.auto, radioMap.get(RadioType.is5GHz).getProbeResponseThresholdDb().getSource());
} else {
assertEquals(SourceType.manual, radioMap.get(RadioType.is5GHz).getProbeResponseThresholdDb().getSource());
}
assertEquals(cellSizeAttributes5G.getProbeResponseThresholdDb().intValue(), radioMap.get(
RadioType.is5GHz).getProbeResponseThresholdDb().getValue().intValue());
if (auto) {
assertEquals(SourceType.auto, radioMap.get(RadioType.is5GHz).getEirpTxPower().getSource());
} else {
assertEquals(SourceType.manual, radioMap.get(RadioType.is5GHz).getEirpTxPower().getSource());
}
assertEquals(cellSizeAttributes5G.getEirpTxPowerDb().intValue(), radioMap.get(
RadioType.is5GHz).getEirpTxPower().getValue().intValue());
if (auto) {
assertEquals(SourceType.auto, radioMap.get(RadioType.is5GHz).getClientDisconnectThresholdDb().getSource());
} else {
assertEquals(SourceType.manual, radioMap.get(RadioType.is5GHz).getClientDisconnectThresholdDb().getSource());
}
assertEquals(cellSizeAttributes5G.getClientDisconnectThresholdDb().intValue(), radioMap.get(
RadioType.is5GHz).getClientDisconnectThresholdDb().getValue().intValue());
if (auto) {
assertEquals(SourceType.auto, radioConfigMap.get(RadioType.is5GHz).getMulticastRate().getSource());
} else {
assertEquals(SourceType.manual, radioConfigMap.get(RadioType.is5GHz).getMulticastRate().getSource());
}
assertEquals(cellSizeAttributes5G.getMulticastRate(),
radioConfigMap.get(RadioType.is5GHz).getMulticastRate().getValue());
if (auto) {
assertEquals(SourceType.auto, radioConfigMap.get(RadioType.is5GHz).getManagementRate().getSource());
} else {
assertEquals(SourceType.manual, radioConfigMap.get(RadioType.is5GHz).getManagementRate().getSource());
}
assertEquals(cellSizeAttributes5G.getManagementRate(),
radioConfigMap.get(RadioType.is5GHz).getManagementRate().getValue());
}
private void assertEqualEquipments( private void assertEqualEquipments(
Equipment expected, Equipment expected,
Equipment actual) { Equipment actual) {

View File

@@ -23,6 +23,7 @@ import org.springframework.web.bind.annotation.RestController;
import com.telecominfraproject.wlan.cloudeventdispatcher.CloudEventDispatcherInterface; import com.telecominfraproject.wlan.cloudeventdispatcher.CloudEventDispatcherInterface;
import com.telecominfraproject.wlan.core.model.equipment.EquipmentType; import com.telecominfraproject.wlan.core.model.equipment.EquipmentType;
import com.telecominfraproject.wlan.core.model.equipment.RadioType; import com.telecominfraproject.wlan.core.model.equipment.RadioType;
import com.telecominfraproject.wlan.core.model.equipment.SourceSelectionValue;
import com.telecominfraproject.wlan.core.model.json.BaseJsonModel; import com.telecominfraproject.wlan.core.model.json.BaseJsonModel;
import com.telecominfraproject.wlan.core.model.json.GenericResponse; import com.telecominfraproject.wlan.core.model.json.GenericResponse;
import com.telecominfraproject.wlan.core.model.pagination.ColumnAndSort; import com.telecominfraproject.wlan.core.model.pagination.ColumnAndSort;
@@ -32,14 +33,20 @@ import com.telecominfraproject.wlan.core.model.pair.PairLongLong;
import com.telecominfraproject.wlan.datastore.exceptions.DsDataValidationException; import com.telecominfraproject.wlan.datastore.exceptions.DsDataValidationException;
import com.telecominfraproject.wlan.equipment.datastore.EquipmentDatastore; import com.telecominfraproject.wlan.equipment.datastore.EquipmentDatastore;
import com.telecominfraproject.wlan.equipment.models.ApElementConfiguration; import com.telecominfraproject.wlan.equipment.models.ApElementConfiguration;
import com.telecominfraproject.wlan.equipment.models.CellSizeAttributes;
import com.telecominfraproject.wlan.equipment.models.ChannelPowerLevel; import com.telecominfraproject.wlan.equipment.models.ChannelPowerLevel;
import com.telecominfraproject.wlan.equipment.models.CustomerEquipmentCounts; import com.telecominfraproject.wlan.equipment.models.CustomerEquipmentCounts;
import com.telecominfraproject.wlan.equipment.models.ElementRadioConfiguration; import com.telecominfraproject.wlan.equipment.models.ElementRadioConfiguration;
import com.telecominfraproject.wlan.equipment.models.Equipment; import com.telecominfraproject.wlan.equipment.models.Equipment;
import com.telecominfraproject.wlan.equipment.models.EquipmentCellSizeAttributesUpdateRequest;
import com.telecominfraproject.wlan.equipment.models.EquipmentChannelsUpdateRequest; import com.telecominfraproject.wlan.equipment.models.EquipmentChannelsUpdateRequest;
import com.telecominfraproject.wlan.equipment.models.EquipmentDetails; import com.telecominfraproject.wlan.equipment.models.EquipmentDetails;
import com.telecominfraproject.wlan.equipment.models.RadioConfiguration;
import com.telecominfraproject.wlan.equipment.models.SourceSelectionManagement;
import com.telecominfraproject.wlan.equipment.models.SourceSelectionMulticast;
import com.telecominfraproject.wlan.equipment.models.bulkupdate.rrm.EquipmentRrmBulkUpdateRequest; import com.telecominfraproject.wlan.equipment.models.bulkupdate.rrm.EquipmentRrmBulkUpdateRequest;
import com.telecominfraproject.wlan.equipment.models.events.EquipmentAddedEvent; import com.telecominfraproject.wlan.equipment.models.events.EquipmentAddedEvent;
import com.telecominfraproject.wlan.equipment.models.events.EquipmentCellSizeAttributesChangedEvent;
import com.telecominfraproject.wlan.equipment.models.events.EquipmentChangedEvent; import com.telecominfraproject.wlan.equipment.models.events.EquipmentChangedEvent;
import com.telecominfraproject.wlan.equipment.models.events.EquipmentChannelsChangedEvent; import com.telecominfraproject.wlan.equipment.models.events.EquipmentChannelsChangedEvent;
import com.telecominfraproject.wlan.equipment.models.events.EquipmentRemovedEvent; import com.telecominfraproject.wlan.equipment.models.events.EquipmentRemovedEvent;
@@ -355,6 +362,86 @@ public class EquipmentController {
return ret; return ret;
} }
/**
* Updates Equipment CellSizeAttributes
*
* @param EquipmentCellSizeAttributesUpdateRequest
* @return updated Equipment object
* @throws RuntimeException if Equipment record does not exist or if it was modified concurrently
*/
@RequestMapping(value = "/cellSize", method=RequestMethod.PUT)
public Equipment updateCellSizeAttributes(@RequestBody EquipmentCellSizeAttributesUpdateRequest request) {
LOG.debug("updateCellSizeAttributes {}", request);
if (request == null) {
return null;
}
Equipment existingEquipment = get(request.getEquipmentId());
if (existingEquipment.getDetails() == null) {
LOG.info("updateCellSizeAttributes: no details on equipment");
return null;
}
Equipment equipmentCopy = existingEquipment.clone();
Map<RadioType, CellSizeAttributes> cellSizeAttributesMap = request.getCellSizeAttributesMap();
Map<RadioType, Boolean> autoCellSizeSelections = request.getAutoCellSizeSelections();
if (CollectionUtils.isEmpty(autoCellSizeSelections) ||
CollectionUtils.isEmpty(cellSizeAttributesMap)) {
LOG.info("updateCellSizeAttributes no update");
return equipmentCopy;
}
ApElementConfiguration apElementConfiguration = (ApElementConfiguration) equipmentCopy.getDetails();
for (RadioType radioType : RadioType.validValues()) {
ElementRadioConfiguration elementRadioConfig = apElementConfiguration.getElementRadioConfiguration(radioType);
RadioConfiguration radioConfig = apElementConfiguration.getAdvancedRadioMap().get(radioType);
if (elementRadioConfig == null || radioConfig == null) {
continue;
}
CellSizeAttributes cellSizeAttributes = cellSizeAttributesMap.get(radioType);
if (cellSizeAttributes != null && autoCellSizeSelections.get(radioType) != null) {
if (autoCellSizeSelections.get(radioType)) {
elementRadioConfig.setRxCellSizeDb(SourceSelectionValue.createAutomaticInstance(
cellSizeAttributes.getRxCellSizeDb()));
elementRadioConfig.setProbeResponseThresholdDb(SourceSelectionValue.createAutomaticInstance(
cellSizeAttributes.getProbeResponseThresholdDb()));
elementRadioConfig.setClientDisconnectThresholdDb(SourceSelectionValue.createAutomaticInstance(
cellSizeAttributes.getClientDisconnectThresholdDb()));
elementRadioConfig.setEirpTxPower(SourceSelectionValue.createAutomaticInstance(
cellSizeAttributes.getEirpTxPowerDb()));
radioConfig.setMulticastRate(SourceSelectionMulticast.createAutomaticInstance(
cellSizeAttributes.getMulticastRate()));
radioConfig.setManagementRate(SourceSelectionManagement.createAutomaticInstance(
cellSizeAttributes.getManagementRate()));
} else {
//TODO or do nothing
elementRadioConfig.setRxCellSizeDb(SourceSelectionValue.createManualInstance(
cellSizeAttributes.getRxCellSizeDb()));
elementRadioConfig.setProbeResponseThresholdDb(SourceSelectionValue.createManualInstance(
cellSizeAttributes.getProbeResponseThresholdDb()));
elementRadioConfig.setClientDisconnectThresholdDb(SourceSelectionValue.createManualInstance(
cellSizeAttributes.getClientDisconnectThresholdDb()));
elementRadioConfig.setEirpTxPower(SourceSelectionValue.createManualInstance(
cellSizeAttributes.getEirpTxPowerDb()));
radioConfig.setMulticastRate(SourceSelectionMulticast.createManualInstance(
cellSizeAttributes.getMulticastRate()));
radioConfig.setManagementRate(SourceSelectionManagement.createManualInstance(
cellSizeAttributes.getManagementRate()));
}
}
}
Equipment ret = equipmentDatastore.update(equipmentCopy);
EquipmentCellSizeAttributesChangedEvent event = new EquipmentCellSizeAttributesChangedEvent(ret, cellSizeAttributesMap);
publishEvent(event);
return ret;
}
/** /**
* Deletes Equipment record * Deletes Equipment record
* *

View File

@@ -31,6 +31,7 @@ import com.telecominfraproject.wlan.equipment.EquipmentServiceInterface;
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.Equipment; import com.telecominfraproject.wlan.equipment.models.Equipment;
import com.telecominfraproject.wlan.equipment.models.EquipmentCellSizeAttributesUpdateRequest;
import com.telecominfraproject.wlan.equipment.models.EquipmentChannelsUpdateRequest; import com.telecominfraproject.wlan.equipment.models.EquipmentChannelsUpdateRequest;
import com.telecominfraproject.wlan.equipment.models.EquipmentDetails; import com.telecominfraproject.wlan.equipment.models.EquipmentDetails;
import com.telecominfraproject.wlan.equipment.models.RadioConfiguration; import com.telecominfraproject.wlan.equipment.models.RadioConfiguration;
@@ -110,6 +111,12 @@ public class EquipmentPortalController {
return equipmentServiceInterface.updateChannels(request); return equipmentServiceInterface.updateChannels(request);
} }
@RequestMapping(value = "/equipment/cellSize", method = RequestMethod.PUT)
public Equipment updateEquipmentCellSizeAttributes(@RequestBody EquipmentCellSizeAttributesUpdateRequest request) {
LOG.debug("updateEquipmentCellSizeAttributes {}", request);
return equipmentServiceInterface.updateCellSizeAttributes(request);
}
@RequestMapping(value = "/equipment", method = RequestMethod.POST) @RequestMapping(value = "/equipment", method = RequestMethod.POST)
public Equipment createEquipment(@RequestBody Equipment equipment) { public Equipment createEquipment(@RequestBody Equipment equipment) {
LOG.debug("Creating equipment {}", equipment.getId()); LOG.debug("Creating equipment {}", equipment.getId());

View File

@@ -888,6 +888,49 @@ components:
autoChannelSelections: autoChannelSelections:
$ref: '#/components/schemas/BooleanPerRadioTypeMap' $ref: '#/components/schemas/BooleanPerRadioTypeMap'
#
# Equipment Cell Size Attributes update data models
#
EquipmentCellSizeAttributesUpdateRequest:
properties:
equipmentId:
type: integer
format: int64
cellSizeAttributesMap:
$ref: '#/components/schemas/CellSizeAttributesPerRadioTypeMap'
autoCellSizeSelections:
$ref: '#/components/schemas/BooleanPerRadioTypeMap'
CellSizeAttributes:
properties:
rxCellSizeDb:
type: integer
format: int32
probeResponseThresholdDb:
type: integer
format: int32
clientDisconnectThresholdDb:
type: integer
format: int32
eirpTxPowerDb:
type: integer
format: int32
multicastRate:
$ref: '#/components/schemas/MulticastRate'
managementRate:
$ref: '#/components/schemas/ManagementRate'
CellSizeAttributesPerRadioTypeMap:
properties:
is5GHz:
$ref: '#/components/schemas/CellSizeAttributes'
is5GHzU:
$ref: '#/components/schemas/CellSizeAttributes'
is5GHzL:
$ref: '#/components/schemas/CellSizeAttributes'
is2dot4GHz:
$ref: '#/components/schemas/CellSizeAttributes'
# #
# Equipment configuration data models # Equipment configuration data models
# #
@@ -8973,6 +9016,7 @@ components:
- EquipmentAddedEvent - EquipmentAddedEvent
- EquipmentChangedEvent - EquipmentChangedEvent
- EquipmentChannelsChangedEvent - EquipmentChannelsChangedEvent
- EquipmentCellSizeAttributesChangedEvent
- EquipmentRemovedEvent - EquipmentRemovedEvent
- StatusChangedEvent - StatusChangedEvent
- StatusRemovedEvent - StatusRemovedEvent
@@ -9064,6 +9108,7 @@ components:
- $ref: '#/components/schemas/EquipmentAddedEvent' - $ref: '#/components/schemas/EquipmentAddedEvent'
- $ref: '#/components/schemas/EquipmentChangedEvent' - $ref: '#/components/schemas/EquipmentChangedEvent'
- $ref: '#/components/schemas/EquipmentChannelsChangedEvent' - $ref: '#/components/schemas/EquipmentChannelsChangedEvent'
- $ref: '#/components/schemas/EquipmentCellSizeAttributesChangedEvent'
- $ref: '#/components/schemas/EquipmentRemovedEvent' - $ref: '#/components/schemas/EquipmentRemovedEvent'
- $ref: '#/components/schemas/StatusChangedEvent' - $ref: '#/components/schemas/StatusChangedEvent'
- $ref: '#/components/schemas/StatusRemovedEvent' - $ref: '#/components/schemas/StatusRemovedEvent'
@@ -9410,6 +9455,13 @@ components:
newBackupChannels: newBackupChannels:
$ref: '#/components/schemas/IntegerPerRadioTypeMap' $ref: '#/components/schemas/IntegerPerRadioTypeMap'
EquipmentCellSizeAttributesChangedEvent:
properties:
allOf:
$ref: '#/components/schemas/EquipmentChangedEvent'
cellSizeAttributesMap:
$ref: '#/components/schemas/CellSizeAttributesPerRadioTypeMap'
EquipmentRemovedEvent: EquipmentRemovedEvent:
required: required:
- model_type - model_type
@@ -11633,6 +11685,29 @@ paths:
500: 500:
$ref: '#/components/responses/GenericApiError' $ref: '#/components/responses/GenericApiError'
/portal/equipment/cellSize:
put:
tags:
- Equipment
summary: Update Equipment Cell Size Attributes
operationId: updateEquipmentCellSizeAttributes
requestBody:
description: Equipment Cell Size Attributes update request
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/EquipmentCellSizeAttributesUpdateRequest'
responses:
200:
description: successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/Equipment'
500:
$ref: '#/components/responses/GenericApiError'
/portal/equipment/inSet: /portal/equipment/inSet:
get: get:
tags: tags:

View File

@@ -19,7 +19,7 @@ import com.telecominfraproject.wlan.core.model.pair.PairLongLong;
import com.telecominfraproject.wlan.core.model.streams.QueuedStreamMessage; import com.telecominfraproject.wlan.core.model.streams.QueuedStreamMessage;
import com.telecominfraproject.wlan.equipment.EquipmentServiceInterface; import com.telecominfraproject.wlan.equipment.EquipmentServiceInterface;
import com.telecominfraproject.wlan.equipment.models.Equipment; import com.telecominfraproject.wlan.equipment.models.Equipment;
import com.telecominfraproject.wlan.equipment.models.events.EquipmentChangeType; import com.telecominfraproject.wlan.equipment.models.events.EquipmentCellSizeAttributesChangedEvent;
import com.telecominfraproject.wlan.equipment.models.events.EquipmentChangedEvent; import com.telecominfraproject.wlan.equipment.models.events.EquipmentChangedEvent;
import com.telecominfraproject.wlan.equipment.models.events.EquipmentChannelsChangedEvent; import com.telecominfraproject.wlan.equipment.models.events.EquipmentChannelsChangedEvent;
import com.telecominfraproject.wlan.equipment.models.events.EquipmentRemovedEvent; import com.telecominfraproject.wlan.equipment.models.events.EquipmentRemovedEvent;
@@ -27,6 +27,7 @@ import com.telecominfraproject.wlan.equipmentgateway.models.CEGWBaseCommand;
import com.telecominfraproject.wlan.equipmentgateway.models.CEGWCloseSessionRequest; import com.telecominfraproject.wlan.equipmentgateway.models.CEGWCloseSessionRequest;
import com.telecominfraproject.wlan.equipmentgateway.models.CEGWConfigChangeNotification; import com.telecominfraproject.wlan.equipmentgateway.models.CEGWConfigChangeNotification;
import com.telecominfraproject.wlan.equipmentgateway.models.CEGWNewChannelRequest; import com.telecominfraproject.wlan.equipmentgateway.models.CEGWNewChannelRequest;
import com.telecominfraproject.wlan.equipmentgateway.models.CEGWCellSizeAttributesRequest;
import com.telecominfraproject.wlan.equipmentgateway.service.EquipmentGatewayServiceInterface; import com.telecominfraproject.wlan.equipmentgateway.service.EquipmentGatewayServiceInterface;
import com.telecominfraproject.wlan.location.models.events.LocationChangedApImpactingEvent; import com.telecominfraproject.wlan.location.models.events.LocationChangedApImpactingEvent;
import com.telecominfraproject.wlan.profile.ProfileServiceInterface; import com.telecominfraproject.wlan.profile.ProfileServiceInterface;
@@ -99,6 +100,9 @@ public class EquipmentConfigPushTrigger extends StreamProcessor {
case "EquipmentChannelsChangedEvent": case "EquipmentChannelsChangedEvent":
process((EquipmentChannelsChangedEvent) se); process((EquipmentChannelsChangedEvent) se);
break; break;
case "EquipmentCellSizeAttributesChangedEvent":
process((EquipmentCellSizeAttributesChangedEvent) se);
break;
case "EquipmentRemovedEvent": case "EquipmentRemovedEvent":
process((EquipmentRemovedEvent) se); process((EquipmentRemovedEvent) se);
break; break;
@@ -132,6 +136,12 @@ public class EquipmentConfigPushTrigger extends StreamProcessor {
model.getEquipmentId(), model.getNewBackupChannels(), model.getNewPrimaryChannels())); model.getEquipmentId(), model.getNewBackupChannels(), model.getNewPrimaryChannels()));
} }
private void process(EquipmentCellSizeAttributesChangedEvent model) {
LOG.debug("Processing EquipmentCellSizeAttributesChangedEvent for equipmentId {}", model.getEquipmentId());
equipmentGatewayInterface.sendCommand(new CEGWCellSizeAttributesRequest(model.getPayload().getInventoryId(),
model.getEquipmentId(), model.getCellSizeAttributesMap()));
}
private void process(EquipmentRemovedEvent model) { private void process(EquipmentRemovedEvent model) {
LOG.debug("Processing EquipmentRemovedEvent"); LOG.debug("Processing EquipmentRemovedEvent");
equipmentGatewayInterface.sendCommand(new CEGWCloseSessionRequest(model.getPayload().getInventoryId(), model.getEquipmentId())); equipmentGatewayInterface.sendCommand(new CEGWCloseSessionRequest(model.getPayload().getInventoryId(), model.getEquipmentId()));

View File

@@ -99,6 +99,7 @@ components:
- EquipmentAddedEvent - EquipmentAddedEvent
- EquipmentChangedEvent - EquipmentChangedEvent
- EquipmentChannelsChangedEvent - EquipmentChannelsChangedEvent
- EquipmentCellSizeAttributesChangedEvent
- EquipmentRemovedEvent - EquipmentRemovedEvent
- StatusChangedEvent - StatusChangedEvent
- StatusRemovedEvent - StatusRemovedEvent
@@ -190,6 +191,7 @@ components:
- $ref: '#/components/schemas/EquipmentAddedEvent' - $ref: '#/components/schemas/EquipmentAddedEvent'
- $ref: '#/components/schemas/EquipmentChangedEvent' - $ref: '#/components/schemas/EquipmentChangedEvent'
- $ref: '#/components/schemas/EquipmentChannelsChangedEvent' - $ref: '#/components/schemas/EquipmentChannelsChangedEvent'
- $ref: '#/components/schemas/EquipmentCellSizeAttributesChangedEvent'
- $ref: '#/components/schemas/EquipmentRemovedEvent' - $ref: '#/components/schemas/EquipmentRemovedEvent'
- $ref: '#/components/schemas/StatusChangedEvent' - $ref: '#/components/schemas/StatusChangedEvent'
- $ref: '#/components/schemas/StatusRemovedEvent' - $ref: '#/components/schemas/StatusRemovedEvent'
@@ -460,6 +462,43 @@ components:
newBackupChannels: newBackupChannels:
$ref: '#/components/schemas/IntegerPerRadioTypeMap' $ref: '#/components/schemas/IntegerPerRadioTypeMap'
EquipmentCellSizeAttributesChangedEvent:
properties:
allOf:
$ref: '#/components/schemas/EquipmentChangedEvent'
cellSizeAttributesMap:
$ref: '#/components/schemas/CellSizeAttributesPerRadioTypeMap'
CellSizeAttributes:
properties:
rxCellSizeDb:
type: integer
format: int32
probeResponseThresholdDb:
type: integer
format: int32
clientDisconnectThresholdDb:
type: integer
format: int32
eirpTxPowerDb:
type: integer
format: int32
multicastRate:
$ref: '#/components/schemas/MulticastRate'
managementRate:
$ref: '#/components/schemas/ManagementRate'
CellSizeAttributesPerRadioTypeMap:
properties:
is5GHz:
$ref: '#/components/schemas/CellSizeAttributes'
is5GHzU:
$ref: '#/components/schemas/CellSizeAttributes'
is5GHzL:
$ref: '#/components/schemas/CellSizeAttributes'
is2dot4GHz:
$ref: '#/components/schemas/CellSizeAttributes'
EquipmentRemovedEvent: EquipmentRemovedEvent:
properties: properties:
eventTimestamp: eventTimestamp: