=updatenetwork changes

This commit is contained in:
Nitin Mehta 2013-04-28 18:13:22 +05:30
parent 335aca3f54
commit c338cb7dd0
8 changed files with 44 additions and 11 deletions

View File

@ -68,7 +68,7 @@ public interface NetworkService {
IpAddress getIp(long id); IpAddress getIp(long id);
Network updateGuestNetwork(long networkId, String name, String displayText, Account callerAccount, User callerUser, Network updateGuestNetwork(long networkId, String name, String displayText, Account callerAccount, User callerUser,
String domainSuffix, Long networkOfferingId, Boolean changeCidr, String guestVmCidr); String domainSuffix, Long networkOfferingId, Boolean changeCidr, String guestVmCidr, Boolean displayNetwork);
PhysicalNetwork createPhysicalNetwork(Long zoneId, String vnetRange, String networkSpeed, PhysicalNetwork createPhysicalNetwork(Long zoneId, String vnetRange, String networkSpeed,
List<String> isolationMethods, String broadcastDomainRange, Long domainId, List<String> tags, String name); List<String> isolationMethods, String broadcastDomainRange, Long domainId, List<String> tags, String name);

View File

@ -67,6 +67,9 @@ public class UpdateNetworkCmd extends BaseAsyncCmd {
@Parameter(name=ApiConstants.GUEST_VM_CIDR, type=CommandType.STRING, description="CIDR for Guest VMs,Cloudstack allocates IPs to Guest VMs only from this CIDR") @Parameter(name=ApiConstants.GUEST_VM_CIDR, type=CommandType.STRING, description="CIDR for Guest VMs,Cloudstack allocates IPs to Guest VMs only from this CIDR")
private String guestVmCidr; private String guestVmCidr;
@Parameter(name=ApiConstants.DISPLAY_NETWORK, type=CommandType.BOOLEAN, description="an optional field, whether to the display the network to the end user or not.")
private Boolean displayNetwork;
///////////////////////////////////////////////////// /////////////////////////////////////////////////////
/////////////////// Accessors /////////////////////// /////////////////// Accessors ///////////////////////
///////////////////////////////////////////////////// /////////////////////////////////////////////////////
@ -101,6 +104,10 @@ public class UpdateNetworkCmd extends BaseAsyncCmd {
private String getGuestVmCidr() { private String getGuestVmCidr() {
return guestVmCidr; return guestVmCidr;
} }
public Boolean getDisplayNetwork() {
return displayNetwork;
}
///////////////////////////////////////////////////// /////////////////////////////////////////////////////
/////////////// API Implementation/////////////////// /////////////// API Implementation///////////////////
///////////////////////////////////////////////////// /////////////////////////////////////////////////////
@ -130,7 +137,7 @@ public class UpdateNetworkCmd extends BaseAsyncCmd {
} }
Network result = _networkService.updateGuestNetwork(getId(), getNetworkName(), getDisplayText(), callerAccount, Network result = _networkService.updateGuestNetwork(getId(), getNetworkName(), getDisplayText(), callerAccount,
callerUser, getNetworkDomain(), getNetworkOfferingId(), getChangeCidr(), getGuestVmCidr()); callerUser, getNetworkDomain(), getNetworkOfferingId(), getChangeCidr(), getGuestVmCidr(), getDisplayNetwork());
if (result != null) { if (result != null) {

View File

@ -1173,7 +1173,7 @@ public class NetworkManagerImpl extends ManagerBase implements NetworkManager, L
NetworkVO vo = new NetworkVO(id, network, offering.getId(), guru.getName(), owner.getDomainId(), owner.getId(), NetworkVO vo = new NetworkVO(id, network, offering.getId(), guru.getName(), owner.getDomainId(), owner.getId(),
related, name, displayText, predefined.getNetworkDomain(), offering.getGuestType(), related, name, displayText, predefined.getNetworkDomain(), offering.getGuestType(),
plan.getDataCenterId(), plan.getPhysicalNetworkId(), aclType, offering.getSpecifyIpRanges(), vpcId); plan.getDataCenterId(), plan.getPhysicalNetworkId(), aclType, offering.getSpecifyIpRanges(), vpcId);
vo.setDisplayNetwork(isDisplayNetworkEnabled); vo.setDisplayNetwork(isDisplayNetworkEnabled == null ? true : isDisplayNetworkEnabled);
networks.add(_networksDao.persist(vo, vo.getGuestType() == Network.GuestType.Isolated, networks.add(_networksDao.persist(vo, vo.getGuestType() == Network.GuestType.Isolated,
finalizeServicesAndProvidersForNetwork(offering, plan.getPhysicalNetworkId()))); finalizeServicesAndProvidersForNetwork(offering, plan.getPhysicalNetworkId())));

View File

@ -1712,7 +1712,7 @@ public class NetworkServiceImpl extends ManagerBase implements NetworkService {
@DB @DB
@ActionEvent(eventType = EventTypes.EVENT_NETWORK_UPDATE, eventDescription = "updating network", async = true) @ActionEvent(eventType = EventTypes.EVENT_NETWORK_UPDATE, eventDescription = "updating network", async = true)
public Network updateGuestNetwork(long networkId, String name, String displayText, Account callerAccount, public Network updateGuestNetwork(long networkId, String name, String displayText, Account callerAccount,
User callerUser, String domainSuffix, Long networkOfferingId, Boolean changeCidr, String guestVmCidr) { User callerUser, String domainSuffix, Long networkOfferingId, Boolean changeCidr, String guestVmCidr, Boolean displayNetwork) {
boolean restartNetwork = false; boolean restartNetwork = false;
// verify input parameters // verify input parameters
@ -1756,6 +1756,13 @@ public class NetworkServiceImpl extends ManagerBase implements NetworkService {
network.setDisplayText(displayText); network.setDisplayText(displayText);
} }
if(displayNetwork != null){
if(!_accountMgr.isRootAdmin(callerAccount.getType())){
throw new PermissionDeniedException("Only admin allowed to update displaynetwork parameter");
}
network.setDisplayNetwork(displayNetwork);
}
// network offering and domain suffix can be updated for Isolated networks only in 3.0 // network offering and domain suffix can be updated for Isolated networks only in 3.0
if ((networkOfferingId != null || domainSuffix != null) && network.getGuestType() != GuestType.Isolated) { if ((networkOfferingId != null || domainSuffix != null) && network.getGuestType() != GuestType.Isolated) {
throw new InvalidParameterValueException("NetworkOffering and domain suffix upgrade can be perfomed for Isolated networks only"); throw new InvalidParameterValueException("NetworkOffering and domain suffix upgrade can be perfomed for Isolated networks only");

View File

@ -755,6 +755,11 @@ public class UserVmManagerImpl extends ManagerBase implements UserVmManager, Use
public UserVm upgradeVirtualMachine(UpgradeVMCmd cmd) throws ResourceAllocationException { public UserVm upgradeVirtualMachine(UpgradeVMCmd cmd) throws ResourceAllocationException {
Long vmId = cmd.getId(); Long vmId = cmd.getId();
Long svcOffId = cmd.getServiceOfferingId(); Long svcOffId = cmd.getServiceOfferingId();
return upgradeStoppedVirtualMachine(vmId, svcOffId);
}
private UserVm upgradeStoppedVirtualMachine(Long vmId, Long svcOffId) throws ResourceAllocationException {
Account caller = UserContext.current().getCaller(); Account caller = UserContext.current().getCaller();
// Verify input parameters // Verify input parameters
@ -815,6 +820,7 @@ public class UserVmManagerImpl extends ManagerBase implements UserVmManager, Use
} }
return _vmDao.findById(vmInstance.getId()); return _vmDao.findById(vmInstance.getId());
} }
@Override @Override
@ -1052,7 +1058,7 @@ public class UserVmManagerImpl extends ManagerBase implements UserVmManager, Use
@Override @Override
@ActionEvent(eventType = EventTypes.EVENT_VM_SCALE, eventDescription = "scaling Vm") @ActionEvent(eventType = EventTypes.EVENT_VM_SCALE, eventDescription = "scaling Vm")
public UserVm public UserVm
upgradeVirtualMachine(ScaleVMCmd cmd) throws InvalidParameterValueException { upgradeVirtualMachine(ScaleVMCmd cmd) throws InvalidParameterValueException, ResourceAllocationException {
Long vmId = cmd.getId(); Long vmId = cmd.getId();
Long newServiceOfferingId = cmd.getServiceOfferingId(); Long newServiceOfferingId = cmd.getServiceOfferingId();
Account caller = UserContext.current().getCaller(); Account caller = UserContext.current().getCaller();
@ -1063,6 +1069,10 @@ public class UserVmManagerImpl extends ManagerBase implements UserVmManager, Use
throw new InvalidParameterValueException("This operation not permitted for this hypervisor of the vm"); throw new InvalidParameterValueException("This operation not permitted for this hypervisor of the vm");
} }
if(vmInstance.getState().equals(State.Stopped)){
return upgradeStoppedVirtualMachine(vmId, newServiceOfferingId);
}
_accountMgr.checkAccess(caller, null, true, vmInstance); _accountMgr.checkAccess(caller, null, true, vmInstance);
// Check that the specified service offering ID is valid // Check that the specified service offering ID is valid

View File

@ -51,7 +51,6 @@ import com.cloud.vm.VMInstanceVO;
import com.cloud.vm.VirtualMachine; import com.cloud.vm.VirtualMachine;
import com.cloud.vm.VirtualMachine.Type; import com.cloud.vm.VirtualMachine.Type;
import com.cloud.vm.VirtualMachineProfile; import com.cloud.vm.VirtualMachineProfile;
import org.apache.cloudstack.acl.ControlledEntity;
import org.apache.cloudstack.acl.ControlledEntity.ACLType; import org.apache.cloudstack.acl.ControlledEntity.ACLType;
import org.apache.cloudstack.api.command.admin.usage.ListTrafficTypeImplementorsCmd; import org.apache.cloudstack.api.command.admin.usage.ListTrafficTypeImplementorsCmd;
import org.apache.cloudstack.api.command.user.network.*; import org.apache.cloudstack.api.command.user.network.*;
@ -563,7 +562,7 @@ public class MockNetworkManagerImpl extends ManagerBase implements NetworkManage
*/ */
@Override @Override
public Network updateGuestNetwork(long networkId, String name, String displayText, Account callerAccount, public Network updateGuestNetwork(long networkId, String name, String displayText, Account callerAccount,
User callerUser, String domainSuffix, Long networkOfferingId, Boolean changeCidr, String guestVmCidr) { User callerUser, String domainSuffix, Long networkOfferingId, Boolean changeCidr, String guestVmCidr, Boolean displayNetwork) {
// TODO Auto-generated method stub // TODO Auto-generated method stub
return null; return null;
} }

View File

@ -286,7 +286,7 @@ public class MockNetworkManagerImpl extends ManagerBase implements NetworkManage
*/ */
@Override @Override
public Network updateGuestNetwork(long networkId, String name, String displayText, Account callerAccount, public Network updateGuestNetwork(long networkId, String name, String displayText, Account callerAccount,
User callerUser, String domainSuffix, Long networkOfferingId, Boolean changeCidr, String guestVmCidr) { User callerUser, String domainSuffix, Long networkOfferingId, Boolean changeCidr, String guestVmCidr, Boolean displayNetwork) {
// TODO Auto-generated method stub // TODO Auto-generated method stub
return null; return null;
} }

View File

@ -1232,6 +1232,7 @@ CREATE VIEW `cloud`.`user_vm_view` AS
data_center.uuid data_center_uuid, data_center.uuid data_center_uuid,
data_center.name data_center_name, data_center.name data_center_name,
data_center.is_security_group_enabled security_group_enabled, data_center.is_security_group_enabled security_group_enabled,
data_center.networktype data_center_type,
host.id host_id, host.id host_id,
host.uuid host_uuid, host.uuid host_uuid,
host.name host_name, host.name host_name,
@ -1297,7 +1298,12 @@ CREATE VIEW `cloud`.`user_vm_view` AS
async_job.id job_id, async_job.id job_id,
async_job.uuid job_uuid, async_job.uuid job_uuid,
async_job.job_status job_status, async_job.job_status job_status,
async_job.account_id job_account_id async_job.account_id job_account_id,
affinity_group.id affinity_group_id,
affinity_group.uuid affinity_group_uuid,
affinity_group.name affinity_group_name,
affinity_group.description affinity_group_description
from from
`cloud`.`user_vm` `cloud`.`user_vm`
inner join inner join
@ -1356,7 +1362,11 @@ CREATE VIEW `cloud`.`user_vm_view` AS
left join left join
`cloud`.`async_job` ON async_job.instance_id = vm_instance.id `cloud`.`async_job` ON async_job.instance_id = vm_instance.id
and async_job.instance_type = 'VirtualMachine' and async_job.instance_type = 'VirtualMachine'
and async_job.job_status = 0; and async_job.job_status = 0
left join
`cloud`.`affinity_group_vm_map` ON vm_instance.id = affinity_group_vm_map.instance_id
left join
`cloud`.`affinity_group` ON affinity_group_vm_map.affinity_group_id = affinity_group.id;
DROP VIEW IF EXISTS `cloud`.`volume_view`; DROP VIEW IF EXISTS `cloud`.`volume_view`;
CREATE VIEW `cloud`.`volume_view` AS CREATE VIEW `cloud`.`volume_view` AS