diff --git a/api/src/com/cloud/api/commands/CreateIpForwardingRuleCmd.java b/api/src/com/cloud/api/commands/CreateIpForwardingRuleCmd.java index 35478ef829d..20837b9d59b 100644 --- a/api/src/com/cloud/api/commands/CreateIpForwardingRuleCmd.java +++ b/api/src/com/cloud/api/commands/CreateIpForwardingRuleCmd.java @@ -27,6 +27,7 @@ import com.cloud.api.Implementation; import com.cloud.api.Parameter; import com.cloud.api.ServerApiException; import com.cloud.api.response.FirewallRuleResponse; +import com.cloud.api.response.IpForwardingRuleResponse; import com.cloud.event.EventTypes; import com.cloud.exception.InvalidParameterValueException; import com.cloud.exception.NetworkRuleConflictException; @@ -96,7 +97,7 @@ public class CreateIpForwardingRuleCmd extends BaseAsyncCreateCmd implements Por } if (result) { PortForwardingRule rule = _entityMgr.findById(PortForwardingRule.class, getEntityId()); - FirewallRuleResponse fwResponse = _responseGenerator.createFirewallRuleResponse(rule); + IpForwardingRuleResponse fwResponse = _responseGenerator.createIpForwardingRuleResponse(rule); fwResponse.setResponseName(getCommandName()); this.setResponseObject(fwResponse); } else { diff --git a/api/src/com/cloud/network/Network.java b/api/src/com/cloud/network/Network.java index 17f12ce6a2f..74d70ff0ec2 100644 --- a/api/src/com/cloud/network/Network.java +++ b/api/src/com/cloud/network/Network.java @@ -192,10 +192,6 @@ public interface Network extends ControlledEntity { URI getBroadcastUri(); - String getDns1(); - - String getDns2(); - GuestIpType getGuestType(); String getDisplayText(); diff --git a/api/src/com/cloud/network/NetworkProfile.java b/api/src/com/cloud/network/NetworkProfile.java new file mode 100644 index 00000000000..dda69b79146 --- /dev/null +++ b/api/src/com/cloud/network/NetworkProfile.java @@ -0,0 +1,44 @@ +package com.cloud.network; + + +public class NetworkProfile{ + private Network network; + private String dns1; + private String dns2; + + public NetworkProfile(Network network, String dns1, String dns2) { + this.network = network; + this.dns1 = dns1; + this.dns2 = dns2; + } + + public NetworkProfile() { + + } + + public Network getNetwork() { + return network; + } + + public void setNetwork(Network network){ + this.network = network; + } + + public String getDns1() { + return dns1; + } + + public String getDns2() { + return dns2; + } + + public void setDns1(String dns1) { + this.dns1 = dns1; + } + + public void setDns2(String dns2) { + this.dns2 = dns2; + } + + +} diff --git a/api/src/com/cloud/network/NetworkService.java b/api/src/com/cloud/network/NetworkService.java index affd873cfae..3d1f3697b89 100644 --- a/api/src/com/cloud/network/NetworkService.java +++ b/api/src/com/cloud/network/NetworkService.java @@ -61,4 +61,6 @@ public interface NetworkService { IpAddress getIp(Ip ip); + NetworkProfile getNetworkProfile(long networkId); + } diff --git a/api/src/com/cloud/network/guru/NetworkGuru.java b/api/src/com/cloud/network/guru/NetworkGuru.java index 0688a9e0440..55a57f69ac6 100644 --- a/api/src/com/cloud/network/guru/NetworkGuru.java +++ b/api/src/com/cloud/network/guru/NetworkGuru.java @@ -9,6 +9,7 @@ import com.cloud.exception.ConcurrentOperationException; import com.cloud.exception.InsufficientAddressCapacityException; import com.cloud.exception.InsufficientVirtualNetworkCapcityException; import com.cloud.network.Network; +import com.cloud.network.NetworkProfile; import com.cloud.offering.NetworkOffering; import com.cloud.user.Account; import com.cloud.utils.component.Adapter; @@ -72,6 +73,8 @@ public interface NetworkGuru extends Adapter { void deallocate(Network network, NicProfile nic, VirtualMachineProfile vm); + void updateNicProfile(NicProfile profile, Network network); + void destroy(Network network, NetworkOffering offering); /** @@ -82,4 +85,7 @@ public interface NetworkGuru extends Adapter { * @return */ boolean trash(Network network, NetworkOffering offering, Account owner); + + void updateNetworkProfile(NetworkProfile networkProfile); + } diff --git a/api/src/com/cloud/vm/NicProfile.java b/api/src/com/cloud/vm/NicProfile.java index 519d5e3eb2e..28320074c68 100644 --- a/api/src/com/cloud/vm/NicProfile.java +++ b/api/src/com/cloud/vm/NicProfile.java @@ -205,8 +205,7 @@ public class NicProfile { this.broadcastUri = broadcastUri; this.isolationUri = isolationUri; this.netmask = nic.getNetmask(); - this.dns1 = network.getDns1(); - this.dns2 = network.getDns2(); + if (networkRate != null) { this.networkRate = networkRate; } diff --git a/server/src/com/cloud/api/ApiDBUtils.java b/server/src/com/cloud/api/ApiDBUtils.java index 3224374902c..b933faed456 100755 --- a/server/src/com/cloud/api/ApiDBUtils.java +++ b/server/src/com/cloud/api/ApiDBUtils.java @@ -34,6 +34,7 @@ import com.cloud.network.Network; import com.cloud.network.Network.Capability; import com.cloud.network.Network.Service; import com.cloud.network.NetworkManager; +import com.cloud.network.NetworkProfile; import com.cloud.network.NetworkRuleConfigVO; import com.cloud.network.NetworkVO; import com.cloud.network.Networks.TrafficType; @@ -91,6 +92,7 @@ import com.cloud.utils.net.Ip; import com.cloud.vm.DomainRouterVO; import com.cloud.vm.InstanceGroupVO; import com.cloud.vm.Nic; +import com.cloud.vm.NicProfile; import com.cloud.vm.UserVmManager; import com.cloud.vm.UserVmVO; import com.cloud.vm.VMInstanceVO; @@ -492,12 +494,12 @@ public class ApiDBUtils { return _storageMgr.volumeOnSharedStoragePool(volume); } - public static List getNics(VirtualMachine vm) { - return _networkMgr.getNics(vm); + public static List getNics(VirtualMachine vm) { + return _networkMgr.getNicProfiles(vm); } - public static Network getNetwork(long id) { - return _networkMgr.getNetwork(id); + public static NetworkProfile getNetworkProfile(long networkId) { + return _networkMgr.getNetworkProfile(networkId); } public static void synchronizeCommand(Object job, String syncObjType, long syncObjId) { diff --git a/server/src/com/cloud/api/ApiResponseHelper.java b/server/src/com/cloud/api/ApiResponseHelper.java index a364ac512ec..6269fbe762e 100755 --- a/server/src/com/cloud/api/ApiResponseHelper.java +++ b/server/src/com/cloud/api/ApiResponseHelper.java @@ -102,6 +102,7 @@ import com.cloud.network.IpAddress; import com.cloud.network.Network; import com.cloud.network.Network.Capability; import com.cloud.network.Network.Service; +import com.cloud.network.NetworkProfile; import com.cloud.network.Networks.TrafficType; import com.cloud.network.RemoteAccessVpn; import com.cloud.network.VpnUser; @@ -150,7 +151,7 @@ import com.cloud.utils.net.NetUtils; import com.cloud.vm.ConsoleProxyVO; import com.cloud.vm.InstanceGroup; import com.cloud.vm.InstanceGroupVO; -import com.cloud.vm.Nic; +import com.cloud.vm.NicProfile; import com.cloud.vm.SecondaryStorageVmVO; import com.cloud.vm.SystemVm; import com.cloud.vm.UserVmVO; @@ -1104,27 +1105,27 @@ public class ApiResponseHelper implements ResponseGenerator { // network groups userVmResponse.setSecurityGroupList(ApiDBUtils.getNetworkGroupsNamesForVm(userVm.getId())); - List nics = ApiDBUtils.getNics(userVm); + List nicProfiles = ApiDBUtils.getNics(userVm); List nicResponses = new ArrayList(); - for (Nic singleNic : nics) { + for (NicProfile singleNicProfile : nicProfiles) { NicResponse nicResponse = new NicResponse(); - nicResponse.setId(singleNic.getId()); - nicResponse.setIpaddress(singleNic.getIp4Address()); - nicResponse.setGateway(singleNic.getGateway()); - nicResponse.setNetmask(singleNic.getNetmask()); - nicResponse.setNetworkid(singleNic.getNetworkId()); + nicResponse.setId(singleNicProfile.getId()); + nicResponse.setIpaddress(singleNicProfile.getIp4Address()); + nicResponse.setGateway(singleNicProfile.getGateway()); + nicResponse.setNetmask(singleNicProfile.getNetmask()); + nicResponse.setNetworkid(singleNicProfile.getNetworkId()); if (acct.getType() == Account.ACCOUNT_TYPE_ADMIN) { - if (singleNic.getBroadcastUri() != null) { - nicResponse.setBroadcastUri(singleNic.getBroadcastUri().toString()); + if (singleNicProfile.getBroadCastUri() != null) { + nicResponse.setBroadcastUri(singleNicProfile.getBroadCastUri().toString()); } - if (singleNic.getIsolationUri() != null) { - nicResponse.setIsolationUri(singleNic.getIsolationUri().toString()); + if (singleNicProfile.getIsolationUri() != null) { + nicResponse.setIsolationUri(singleNicProfile.getIsolationUri().toString()); } } - Network network = ApiDBUtils.findNetworkById(singleNic.getNetworkId()); + Network network = ApiDBUtils.findNetworkById(singleNicProfile.getNetworkId()); nicResponse.setTrafficType(network.getTrafficType().toString()); nicResponse.setType(network.getGuestType().toString()); - nicResponse.setIsDefault(singleNic.isDefaultNic()); + nicResponse.setIsDefault(singleNicProfile.isDefaultNic()); nicResponse.setObjectName("nic"); @@ -1159,23 +1160,23 @@ public class ApiResponseHelper implements ResponseGenerator { routerResponse.setDomainName(ApiDBUtils.findDomainById(accountTemp.getDomainId()).getName()); } - List nics = ApiDBUtils.getNics(router); - for (Nic singleNic : nics) { - Network network = ApiDBUtils.findNetworkById(singleNic.getNetworkId()); + List nicProfiles = ApiDBUtils.getNics(router); + for (NicProfile singleNicProfile : nicProfiles) { + Network network = ApiDBUtils.findNetworkById(singleNicProfile.getNetworkId()); if (network != null) { if (network.getTrafficType() == TrafficType.Public) { - routerResponse.setPublicIp(singleNic.getIp4Address()); - routerResponse.setPublicMacAddress(singleNic.getMacAddress()); - routerResponse.setPublicNetmask(singleNic.getNetmask()); - routerResponse.setGateway(singleNic.getGateway()); + routerResponse.setPublicIp(singleNicProfile.getIp4Address()); + routerResponse.setPublicMacAddress(singleNicProfile.getMacAddress()); + routerResponse.setPublicNetmask(singleNicProfile.getNetmask()); + routerResponse.setGateway(singleNicProfile.getGateway()); } else if (network.getTrafficType() == TrafficType.Control) { - routerResponse.setPrivateIp(singleNic.getIp4Address()); - routerResponse.setPrivateMacAddress(singleNic.getMacAddress()); - routerResponse.setPrivateNetmask(singleNic.getNetmask()); + routerResponse.setPrivateIp(singleNicProfile.getIp4Address()); + routerResponse.setPrivateMacAddress(singleNicProfile.getMacAddress()); + routerResponse.setPrivateNetmask(singleNicProfile.getNetmask()); } else if (network.getTrafficType() == TrafficType.Guest) { - routerResponse.setGuestIpAddress(singleNic.getIp4Address()); - routerResponse.setGuestMacAddress(singleNic.getMacAddress()); - routerResponse.setGuestNetmask(singleNic.getNetmask()); + routerResponse.setGuestIpAddress(singleNicProfile.getIp4Address()); + routerResponse.setGuestMacAddress(singleNicProfile.getMacAddress()); + routerResponse.setGuestNetmask(singleNicProfile.getNetmask()); } } } @@ -1238,22 +1239,22 @@ public class ApiResponseHelper implements ResponseGenerator { vmResponse.setDns2(zone.getDns2()); } - List nics = ApiDBUtils.getNics(systemVM); - for (Nic singleNic : nics) { - Network network = ApiDBUtils.findNetworkById(singleNic.getNetworkId()); + List nicProfiles = ApiDBUtils.getNics(systemVM); + for (NicProfile singleNicProfile : nicProfiles) { + Network network = ApiDBUtils.findNetworkById(singleNicProfile.getNetworkId()); if (network != null) { TrafficType trafficType = TrafficType.Public; if(zone.getNetworkType() == NetworkType.Basic) { trafficType = TrafficType.Guest; } if (network.getTrafficType() == trafficType) { - vmResponse.setPublicIp(singleNic.getIp4Address()); - vmResponse.setPublicMacAddress(singleNic.getMacAddress()); - vmResponse.setPublicNetmask(singleNic.getNetmask()); + vmResponse.setPublicIp(singleNicProfile.getIp4Address()); + vmResponse.setPublicMacAddress(singleNicProfile.getMacAddress()); + vmResponse.setPublicNetmask(singleNicProfile.getNetmask()); } else if (network.getTrafficType() == TrafficType.Control) { - vmResponse.setPrivateIp(singleNic.getIp4Address()); - vmResponse.setPrivateMacAddress(singleNic.getMacAddress()); - vmResponse.setPrivateNetmask(singleNic.getNetmask()); + vmResponse.setPrivateIp(singleNicProfile.getIp4Address()); + vmResponse.setPrivateMacAddress(singleNicProfile.getMacAddress()); + vmResponse.setPrivateNetmask(singleNicProfile.getNetmask()); } } } @@ -2237,6 +2238,8 @@ public class ApiResponseHelper implements ResponseGenerator { @Override public NetworkResponse createNetworkResponse(Network network) { + NetworkProfile profile = ApiDBUtils.getNetworkProfile(network.getId()); + network = profile.getNetwork(); NetworkResponse response = new NetworkResponse(); response.setId(network.getId()); response.setName(network.getName()); @@ -2285,10 +2288,11 @@ public class ApiResponseHelper implements ResponseGenerator { response.setIsDefault(network.isDefault()); response.setState(network.getState().toString()); response.setRelated(network.getRelated()); - response.setDns1(network.getDns1()); - response.setDns2(network.getDns2()); response.setNetworkDomain(network.getNetworkDomain()); + response.setDns1(profile.getDns1()); + response.setDns2(profile.getDns2()); + //populate capability Map> serviceCapabilitiesMap = ApiDBUtils.getZoneCapabilities(network.getDataCenterId()); List serviceResponses = new ArrayList(); diff --git a/server/src/com/cloud/configuration/ConfigurationManagerImpl.java b/server/src/com/cloud/configuration/ConfigurationManagerImpl.java index d65ede3d2d7..ebf20bb6b9f 100755 --- a/server/src/com/cloud/configuration/ConfigurationManagerImpl.java +++ b/server/src/com/cloud/configuration/ConfigurationManagerImpl.java @@ -1066,10 +1066,6 @@ public class ConfigurationManagerImpl implements ConfigurationManager, Configura _zoneDao.addVnet(zone.getId(), begin, end); } - if(dnsUpdate){ - // FIXME: Need to update dns in network rather than in the vms. - } - return zone; } diff --git a/server/src/com/cloud/network/NetworkManager.java b/server/src/com/cloud/network/NetworkManager.java index 9d2dfde0c0b..09f9660db7e 100644 --- a/server/src/com/cloud/network/NetworkManager.java +++ b/server/src/com/cloud/network/NetworkManager.java @@ -112,6 +112,8 @@ public interface NetworkManager extends NetworkService { void expungeNics(VirtualMachineProfile vm); List getNics(VirtualMachine vm); + + List getNicProfiles(VirtualMachine vm); List getAccountsUsingNetwork(long configurationId); AccountVO getNetworkOwner(long configurationId); diff --git a/server/src/com/cloud/network/NetworkManagerImpl.java b/server/src/com/cloud/network/NetworkManagerImpl.java index e28bb9e89a0..be01e003cf1 100755 --- a/server/src/com/cloud/network/NetworkManagerImpl.java +++ b/server/src/com/cloud/network/NetworkManagerImpl.java @@ -911,12 +911,8 @@ public class NetworkManagerImpl implements NetworkManager, NetworkService, Manag to.setIp(nic.getIp4Address()); to.setNetmask(nic.getNetmask()); to.setMac(nic.getMacAddress()); - if (config.getDns1() != null) { - to.setDns1(config.getDns1()); - } - if (config.getDns2() != null) { - to.setDns2(config.getDns2()); - } + to.setDns1(profile.getDns1()); + to.setDns2(profile.getDns2()); if (nic.getGateway() != null) { to.setGateway(nic.getGateway()); } else { @@ -969,8 +965,6 @@ public class NetworkManagerImpl implements NetworkManager, NetworkService, Manag network.setCidr(result.getCidr()); network.setBroadcastUri(result.getBroadcastUri()); network.setGateway(result.getGateway()); - network.setDns1(result.getDns1()); - network.setDns2(result.getDns2()); network.setMode(result.getMode()); _networksDao.update(networkId, network); @@ -1051,7 +1045,7 @@ public class NetworkManagerImpl implements NetworkManager, NetworkService, Manag } element.prepare(network, profile, vmProfile, dest, context); } - + concierge.updateNicProfile(profile, network); vmProfile.addNic(profile); } } @@ -1060,12 +1054,13 @@ public class NetworkManagerImpl implements NetworkManager, NetworkService, Manag public void prepareNicForMigration(VirtualMachineProfile vm, DeployDestination dest) { List nics = _nicDao.listBy(vm.getId()); for (NicVO nic : nics) { - Network network = _networksDao.findById(nic.getNetworkId()); + NetworkVO network = _networksDao.findById(nic.getNetworkId()); NetworkOffering no = _configMgr.getNetworkOffering(network.getNetworkOfferingId()); Integer networkRate = _configMgr.getNetworkRate(no.getId()); - + + NetworkGuru concierge = _networkGurus.get(network.getGuruName()); NicProfile profile = new NicProfile(nic, network, nic.getBroadcastUri(), nic.getIsolationUri(), networkRate); - + concierge.updateNicProfile(profile, network); vm.addNic(profile); } } @@ -1110,6 +1105,27 @@ public class NetworkManagerImpl implements NetworkManager, NetworkService, Manag } return null; } + + + @Override + public List getNicProfiles(VirtualMachine vm) { + List nics = _nicDao.listBy(vm.getId()); + List profiles = new ArrayList(); + + if (nics != null) { + for (Nic nic : nics) { + NetworkVO network = _networksDao.findById(nic.getNetworkId()); + NetworkOffering no = _configMgr.getNetworkOffering(network.getNetworkOfferingId()); + Integer networkRate = _configMgr.getNetworkRate(no.getId()); + + NetworkGuru concierge = _networkGurus.get(network.getGuruName()); + NicProfile profile = new NicProfile(nic, network, nic.getBroadcastUri(), nic.getIsolationUri(), networkRate); + concierge.updateNicProfile(profile, network); + profiles.add(profile); + } + } + return profiles; + } @Override @DB @@ -1984,4 +2000,14 @@ public class NetworkManagerImpl implements NetworkManager, NetworkService, Manag public IpAddress getIp(Ip ip) { return _ipAddressDao.findById(ip); } + + @Override + public NetworkProfile getNetworkProfile(long networkId) { + NetworkVO network = _networksDao.findById(networkId); + NetworkGuru concierge = _networkGurus.get(network.getGuruName()); + NetworkProfile profile = new NetworkProfile(network, null, null); + concierge.updateNetworkProfile(profile); + + return profile; + } } diff --git a/server/src/com/cloud/network/NetworkVO.java b/server/src/com/cloud/network/NetworkVO.java index 38dd428348d..220859f10c9 100644 --- a/server/src/com/cloud/network/NetworkVO.java +++ b/server/src/com/cloud/network/NetworkVO.java @@ -164,8 +164,6 @@ public class NetworkVO implements Network { public NetworkVO(long id, Network that, long offeringId, long dataCenterId, String guruName, long domainId, long accountId, long related, String name, String displayText, Boolean isShared, boolean isDefault) { this(id, that.getTrafficType(), that.getGuestType(), that.getMode(), that.getBroadcastDomainType(), offeringId, dataCenterId, domainId, accountId, related, name, displayText, isShared, isDefault); this.gateway = that.getGateway(); - this.dns1 = that.getDns1(); - this.dns2 = that.getDns2(); this.cidr = that.getCidr(); this.broadcastUri = that.getBroadcastUri(); this.broadcastDomainType = that.getBroadcastDomainType(); @@ -340,7 +338,6 @@ public class NetworkVO implements Network { return dataCenterId; } - @Override public String getDns1() { return dns1; } @@ -349,7 +346,6 @@ public class NetworkVO implements Network { this.dns1 = dns; } - @Override public String getDns2() { return dns2; } diff --git a/server/src/com/cloud/network/guru/DirectNetworkGuru.java b/server/src/com/cloud/network/guru/DirectNetworkGuru.java index b31632ac481..b92f7830248 100644 --- a/server/src/com/cloud/network/guru/DirectNetworkGuru.java +++ b/server/src/com/cloud/network/guru/DirectNetworkGuru.java @@ -36,6 +36,7 @@ import com.cloud.network.Network; import com.cloud.network.Network.GuestIpType; import com.cloud.network.Network.State; import com.cloud.network.NetworkManager; +import com.cloud.network.NetworkProfile; import com.cloud.network.NetworkVO; import com.cloud.network.Networks.AddressFormat; import com.cloud.network.Networks.BroadcastDomainType; @@ -49,6 +50,7 @@ import com.cloud.offerings.dao.NetworkOfferingDao; import com.cloud.user.Account; import com.cloud.utils.component.AdapterBase; import com.cloud.utils.component.Inject; +import com.cloud.vm.Nic; import com.cloud.vm.Nic.ReservationStrategy; import com.cloud.vm.NicProfile; import com.cloud.vm.ReservationContext; @@ -110,9 +112,6 @@ public class DirectNetworkGuru extends AdapterBase implements NetworkGuru { config.setBroadcastDomainType(userSpecified.getBroadcastDomainType()); } } - - config.setDns1(dc.getDns1()); - config.setDns2(dc.getDns2()); return config; } @@ -137,6 +136,15 @@ public class DirectNetworkGuru extends AdapterBase implements NetworkGuru { nic.setDns1(dc.getDns1()); nic.setDns2(dc.getDns2()); } + + @Override + public void updateNicProfile(NicProfile profile, Network network) { + DataCenter dc = _dcDao.findById(network.getDataCenterId()); + if (profile != null) { + profile.setDns1(dc.getDns1()); + profile.setDns2(dc.getDns2()); + } + } @Override public NicProfile allocate(Network network, NicProfile nic, VirtualMachineProfile vm) throws InsufficientVirtualNetworkCapcityException, @@ -190,4 +198,11 @@ public class DirectNetworkGuru extends AdapterBase implements NetworkGuru { public boolean trash(Network network, NetworkOffering offering, Account owner) { return true; } + + @Override + public void updateNetworkProfile(NetworkProfile networkProfile) { + DataCenter dc = _dcDao.findById(networkProfile.getNetwork().getDataCenterId()); + networkProfile.setDns1(dc.getDns1()); + networkProfile.setDns2(dc.getDns2()); + } } diff --git a/server/src/com/cloud/network/guru/GuestNetworkGuru.java b/server/src/com/cloud/network/guru/GuestNetworkGuru.java index 433777d926a..521f3a41c53 100644 --- a/server/src/com/cloud/network/guru/GuestNetworkGuru.java +++ b/server/src/com/cloud/network/guru/GuestNetworkGuru.java @@ -39,11 +39,13 @@ import com.cloud.network.Network; import com.cloud.network.Network.GuestIpType; import com.cloud.network.Network.State; import com.cloud.network.NetworkManager; +import com.cloud.network.NetworkProfile; import com.cloud.network.NetworkVO; import com.cloud.network.Networks.AddressFormat; import com.cloud.network.Networks.BroadcastDomainType; import com.cloud.network.Networks.Mode; import com.cloud.network.Networks.TrafficType; +import com.cloud.network.dao.NetworkDao; import com.cloud.offering.NetworkOffering; import com.cloud.user.Account; import com.cloud.utils.component.AdapterBase; @@ -64,6 +66,7 @@ public class GuestNetworkGuru extends AdapterBase implements NetworkGuru { @Inject protected DataCenterDao _dcDao; @Inject protected VlanDao _vlanDao; @Inject protected NicDao _nicDao; + @Inject protected NetworkDao _networkDao; String _defaultGateway; String _defaultCidr; @@ -110,9 +113,6 @@ public class GuestNetworkGuru extends AdapterBase implements NetworkGuru { } } - network.setDns1(dc.getDns1()); - network.setDns2(dc.getDns2()); - if (userSpecified.getBroadcastUri() != null) { network.setBroadcastUri(userSpecified.getBroadcastUri()); network.setState(State.Setup); @@ -125,9 +125,7 @@ public class GuestNetworkGuru extends AdapterBase implements NetworkGuru { String guestNetworkCidr = dc.getGuestNetworkCidr(); String[] cidrTuple = guestNetworkCidr.split("\\/"); network.setGateway(NetUtils.getIpRangeStartIpFromCidr(cidrTuple[0], Long.parseLong(cidrTuple[1]))); - network.setCidr(guestNetworkCidr); - network.setDns1(dc.getDns1()); - network.setDns2(dc.getDns2()); + network.setCidr(guestNetworkCidr);; } return network; @@ -161,35 +159,31 @@ public class GuestNetworkGuru extends AdapterBase implements NetworkGuru { implemented.setCidr(network.getCidr()); } - if (network.getDns1() != null) { - implemented.setDns1(network.getDns1()); - } - - if (network.getDns2() != null) { - implemented.setDns2(network.getDns2()); - } - return implemented; } @Override public NicProfile allocate(Network network, NicProfile nic, VirtualMachineProfile vm) throws InsufficientVirtualNetworkCapcityException, InsufficientAddressCapacityException { + assert (network.getTrafficType() == TrafficType.Guest) : "Look at my name! Why are you calling me when the traffic type is : " + network.getTrafficType(); if (nic == null) { nic = new NicProfile(ReservationStrategy.Start, null, null, null, null); } + DataCenter dc = _dcDao.findById(network.getDataCenterId()); + if (nic.getIp4Address() == null){ nic.setBroadcastUri(network.getBroadcastUri()); nic.setIsolationUri(network.getBroadcastUri()); nic.setGateway(network.getGateway()); nic.setIp4Address(acquireGuestIpAddress(network)); nic.setNetmask(NetUtils.cidr2Netmask(network.getCidr())); - nic.setDns1(network.getDns1()); - nic.setDns2(network.getDns2()); nic.setFormat(AddressFormat.Ip4); + + nic.setDns1(dc.getDns1()); + nic.setDns2(dc.getDns2()); } nic.setStrategy(ReservationStrategy.Start); @@ -204,6 +198,15 @@ public class GuestNetworkGuru extends AdapterBase implements NetworkGuru { return nic; } + @Override + public void updateNicProfile(NicProfile profile, Network network) { + DataCenter dc = _dcDao.findById(network.getDataCenterId()); + if (profile != null) { + profile.setDns1(dc.getDns1()); + profile.setDns2(dc.getDns2()); + } + } + @DB protected String acquireGuestIpAddress(Network network) { List ips = _nicDao.listIpAddressInNetwork(network.getId()); @@ -249,4 +252,11 @@ public class GuestNetworkGuru extends AdapterBase implements NetworkGuru { public boolean trash(Network network, NetworkOffering offering, Account owner) { return true; } + + @Override + public void updateNetworkProfile(NetworkProfile networkProfile) { + DataCenter dc = _dcDao.findById(networkProfile.getNetwork().getDataCenterId()); + networkProfile.setDns1(dc.getDns1()); + networkProfile.setDns2(dc.getDns2()); + } } diff --git a/server/src/com/cloud/network/guru/PodBasedNetworkGuru.java b/server/src/com/cloud/network/guru/PodBasedNetworkGuru.java index d6216985e82..61503b22eb7 100644 --- a/server/src/com/cloud/network/guru/PodBasedNetworkGuru.java +++ b/server/src/com/cloud/network/guru/PodBasedNetworkGuru.java @@ -9,7 +9,6 @@ import javax.ejb.Local; import org.apache.log4j.Logger; -import com.cloud.dc.DataCenterVO; import com.cloud.dc.Pod; import com.cloud.dc.dao.DataCenterDao; import com.cloud.deploy.DeployDestination; @@ -18,6 +17,7 @@ import com.cloud.exception.InsufficientAddressCapacityException; import com.cloud.exception.InsufficientVirtualNetworkCapcityException; import com.cloud.network.Network; import com.cloud.network.NetworkManager; +import com.cloud.network.NetworkProfile; import com.cloud.network.NetworkVO; import com.cloud.network.Networks.AddressFormat; import com.cloud.network.Networks.BroadcastDomainType; @@ -51,9 +51,6 @@ public class PodBasedNetworkGuru extends AdapterBase implements NetworkGuru { } NetworkVO config = new NetworkVO(type, null, Mode.Static, BroadcastDomainType.Native, offering.getId(), plan.getDataCenterId(), Network.State.Setup); - DataCenterVO dc = _dcDao.findById(plan.getDataCenterId()); - config.setDns1(dc.getDns1()); - config.setDns2(dc.getDns2()); return config; } @@ -103,7 +100,16 @@ public class PodBasedNetworkGuru extends AdapterBase implements NetworkGuru { s_logger.debug("Allocated a nic " + nic + " for " + vm); } - + + + @Override + public void updateNicProfile(NicProfile profile, Network network) { + } + + @Override + public void updateNetworkProfile(NetworkProfile networkProfile) { + } + @Override public boolean release(NicProfile nic, VirtualMachineProfile vm, String reservationId) { _dcDao.releasePrivateIpAddress(nic.getId(), nic.getReservationId()); diff --git a/server/src/com/cloud/network/guru/PublicNetworkGuru.java b/server/src/com/cloud/network/guru/PublicNetworkGuru.java index 4838b762d0f..a1c4f8feca7 100644 --- a/server/src/com/cloud/network/guru/PublicNetworkGuru.java +++ b/server/src/com/cloud/network/guru/PublicNetworkGuru.java @@ -20,6 +20,7 @@ import com.cloud.exception.InsufficientVirtualNetworkCapcityException; import com.cloud.network.Network; import com.cloud.network.Network.State; import com.cloud.network.NetworkManager; +import com.cloud.network.NetworkProfile; import com.cloud.network.NetworkVO; import com.cloud.network.Networks.AddressFormat; import com.cloud.network.Networks.BroadcastDomainType; @@ -70,8 +71,6 @@ public class PublicNetworkGuru extends AdapterBase implements NetworkGuru { if (offering.getTrafficType() == TrafficType.Public) { NetworkVO ntwk = new NetworkVO(offering.getTrafficType(), null, Mode.Static, BroadcastDomainType.Vlan, offering.getId(), plan.getDataCenterId(), State.Setup); - ntwk.setDns1(dc.getDns1()); - ntwk.setDns2(dc.getDns2()); return ntwk; } else { return null; @@ -95,9 +94,20 @@ public class PublicNetworkGuru extends AdapterBase implements NetworkGuru { nic.setReservationId(String.valueOf(ip.getVlanTag())); nic.setMacAddress(ip.getMacAddress()); } + nic.setDns1(dc.getDns1()); nic.setDns2(dc.getDns2()); } + + + @Override + public void updateNicProfile(NicProfile profile, Network network) { + DataCenter dc = _dcDao.findById(network.getDataCenterId()); + if (profile != null) { + profile.setDns1(dc.getDns1()); + profile.setDns2(dc.getDns2()); + } + } @Override public NicProfile allocate(Network network, NicProfile nic, VirtualMachineProfile vm) throws InsufficientVirtualNetworkCapcityException, @@ -155,4 +165,11 @@ public class PublicNetworkGuru extends AdapterBase implements NetworkGuru { public boolean trash(Network network, NetworkOffering offering, Account owner) { return true; } + + @Override + public void updateNetworkProfile(NetworkProfile networkProfile) { + DataCenter dc = _dcDao.findById(networkProfile.getNetwork().getDataCenterId()); + networkProfile.setDns1(dc.getDns1()); + networkProfile.setDns2(dc.getDns2()); + } }