Mike Kolesnik has posted comments on this change.
Change subject: engine: Support Duplicate Mac Addresses
......................................................................
Patch Set 5: (13 inline comments)
....................................................
File
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/MacPoolManager.java
Line 29: private static final MacPoolManager INSTANCE = new
MacPoolManager();
Line 30:
Line 31: private static Log log = LogFactory.getLog(MacPoolManager.class);
Line 32:
Line 33: // Maps that hold the allocated Mac addresses as keys, and
counters as values
Can you please do this as javadoc for each of the fields?
Line 34: private final Map<String, Integer> allocatedMacs = new
HashMap<String, Integer>();
Line 35: private final Map<String, Integer> allocatedCustomMacs = new
HashMap<String, Integer>();
Line 36:
Line 37: private final Set<String> availableMacs = new HashSet<String>();
Line 196: AuditLogDirector.log(logable,
AuditLogType.MAC_ADDRESSES_POOL_NOT_INITIALIZED);
Line 197: }
Line 198:
Line 199: private void internalFreeMac(String mac) {
Line 200: if (allocatedMacs.get(mac) != null) {
Why not check if contains key?
Line 201: removeMacFromMap(allocatedMacs, mac);
Line 202: availableMacs.add(mac);
Line 203: } else if (allocatedCustomMacs.get(mac) != null) {
Line 204: removeMacFromMap(allocatedCustomMacs, mac);
Line 199: private void internalFreeMac(String mac) {
Line 200: if (allocatedMacs.get(mac) != null) {
Line 201: removeMacFromMap(allocatedMacs, mac);
Line 202: availableMacs.add(mac);
Line 203: } else if (allocatedCustomMacs.get(mac) != null) {
Same question
Line 204: removeMacFromMap(allocatedCustomMacs, mac);
Line 205: }
Line 206: }
Line 207:
Line 264: @SuppressWarnings("serial")
Line 265: private class MacPoolExceededMaxException extends
RuntimeException {
Line 266: }
Line 267:
Line 268: private boolean allowDuplicate() {
I wouldn't put this in a separate method since it's only used in 1 place and
the logic doesn't merit it's own method.
Line 269: return Config.<Boolean>
GetValue(ConfigValues.AllowDuplicateMacAddresses);
Line 270: }
Line 271:
Line 272: private VmNetworkInterfaceDao getVmNetworkInterfaceDao() {
Line 268: private boolean allowDuplicate() {
Line 269: return Config.<Boolean>
GetValue(ConfigValues.AllowDuplicateMacAddresses);
Line 270: }
Line 271:
Line 272: private VmNetworkInterfaceDao getVmNetworkInterfaceDao() {
I wouldn't put this in a separate method since it's only used in 1 place and
the logic doesn't merit it's own method.
Unless you're doing this for tests..
Line 273: return DbFacade.getInstance().getVmNetworkInterfaceDao();
Line 274: }
Line 275:
Line 276: /*
Line 274: }
Line 275:
Line 276: /*
Line 277: * Adds the given Mac to the given Map, either by putting it in
the Map, or incrementing its counter. If Mac is
Line 278: * already taken and the ConfigValue AllowDuplicateMacAddresses
is false, return false and does not add Mac to map
Please document parameters & return value.
Additionally you can use {@link ConfigValue#AllowDuplicateMacAddresses} which
is a more robust way to document types/methods/etc
Line 279: */
Line 280: private boolean addMacToMap(Map<String, Integer> macMap, String
mac) {
Line 281: boolean returnValue = false;
Line 282: if (!macMap.containsKey(mac)) {
Line 277: * Adds the given Mac to the given Map, either by putting it in
the Map, or incrementing its counter. If Mac is
Line 278: * already taken and the ConfigValue AllowDuplicateMacAddresses
is false, return false and does not add Mac to map
Line 279: */
Line 280: private boolean addMacToMap(Map<String, Integer> macMap, String
mac) {
Line 281: boolean returnValue = false;
I wouldn't use a variable for this but just return on the spot, this method is
not that complicated that you would need a variable to track it's return value.
Line 282: if (!macMap.containsKey(mac)) {
Line 283: macMap.put(mac, 1); // First time this mac is used
Line 284: returnValue = true;
Line 285: } else if (allowDuplicate()) {
Line 279: */
Line 280: private boolean addMacToMap(Map<String, Integer> macMap, String
mac) {
Line 281: boolean returnValue = false;
Line 282: if (!macMap.containsKey(mac)) {
Line 283: macMap.put(mac, 1); // First time this mac is used
I don't think there's need for a comment here, it's pretty obvious
Line 284: returnValue = true;
Line 285: } else if (allowDuplicate()) {
Line 286: incrementMacInMap(macMap, mac);
Line 287: returnValue = true;
Line 288: }
Line 289: return returnValue;
Line 290: }
Line 291:
Line 292: private void incrementMacInMap(Map<String, Integer> macMap,
String mac) {
I wouldn't put this in a separate method since it's only used in 1 place and
the logic doesn't merit it's own method.
Line 293: macMap.put(mac, macMap.get(mac) + 1);
Line 294: }
Line 295:
Line 296: private void decrementMacInMap(Map<String, Integer> macMap,
String mac) {
Line 292: private void incrementMacInMap(Map<String, Integer> macMap,
String mac) {
Line 293: macMap.put(mac, macMap.get(mac) + 1);
Line 294: }
Line 295:
Line 296: private void decrementMacInMap(Map<String, Integer> macMap,
String mac) {
Same here
Line 297: macMap.put(mac, macMap.get(mac) - 1);
Line 298: }
....................................................
File
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/vm/AddVmInterfaceCommand.java
Line 84: }
Line 85: } finally {
Line 86: setSucceeded(succeeded);
Line 87: if (!succeeded) {
Line 88:
MacPoolManager.getInstance().freeMac(getParameters().getInterface().getMacAddress());
Why this change?
Line 89: }
Line 90: }
Line 91: }
Line 92:
....................................................
File
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/vm/UpdateVmInterfaceCommand.java
Line 108: } finally {
Line 109: setSucceeded(succeeded);
Line 110: if (!succeeded && macAddressChanged) {
Line 111:
MacPoolManager.getInstance().addMac(oldIface.getMacAddress());
Line 112:
MacPoolManager.getInstance().freeMac(getInterface().getMacAddress());
getMacAddress() -> getInterface().getMacAddress()
Why this change?
Line 113: }
Line 114: }
Line 115: }
Line 116:
Line 155: public void rollback() {
Line 156: super.rollback();
Line 157: if (macAddressChanged) {
Line 158:
MacPoolManager.getInstance().addMac(oldIface.getMacAddress());
Line 159:
MacPoolManager.getInstance().freeMac(getInterface().getMacAddress());
getMacAddress() -> getInterface().getMacAddress()
Why this change?
Line 160: }
Line 161: }
Line 162:
Line 163: @Override
--
To view, visit http://gerrit.ovirt.org/10698
To unsubscribe, visit http://gerrit.ovirt.org/settings
Gerrit-MessageType: comment
Gerrit-Change-Id: Ie96eda19de2d3a44e24806095fb690e4eba41165
Gerrit-PatchSet: 5
Gerrit-Project: ovirt-engine
Gerrit-Branch: master
Gerrit-Owner: Muli Salem <[email protected]>
Gerrit-Reviewer: Mike Kolesnik <[email protected]>
Gerrit-Reviewer: Moti Asayag <[email protected]>
Gerrit-Reviewer: Muli Salem <[email protected]>
Gerrit-Reviewer: Vered Volansky <[email protected]>
_______________________________________________
Engine-patches mailing list
[email protected]
http://lists.ovirt.org/mailman/listinfo/engine-patches