Compare commits

...

27 Commits

Author SHA1 Message Date
Rahul Sharma
1551babca2 Adding method to retrieve profile based on ModelType 2021-10-17 22:06:03 -04:00
Rahul Sharma
70bd1f5eda Merge pull request #163 from Telecominfraproject/Wifi-4417_1
Adding models for EthernetPort profile
2021-10-15 20:50:01 -04:00
Rahul Sharma
88fa6ca8a5 Adding models for EthernetPort profile 2021-10-15 20:36:01 -04:00
norm-traxler
e090bd6b00 Merge pull request #161 from Telecominfraproject/WIFI-4900
WIFI-4900 Empty firmware version is displayed when AP is moved from W…
2021-10-12 12:14:29 -04:00
Lynn Shi
aa1fbfd645 WIFI-4900 Empty firmware version is displayed when AP is moved from Walled Garden 2021-10-12 12:05:29 -04:00
norm-traxler
9ee24beb64 Merge pull request #160 from Telecominfraproject/WIFI-4732
WIFI-4732 Default 5G backup channel is not applicable to all countries
2021-10-06 16:01:59 -04:00
Lynn Shi
95a07188d5 WIFI-4732 Default 5G backup channel is not applicable to all countries 2021-10-06 15:21:43 -04:00
norm-traxler
6839ff3e97 Merge pull request #159 from Telecominfraproject/WIFI-4422
[WIFI-4422] Performance improvements for gateway
2021-09-27 15:26:13 -04:00
norm-traxler
299f59767e Merge pull request #158 from Telecominfraproject/WIFI-4415
[WIFI-4415] remove unnecessary code
2021-09-27 15:23:43 -04:00
Thomas-Leung2021
936aeae135 [NETEXP-2957] fix failed test 2021-09-27 15:03:44 -04:00
Thomas-Leung2021
5b3d05bc21 [NETEXP-2957] remove numRxData attributes in ClientMetrics.java 2021-09-27 15:03:44 -04:00
Thomas-Leung2021
ee3c62559a [NETEXP-2957] remove rxLastRssi attributes in ClientMetrics.java 2021-09-27 15:03:44 -04:00
Thomas-Leung2021
d3bb9f6e51 [NETEXP-2957] remove classificationName and channelBandwidth attributes in ClientMetrics.java 2021-09-27 15:03:44 -04:00
Thomas-Leung2021
a1ebf265f9 [NETEXP-2957] remove secondsSinceLastRecv attributes 2021-09-27 15:03:44 -04:00
Thomas-Leung2021
64b1432251 [NETEXP-2957] remove rates attribute 2021-09-27 15:03:44 -04:00
Thomas-Leung2021
ccb7680933 [WIFI-4415] remove unnecessary code 2021-09-27 13:33:48 -04:00
norm-traxler
e74570121c Merge pull request #157 from Telecominfraproject/WIFI-4415
[Wifi 4415] Add Gateway and backend support to turn LED on/off
2021-09-27 11:06:09 -04:00
Thomas Leung
b4b697376c Merged in NETEXP-2959 (pull request #10)
NETEXP-2959 Undo blinkLEDs api

Approved-by: mike.hansen
2021-09-24 17:37:14 -04:00
Thomas-Leung2021
b57fb2dd4f Merge branch 'NETEXP-2959' of bitbucket.org:connectustechnologies/wlan-cloud-services into NETEXP-2959 2021-09-24 17:35:42 -04:00
Thomas-Leung2021
d25c1d6167 [WIFI-4415] Undo blinkLEDs api 2021-09-24 17:34:52 -04:00
Thomas-Leung2021
57c2d7d6f4 [NETEXP-2959] update Equipment Profile when blinkAllLEDs changed 2021-09-24 17:21:08 -04:00
norm-traxler
faf0a3a385 Merge pull request #155 from Telecominfraproject/WIFI-4339
WIFI-4339 Moving the AP from one location to another with different C…
2021-09-24 14:59:49 -04:00
norm-traxler
a7a836440e Merge pull request #156 from Telecominfraproject/WIFI-4340
WIFI-4340 Configure Auto Channel Exclusions in RF Profile
2021-09-24 14:59:34 -04:00
Lynn Shi
999e597493 WIFI-4340 Configure Auto Channel Exclusions in RF Profile 2021-09-23 17:19:53 -04:00
Lynn Shi
5f4ed530fe WIFI-4339 Moving the AP from one location to another with different Country code does not trigger reg domain changes on AP 2021-09-23 16:09:08 -04:00
Mike Hansen
0dca8bb943 Merge pull request #154 from Telecominfraproject/WIFI-4152-bugfix-alarm-forCustomer
[WIFI-4152] Removing null entries from alarm Cassandra forCustomer
2021-09-15 13:55:21 -04:00
ralphlee
c8c7217d38 [WIFI-4152] Removing null entries from alarm Cassandra forCustomer 2021-09-15 13:48:47 -04:00
26 changed files with 549 additions and 243 deletions

View File

@@ -795,7 +795,10 @@ public class AlarmDatastoreCassandra implements AlarmDatastore {
long equipmentIdPostQuery = row.getLong("equipmentId");
int alarmCodePostQuery = row.getInt("alarmCode");
long createdTimestampPostQuery = row.getLong("createdTimestamp");
pageItems.add(getOrNull(customerId, equipmentIdPostQuery, AlarmCode.getById(alarmCodePostQuery), createdTimestampPostQuery));
Alarm alarmToAdd = getOrNull(customerId, equipmentIdPostQuery, AlarmCode.getById(alarmCodePostQuery), createdTimestampPostQuery);
if (alarmToAdd != null) {
pageItems.add(alarmToAdd);
}
}
break;
default:

View File

@@ -4982,10 +4982,6 @@ components:
ClientMetrics:
properties:
secondsSinceLastRecv:
type: integer
format: int32
numRxPackets:
type: integer
format: int64
@@ -5026,12 +5022,6 @@ components:
sessionId:
type: string
classificationName:
type: string
channelBandWidth:
$ref: '#/components/schemas/ChannelBandwidth'
averageTxRate:
type: number
@@ -5048,21 +5038,11 @@ components:
type: integer
format: int64
rxLastRssi:
description: The RSSI of last frame received.
type: integer
format: int32
numRxNoFcsErr:
description: The number of received frames without FCS errors.
type: integer
format: int32
numRxData:
description: The number of received data frames.
type: integer
format: int32
rxBytes:
description: The number of received bytes.
type: integer

View File

@@ -344,7 +344,6 @@ components:
- cyan
- white
- off
CEGWBlinkRequest:
description: Turn all LEDs on the AP to blinking, or turn off. The blinkAllLEDs attribute is the only currently supported functionality on the AP.
allOf:

View File

@@ -309,5 +309,4 @@ public abstract class CommonElementConfiguration extends EquipmentDetails implem
this.blinkAllLEDs = blinkAllLEDs;
}
}

View File

@@ -62,7 +62,7 @@ public class ElementRadioConfiguration extends BaseJsonModel
if (radioType == RadioType.is5GHz) {
returnValue.setChannelNumber(36);
returnValue.setBackupChannelNumber(149);
returnValue.setBackupChannelNumber(44);
} else if (radioType == RadioType.is5GHzL) {
returnValue.setChannelNumber(36);
returnValue.setBackupChannelNumber(44);

View File

@@ -932,9 +932,9 @@ public class EquipmentServiceRemoteTest extends BaseRemoteTest {
assertEquals(11, radioMap.get(RadioType.is2dot4GHz).getManualBackupChannelNumber().intValue());
assertEquals(36, radioMap.get(RadioType.is5GHz).getChannelNumber().intValue());
assertEquals(149, radioMap.get(RadioType.is5GHz).getBackupChannelNumber().intValue());
assertEquals(44, radioMap.get(RadioType.is5GHz).getBackupChannelNumber().intValue());
assertEquals(36, radioMap.get(RadioType.is5GHz).getManualChannelNumber().intValue());
assertEquals(149, radioMap.get(RadioType.is5GHz).getManualBackupChannelNumber().intValue());
assertEquals(44, radioMap.get(RadioType.is5GHz).getManualBackupChannelNumber().intValue());
Map<RadioType, Integer> primaryChannels = new EnumMap<>(RadioType.class);
Map<RadioType, Integer> backupChannels = new EnumMap<>(RadioType.class);
@@ -970,7 +970,7 @@ public class EquipmentServiceRemoteTest extends BaseRemoteTest {
assertEquals(6, radioMap.get(RadioType.is2dot4GHz).getManualBackupChannelNumber().intValue());
assertEquals(36, radioMap.get(RadioType.is5GHz).getChannelNumber().intValue());
assertEquals(149, radioMap.get(RadioType.is5GHz).getBackupChannelNumber().intValue());
assertEquals(44, radioMap.get(RadioType.is5GHz).getBackupChannelNumber().intValue());
assertEquals(40, radioMap.get(RadioType.is5GHz).getManualChannelNumber().intValue());
assertEquals(48, radioMap.get(RadioType.is5GHz).getManualBackupChannelNumber().intValue());
@@ -980,7 +980,7 @@ public class EquipmentServiceRemoteTest extends BaseRemoteTest {
backupChannels.clear();
backupChannels.put(RadioType.is2dot4GHz, 6);
backupChannels.put(RadioType.is5GHz, 44);
backupChannels.put(RadioType.is5GHz, 149);
autoChannelSelections.clear();
autoChannelSelections.put(RadioType.is2dot4GHz, true);
@@ -1007,7 +1007,7 @@ public class EquipmentServiceRemoteTest extends BaseRemoteTest {
assertEquals(6, radioMap.get(RadioType.is2dot4GHz).getManualBackupChannelNumber().intValue());
assertEquals(161, radioMap.get(RadioType.is5GHz).getChannelNumber().intValue());
assertEquals(44, radioMap.get(RadioType.is5GHz).getBackupChannelNumber().intValue());
assertEquals(149, radioMap.get(RadioType.is5GHz).getBackupChannelNumber().intValue());
assertEquals(40, radioMap.get(RadioType.is5GHz).getManualChannelNumber().intValue());
assertEquals(48, radioMap.get(RadioType.is5GHz).getManualBackupChannelNumber().intValue());

View File

@@ -283,7 +283,9 @@ public class EquipmentController {
if (ret.getCustomerId() != existingEquipment.getCustomerId()) {
publishEvent(new EquipmentCustomerChangedEvent(existingEquipment, ret));
}
if ((ret.getProfileId() != existingEquipment.getProfileId()) || (existingApElementConfig != null && updatedApElementConfig != null &&
if ((ret.getProfileId() != existingEquipment.getProfileId()) ||
ret.getLocationId() != existingEquipment.getLocationId() ||
(existingApElementConfig != null && updatedApElementConfig != null &&
updatedApElementConfig.needsToBeUpdatedOnDevice(existingApElementConfig))) {
event = new EquipmentApImpactingChangedEvent(ret);
} else if (existingApElementConfig != null && existingApElementConfig.isBlinkAllLEDs() != updatedApElementConfig.isBlinkAllLEDs()) {

View File

@@ -12,8 +12,10 @@ import org.springframework.web.bind.annotation.RestController;
import com.telecominfraproject.wlan.core.model.json.GenericResponse;
import com.telecominfraproject.wlan.equipment.EquipmentServiceInterface;
import com.telecominfraproject.wlan.equipment.models.ApElementConfiguration;
import com.telecominfraproject.wlan.equipment.models.Equipment;
import com.telecominfraproject.wlan.equipment.models.RadioChannelChangeSettings;
import com.telecominfraproject.wlan.equipment.models.events.EquipmentBlinkLEDsEvent;
import com.telecominfraproject.wlan.equipmentgateway.models.CEGWBlinkRequest;
import com.telecominfraproject.wlan.equipmentgateway.models.CEGWCommandResultCode;
import com.telecominfraproject.wlan.equipmentgateway.models.CEGWFirmwareDownloadRequest;
@@ -140,9 +142,9 @@ public class EquipmentGatewayPortalController {
@RequestMapping(value = "/equipmentGateway/requestApBlinkLEDs", method = RequestMethod.POST)
public GenericResponse requestApBlinkLEDs(@RequestParam long equipmentId, @RequestParam boolean blinkAllLEDs) {
String action = "stop blinking LEDs on AP ";
String action = "stop blinking LEDs on AP";
if (blinkAllLEDs)
action = "start blinking LEDs on AP ";
action = "start blinking LEDs on AP";
Equipment equipment = equipmentServiceInterface.get(equipmentId);
LOG.debug("Request {} for AP {}", action, equipment.getInventoryId());
@@ -154,6 +156,9 @@ public class EquipmentGatewayPortalController {
LOG.debug("{} response {}", action, response);
if (response.getResultCode() == CEGWCommandResultCode.Success) {
ApElementConfiguration apElementConfig = (ApElementConfiguration) equipment.getDetails();
apElementConfig.setBlinkAllLEDs(blinkAllLEDs);
equipmentServiceInterface.update(equipment);
return new GenericResponse(true, "");
} else {
return new GenericResponse(false, "Failed to " + action + " for AP: " + response.getResultCode() + " " + response.getResultDetail());

View File

@@ -5175,9 +5175,6 @@ components:
properties:
model_type:
type: string
secondsSinceLastRecv:
type: integer
format: int32
numRxPackets:
type: integer
@@ -5216,12 +5213,6 @@ components:
rssi:
type: integer
format: int32
classificationName:
type: string
channelBandWidth:
$ref: '#/components/schemas/ChannelBandwidth'
averageTxRate:
type: number
@@ -5238,21 +5229,11 @@ components:
type: integer
format: int64
rxLastRssi:
description: The RSSI of last frame received.
type: integer
format: int32
numRxNoFcsErr:
description: The number of received frames without FCS errors.
type: integer
format: int32
numRxData:
description: The number of received data frames.
type: integer
format: int32
rxBytes:
description: The number of received bytes.
type: integer

View File

@@ -0,0 +1,94 @@
package com.telecominfraproject.wlan.profile.ethernetport.models;
import com.telecominfraproject.wlan.core.model.equipment.PushableConfiguration;
import com.telecominfraproject.wlan.profile.models.ProfileDetails;
import com.telecominfraproject.wlan.profile.models.ProfileType;
import com.telecominfraproject.wlan.profile.ssid.models.SsidConfiguration;
import java.util.HashSet;
import java.util.Objects;
import java.util.Set;
/**
* @author rsharma
*/
public class WiredEthernetPortConfiguration extends ProfileDetails implements PushableConfiguration<WiredEthernetPortConfiguration> {
private static final long serialVersionUID = 5326345492525165619L;
private String equipmentModel; // e.g., MR8300-CA, EC420-G1
private Set<WiredPort> ethPorts;
public WiredEthernetPortConfiguration() {
// for Serialization
}
public WiredEthernetPortConfiguration(String equipmentModel, Set<WiredPort> ethPorts) {
this.equipmentModel = equipmentModel;
this.ethPorts = ethPorts;
}
public static WiredEthernetPortConfiguration createWithDefaults() {
return new WiredEthernetPortConfiguration();
}
public String getEquipmentModel() {
return equipmentModel;
}
public void setEquipmentModel(String equipmentModel) {
this.equipmentModel = equipmentModel;
}
public Set<WiredPort> getEthPorts() {
return ethPorts;
}
public void setEthPorts(Set<WiredPort> ethPorts) {
this.ethPorts = ethPorts;
}
@Override
public boolean needsToBeUpdatedOnDevice(WiredEthernetPortConfiguration previousVersion) {
if (previousVersion != null) {
return !Objects.equals(this, previousVersion);
}
return true;
}
@Override
public ProfileType getProfileType() {
return ProfileType.wired_ethernet_port;
}
@Override
public boolean equals(Object o) {
if (this == o) {
return true;
}
if (!(o instanceof WiredEthernetPortConfiguration)) {
return false;
}
WiredEthernetPortConfiguration that = (WiredEthernetPortConfiguration) o;
return Objects.equals(getEquipmentModel(), that.getEquipmentModel()) &&
Objects.equals(getEthPorts(), that.getEthPorts());
}
@Override
public int hashCode() {
return Objects.hash(getEquipmentModel(), getEthPorts());
}
@Override
public WiredEthernetPortConfiguration clone() {
WiredEthernetPortConfiguration ret = (WiredEthernetPortConfiguration)super.clone();
if (ethPorts != null) {
ret.ethPorts = new HashSet<>(ethPorts);
}
return ret;
}
}

View File

@@ -0,0 +1,112 @@
package com.telecominfraproject.wlan.profile.ethernetport.models;
import com.telecominfraproject.wlan.core.model.json.BaseJsonModel;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
/**
* @author rsharma
*/
public class WiredPort extends BaseJsonModel {
private static final long serialVersionUID = 6595665507927422135L;
private String name; //eth0 or eth1
private String displayName; // LAN-1, WAN-0 etc
private String ifName; // lan, wan etc
private String ifType; // bridge/Nat
private int vlanId; // native vlanId/tagged vlanId
private boolean trunkEnabled; // trunk enabled or disabled
private List<Integer> allowedVlanIds; // allowed vlanIds
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getDisplayName() {
return displayName;
}
public void setDisplayName(String displayName) {
this.displayName = displayName;
}
public String getIfName() {
return ifName;
}
public void setIfName(String ifName) {
this.ifName = ifName;
}
public String getIfType() {
return ifType;
}
public void setIfType(String ifType) {
this.ifType = ifType;
}
public int getVlanId() {
return vlanId;
}
public void setVlanId(int vlanId) {
this.vlanId = vlanId;
}
public boolean isTrunkEnabled() {
return trunkEnabled;
}
public void setTrunkEnabled(boolean trunkEnabled) {
this.trunkEnabled = trunkEnabled;
}
public List<Integer> getAllowedVlanIds() {
return allowedVlanIds;
}
public void setAllowedVlanIds(List<Integer> allowedVlanIds) {
this.allowedVlanIds = allowedVlanIds;
}
@Override
public boolean equals(Object o) {
if (this == o) {
return true;
}
if (!(o instanceof WiredPort)) {
return false;
}
WiredPort wiredPort = (WiredPort) o;
return getVlanId() == wiredPort.getVlanId() && isTrunkEnabled() == wiredPort.isTrunkEnabled()
&& Objects.equals(getName(), wiredPort.getName())
&& Objects.equals(getDisplayName(), wiredPort.getDisplayName())
&& Objects.equals(getIfName(), wiredPort.getIfName())
&& Objects.equals(getIfType(), wiredPort.getIfType())
&& Objects.equals(getAllowedVlanIds(), wiredPort.getAllowedVlanIds());
}
@Override
public int hashCode() {
return Objects.hash(getName(), getDisplayName(), getIfName(), getIfType(), getVlanId(), isTrunkEnabled(), getAllowedVlanIds());
}
@Override
public WiredPort clone() {
WiredPort port = (WiredPort) super.clone();
if (getAllowedVlanIds() != null) {
port.allowedVlanIds = new ArrayList<>(getAllowedVlanIds());
}
return port;
}
}

View File

@@ -5,6 +5,8 @@ import java.util.HashMap;
import java.util.List;
import java.util.Map;
import com.telecominfraproject.wlan.profile.ethernetport.models.WiredEthernetPortConfiguration;
/**
* @author dtop
* Utility class for dealing with profiles
@@ -40,6 +42,26 @@ public class ProfileContainer {
return ret.get(0);
}
public Profile getChildOfTypeOrNullByEquipmentModel(long profileId, ProfileType childProfileType,
String equipmentModel) {
// The profile type of the profileId should be equipment_ap
Profile apProfile = profileMap.get(profileId);
if (apProfile != null && apProfile.getProfileType() == ProfileType.equipment_ap) {
List<Profile> profiles = getChildrenOfType(profileId, childProfileType);
for (Profile ret : profiles) {
WiredEthernetPortConfiguration config = (WiredEthernetPortConfiguration) ret.getDetails();
if (config != null && config.getEquipmentModel() != null
&& config.getEquipmentModel().equals(equipmentModel)) {
return ret;
}
}
} else {
throw new IllegalArgumentException("Profile Id " + profileId + " is not of type equipment_ap");
}
return null;
}
public List<Profile> getChildrenOfType(long profileId, ProfileType childProfileType) {
Profile parent = profileMap.get(profileId);
List<Profile> ret = new ArrayList<>();

View File

@@ -62,6 +62,8 @@ public class ProfileType implements EnumWithId {
passpoint_venue = new ProfileType(12,"passpoint_venue"),
passpoint_osu_id_provider = new ProfileType(13,"passpoint_osu_id_provider"),
ap_event_rate = new ProfileType(14,"ap_event_rate"),
metrics = new ProfileType(15,"metrics"),
wired_ethernet_port = new ProfileType(16, "wired_ethernet_port"),
UNSUPPORTED = new ProfileType(-1, "UNSUPPORTED");
static {

View File

@@ -93,7 +93,7 @@ public abstract class CommonNetworkConfiguration extends ProfileDetails {
}
public Boolean getLedControlEnabled() {
public Boolean isLedControlEnabled() {
return ledControlEnabled;
}

View File

@@ -4,6 +4,8 @@ import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
import java.util.Objects;
import java.util.Set;
import java.util.TreeSet;
import com.telecominfraproject.wlan.core.model.equipment.ChannelBandwidth;
import com.telecominfraproject.wlan.core.model.equipment.ChannelHopSettings;
@@ -80,6 +82,8 @@ public class RfElementConfiguration extends BaseJsonModel {
private Boolean useMaxTxPower;
private Integer eirpTxPower;
private RadioBestApSettings bestApSettings;
private Set<Integer> autoExclusionChannels = new TreeSet<Integer>();
private RfElementConfiguration() {
long timestamp = System.currentTimeMillis();
@@ -112,7 +116,7 @@ public class RfElementConfiguration extends BaseJsonModel {
ret.setMinAutoCellSize(MIN_CELL_SIZE_MAP.get(radioType));
ret.setMaxAutoCellSize(MAX_CELL_SIZE_MAP.get(radioType));
if (radioType == RadioType.is5GHz || radioType == RadioType.is5GHzL || radioType == RadioType.is5GHzU) {
ret.setChannelBandwidth(ChannelBandwidth.is80MHz);
ret.setChannelBandwidth(ChannelBandwidth.is40MHz);
ret.setRadioMode(RadioMode.modeAC);
} else {
ret.setChannelBandwidth(ChannelBandwidth.is20MHz);
@@ -362,9 +366,25 @@ public class RfElementConfiguration extends BaseJsonModel {
this.bestApSettings = bestApSettings;
}
public Set<Integer> getAutoExclusionChannels() {
return autoExclusionChannels;
}
public void setAutoExclusionChannels(Set<Integer> autoExclusionChannels) {
if (autoExclusionChannels != null) {
this.autoExclusionChannels.clear();
this.autoExclusionChannels.addAll(autoExclusionChannels);
}
}
@Override
public RfElementConfiguration clone() {
return (RfElementConfiguration) super.clone();
RfElementConfiguration ret = (RfElementConfiguration) super.clone();
if (autoExclusionChannels != null) {
ret.autoExclusionChannels = new TreeSet<>(autoExclusionChannels);
}
return ret;
}
@Override
@@ -409,7 +429,7 @@ public class RfElementConfiguration extends BaseJsonModel {
channelBandwidth, channelHopSettings, clientDisconnectThresholdDb, eirpTxPower, forceScanDuringVoice,
managementRate, maxNumClients, mimoMode, minAutoCellSize, multicastRate, neighbouringListApConfig,
perimeterDetectionEnabled, probeResponseThresholdDb, radioMode, radioType, rf, rtsCtsThreshold,
rxCellSizeDb, autoCellSizeSelection, maxAutoCellSize);
rxCellSizeDb, autoCellSizeSelection, maxAutoCellSize, autoExclusionChannels);
}
@Override
@@ -439,7 +459,8 @@ public class RfElementConfiguration extends BaseJsonModel {
&& Objects.equals(probeResponseThresholdDb, other.probeResponseThresholdDb)
&& radioMode == other.radioMode && radioType == other.radioType && Objects.equals(rf, other.rf)
&& Objects.equals(rtsCtsThreshold, other.rtsCtsThreshold)
&& Objects.equals(rxCellSizeDb, other.rxCellSizeDb);
&& Objects.equals(rxCellSizeDb, other.rxCellSizeDb)
&& Objects.equals(autoExclusionChannels, other.autoExclusionChannels);
}
}

View File

@@ -1,8 +1,16 @@
package com.telecominfraproject.wlan.profile.rf.models;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import org.junit.Test;
import com.telecominfraproject.wlan.core.model.equipment.RadioType;
@@ -56,4 +64,33 @@ public class RfConfigurationTests {
rfConfig2_4.setRadioMode(RadioMode.modeGN);
rfConfig5.setRadioMode(RadioMode.modeGN);
}
@Test
public void testAutoExclusionChannels() {
RfElementConfiguration rfConfig = RfElementConfiguration.createWithDefaults(RadioType.is5GHz);
assertNotNull(rfConfig.getAutoExclusionChannels());
assertTrue(rfConfig.getAutoExclusionChannels().isEmpty());
Set<Integer> unsortedSet = new HashSet<Integer>(Arrays.asList(1, 23, 45, 12));
rfConfig.setAutoExclusionChannels(unsortedSet);
Set<Integer> sortedSet = rfConfig.getAutoExclusionChannels();
List<Integer> list = new ArrayList<Integer>(sortedSet);
assertEquals(Integer.valueOf(1), list.get(0));
assertEquals(Integer.valueOf(12), list.get(1));
assertEquals(Integer.valueOf(23), list.get(2));
assertEquals(Integer.valueOf(45), list.get(3));
Set<Integer> unsortedSet2 = new HashSet<Integer>(Arrays.asList(10, 45, 23, 12));
rfConfig.setAutoExclusionChannels(unsortedSet2);
Set<Integer> sortedSet2 = rfConfig.getAutoExclusionChannels();
List<Integer> list2 = new ArrayList<Integer>(sortedSet2);
assertEquals(Integer.valueOf(10), list2.get(0));
assertEquals(Integer.valueOf(12), list2.get(1));
assertEquals(Integer.valueOf(23), list2.get(2));
assertEquals(Integer.valueOf(45), list2.get(3));
}
}

View File

@@ -269,6 +269,11 @@ public class EquipmentConfigPushTrigger extends StreamProcessor {
status.setCustomerId(equipment.getCustomerId());
statusServiceInterface.update(status);
}
status = statusServiceInterface.getOrNull(existingEquipment.getCustomerId(), existingEquipment.getId(), StatusDataType.FIRMWARE);
if (status != null) {
status.setCustomerId(equipment.getCustomerId());
statusServiceInterface.update(status);
}
// Alarms has to move to new customerId as well
List<Alarm> oldCustomerAlarms = alarmServiceInterface.get(existingEquipment.getCustomerId(), Set.of(existingEquipment.getId()), null);

View File

@@ -114,10 +114,6 @@ public abstract class BaseServiceMetricDatastoreTest {
serviceMetric.setEquipmentId(testSequence.incrementAndGet());
serviceMetric.setClientMac(testSequence.incrementAndGet());
serviceMetric.setCreatedTimestamp(baseTimestamp - 100000 + testSequence.incrementAndGet());
ClientMetrics details2 = new ClientMetrics();
details2.setClassificationName("qr_"+apNameIdx);
serviceMetric.setDetails(details2);
apNameIdx++;
@@ -132,10 +128,6 @@ public abstract class BaseServiceMetricDatastoreTest {
serviceMetric.setEquipmentId(testSequence.incrementAndGet());
serviceMetric.setClientMac(testSequence.incrementAndGet());
serviceMetric.setCreatedTimestamp(baseTimestamp + testSequence.incrementAndGet());
ClientMetrics details2 = new ClientMetrics();
details2.setClassificationName("qr_"+apNameIdx);
serviceMetric.setDetails(details2);
apNameIdx++;
@@ -150,10 +142,6 @@ public abstract class BaseServiceMetricDatastoreTest {
serviceMetric.setEquipmentId(testSequence.incrementAndGet());
serviceMetric.setClientMac(testSequence.incrementAndGet());
serviceMetric.setCreatedTimestamp(baseTimestamp - 100000 + testSequence.incrementAndGet());
ClientMetrics details2 = new ClientMetrics();
details2.setClassificationName("qr_"+apNameIdx);
serviceMetric.setDetails(details2);
apNameIdx++;
@@ -200,43 +188,18 @@ public abstract class BaseServiceMetricDatastoreTest {
assertTrue(page6.getContext().isLastPage());
assertTrue(page7.getContext().isLastPage());
List<String> expectedPage3Strings = new ArrayList<>(Arrays.asList(new String[]{"qr_20", "qr_21", "qr_22", "qr_23", "qr_24", "qr_25", "qr_26", "qr_27", "qr_28", "qr_29" }));
List<String> actualPage3Strings = new ArrayList<>();
page3.getItems().stream().forEach( ce -> actualPage3Strings.add(((ClientMetrics) ce.getDetails()).getClassificationName()) );
assertEquals(expectedPage3Strings, actualPage3Strings);
//test first page of the results with empty sort order -> default sort order (by createdTimestamp ascending)
PaginationResponse<ServiceMetric> page1EmptySort = testInterface.getForCustomer(fromTime, toTime, customerId_1, null, null, null, null, Collections.emptyList(), context);
assertEquals(10, page1EmptySort.getItems().size());
List<String> expectedPage1EmptySortStrings = new ArrayList<>(Arrays.asList(new String[]{"qr_0", "qr_1", "qr_2", "qr_3", "qr_4", "qr_5", "qr_6", "qr_7", "qr_8", "qr_9" }));
List<String> actualPage1EmptySortStrings = new ArrayList<>();
page1EmptySort.getItems().stream().forEach( ce -> actualPage1EmptySortStrings.add(((ClientMetrics) ce.getDetails()).getClassificationName() ) );
assertEquals(expectedPage1EmptySortStrings, actualPage1EmptySortStrings);
//test first page of the results with null sort order -> default sort order (by createdTimestamp ascending)
PaginationResponse<ServiceMetric> page1NullSort = testInterface.getForCustomer(fromTime, toTime, customerId_1, null, null, null, null, null, context);
assertEquals(10, page1NullSort.getItems().size());
List<String> expectedPage1NullSortStrings = new ArrayList<>(Arrays.asList(new String[]{"qr_0", "qr_1", "qr_2", "qr_3", "qr_4", "qr_5", "qr_6", "qr_7", "qr_8", "qr_9" }));
List<String> actualPage1NullSortStrings = new ArrayList<>();
page1NullSort.getItems().stream().forEach( ce -> actualPage1NullSortStrings.add(((ClientMetrics) ce.getDetails()).getClassificationName() ) );
assertEquals(expectedPage1NullSortStrings, actualPage1NullSortStrings);
//test first page of the results with sort descending order by a equipmentId property
PaginationResponse<ServiceMetric> page1SingleSortDesc = testInterface.getForCustomer(fromTime, toTime, customerId_1, null, null, null, null, Collections.singletonList(new ColumnAndSort("equipmentId", SortOrder.desc)), context);
assertEquals(10, page1SingleSortDesc.getItems().size());
List<String> expectedPage1SingleSortDescStrings = getPagination_expectedPage1SingleSortDescStrings();
List<String> actualPage1SingleSortDescStrings = new ArrayList<>();
page1SingleSortDesc.getItems().stream().forEach( ce -> actualPage1SingleSortDescStrings.add(((ClientMetrics) ce.getDetails()).getClassificationName() ) );
assertEquals(expectedPage1SingleSortDescStrings, actualPage1SingleSortDescStrings);
used_equipmentIds.forEach(eqId -> testInterface.delete(customerId_1, eqId, System.currentTimeMillis()));
used_equipmentIds.forEach(eqId -> testInterface.delete(customerId_2, eqId, System.currentTimeMillis()));
@@ -336,9 +299,8 @@ public abstract class BaseServiceMetricDatastoreTest {
serviceMetric.setCreatedTimestamp(baseTimestamp - testSequence.incrementAndGet());
ClientMetrics details2 = new ClientMetrics();
details2.setClassificationName("qr_"+apNameIdx);
serviceMetric.setDetails(details2);
testInterface.create(serviceMetric);
//third metric - neighbour

View File

@@ -1,10 +1,8 @@
package com.telecominfraproject.wlan.servicemetric.client.models;
import java.util.Arrays;
import java.util.Objects;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.telecominfraproject.wlan.core.model.equipment.ChannelBandwidth;
import com.telecominfraproject.wlan.core.model.equipment.RadioType;
import com.telecominfraproject.wlan.servicemetric.models.ServiceMetricDataType;
import com.telecominfraproject.wlan.servicemetric.models.ServiceMetricDetails;
@@ -18,19 +16,14 @@ public class ClientMetrics extends ServiceMetricDetails {
private static final long serialVersionUID = 7242365268669169773L;
private Integer secondsSinceLastRecv;
private Long numRxPackets;
private Long numTxPackets;
private Long numRxBytes;
private Long numTxBytes;
private Integer txRetries;
private Integer rxDuplicatePackets;
private int[] rates;
private Integer snr;
private Integer rssi;
private String classificationName;
ChannelBandwidth channelBandWidth;
private Double averageTxRate;
private Double averageRxRate;
@@ -38,21 +31,11 @@ public class ClientMetrics extends ServiceMetricDetails {
private Long numTxFramesTransmitted;
private Long numRxFramesReceived;
/**
* The RSSI of last frame received.
*/
private Integer rxLastRssi;
/**
* The number of received frames without FCS errors.
*/
private Integer numRxNoFcsErr;
/**
* The number of received data frames.
*/
private Integer numRxData;
/**
* The number of received bytes.
*/
@@ -90,13 +73,7 @@ public class ClientMetrics extends ServiceMetricDetails {
@Override
public ClientMetrics clone() {
ClientMetrics ret = (ClientMetrics) super.clone();
if(this.rates!=null){
ret.rates = this.rates.clone();
}
return ret;
return (ClientMetrics) super.clone();
}
@Override
@@ -112,15 +89,14 @@ public class ClientMetrics extends ServiceMetricDetails {
}
ClientMetrics other = (ClientMetrics) obj;
return Objects.equals(averageRxRate, other.averageRxRate) && Objects.equals(averageTxRate, other.averageTxRate)
&& this.channelBandWidth == other.channelBandWidth && Objects.equals(classificationName, other.classificationName)
&& Objects.equals(numRxBytes, other.numRxBytes) && Objects.equals(numRxData, other.numRxData)
&& Objects.equals(numRxBytes, other.numRxBytes)
&& Objects.equals(numRxFramesReceived, other.numRxFramesReceived) && Objects.equals(numRxNoFcsErr, other.numRxNoFcsErr)
&& Objects.equals(numRxPackets, other.numRxPackets) && Objects.equals(numRxRetry, other.numRxRetry)
&& Objects.equals(numTxBytes, other.numTxBytes) && Objects.equals(numTxDataRetries, other.numTxDataRetries)
&& Objects.equals(numTxDropped, other.numTxDropped) && Objects.equals(numTxFramesTransmitted, other.numTxFramesTransmitted)
&& Objects.equals(numTxPackets, other.numTxPackets) && this.radioType == other.radioType
&& Arrays.equals(rates, other.rates) && Objects.equals(rssi, other.rssi) && Objects.equals(rxBytes, other.rxBytes)
&& Objects.equals(rxDuplicatePackets, other.rxDuplicatePackets) && Objects.equals(rxLastRssi, other.rxLastRssi)
&& Objects.equals(rssi, other.rssi) && Objects.equals(rxBytes, other.rxBytes)
&& Objects.equals(rxDuplicatePackets, other.rxDuplicatePackets)
&& Objects.equals(snr, other.snr) && Objects.equals(txRetries, other.txRetries);
}
@@ -128,10 +104,6 @@ public class ClientMetrics extends ServiceMetricDetails {
return numRxBytes;
}
public Integer getNumRxData() {
return numRxData;
}
public Integer getNumRxNoFcsErr() {
return numRxNoFcsErr;
}
@@ -164,10 +136,6 @@ public class ClientMetrics extends ServiceMetricDetails {
return radioType;
}
public int[] getRates() {
return rates;
}
public Integer getRssi() {
return rssi;
}
@@ -180,10 +148,6 @@ public class ClientMetrics extends ServiceMetricDetails {
return rxDuplicatePackets;
}
public Integer getRxLastRssi() {
return rxLastRssi;
}
public Integer getSnr() {
return snr;
}
@@ -196,12 +160,11 @@ public class ClientMetrics extends ServiceMetricDetails {
public int hashCode() {
final int prime = 31;
int result = super.hashCode();
result = prime * result + Arrays.hashCode(this.rates);
result = prime * result + Objects.hash(averageRxRate, averageTxRate, channelBandWidth,
classificationName, numRxBytes, numRxData, numRxFramesReceived,
result = prime * result + Objects.hash(averageRxRate, averageTxRate,
numRxBytes, numRxFramesReceived,
numRxNoFcsErr, numRxPackets, numRxRetry, numTxBytes,
numTxDataRetries, numTxDropped, numTxFramesTransmitted, numTxPackets,
radioType, rssi, rxBytes, rxDuplicatePackets, rxLastRssi, snr, txRetries);
radioType, rssi, rxBytes, rxDuplicatePackets, snr, txRetries);
return result;
}
@@ -210,7 +173,7 @@ public class ClientMetrics extends ServiceMetricDetails {
if (super.hasUnsupportedValue()) {
return true;
}
if (RadioType.isUnsupported(radioType) || (ChannelBandwidth.isUnsupported(this.channelBandWidth))) {
if (RadioType.isUnsupported(radioType)) {
return true;
}
return false;
@@ -220,10 +183,6 @@ public class ClientMetrics extends ServiceMetricDetails {
this.numRxBytes = numRxBytes;
}
public void setNumRxData(Integer numRxData) {
this.numRxData = numRxData;
}
public void setNumRxNoFcsErr(Integer numRxNoFcsErr) {
this.numRxNoFcsErr = numRxNoFcsErr;
}
@@ -256,10 +215,6 @@ public class ClientMetrics extends ServiceMetricDetails {
this.radioType = radioType;
}
public void setRates(int[] rates) {
this.rates = rates;
}
public void setRssi(Integer rssi) {
this.rssi = rssi;
}
@@ -272,10 +227,6 @@ public class ClientMetrics extends ServiceMetricDetails {
this.rxDuplicatePackets = rxDuplicatePackets;
}
public void setRxLastRssi(Integer rxLastRssi) {
this.rxLastRssi = rxLastRssi;
}
public void setSnr(Integer snr) {
this.snr = snr;
}
@@ -300,22 +251,6 @@ public class ClientMetrics extends ServiceMetricDetails {
this.numRxFramesReceived = numRxFramesReceived;
}
public String getClassificationName() {
return classificationName;
}
public void setClassificationName(String classificationName) {
this.classificationName = classificationName;
}
public ChannelBandwidth getChannelBandWidth() {
return channelBandWidth;
}
public void setChannelBandWidth(ChannelBandwidth channelBandWidth) {
this.channelBandWidth = channelBandWidth;
}
public Double getAverageTxRate() {
return averageTxRate;
}
@@ -332,14 +267,6 @@ public class ClientMetrics extends ServiceMetricDetails {
this.averageRxRate = averageRxRate;
}
public Integer getSecondsSinceLastRecv() {
return secondsSinceLastRecv;
}
public void setSecondsSinceLastRecv(Integer secondsSinceLastRecv) {
this.secondsSinceLastRecv = secondsSinceLastRecv;
}
public Integer getPeriodLengthSec() {
return periodLengthSec;
}

View File

@@ -127,10 +127,6 @@ public class ServiceMetricServiceRemoteTest extends BaseRemoteTest {
serviceMetric.setClientMac(getNextEquipmentId());
serviceMetric.setCreatedTimestamp(baseTimestamp - 100000 + getNextEquipmentId());
ClientMetrics details2 = new ClientMetrics();
details2.setClassificationName("qr_"+apNameIdx);
serviceMetric.setDetails(details2);
apNameIdx++;
remoteInterface.create(serviceMetric);
@@ -144,10 +140,6 @@ public class ServiceMetricServiceRemoteTest extends BaseRemoteTest {
serviceMetric.setClientMac(getNextEquipmentId());
serviceMetric.setCreatedTimestamp(baseTimestamp + getNextEquipmentId());
ClientMetrics details2 = new ClientMetrics();
details2.setClassificationName("qr_"+apNameIdx);
serviceMetric.setDetails(details2);
apNameIdx++;
remoteInterface.create(serviceMetric);
@@ -161,10 +153,6 @@ public class ServiceMetricServiceRemoteTest extends BaseRemoteTest {
serviceMetric.setClientMac(getNextEquipmentId());
serviceMetric.setCreatedTimestamp(baseTimestamp - 100000 + getNextEquipmentId());
ClientMetrics details2 = new ClientMetrics();
details2.setClassificationName("qr_"+apNameIdx);
serviceMetric.setDetails(details2);
apNameIdx++;
remoteInterface.create(serviceMetric);
@@ -209,43 +197,18 @@ public class ServiceMetricServiceRemoteTest extends BaseRemoteTest {
assertTrue(page6.getContext().isLastPage());
assertTrue(page7.getContext().isLastPage());
List<String> expectedPage3Strings = new ArrayList<>(Arrays.asList(new String[]{"qr_20", "qr_21", "qr_22", "qr_23", "qr_24", "qr_25", "qr_26", "qr_27", "qr_28", "qr_29" }));
List<String> actualPage3Strings = new ArrayList<>();
page3.getItems().stream().forEach( ce -> actualPage3Strings.add(((ClientMetrics) ce.getDetails()).getClassificationName()) );
assertEquals(expectedPage3Strings, actualPage3Strings);
//test first page of the results with empty sort order -> default sort order (by createdTimestamp ascending)
PaginationResponse<ServiceMetric> page1EmptySort = remoteInterface.getForCustomer(fromTime, toTime, customerId_1, null, null, null, null, Collections.emptyList(), context);
assertEquals(10, page1EmptySort.getItems().size());
List<String> expectedPage1EmptySortStrings = new ArrayList<>(Arrays.asList(new String[]{"qr_0", "qr_1", "qr_2", "qr_3", "qr_4", "qr_5", "qr_6", "qr_7", "qr_8", "qr_9" }));
List<String> actualPage1EmptySortStrings = new ArrayList<>();
page1EmptySort.getItems().stream().forEach( ce -> actualPage1EmptySortStrings.add(((ClientMetrics) ce.getDetails()).getClassificationName() ) );
assertEquals(expectedPage1EmptySortStrings, actualPage1EmptySortStrings);
//test first page of the results with null sort order -> default sort order (by createdTimestamp ascending)
PaginationResponse<ServiceMetric> page1NullSort = remoteInterface.getForCustomer(fromTime, toTime, customerId_1, null, null, null, null, null, context);
assertEquals(10, page1NullSort.getItems().size());
List<String> expectedPage1NullSortStrings = new ArrayList<>(Arrays.asList(new String[]{"qr_0", "qr_1", "qr_2", "qr_3", "qr_4", "qr_5", "qr_6", "qr_7", "qr_8", "qr_9" }));
List<String> actualPage1NullSortStrings = new ArrayList<>();
page1NullSort.getItems().stream().forEach( ce -> actualPage1NullSortStrings.add(((ClientMetrics) ce.getDetails()).getClassificationName() ) );
assertEquals(expectedPage1NullSortStrings, actualPage1NullSortStrings);
//test first page of the results with sort descending order by a equipmentId property
PaginationResponse<ServiceMetric> page1SingleSortDesc = remoteInterface.getForCustomer(fromTime, toTime, customerId_1, null, null, null, null, Collections.singletonList(new ColumnAndSort("equipmentId", SortOrder.desc)), context);
assertEquals(10, page1SingleSortDesc.getItems().size());
List<String> expectedPage1SingleSortDescStrings = new ArrayList< >(Arrays.asList(new String[]{"qr_49", "qr_48", "qr_47", "qr_46", "qr_45", "qr_44", "qr_43", "qr_42", "qr_41", "qr_40" }));
List<String> actualPage1SingleSortDescStrings = new ArrayList<>();
page1SingleSortDesc.getItems().stream().forEach( ce -> actualPage1SingleSortDescStrings.add(((ClientMetrics) ce.getDetails()).getClassificationName() ) );
assertEquals(expectedPage1SingleSortDescStrings, actualPage1SingleSortDescStrings);
}
@@ -338,7 +301,6 @@ public class ServiceMetricServiceRemoteTest extends BaseRemoteTest {
serviceMetric.setCreatedTimestamp(baseTimestamp - getNextEquipmentId());
ClientMetrics details2 = new ClientMetrics();
details2.setClassificationName("qr_"+apNameIdx);
serviceMetric.setDetails(details2);
remoteInterface.create(serviceMetric);

View File

@@ -213,11 +213,7 @@ components:
- SGI# Short Guard Interval
ClientMetrics:
properties:
secondsSinceLastRecv:
type: integer
format: int32
properties:
numRxPackets:
type: integer
format: int64
@@ -256,12 +252,6 @@ components:
type: integer
format: int32
classificationName:
type: string
channelBandWidth:
$ref: '#/components/schemas/ChannelBandwidth'
averageTxRate:
type: number
format: double
@@ -277,22 +267,11 @@ components:
type: integer
format: int64
rxLastRssi:
description: The RSSI of last frame received.
type: integer
format: int32
numRxNoFcsErr:
description: The number of received frames without FCS errors.
type: integer
format: int32
numRxData:
description: The number of received data frames.
type: integer
format: int32
rxBytes:
description: The number of received bytes.
type: integer

View File

@@ -5,6 +5,7 @@ import java.util.HashMap;
import java.util.Map;
import java.util.Objects;
import com.telecominfraproject.wlan.core.model.equipment.LedStatus;
import com.telecominfraproject.wlan.status.models.StatusCode;
import com.telecominfraproject.wlan.status.models.StatusDataType;
import com.telecominfraproject.wlan.status.models.StatusDetails;

View File

@@ -1,6 +0,0 @@
package com.telecominfraproject.wlan.status.equipment.models;
public enum LedStatus {
led_blink, led_off, UNKNOWN,
}

View File

@@ -0,0 +1,67 @@
package com.telecominfraproject.wlan.status.equipment.report.models;
import com.telecominfraproject.wlan.status.models.StatusDataType;
import com.telecominfraproject.wlan.status.models.StatusDetails;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Objects;
/**
* @author rsharma
*/
public class WiredEthernetPortStatusData extends StatusDetails {
private static final long serialVersionUID = 1684955685155400122L;
// key is ifName, value is the list of wiredPortStatus that link to the ifName
private Map<String, List<WiredPortStatus>> interfacePortStatusMap;
public WiredEthernetPortStatusData() {
this.interfacePortStatusMap = new HashMap<>();
}
public WiredEthernetPortStatusData(Map<String, List<WiredPortStatus>> interfacePortStatusMap) {
this.interfacePortStatusMap = interfacePortStatusMap;
}
public Map<String, List<WiredPortStatus>> getInterfacePortStatusMap() {
return interfacePortStatusMap;
}
public void setInterfacePortStatusMap(Map<String, List<WiredPortStatus>> interfacePortStatusMap) {
this.interfacePortStatusMap = interfacePortStatusMap;
}
@Override
public StatusDataType getStatusDataType() {
return StatusDataType.WIRED_ETHERNET_PORT;
}
@Override
public boolean equals(Object o) {
if (this == o) {
return true;
}
if (!(o instanceof WiredEthernetPortStatusData)) {
return false;
}
WiredEthernetPortStatusData that = (WiredEthernetPortStatusData) o;
return Objects.equals(getInterfacePortStatusMap(), that.getInterfacePortStatusMap());
}
@Override
public int hashCode() {
return Objects.hash(getInterfacePortStatusMap());
}
@Override
public WiredEthernetPortStatusData clone() {
WiredEthernetPortStatusData data = (WiredEthernetPortStatusData) super.clone();
if (interfacePortStatusMap != null) {
data.interfacePortStatusMap = new HashMap<>(interfacePortStatusMap);
}
return data;
}
}

View File

@@ -0,0 +1,149 @@
package com.telecominfraproject.wlan.status.equipment.report.models;
import com.telecominfraproject.wlan.core.model.json.BaseJsonModel;
import java.util.List;
import java.util.Objects;
/**
* @author rsharma
*/
public class WiredPortStatus extends BaseJsonModel {
private static final long serialVersionUID = 5525006111579379607L;
private String name; // eth_port: eth0 or eth1
private String originalIfName; // ifName when the AP came up (lan, wan etc.)
private String currentIfName; // Current ifName (e.g. lan, wan etc.)
private String ifType; // bridge/Nat/eth/vlan
private int speed; // in MBPS
private String duplex; // full, half
private String operationalState; // Operational State
private int vlanId; // tagged VlanId
private boolean trunkEnabled; // trunk enabled or disabled
private List<Integer> allowedVlanIds; // allowed vlanIds
public WiredPortStatus() {
}
public WiredPortStatus(String name, String originalIfName, String currentIfName, String ifType, int speed, String duplex,
String operationalState, int vlanId, boolean trunkEnabled, List<Integer> allowedVlanIds) {
this.name = name;
this.originalIfName = originalIfName;
this.currentIfName = currentIfName;
this.ifType = ifType;
this.speed = speed;
this.duplex = duplex;
this.operationalState = operationalState;
this.vlanId = vlanId;
this.trunkEnabled = trunkEnabled;
this.allowedVlanIds = allowedVlanIds;
}
@Override
public boolean equals(Object o) {
if (this == o) {
return true;
}
if (!(o instanceof WiredPortStatus)) {
return false;
}
WiredPortStatus that = (WiredPortStatus) o;
return getSpeed() == that.getSpeed() && Objects.equals(getName(), that.getName())
&& Objects.equals(getOriginalIfName(), that.getOriginalIfName())
&& Objects.equals(getCurrentIfName(), that.getCurrentIfName())
&& Objects.equals(getIfType(), that.getIfType())
&& Objects.equals(getDuplex(), that.getDuplex())
&& Objects.equals(getOperationalState(), that.getOperationalState())
&& getVlanId() == that.getVlanId()
&& Objects.equals(getAllowedVlanIds(), that.getAllowedVlanIds())
&& Objects.equals(isTrunkEnabled(), that.isTrunkEnabled());
}
@Override
public int hashCode() {
return Objects.hash(getName(), getOriginalIfName(), getCurrentIfName(), getIfType(), getSpeed(), getDuplex(),
getOperationalState(), getVlanId(), getAllowedVlanIds(), isTrunkEnabled());
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getOriginalIfName() {
return originalIfName;
}
public void setOriginalIfName(String originalIfName) {
this.originalIfName = originalIfName;
}
public String getCurrentIfName() {
return currentIfName;
}
public void setCurrentIfName(String currentIfName) {
this.currentIfName = currentIfName;
}
public String getIfType() {
return ifType;
}
public void setIfType(String ifType) {
this.ifType = ifType;
}
public int getSpeed() {
return speed;
}
public void setSpeed(int speed) {
this.speed = speed;
}
public String getDuplex() {
return duplex;
}
public void setDuplex(String duplex) {
this.duplex = duplex;
}
public String getOperationalState() {
return operationalState;
}
public void setOperationalState(String operationalState) {
this.operationalState = operationalState;
}
public int getVlanId() {
return vlanId;
}
public void setVlanId(int vlanId) {
this.vlanId = vlanId;
}
public List<Integer> getAllowedVlanIds() {
return allowedVlanIds;
}
public void setAllowedVlanIds(List<Integer> allowedVlanIds) {
this.allowedVlanIds = allowedVlanIds;
}
public boolean isTrunkEnabled() {
return trunkEnabled;
}
public void setTrunkEnabled(boolean trunkEnabled) {
this.trunkEnabled = trunkEnabled;
}
}

View File

@@ -101,6 +101,9 @@ public class StatusDataType implements EnumWithId {
*/
EQUIPMENT_MANUFACTURER_DATA = new StatusDataType(17, "EQUIPMENT_MANUFACTURER_DATA", Set.of(StatusTrait.DeleteOnEquipmentDisconnect)),
// STATUS OF ETHERNET PORTS ON THE DEVICE
WIRED_ETHERNET_PORT = new StatusDataType(18, "WIRED_ETHERNET_PORT", Set.of(StatusTrait.DeleteOnEquipmentDisconnect)),
UNSUPPORTED = new StatusDataType(-1, "UNSUPPORTED") ;
static {