mirror of https://github.com/apache/cloudstack.git
Merge branch '3.0.x' of ssh://git.cloud.com/var/lib/git/cloudstack-oss into 3.0.x
This commit is contained in:
commit
17001a6cad
|
|
@ -36,7 +36,7 @@ import com.cloud.exception.ResourceAllocationException;
|
|||
import com.cloud.exception.ResourceUnavailableException;
|
||||
import com.cloud.network.NetworkService;
|
||||
import com.cloud.network.StorageNetworkService;
|
||||
import com.cloud.network.VirtualNetworkApplianceService;
|
||||
import com.cloud.network.VpcVirtualNetworkApplianceService;
|
||||
import com.cloud.network.as.AutoScaleService;
|
||||
import com.cloud.network.firewall.FirewallService;
|
||||
import com.cloud.network.firewall.NetworkACLService;
|
||||
|
|
@ -117,7 +117,7 @@ public abstract class BaseCmd {
|
|||
public static SecurityGroupService _securityGroupService;
|
||||
public static SnapshotService _snapshotService;
|
||||
public static ConsoleProxyService _consoleProxyService;
|
||||
public static VirtualNetworkApplianceService _routerService;
|
||||
public static VpcVirtualNetworkApplianceService _routerService;
|
||||
public static ResponseGenerator _responseGenerator;
|
||||
public static EntityManager _entityMgr;
|
||||
public static RulesService _rulesService;
|
||||
|
|
@ -149,7 +149,7 @@ public abstract class BaseCmd {
|
|||
_securityGroupService = locator.getManager(SecurityGroupService.class);
|
||||
_snapshotService = locator.getManager(SnapshotService.class);
|
||||
_consoleProxyService = locator.getManager(ConsoleProxyService.class);
|
||||
_routerService = locator.getManager(VirtualNetworkApplianceService.class);
|
||||
_routerService = locator.getManager(VpcVirtualNetworkApplianceService.class);
|
||||
_entityMgr = locator.getManager(EntityManager.class);
|
||||
_rulesService = locator.getManager(RulesService.class);
|
||||
_lbService = locator.getManager(LoadBalancingRulesService.class);
|
||||
|
|
|
|||
|
|
@ -217,7 +217,7 @@ public class AssociateIPAddrCmd extends BaseAsyncCreateCmd {
|
|||
@Override
|
||||
public void create() throws ResourceAllocationException{
|
||||
try {
|
||||
IpAddress ip = _networkService.allocateIP(_accountService.getAccount(getEntityOwnerId()), false, getZoneId());
|
||||
IpAddress ip = _networkService.allocateIP(_accountService.getAccount(getEntityOwnerId()), getZoneId());
|
||||
if (ip != null) {
|
||||
this.setEntityId(ip.getId());
|
||||
} else {
|
||||
|
|
|
|||
|
|
@ -104,7 +104,7 @@ public class EnableStaticNatCmd extends BaseCmd{
|
|||
@Override
|
||||
public void execute() throws ResourceUnavailableException{
|
||||
try {
|
||||
boolean result = _rulesService.enableStaticNat(ipAddressId, virtualMachineId, getNetworkId(), false);
|
||||
boolean result = _rulesService.enableStaticNat(ipAddressId, virtualMachineId, getNetworkId());
|
||||
if (result) {
|
||||
SuccessResponse response = new SuccessResponse(getCommandName());
|
||||
this.setResponseObject(response);
|
||||
|
|
|
|||
|
|
@ -38,7 +38,7 @@ public interface NetworkService {
|
|||
List<? extends Network> getIsolatedNetworksOwnedByAccountInZone(long zoneId, Account owner);
|
||||
|
||||
|
||||
IpAddress allocateIP(Account ipOwner, boolean isSystem, long zoneId) throws ResourceAllocationException,
|
||||
IpAddress allocateIP(Account ipOwner, long zoneId) throws ResourceAllocationException,
|
||||
InsufficientAddressCapacityException, ConcurrentOperationException;
|
||||
|
||||
boolean releaseIpAddress(long ipAddressId) throws InsufficientAddressCapacityException;
|
||||
|
|
|
|||
|
|
@ -20,7 +20,7 @@ import com.cloud.network.router.VirtualRouter;
|
|||
/**
|
||||
* @author Alena Prokharchyk
|
||||
*/
|
||||
public interface VpcVirtualNetworkApplianceService {
|
||||
public interface VpcVirtualNetworkApplianceService extends VirtualNetworkApplianceService{
|
||||
|
||||
/**
|
||||
* @param router
|
||||
|
|
|
|||
|
|
@ -60,7 +60,7 @@ public interface RulesService {
|
|||
|
||||
boolean applyPortForwardingRules(long ipAdddressId, Account caller) throws ResourceUnavailableException;
|
||||
|
||||
boolean enableStaticNat(long ipAddressId, long vmId, long networkId, boolean isSystemVm) throws NetworkRuleConflictException, ResourceUnavailableException;
|
||||
boolean enableStaticNat(long ipAddressId, long vmId, long networkId) throws NetworkRuleConflictException, ResourceUnavailableException;
|
||||
|
||||
PortForwardingRule getPortForwardigRule(long ruleId);
|
||||
|
||||
|
|
|
|||
|
|
@ -32,7 +32,7 @@ public interface Volume extends ControlledEntity, BasedOn, StateObject<Volume.St
|
|||
Snapshotting("There is a snapshot created on this volume, not backed up to secondary storage yet"),
|
||||
Expunging("The volume is being expunging"),
|
||||
Destroy("The volume is destroyed, and can't be recovered."),
|
||||
UploadOp ("The volume upload operation is in progress");
|
||||
UploadOp ("The volume upload operation is in progress or in short the volume is on secondary storage");
|
||||
|
||||
String _description;
|
||||
|
||||
|
|
@ -57,9 +57,10 @@ public interface Volume extends ControlledEntity, BasedOn, StateObject<Volume.St
|
|||
s_fsm.addTransition(Creating, Event.OperationSucceeded, Ready);
|
||||
s_fsm.addTransition(Creating, Event.DestroyRequested, Destroy);
|
||||
s_fsm.addTransition(Creating, Event.CreateRequested, Creating);
|
||||
s_fsm.addTransition(Allocated, Event.UploadRequested, UploadOp);
|
||||
s_fsm.addTransition(Allocated, Event.UploadRequested, UploadOp);
|
||||
s_fsm.addTransition(UploadOp, Event.CopyRequested, Creating);// CopyRequested for volume from sec to primary storage
|
||||
s_fsm.addTransition(Creating, Event.CopySucceeded, Ready);
|
||||
s_fsm.addTransition(UploadOp, Event.CopySucceeded, Ready);
|
||||
s_fsm.addTransition(Creating, Event.CopyFailed, UploadOp);// Copying volume from sec to primary failed.
|
||||
s_fsm.addTransition(UploadOp, Event.DestroyRequested, Destroy);
|
||||
s_fsm.addTransition(Ready, Event.DestroyRequested, Destroy);
|
||||
s_fsm.addTransition(Destroy, Event.ExpungingRequested, Expunging);
|
||||
|
|
|
|||
|
|
@ -21,7 +21,7 @@ import com.cloud.consoleproxy.ConsoleProxyManager;
|
|||
import com.cloud.ha.HighAvailabilityManager;
|
||||
import com.cloud.hypervisor.Hypervisor.HypervisorType;
|
||||
import com.cloud.network.NetworkManager;
|
||||
import com.cloud.network.router.VirtualNetworkApplianceManager;
|
||||
import com.cloud.network.router.VpcVirtualNetworkApplianceManager;
|
||||
import com.cloud.server.ManagementServer;
|
||||
import com.cloud.storage.StorageManager;
|
||||
import com.cloud.storage.allocator.StoragePoolAllocator;
|
||||
|
|
@ -154,7 +154,7 @@ public enum Config {
|
|||
PingTimeout("Advanced", AgentManager.class, Float.class, "ping.timeout", "2.5", "Multiplier to ping.interval before announcing an agent has timed out", null),
|
||||
ClusterDeltaSyncInterval("Advanced", AgentManager.class, Integer.class, "sync.interval", "60", "Cluster Delta sync interval in seconds", null),
|
||||
Port("Advanced", AgentManager.class, Integer.class, "port", "8250", "Port to listen on for agent connection.", null),
|
||||
RouterCpuMHz("Advanced", NetworkManager.class, Integer.class, "router.cpu.mhz", String.valueOf(VirtualNetworkApplianceManager.DEFAULT_ROUTER_CPU_MHZ), "Default CPU speed (MHz) for router VM.", null),
|
||||
RouterCpuMHz("Advanced", NetworkManager.class, Integer.class, "router.cpu.mhz", String.valueOf(VpcVirtualNetworkApplianceManager.DEFAULT_ROUTER_CPU_MHZ), "Default CPU speed (MHz) for router VM.", null),
|
||||
RestartRetryInterval("Advanced", HighAvailabilityManager.class, Integer.class, "restart.retry.interval", "600", "Time (in seconds) between retries to restart a vm", null),
|
||||
RouterStatsInterval("Advanced", NetworkManager.class, Integer.class, "router.stats.interval", "300", "Interval (in seconds) to report router statistics.", null),
|
||||
ExternalNetworkStatsInterval("Advanced", NetworkManager.class, Integer.class, "external.network.stats.interval", "300", "Interval (in seconds) to report external network statistics.", null),
|
||||
|
|
|
|||
|
|
@ -122,7 +122,6 @@ import com.cloud.network.lb.dao.ElasticLbVmMapDaoImpl;
|
|||
import com.cloud.network.ovs.OvsTunnelManagerImpl;
|
||||
import com.cloud.network.ovs.dao.OvsTunnelInterfaceDaoImpl;
|
||||
import com.cloud.network.ovs.dao.OvsTunnelNetworkDaoImpl;
|
||||
import com.cloud.network.router.VirtualNetworkApplianceManagerImpl;
|
||||
import com.cloud.network.router.VpcVirtualNetworkApplianceManagerImpl;
|
||||
import com.cloud.network.rules.RulesManagerImpl;
|
||||
import com.cloud.network.rules.dao.PortForwardingRulesDaoImpl;
|
||||
|
|
@ -401,7 +400,6 @@ public class DefaultComponentLibrary extends ComponentLibraryBase implements Com
|
|||
addManager("Snapshot Manager", SnapshotManagerImpl.class);
|
||||
addManager("SnapshotScheduler", SnapshotSchedulerImpl.class);
|
||||
addManager("SecurityGroupManager", SecurityGroupManagerImpl2.class);
|
||||
addManager("DomainRouterManager", VirtualNetworkApplianceManagerImpl.class);
|
||||
addManager("EntityManager", EntityManagerImpl.class);
|
||||
addManager("LoadBalancingRulesManager", LoadBalancingRulesManagerImpl.class);
|
||||
addManager("AutoScaleManager", AutoScaleManagerImpl.class);
|
||||
|
|
|
|||
|
|
@ -29,8 +29,8 @@ import com.cloud.host.Status;
|
|||
import com.cloud.hypervisor.Hypervisor.HypervisorType;
|
||||
import com.cloud.network.NetworkManager;
|
||||
import com.cloud.network.Networks.TrafficType;
|
||||
import com.cloud.network.router.VirtualNetworkApplianceManager;
|
||||
import com.cloud.network.router.VirtualRouter;
|
||||
import com.cloud.network.router.VpcVirtualNetworkApplianceManager;
|
||||
import com.cloud.utils.component.Inject;
|
||||
import com.cloud.vm.Nic;
|
||||
import com.cloud.vm.UserVmVO;
|
||||
|
|
@ -46,7 +46,7 @@ public class UserVmDomRInvestigator extends AbstractInvestigatorImpl {
|
|||
@Inject private final UserVmDao _userVmDao = null;
|
||||
@Inject private final AgentManager _agentMgr = null;
|
||||
@Inject private final NetworkManager _networkMgr = null;
|
||||
@Inject private final VirtualNetworkApplianceManager _vnaMgr = null;
|
||||
@Inject private final VpcVirtualNetworkApplianceManager _vnaMgr = null;
|
||||
|
||||
@Override
|
||||
public Boolean isVmAlive(VMInstanceVO vm, HostVO host) {
|
||||
|
|
|
|||
|
|
@ -70,7 +70,6 @@ import com.cloud.hypervisor.vmware.util.VmwareContext;
|
|||
import com.cloud.network.CiscoNexusVSMDeviceVO;
|
||||
import com.cloud.network.NetworkManager;
|
||||
import com.cloud.network.dao.CiscoNexusVSMDeviceDao;
|
||||
import com.cloud.network.router.VirtualNetworkApplianceManager;
|
||||
import com.cloud.org.Cluster.ClusterType;
|
||||
import com.cloud.secstorage.CommandExecLogDao;
|
||||
import com.cloud.serializer.GsonHelper;
|
||||
|
|
@ -92,7 +91,6 @@ import com.cloud.vm.DomainRouterVO;
|
|||
import com.google.gson.Gson;
|
||||
import com.vmware.apputils.vim25.ServiceUtil;
|
||||
import com.vmware.vim25.HostConnectSpec;
|
||||
import com.vmware.vim25.HostPortGroupSpec;
|
||||
import com.vmware.vim25.ManagedObjectReference;
|
||||
|
||||
@Local(value = {VmwareManager.class})
|
||||
|
|
@ -117,7 +115,6 @@ public class VmwareManagerImpl implements VmwareManager, VmwareStorageMount, Lis
|
|||
@Inject CommandExecLogDao _cmdExecLogDao;
|
||||
@Inject ClusterManager _clusterMgr;
|
||||
@Inject CheckPointManager _checkPointMgr;
|
||||
@Inject VirtualNetworkApplianceManager _routerMgr;
|
||||
@Inject SecondaryStorageVmManager _ssvmMgr;
|
||||
@Inject CiscoNexusVSMDeviceDao _nexusDao;
|
||||
@Inject ClusterVSMMapDao _vsmMapDao;
|
||||
|
|
|
|||
|
|
@ -1013,21 +1013,29 @@ public class NetworkManagerImpl implements NetworkManager, NetworkService, Manag
|
|||
|
||||
@Override
|
||||
@ActionEvent(eventType = EventTypes.EVENT_NET_IP_ASSIGN, eventDescription = "allocating Ip", create = true)
|
||||
public IpAddress allocateIP(Account ipOwner, boolean isSystem, long zoneId)
|
||||
public IpAddress allocateIP(Account ipOwner, long zoneId)
|
||||
throws ResourceAllocationException, InsufficientAddressCapacityException, ConcurrentOperationException {
|
||||
return allocateIP(ipOwner, false, zoneId);
|
||||
}
|
||||
|
||||
private IpAddress allocateIP(Account ipOwner, boolean isSystem, long zoneId)
|
||||
throws ResourceAllocationException, InsufficientAddressCapacityException, ConcurrentOperationException {
|
||||
Account caller = UserContext.current().getCaller();
|
||||
long callerUserId = UserContext.current().getCallerUserId();
|
||||
|
||||
// check permissions
|
||||
_accountMgr.checkAccess(caller, null, false, ipOwner);
|
||||
if (s_logger.isDebugEnabled()) {
|
||||
s_logger.debug("Associate IP address called by the user " + callerUserId + " account " + ipOwner.getId());
|
||||
}
|
||||
|
||||
DataCenter zone = _configMgr.getZone(zoneId);
|
||||
|
||||
return allocateIp(ipOwner, isSystem, caller, callerUserId, zone);
|
||||
return allocateIp(ipOwner, isSystem, caller, zone);
|
||||
}
|
||||
|
||||
@DB
|
||||
public IpAddress allocateIp(Account ipOwner, boolean isSystem, Account caller, long callerUserId, DataCenter zone)
|
||||
public IpAddress allocateIp(Account ipOwner, boolean isSystem, Account caller, DataCenter zone)
|
||||
throws ConcurrentOperationException, ResourceAllocationException,
|
||||
InsufficientAddressCapacityException {
|
||||
|
||||
|
|
@ -1046,9 +1054,6 @@ public class NetworkManagerImpl implements NetworkManager, NetworkService, Manag
|
|||
Transaction txn = Transaction.currentTxn();
|
||||
Account accountToLock = null;
|
||||
try {
|
||||
if (s_logger.isDebugEnabled()) {
|
||||
s_logger.debug("Associate IP address called by the user " + callerUserId + " account " + ipOwner.getId());
|
||||
}
|
||||
accountToLock = _accountDao.acquireInLockTable(ipOwner.getId());
|
||||
if (accountToLock == null) {
|
||||
s_logger.warn("Unable to lock account: " + ipOwner.getId());
|
||||
|
|
@ -6981,7 +6986,7 @@ public class NetworkManagerImpl implements NetworkManager, NetworkService, Manag
|
|||
// allocate ip
|
||||
ip = allocateIP(owner, true, guestNetwork.getDataCenterId());
|
||||
// apply ip associations
|
||||
ip = associateIPToNetwork(ip.getId(), networkId);
|
||||
ip = associateIpToNetwork(ip.getId(), networkId);
|
||||
} catch (ResourceAllocationException ex) {
|
||||
throw new CloudRuntimeException("Failed to allocate system ip due to ", ex);
|
||||
} catch (ConcurrentOperationException ex) {
|
||||
|
|
@ -7143,7 +7148,11 @@ public class NetworkManagerImpl implements NetworkManager, NetworkService, Manag
|
|||
@ActionEvent(eventType = EventTypes.EVENT_NET_IP_ASSIGN, eventDescription = "associating Ip", async = true)
|
||||
public IpAddress associateIPToNetwork(long ipId, long networkId) throws InsufficientAddressCapacityException,
|
||||
ResourceAllocationException, ResourceUnavailableException, ConcurrentOperationException {
|
||||
return associateIpToNetwork(ipId, networkId);
|
||||
}
|
||||
|
||||
private IpAddress associateIpToNetwork(long ipId, long networkId) throws InsufficientAddressCapacityException,
|
||||
ResourceAllocationException, ResourceUnavailableException, ConcurrentOperationException {
|
||||
Network network = _networksDao.findById(networkId);
|
||||
if (network == null) {
|
||||
throw new InvalidParameterValueException("Invalid network id is given", null);
|
||||
|
|
|
|||
|
|
@ -12,9 +12,6 @@
|
|||
// Automatically generated by addcopyright.py at 04/03/2012
|
||||
package com.cloud.network;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
import org.apache.log4j.Logger;
|
||||
|
||||
import com.cloud.agent.AgentManager;
|
||||
|
|
@ -34,8 +31,6 @@ import com.cloud.host.HostVO;
|
|||
import com.cloud.host.Status;
|
||||
import com.cloud.host.dao.HostDao;
|
||||
import com.cloud.hypervisor.Hypervisor.HypervisorType;
|
||||
import com.cloud.network.router.VirtualNetworkApplianceManager;
|
||||
|
||||
|
||||
|
||||
public class SshKeysDistriMonitor implements Listener {
|
||||
|
|
|
|||
|
|
@ -43,7 +43,6 @@ import com.cloud.network.NetworkManager;
|
|||
import com.cloud.network.Networks.TrafficType;
|
||||
import com.cloud.network.PhysicalNetworkServiceProvider;
|
||||
import com.cloud.network.dao.NetworkDao;
|
||||
import com.cloud.network.router.VirtualNetworkApplianceManager;
|
||||
import com.cloud.offering.NetworkOffering;
|
||||
import com.cloud.service.dao.ServiceOfferingDao;
|
||||
import com.cloud.uservm.UserVm;
|
||||
|
|
@ -70,8 +69,6 @@ public class CloudZonesNetworkElement extends AdapterBase implements NetworkElem
|
|||
@Inject
|
||||
NetworkManager _networkMgr;
|
||||
@Inject
|
||||
VirtualNetworkApplianceManager _routerMgr;
|
||||
@Inject
|
||||
UserVmManager _userVmMgr;
|
||||
@Inject
|
||||
UserVmDao _userVmDao;
|
||||
|
|
|
|||
|
|
@ -53,8 +53,8 @@ import com.cloud.network.dao.VirtualRouterProviderDao;
|
|||
import com.cloud.network.lb.LoadBalancingRule;
|
||||
import com.cloud.network.lb.LoadBalancingRule.LbStickinessPolicy;
|
||||
import com.cloud.network.lb.LoadBalancingRulesManager;
|
||||
import com.cloud.network.router.VirtualNetworkApplianceManager;
|
||||
import com.cloud.network.router.VirtualRouter.Role;
|
||||
import com.cloud.network.router.VpcVirtualNetworkApplianceManager;
|
||||
import com.cloud.network.rules.FirewallRule;
|
||||
import com.cloud.network.rules.LbStickinessMethod;
|
||||
import com.cloud.network.rules.LbStickinessMethod.StickinessMethodType;
|
||||
|
|
@ -102,7 +102,7 @@ LoadBalancingServiceProvider, PortForwardingServiceProvider, RemoteAccessVPNServ
|
|||
@Inject
|
||||
NetworkOfferingDao _networkOfferingDao;
|
||||
@Inject
|
||||
VirtualNetworkApplianceManager _routerMgr;
|
||||
VpcVirtualNetworkApplianceManager _routerMgr;
|
||||
@Inject
|
||||
ConfigurationManager _configMgr;
|
||||
@Inject
|
||||
|
|
|
|||
|
|
@ -89,7 +89,6 @@ import com.cloud.network.dao.VirtualRouterProviderDao;
|
|||
import com.cloud.network.lb.LoadBalancingRule.LbDestination;
|
||||
import com.cloud.network.lb.LoadBalancingRule.LbStickinessPolicy;
|
||||
import com.cloud.network.lb.dao.ElasticLbVmMapDao;
|
||||
import com.cloud.network.router.VirtualNetworkApplianceManager;
|
||||
import com.cloud.network.router.VirtualRouter;
|
||||
import com.cloud.network.router.VirtualRouter.RedundantState;
|
||||
import com.cloud.network.router.VirtualRouter.Role;
|
||||
|
|
@ -149,8 +148,6 @@ ElasticLoadBalancerManager, Manager, VirtualMachineGuru<DomainRouterVO> {
|
|||
@Inject
|
||||
LoadBalancingRulesManager _lbMgr;
|
||||
@Inject
|
||||
VirtualNetworkApplianceManager _routerMgr;
|
||||
@Inject
|
||||
DomainRouterDao _routerDao = null;
|
||||
@Inject
|
||||
protected HostPodDao _podDao = null;
|
||||
|
|
|
|||
|
|
@ -128,6 +128,7 @@ import com.cloud.vm.dao.VMInstanceDao;
|
|||
public class VpcVirtualNetworkApplianceManagerImpl extends VirtualNetworkApplianceManagerImpl implements VpcVirtualNetworkApplianceManager{
|
||||
private static final Logger s_logger = Logger.getLogger(VpcVirtualNetworkApplianceManagerImpl.class);
|
||||
|
||||
String _name;
|
||||
@Inject
|
||||
VpcDao _vpcDao;
|
||||
@Inject
|
||||
|
|
@ -1348,4 +1349,5 @@ public class VpcVirtualNetworkApplianceManagerImpl extends VirtualNetworkApplian
|
|||
_s2sVpnMgr.markDisconnectVpnConnByVpc(vpcId);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -382,7 +382,11 @@ public class RulesManagerImpl implements RulesManager, RulesService, Manager {
|
|||
|
||||
@Override
|
||||
@ActionEvent(eventType = EventTypes.EVENT_ENABLE_STATIC_NAT, eventDescription = "enabling static nat")
|
||||
public boolean enableStaticNat(long ipId, long vmId, long networkId, boolean isSystemVm)
|
||||
public boolean enableStaticNat(long ipId, long vmId, long networkId) throws NetworkRuleConflictException, ResourceUnavailableException {
|
||||
return enableStaticNat(ipId, vmId, networkId, false);
|
||||
}
|
||||
|
||||
private boolean enableStaticNat(long ipId, long vmId, long networkId, boolean isSystemVm)
|
||||
throws NetworkRuleConflictException, ResourceUnavailableException {
|
||||
UserContext ctx = UserContext.current();
|
||||
Account caller = ctx.getCaller();
|
||||
|
|
|
|||
|
|
@ -49,7 +49,6 @@ import com.cloud.network.dao.IPAddressDao;
|
|||
import com.cloud.network.dao.RemoteAccessVpnDao;
|
||||
import com.cloud.network.dao.VpnUserDao;
|
||||
import com.cloud.network.element.RemoteAccessVPNServiceProvider;
|
||||
import com.cloud.network.router.VirtualNetworkApplianceManager;
|
||||
import com.cloud.network.rules.FirewallManager;
|
||||
import com.cloud.network.rules.FirewallRule;
|
||||
import com.cloud.network.rules.FirewallRule.Purpose;
|
||||
|
|
@ -87,7 +86,6 @@ public class RemoteAccessVpnManagerImpl implements RemoteAccessVpnService, Manag
|
|||
@Inject VpnUserDao _vpnUsersDao;
|
||||
@Inject RemoteAccessVpnDao _remoteAccessVpnDao;
|
||||
@Inject IPAddressDao _ipAddressDao;
|
||||
@Inject VirtualNetworkApplianceManager _routerMgr;
|
||||
@Inject AccountManager _accountMgr;
|
||||
@Inject DomainManager _domainMgr;
|
||||
@Inject NetworkManager _networkMgr;
|
||||
|
|
|
|||
|
|
@ -121,7 +121,6 @@ import com.cloud.host.dao.HostDao;
|
|||
import com.cloud.hypervisor.Hypervisor.HypervisorType;
|
||||
import com.cloud.hypervisor.HypervisorGuruManager;
|
||||
import com.cloud.network.NetworkManager;
|
||||
import com.cloud.network.router.VirtualNetworkApplianceManager;
|
||||
import com.cloud.org.Grouping;
|
||||
import com.cloud.org.Grouping.AllocationState;
|
||||
import com.cloud.projects.Project.ListProjectResourcesCriteria;
|
||||
|
|
@ -293,8 +292,6 @@ public class StorageManagerImpl implements StorageManager, Manager, ClusterManag
|
|||
@Inject
|
||||
protected ClusterDao _clusterDao;
|
||||
@Inject
|
||||
protected VirtualNetworkApplianceManager _routerMgr;
|
||||
@Inject
|
||||
protected UsageEventDao _usageEventDao;
|
||||
@Inject
|
||||
protected VirtualMachineManager _vmMgr;
|
||||
|
|
@ -732,6 +729,7 @@ public class StorageManagerImpl implements StorageManager, Manager, ClusterManag
|
|||
StoragePoolVO destPool = findStoragePool(dskCh, dc, pod, clusterId, vm, avoidPools);
|
||||
|
||||
// Copy the volume from secondary storage to the destination storage pool
|
||||
stateTransitTo(volume, Event.CopyRequested);
|
||||
VolumeHostVO volumeHostVO = _volumeHostDao.findByVolumeId(volume.getId());
|
||||
HostVO secStorage = _hostDao.findById(volumeHostVO.getHostId());
|
||||
String secondaryStorageURL = secStorage.getStorageUrl();
|
||||
|
|
|
|||
|
|
@ -37,7 +37,7 @@ import com.cloud.consoleproxy.ConsoleProxyManager;
|
|||
import com.cloud.event.EventTypes;
|
||||
import com.cloud.event.EventVO;
|
||||
import com.cloud.event.UsageEventVO;
|
||||
import com.cloud.network.router.VirtualNetworkApplianceManager;
|
||||
import com.cloud.network.router.VpcVirtualNetworkApplianceManager;
|
||||
import com.cloud.storage.secondary.SecondaryStorageVmManager;
|
||||
import com.cloud.utils.DateUtil;
|
||||
import com.cloud.utils.NumbersUtil;
|
||||
|
|
@ -1404,7 +1404,7 @@ public class Upgrade218to22 implements DbUpgrade {
|
|||
pstmt.close();
|
||||
|
||||
int proxyRamSize = NumbersUtil.parseInt(getConfigValue(conn, "consoleproxy.ram.size"), ConsoleProxyManager.DEFAULT_PROXY_VM_RAMSIZE);
|
||||
int domrRamSize = NumbersUtil.parseInt(getConfigValue(conn, "router.ram.size"), VirtualNetworkApplianceManager.DEFAULT_ROUTER_VM_RAMSIZE);
|
||||
int domrRamSize = NumbersUtil.parseInt(getConfigValue(conn, "router.ram.size"), VpcVirtualNetworkApplianceManager.DEFAULT_ROUTER_VM_RAMSIZE);
|
||||
int ssvmRamSize = NumbersUtil.parseInt(getConfigValue(conn, "secstorage.vm.ram.size"), SecondaryStorageVmManager.DEFAULT_SS_VM_RAMSIZE);
|
||||
|
||||
pstmt = conn
|
||||
|
|
@ -1563,7 +1563,7 @@ public class Upgrade218to22 implements DbUpgrade {
|
|||
pstmt.close();
|
||||
|
||||
int proxyCpuMhz = NumbersUtil.parseInt(getConfigValue(conn, "consoleproxy.cpu.mhz"), ConsoleProxyManager.DEFAULT_PROXY_VM_CPUMHZ);
|
||||
int domrCpuMhz = NumbersUtil.parseInt(getConfigValue(conn, "router.cpu.mhz"), VirtualNetworkApplianceManager.DEFAULT_ROUTER_CPU_MHZ);
|
||||
int domrCpuMhz = NumbersUtil.parseInt(getConfigValue(conn, "router.cpu.mhz"), VpcVirtualNetworkApplianceManager.DEFAULT_ROUTER_CPU_MHZ);
|
||||
int ssvmCpuMhz = NumbersUtil.parseInt(getConfigValue(conn, "secstorage.vm.cpu.mhz"), SecondaryStorageVmManager.DEFAULT_SS_VM_CPUMHZ);
|
||||
|
||||
pstmt = conn
|
||||
|
|
|
|||
|
|
@ -120,6 +120,9 @@ known_categories = {
|
|||
'VPC': 'VPC',
|
||||
'PrivateGateway': 'VPC',
|
||||
'StaticRoute': 'VPC',
|
||||
'AutoScale': 'AutoScale',
|
||||
'Counter': 'AutoScale',
|
||||
'Condition': 'AutoScale'
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -9,7 +9,7 @@
|
|||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
(function($, cloudStack) {
|
||||
var zoneObjs, hypervisorObjs, featuredTemplateObjs, communityTemplateObjs, myTemplateObjs, featuredIsoObjs, community
|
||||
var zoneObjs, hypervisorObjs, featuredTemplateObjs, communityTemplateObjs, myTemplateObjs, featuredIsoObjs, community;
|
||||
var selectedZoneObj, selectedTemplateObj, selectedHypervisor, selectedDiskOfferingObj;
|
||||
var step5ContainerType = 'nothing-to-select'; //'nothing-to-select', 'select-network', 'select-security-group'
|
||||
|
||||
|
|
@ -17,6 +17,17 @@
|
|||
maxDiskOfferingSize: function() {
|
||||
return g_capabilities.customdiskofferingmaxsize;
|
||||
},
|
||||
|
||||
// Called in networks list, when VPC drop-down is changed
|
||||
// -- if vpcID given, return true if in network specified by vpcID
|
||||
// -- if vpcID == -1, return true if network is not associated with a VPC
|
||||
vpcFilter: function(data, vpcID) {
|
||||
return vpcID != -1?
|
||||
data.vpcid == vpcID :
|
||||
!data.vpcid;
|
||||
},
|
||||
|
||||
// Data providers for each wizard step
|
||||
steps: [
|
||||
// Step 1: Setup
|
||||
function(args) {
|
||||
|
|
@ -301,11 +312,23 @@
|
|||
networkData.account = g_account;
|
||||
}
|
||||
|
||||
var networkObjs;
|
||||
var networkObjs, vpcObjs;
|
||||
|
||||
// Get VPCs
|
||||
$.ajax({
|
||||
url: createURL('listVPCs'),
|
||||
data: isDomainAdmin() ?
|
||||
{ account: args.context.users[0].account, domainid: args.context.users[0].domainid } :
|
||||
{ listAll: true },
|
||||
async: false,
|
||||
success: function(json) {
|
||||
vpcObjs = json.listvpcsresponse.vpc ? json.listvpcsresponse.vpc : [];
|
||||
}
|
||||
});
|
||||
|
||||
$.ajax({
|
||||
url: createURL('listNetworks'),
|
||||
data: networkData,
|
||||
dataType: "json",
|
||||
async: false,
|
||||
success: function(json) {
|
||||
networkObjs = json.listnetworksresponse.network ? json.listnetworksresponse.network : [];
|
||||
|
|
@ -337,7 +360,8 @@
|
|||
myNetworks: [], //not used any more
|
||||
sharedNetworks: networkObjs,
|
||||
securityGroups: [],
|
||||
networkOfferings: networkOfferingObjs
|
||||
networkOfferings: networkOfferingObjs,
|
||||
vpcs: vpcObjs
|
||||
}
|
||||
});
|
||||
}
|
||||
|
|
@ -370,7 +394,8 @@
|
|||
myNetworks: [], //not used any more
|
||||
sharedNetworks: [],
|
||||
securityGroups: securityGroupArray,
|
||||
networkOfferings: []
|
||||
networkOfferings: [],
|
||||
vpcs: []
|
||||
}
|
||||
});
|
||||
}
|
||||
|
|
@ -382,7 +407,8 @@
|
|||
myNetworks: [], //not used any more
|
||||
sharedNetworks: [],
|
||||
securityGroups: [],
|
||||
networkOfferings: []
|
||||
networkOfferings: [],
|
||||
vpcs: []
|
||||
}
|
||||
});
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1408,6 +1408,7 @@
|
|||
args.$tierSelect.change(function() {
|
||||
args.$tierSelect.closest('.list-view').listView('refresh');
|
||||
});
|
||||
args.$tierSelect.closest('.list-view').listView('refresh');
|
||||
},
|
||||
|
||||
listView: $.extend(true, {}, cloudStack.sections.instances, {
|
||||
|
|
@ -3858,10 +3859,22 @@
|
|||
},
|
||||
{
|
||||
displaytext: { label: 'label.description', isEditable: true },
|
||||
account: { label: 'label.account' },
|
||||
domain: { label: 'label.domain' },
|
||||
zonename: { label: 'label.zone' },
|
||||
cidr: { label: 'label.cidr' },
|
||||
networkdomain: { label: 'label.network.domain' },
|
||||
state: { label: 'label.state' },
|
||||
restartrequired: {
|
||||
label: 'label.restart.required',
|
||||
converter: function(booleanValue) {
|
||||
if (booleanValue == true) {
|
||||
return "<font color='red'>Yes</font>";
|
||||
}
|
||||
|
||||
return "No";
|
||||
}
|
||||
},
|
||||
id: { label: 'label.id' }
|
||||
}
|
||||
],
|
||||
|
|
|
|||
|
|
@ -103,6 +103,14 @@
|
|||
.click(function() {
|
||||
var $radio = $(this).closest('.select').find('input[type=radio]');
|
||||
|
||||
if ($(this).attr('type') == 'checkbox') {
|
||||
if ($(this).closest('.select-container').hasClass('single-select')) {
|
||||
$(this).closest('.select').siblings().find('input[type=checkbox]')
|
||||
.attr('checked', false);
|
||||
$(this).closest('.select').find('input[type=radio]').click();
|
||||
}
|
||||
}
|
||||
|
||||
if ($radio.is(':checked') && !$(this).is(':checked')) {
|
||||
if (!$radio.closest('.select').index()) {
|
||||
return false;
|
||||
|
|
@ -121,7 +129,8 @@
|
|||
$('<div>').addClass('select-desc')
|
||||
.append($('<div>').addClass('name').html(this[fields.name]))
|
||||
.append($('<div>').addClass('desc').html(this[fields.desc]))
|
||||
);
|
||||
)
|
||||
.data('json-obj', this);
|
||||
|
||||
$selects.append($select);
|
||||
|
||||
|
|
@ -139,6 +148,11 @@
|
|||
if (!$checkbox.is(':checked')) {
|
||||
$checkbox.attr('checked', true);
|
||||
}
|
||||
|
||||
if ($(this).closest('.select-container').hasClass('single-select')) {
|
||||
$(this).closest('.select').siblings().find('input[type=checkbox]')
|
||||
.attr('checked', false);
|
||||
}
|
||||
})
|
||||
.after(
|
||||
$('<div>').addClass('name').html(options.secondary.desc)
|
||||
|
|
@ -480,9 +494,81 @@
|
|||
// Show relevant conditional sub-step if present
|
||||
$step.find('.wizard-step-conditional').hide();
|
||||
|
||||
// Filter network list by VPC ID
|
||||
var filterNetworkList = function(vpcID) {
|
||||
var $selects = $step.find('.my-networks .select-container .select');
|
||||
var $visibleSelects = $($.grep($selects, function(select) {
|
||||
var $select = $(select);
|
||||
|
||||
return args.vpcFilter($select.data('json-obj'), vpcID);
|
||||
}));
|
||||
var $addNetworkForm = $step.find('.select.new-network');
|
||||
var $addNewNetworkCheck = $addNetworkForm.find('input[name=new-network]');
|
||||
|
||||
// VPC networks cannot be created via instance wizard
|
||||
if (vpcID != -1) {
|
||||
$step.find('.my-networks .select-container').addClass('single-select');
|
||||
$addNetworkForm.hide();
|
||||
|
||||
if ($addNewNetworkCheck.is(':checked')) {
|
||||
$addNewNetworkCheck.click();
|
||||
$addNewNetworkCheck.attr('checked', false);
|
||||
}
|
||||
} else {
|
||||
$step.find('.my-networks .select-container').removeClass('single-select');
|
||||
$addNetworkForm.show();
|
||||
}
|
||||
|
||||
$selects.find('input[type=checkbox]').attr('checked', false);
|
||||
$selects.hide();
|
||||
$visibleSelects.show();
|
||||
|
||||
// Select first visible item by default
|
||||
$visibleSelects.filter(':first')
|
||||
.find('input[type=radio]')
|
||||
.click();
|
||||
|
||||
cloudStack.evenOdd($visibleSelects, 'div.select', {
|
||||
even: function($elem) {
|
||||
$elem.removeClass('odd');
|
||||
$elem.addClass('even');
|
||||
},
|
||||
odd: function($elem) {
|
||||
$elem.removeClass('even');
|
||||
$elem.addClass('odd');
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
var $vpcSelect = $step.find('select[name=vpc-filter]');
|
||||
|
||||
$vpcSelect.unbind('change');
|
||||
$vpcSelect.change(function() {
|
||||
filterNetworkList($vpcSelect.val());
|
||||
});
|
||||
|
||||
return {
|
||||
response: {
|
||||
success: function(args) {
|
||||
var vpcs = args.data.vpcs;
|
||||
|
||||
// Populate VPC drop-down
|
||||
$vpcSelect.html('');
|
||||
$(vpcs).map(function(index, vpc) {
|
||||
var $option = $('<option>');
|
||||
var id = vpc.id;
|
||||
var description = vpc.name;
|
||||
|
||||
$option.attr('value', id);
|
||||
$option.html(description);
|
||||
$option.appendTo($vpcSelect);
|
||||
});
|
||||
|
||||
// 'No VPC' option
|
||||
$('<option>').attr('value', '-1').html('None').prependTo($vpcSelect);
|
||||
|
||||
$vpcSelect.val(-1);
|
||||
|
||||
// Populate network offering drop-down
|
||||
$(args.data.networkOfferings).each(function() {
|
||||
$('<option>')
|
||||
|
|
@ -516,6 +602,9 @@
|
|||
})
|
||||
);
|
||||
|
||||
// Show non-VPC networks by default
|
||||
filterNetworkList(-1);
|
||||
|
||||
// Security groups (alt. page)
|
||||
$step.find('.security-groups .select-container').append(
|
||||
makeSelects('security-groups', args.data.securityGroups, {
|
||||
|
|
|
|||
Loading…
Reference in New Issue