Skip to content

Commit 65b3572

Browse files
review changes
1 parent b6b239a commit 65b3572

File tree

7 files changed

+55
-21
lines changed

7 files changed

+55
-21
lines changed

api/src/main/java/com/cloud/network/NetworkModel.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -125,9 +125,9 @@ public interface NetworkModel {
125125
*/
126126
String getNextAvailableMacAddressInNetwork(long networkConfigurationId) throws InsufficientAddressCapacityException;
127127

128-
default boolean isMACUnique(String mac, long networkId) {
129-
return true;
130-
}
128+
String getUniqueMacAddress(long macAddress, long networkId, long datacenterId) throws InsufficientAddressCapacityException;
129+
130+
boolean isMACUnique(String mac, long networkId);
131131

132132
PublicIpAddress getPublicIpAddress(long ipAddressId);
133133

server/src/main/java/com/cloud/network/NetworkModelImpl.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -608,8 +608,19 @@ public String getNextAvailableMacAddressInNetwork(long networkId) throws Insuffi
608608
return mac;
609609
}
610610

611+
@Override
612+
public String getUniqueMacAddress(long macAddress, long networkId, long datacenterId) throws InsufficientAddressCapacityException {
613+
String macAddressStr = NetUtils.long2Mac(NetUtils.createSequenceBasedMacAddress(macAddress, getMacIdentifier(datacenterId)));
614+
if (!isMACUnique(macAddressStr, networkId)) {
615+
macAddressStr = getNextAvailableMacAddressInNetwork(networkId);
616+
}
617+
return macAddressStr;
618+
}
619+
620+
@Override
611621
public boolean isMACUnique(String mac, long networkId) {
612622
return (_nicDao.findByMacAddress(mac, networkId) == null);
623+
613624
}
614625

615626
@Override

server/src/main/java/com/cloud/network/guru/PodBasedNetworkGuru.java

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -133,10 +133,7 @@ public void reserve(NicProfile nic, Network config, VirtualMachineProfile vm, De
133133
Integer vlan = result.getVlan();
134134

135135
nic.setIPv4Address(result.getIpAddress());
136-
String macAddress = NetUtils.long2Mac(NetUtils.createSequenceBasedMacAddress(result.getMacAddress(), _networkModel.getMacIdentifier(dest.getDataCenter().getId())));
137-
if (!_networkModel.isMACUnique(macAddress, config.getId())) {
138-
macAddress = _networkModel.getNextAvailableMacAddressInNetwork(config.getId());
139-
}
136+
String macAddress = _networkModel.getUniqueMacAddress(result.getMacAddress(), config.getId(), dest.getDataCenter().getId());
140137
nic.setMacAddress(macAddress);
141138
nic.setIPv4Gateway(pod.getGateway());
142139
nic.setFormat(AddressFormat.Ip4);

server/src/main/java/com/cloud/network/guru/StorageNetworkGuru.java

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,6 @@
3737
import com.cloud.network.dao.NetworkVO;
3838
import com.cloud.offering.NetworkOffering;
3939
import com.cloud.user.Account;
40-
import com.cloud.utils.net.NetUtils;
4140
import com.cloud.vm.Nic.ReservationStrategy;
4241
import com.cloud.vm.NicProfile;
4342
import com.cloud.vm.ReservationContext;
@@ -132,10 +131,7 @@ public void reserve(NicProfile nic, Network network, VirtualMachineProfile vm, D
132131

133132
vlan = ip.getVlan();
134133
nic.setIPv4Address(ip.getIpAddress());
135-
String macAddress = NetUtils.long2Mac(NetUtils.createSequenceBasedMacAddress(ip.getMac(), _networkModel.getMacIdentifier(dest.getDataCenter().getId())));
136-
if (!_networkModel.isMACUnique(macAddress, network.getId())) {
137-
macAddress = _networkModel.getNextAvailableMacAddressInNetwork(network.getId());
138-
}
134+
String macAddress = _networkModel.getUniqueMacAddress(ip.getMac(), network.getId(), dest.getDataCenter().getId());
139135
nic.setMacAddress(macAddress);
140136
nic.setFormat(AddressFormat.Ip4);
141137
nic.setIPv4Netmask(ip.getNetmask());

server/src/main/java/com/cloud/network/router/NicProfileHelperImpl.java

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -91,18 +91,12 @@ public NicProfile createPrivateNicProfileForGateway(final VpcGateway privateGate
9191
privateNicProfile.setDeviceId(null);
9292

9393
if (router.getIsRedundantRouter()) {
94-
String newMacAddress = NetUtils.long2Mac(NetUtils.createSequenceBasedMacAddress(ipVO.getMacAddress(), _networkModel.getMacIdentifier(privateNetwork.getDataCenterId())));
95-
if (!_networkModel.isMACUnique(newMacAddress, privateNetwork.getId())) {
96-
newMacAddress = _networkModel.getNextAvailableMacAddressInNetwork(privateNetwork.getId());
97-
}
98-
privateNicProfile.setMacAddress(newMacAddress);
94+
String newMacAddress = _networkModel.getUniqueMacAddress(ipVO.getMacAddress(), privateNetwork.getId(), privateNetwork.getDataCenterId());
95+
privateNicProfile.setMacAddress(newMacAddress);
9996
}
10097
} else {
10198
final String netmask = NetUtils.getCidrNetmask(privateNetwork.getCidr());
102-
String newMacAddress = NetUtils.long2Mac(NetUtils.createSequenceBasedMacAddress(ipVO.getMacAddress(), _networkModel.getMacIdentifier(privateNetwork.getDataCenterId())));
103-
if (!_networkModel.isMACUnique(newMacAddress, privateNetwork.getId())) {
104-
newMacAddress = _networkModel.getNextAvailableMacAddressInNetwork(privateNetwork.getId());
105-
}
99+
String newMacAddress = _networkModel.getUniqueMacAddress(ipVO.getMacAddress(), privateNetwork.getId(), privateNetwork.getDataCenterId());
106100
final PrivateIpAddress ip =
107101
new PrivateIpAddress(ipVO, privateNetwork.getBroadcastUri().toString(), privateNetwork.getGateway(), netmask, newMacAddress);
108102

server/src/test/java/com/cloud/network/MockNetworkModelImpl.java

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -129,6 +129,24 @@ public String getNextAvailableMacAddressInNetwork(long networkConfigurationId) t
129129
return null;
130130
}
131131

132+
/* (non-Javadoc)
133+
* @see com.cloud.network.NetworkModel#getUniqueMacAddress(long, long, long)
134+
*/
135+
@Override
136+
public String getUniqueMacAddress(long macAddress, long networkId, long datacenterId) throws InsufficientAddressCapacityException {
137+
// TODO Auto-generated method stub
138+
return null;
139+
}
140+
141+
/* (non-Javadoc)
142+
* @see com.cloud.network.NetworkModel#isMACUnique(String, long)
143+
*/
144+
@Override
145+
public boolean isMACUnique(String mac, long networkId) {
146+
// TODO Auto-generated method stub
147+
return true;
148+
}
149+
132150
/* (non-Javadoc)
133151
* @see com.cloud.network.NetworkModel#getPublicIpAddress(long)
134152
*/

server/src/test/java/com/cloud/vpc/MockNetworkModelImpl.java

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -141,6 +141,24 @@ public String getNextAvailableMacAddressInNetwork(long networkConfigurationId) t
141141
return null;
142142
}
143143

144+
/* (non-Javadoc)
145+
* @see com.cloud.network.NetworkModel#getUniqueMacAddress(long, long, long)
146+
*/
147+
@Override
148+
public String getUniqueMacAddress(long macAddress, long networkId, long datacenterId) throws InsufficientAddressCapacityException {
149+
// TODO Auto-generated method stub
150+
return null;
151+
}
152+
153+
/* (non-Javadoc)
154+
* @see com.cloud.network.NetworkModel#isMACUnique(String, long)
155+
*/
156+
@Override
157+
public boolean isMACUnique(String mac, long networkId) {
158+
// TODO Auto-generated method stub
159+
return true;
160+
}
161+
144162
/* (non-Javadoc)
145163
* @see com.cloud.network.NetworkModel#getPublicIpAddress(long)
146164
*/

0 commit comments

Comments
 (0)