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
08e7ebe8f2
|
|
@ -46,11 +46,11 @@ public interface MockAgentManager extends Manager {
|
|||
Answer checkHealth(CheckHealthCommand cmd);
|
||||
Answer pingTest(PingTestCommand cmd);
|
||||
|
||||
Answer PrepareForMigration(PrepareForMigrationCommand cmd);
|
||||
Answer prepareForMigrate(PrepareForMigrationCommand cmd);
|
||||
|
||||
MockHost getHost(String guid);
|
||||
|
||||
Answer MaintainCommand(MaintainCommand cmd);
|
||||
Answer maintain(MaintainCommand cmd);
|
||||
|
||||
Answer checkNetworkCommand(CheckNetworkCommand cmd);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -41,10 +41,9 @@ import com.cloud.agent.api.MaintainAnswer;
|
|||
import com.cloud.agent.api.PingTestCommand;
|
||||
import com.cloud.agent.api.PrepareForMigrationAnswer;
|
||||
import com.cloud.agent.api.PrepareForMigrationCommand;
|
||||
import com.cloud.agent.api.StartupCommand;
|
||||
import com.cloud.agent.api.to.VirtualMachineTO;
|
||||
import com.cloud.dc.dao.HostPodDao;
|
||||
import com.cloud.host.Host;
|
||||
import com.cloud.host.Host.Type;
|
||||
import com.cloud.resource.AgentResourceBase;
|
||||
import com.cloud.resource.AgentRoutingResource;
|
||||
import com.cloud.resource.AgentStorageResource;
|
||||
|
|
@ -336,7 +335,11 @@ public class MockAgentManagerImpl implements MockAgentManager {
|
|||
|
||||
|
||||
@Override
|
||||
public PrepareForMigrationAnswer PrepareForMigration(PrepareForMigrationCommand cmd) {
|
||||
public PrepareForMigrationAnswer prepareForMigrate(PrepareForMigrationCommand cmd) {
|
||||
VirtualMachineTO vm = cmd.getVirtualMachine();
|
||||
if (s_logger.isDebugEnabled()) {
|
||||
s_logger.debug("Preparing host for migrating " + vm);
|
||||
}
|
||||
return new PrepareForMigrationAnswer(cmd);
|
||||
}
|
||||
|
||||
|
|
@ -360,7 +363,7 @@ public class MockAgentManagerImpl implements MockAgentManager {
|
|||
|
||||
|
||||
@Override
|
||||
public MaintainAnswer MaintainCommand(com.cloud.agent.api.MaintainCommand cmd) {
|
||||
public MaintainAnswer maintain(com.cloud.agent.api.MaintainCommand cmd) {
|
||||
return new MaintainAnswer(cmd);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -51,7 +51,7 @@ public interface MockVmManager extends Manager {
|
|||
public Answer stopVM(StopCommand cmd);
|
||||
public Answer rebootVM(RebootCommand cmd);
|
||||
|
||||
public Answer checkVmState(CheckVirtualMachineCommand cmd, String hostGuid);
|
||||
public Answer checkVmState(CheckVirtualMachineCommand cmd);
|
||||
public Map<String, State> getVmStates(String hostGuid);
|
||||
public Answer getVncPort(GetVncPortCommand cmd);
|
||||
|
||||
|
|
|
|||
|
|
@ -239,8 +239,8 @@ public class MockVmManagerImpl implements MockVmManager {
|
|||
}
|
||||
|
||||
@Override
|
||||
public CheckVirtualMachineAnswer checkVmState(CheckVirtualMachineCommand cmd, String hostGuid) {
|
||||
MockVMVO vm = _mockVmDao.findByVmNameAndHost(cmd.getVmName(), hostGuid);
|
||||
public CheckVirtualMachineAnswer checkVmState(CheckVirtualMachineCommand cmd) {
|
||||
MockVMVO vm = _mockVmDao.findByVmName(cmd.getVmName());
|
||||
if (vm == null) {
|
||||
return new CheckVirtualMachineAnswer(cmd, "can't find vm:" + cmd.getVmName());
|
||||
}
|
||||
|
|
|
|||
|
|
@ -15,7 +15,6 @@ package com.cloud.agent.manager;
|
|||
import java.sql.Connection;
|
||||
import java.sql.SQLException;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import javax.ejb.Local;
|
||||
|
|
@ -29,6 +28,7 @@ import com.cloud.agent.api.AttachVolumeCommand;
|
|||
import com.cloud.agent.api.BackupSnapshotCommand;
|
||||
import com.cloud.agent.api.CheckHealthCommand;
|
||||
import com.cloud.agent.api.CheckNetworkCommand;
|
||||
import com.cloud.agent.api.CheckVirtualMachineCommand;
|
||||
import com.cloud.agent.api.CleanupNetworkRulesCmd;
|
||||
import com.cloud.agent.api.ClusterSyncCommand;
|
||||
import com.cloud.agent.api.Command;
|
||||
|
|
@ -50,6 +50,7 @@ import com.cloud.agent.api.MigrateCommand;
|
|||
import com.cloud.agent.api.ModifyStoragePoolCommand;
|
||||
import com.cloud.agent.api.NetworkUsageCommand;
|
||||
import com.cloud.agent.api.PingTestCommand;
|
||||
import com.cloud.agent.api.PrepareForMigrationCommand;
|
||||
import com.cloud.agent.api.RebootCommand;
|
||||
import com.cloud.agent.api.SecStorageSetupCommand;
|
||||
import com.cloud.agent.api.SecStorageVMSetupCommand;
|
||||
|
|
@ -76,7 +77,6 @@ import com.cloud.agent.api.storage.DownloadCommand;
|
|||
import com.cloud.agent.api.storage.DownloadProgressCommand;
|
||||
import com.cloud.agent.api.storage.ListTemplateCommand;
|
||||
import com.cloud.agent.api.storage.PrimaryStorageDownloadCommand;
|
||||
import com.cloud.agent.mockvm.MockVm;
|
||||
import com.cloud.simulator.MockConfigurationVO;
|
||||
import com.cloud.simulator.MockHost;
|
||||
import com.cloud.simulator.MockVMVO;
|
||||
|
|
@ -193,12 +193,16 @@ public class SimulatorManagerImpl implements SimulatorManager {
|
|||
return _mockAgentMgr.checkHealth((CheckHealthCommand)cmd);
|
||||
} else if (cmd instanceof PingTestCommand) {
|
||||
return _mockAgentMgr.pingTest((PingTestCommand)cmd);
|
||||
} else if (cmd instanceof PrepareForMigrationCommand) {
|
||||
return _mockAgentMgr.prepareForMigrate((PrepareForMigrationCommand)cmd);
|
||||
} else if (cmd instanceof MigrateCommand) {
|
||||
return _mockVmMgr.Migrate((MigrateCommand)cmd, info);
|
||||
} else if (cmd instanceof StartCommand) {
|
||||
return _mockVmMgr.startVM((StartCommand)cmd, info);
|
||||
} else if (cmd instanceof CheckSshCommand) {
|
||||
return _mockVmMgr.checkSshCommand((CheckSshCommand)cmd);
|
||||
} else if (cmd instanceof CheckVirtualMachineCommand) {
|
||||
return _mockVmMgr.checkVmState((CheckVirtualMachineCommand)cmd);
|
||||
} else if (cmd instanceof SetStaticNatRulesCommand) {
|
||||
return _mockVmMgr.SetStaticNatRules((SetStaticNatRulesCommand)cmd);
|
||||
} else if (cmd instanceof SetFirewallRulesCommand) {
|
||||
|
|
@ -278,7 +282,7 @@ public class SimulatorManagerImpl implements SimulatorManager {
|
|||
} else if (cmd instanceof CreatePrivateTemplateFromVolumeCommand) {
|
||||
return _mockStorageMgr.CreatePrivateTemplateFromVolume((CreatePrivateTemplateFromVolumeCommand)cmd);
|
||||
} else if (cmd instanceof MaintainCommand) {
|
||||
return _mockAgentMgr.MaintainCommand((MaintainCommand)cmd);
|
||||
return _mockAgentMgr.maintain((MaintainCommand)cmd);
|
||||
} else if (cmd instanceof GetVmStatsCommand) {
|
||||
return _mockVmMgr.getVmStats((GetVmStatsCommand)cmd);
|
||||
} else if (cmd instanceof GetDomRVersionCmd) {
|
||||
|
|
|
|||
|
|
@ -29,6 +29,7 @@ import com.cloud.agent.api.CheckVirtualMachineCommand;
|
|||
import com.cloud.agent.api.Command;
|
||||
import com.cloud.agent.api.PingCommand;
|
||||
import com.cloud.agent.api.PingRoutingWithNwGroupsCommand;
|
||||
import com.cloud.agent.api.PrepareForMigrationAnswer;
|
||||
import com.cloud.agent.api.PrepareForMigrationCommand;
|
||||
import com.cloud.agent.api.ReadyAnswer;
|
||||
import com.cloud.agent.api.ReadyCommand;
|
||||
|
|
@ -81,8 +82,6 @@ public class AgentRoutingResource extends AgentStorageResource {
|
|||
return execute((StartCommand) cmd);
|
||||
} else if (cmd instanceof StopCommand) {
|
||||
return execute((StopCommand) cmd);
|
||||
} else if (cmd instanceof PrepareForMigrationCommand) {
|
||||
return execute((PrepareForMigrationCommand) cmd);
|
||||
} else if (cmd instanceof CheckVirtualMachineCommand) {
|
||||
return execute((CheckVirtualMachineCommand) cmd);
|
||||
} else if (cmd instanceof ReadyCommand) {
|
||||
|
|
@ -187,7 +186,7 @@ public class AgentRoutingResource extends AgentStorageResource {
|
|||
String vmName = vmSpec.getName();
|
||||
if (this.totalCpu < (vmSpec.getCpus() * vmSpec.getSpeed() + this.usedCpu) ||
|
||||
this.totalMem < (vmSpec.getMaxRam() + this.usedMem)) {
|
||||
return new StartAnswer(cmd, "No enough resource to start the vm");
|
||||
return new StartAnswer(cmd, "Not enough resource to start the vm");
|
||||
}
|
||||
State state = State.Stopped;
|
||||
synchronized (_vms) {
|
||||
|
|
|
|||
|
|
@ -54,6 +54,15 @@ public class NetworkUsageCommand extends Command {
|
|||
this.vpcCIDR = vpcCIDR;
|
||||
}
|
||||
|
||||
public NetworkUsageCommand(String privateIP, String domRName, String option, boolean forVpc, String gatewayIP)
|
||||
{
|
||||
this.privateIP = privateIP;
|
||||
this.domRName = domRName;
|
||||
this.forVpc = forVpc;
|
||||
this.gatewayIP = gatewayIP;
|
||||
this.option = option;
|
||||
}
|
||||
|
||||
public String getPrivateIP() {
|
||||
return privateIP;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -52,6 +52,10 @@ public class CreateVPCCmd extends BaseAsyncCreateCmd{
|
|||
"If used with the account parameter returns the VPC associated with the account for the specified domain.")
|
||||
private Long domainId;
|
||||
|
||||
@IdentityMapper(entityTableName="projects")
|
||||
@Parameter(name=ApiConstants.PROJECT_ID, type=CommandType.LONG, description="create VPC for the project")
|
||||
private Long projectId;
|
||||
|
||||
@IdentityMapper(entityTableName="data_center")
|
||||
@Parameter(name=ApiConstants.ZONE_ID, type=CommandType.LONG, required=true, description="the ID of the availability zone")
|
||||
private Long zoneId;
|
||||
|
|
@ -72,7 +76,8 @@ public class CreateVPCCmd extends BaseAsyncCreateCmd{
|
|||
@Parameter(name=ApiConstants.VPC_OFF_ID, type=CommandType.LONG, required=true, description="the ID of the VPC offering")
|
||||
private Long vpcOffering;
|
||||
|
||||
@Parameter(name=ApiConstants.NETWORK_DOMAIN, type=CommandType.STRING, description="network domain")
|
||||
@Parameter(name=ApiConstants.NETWORK_DOMAIN, type=CommandType.STRING,
|
||||
description="VPC network domain. All networks inside the VPC will belong to this domain")
|
||||
private String networkDomain;
|
||||
|
||||
/////////////////////////////////////////////////////
|
||||
|
|
@ -174,7 +179,7 @@ public class CreateVPCCmd extends BaseAsyncCreateCmd{
|
|||
|
||||
@Override
|
||||
public long getEntityOwnerId() {
|
||||
Long accountId = finalyzeAccountId(accountName, domainId, null, true);
|
||||
Long accountId = finalyzeAccountId(accountName, domainId, projectId, true);
|
||||
if (accountId == null) {
|
||||
return UserContext.current().getCaller().getId();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -137,7 +137,7 @@ public class ListVPCsCmd extends BaseListTaggedResourcesCmd{
|
|||
List<? extends Vpc> vpcs = _vpcService.listVpcs(getId(), getVpcName(), getDisplayText(),
|
||||
getSupportedServices(), getCidr(), getVpcOffId(), getState(), getAccountName(), getDomainId(),
|
||||
this.getKeyword(), this.getStartIndex(), this.getPageSizeVal(), getZoneId(), this.isRecursive(),
|
||||
this.listAll(), getRestartRequired(), getTags());
|
||||
this.listAll(), getRestartRequired(), getTags(), getProjectId());
|
||||
ListResponse<VpcResponse> response = new ListResponse<VpcResponse>();
|
||||
List<VpcResponse> offeringResponses = new ArrayList<VpcResponse>();
|
||||
for (Vpc vpc : vpcs) {
|
||||
|
|
|
|||
|
|
@ -126,7 +126,7 @@ public class AsyncJobResponse extends BaseResponse {
|
|||
this.jobInstanceId.setTableName("account");
|
||||
} else if (jobInstanceType.equalsIgnoreCase(AsyncJob.Type.User.toString())) {
|
||||
this.jobInstanceId.setTableName("user");
|
||||
}else if (jobInstanceType.equalsIgnoreCase(AsyncJob.Type.Counter.toString())) {
|
||||
} else if (jobInstanceType.equalsIgnoreCase(AsyncJob.Type.Counter.toString())) {
|
||||
this.jobInstanceId.setTableName("counter");
|
||||
} else if (jobInstanceType.equalsIgnoreCase(AsyncJob.Type.Condition.toString())) {
|
||||
this.jobInstanceId.setTableName("conditions");
|
||||
|
|
|
|||
|
|
@ -47,6 +47,9 @@ public class DiskOfferingResponse extends BaseResponse {
|
|||
@SerializedName(ApiConstants.TAGS) @Param(description="the tags for the disk offering")
|
||||
private String tags;
|
||||
|
||||
@SerializedName("storagetype") @Param(description="the storage type for this disk offering")
|
||||
private String storageType;
|
||||
|
||||
public Long getId() {
|
||||
return id.getValue();
|
||||
}
|
||||
|
|
@ -119,4 +122,11 @@ public class DiskOfferingResponse extends BaseResponse {
|
|||
this.customized = customized;
|
||||
}
|
||||
|
||||
public String getStorageType() {
|
||||
return storageType;
|
||||
}
|
||||
|
||||
public void setStorageType(String storageType) {
|
||||
this.storageType = storageType;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -74,10 +74,10 @@ public class VpcResponse extends BaseResponse implements ControlledEntityRespons
|
|||
@SerializedName(ApiConstants.NETWORK) @Param(description="the list of networks belongign to the VPC", responseObject = NetworkResponse.class)
|
||||
private List<NetworkResponse> networks;
|
||||
|
||||
@SerializedName(ApiConstants.RESTART_REQUIRED) @Param(description="true network requires restart")
|
||||
@SerializedName(ApiConstants.RESTART_REQUIRED) @Param(description="true VPC requires restart")
|
||||
private Boolean restartRequired;
|
||||
|
||||
@SerializedName(ApiConstants.NETWORK_DOMAIN) @Param(description="the network domain")
|
||||
@SerializedName(ApiConstants.NETWORK_DOMAIN) @Param(description="the network domain of the VPC")
|
||||
private String networkDomain;
|
||||
|
||||
@SerializedName(ApiConstants.TAGS) @Param(description="the list of resource tags associated with the project", responseObject = ResourceTagResponse.class)
|
||||
|
|
|
|||
|
|
@ -301,5 +301,5 @@ public class EventTypes {
|
|||
public static final String EVENT_AUTOSCALEVMGROUP_DELETE = "AUTOSCALEVMGROUP.DELETE";
|
||||
public static final String EVENT_AUTOSCALEVMGROUP_UPDATE = "AUTOSCALEVMGROUP.UPDATE";
|
||||
public static final String EVENT_AUTOSCALEVMGROUP_ENABLE = "AUTOSCALEVMGROUP.ENABLE";
|
||||
public static final String EVENT_AUTOSCALEVMGROUP_DISABLE = "AUTOSCALEVMGROUP.DIABLE";
|
||||
public static final String EVENT_AUTOSCALEVMGROUP_DISABLE = "AUTOSCALEVMGROUP.DISABLE";
|
||||
}
|
||||
|
|
|
|||
|
|
@ -20,7 +20,7 @@ import com.cloud.network.router.VirtualRouter;
|
|||
/**
|
||||
* @author Alena Prokharchyk
|
||||
*/
|
||||
public interface VpcVirtualNetworkApplianceService {
|
||||
public interface VpcVirtualNetworkApplianceService extends VirtualNetworkApplianceService{
|
||||
|
||||
/**
|
||||
* @param router
|
||||
|
|
|
|||
|
|
@ -14,6 +14,7 @@ package com.cloud.network.element;
|
|||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
|
||||
import com.cloud.deploy.DeployDestination;
|
||||
import com.cloud.exception.ConcurrentOperationException;
|
||||
|
|
@ -133,5 +134,5 @@ public interface NetworkElement extends Adapter {
|
|||
* @param services
|
||||
* @return true/false
|
||||
*/
|
||||
boolean verifyServicesCombination(List<String> services);
|
||||
boolean verifyServicesCombination(Set<Service> services);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -77,7 +77,8 @@ public interface VpcService {
|
|||
* @return
|
||||
* @throws ResourceAllocationException TODO
|
||||
*/
|
||||
public Vpc createVpc(long zoneId, long vpcOffId, long vpcOwnerId, String vpcName, String displayText, String cidr, String networkDomain) throws ResourceAllocationException;
|
||||
public Vpc createVpc(long zoneId, long vpcOffId, long vpcOwnerId, String vpcName, String displayText, String cidr,
|
||||
String networkDomain) throws ResourceAllocationException;
|
||||
|
||||
/**
|
||||
* @param vpcId
|
||||
|
|
@ -113,13 +114,14 @@ public interface VpcService {
|
|||
* @param listAll TODO
|
||||
* @param restartRequired TODO
|
||||
* @param tags TODO
|
||||
* @param projectId TODO
|
||||
* @param vpc
|
||||
* @return
|
||||
*/
|
||||
public List<? extends Vpc> listVpcs(Long id, String vpcName, String displayText,
|
||||
List<String> supportedServicesStr, String cidr, Long vpcOffId, String state, String accountName, Long domainId,
|
||||
String keyword, Long startIndex, Long pageSizeVal, Long zoneId, Boolean isRecursive, Boolean listAll,
|
||||
Boolean restartRequired, Map<String, String> tags);
|
||||
Boolean restartRequired, Map<String, String> tags, Long projectId);
|
||||
|
||||
/**
|
||||
* @param vpcId
|
||||
|
|
|
|||
|
|
@ -15,10 +15,10 @@
|
|||
*/
|
||||
package com.cloud.bridge.persist.dao;
|
||||
|
||||
import java.util.List;
|
||||
import org.apache.log4j.Logger;
|
||||
|
||||
import com.cloud.bridge.persist.EntityDao;
|
||||
import com.cloud.stack.models.CloudStackConfiguration;
|
||||
import com.cloud.stack.models.CloudStackServiceOffering;
|
||||
|
||||
|
||||
|
|
@ -29,10 +29,9 @@ public class CloudStackSvcOfferingDao extends EntityDao<CloudStackServiceOfferin
|
|||
super(CloudStackServiceOffering.class, true);
|
||||
}
|
||||
|
||||
|
||||
public CloudStackServiceOffering getSvcOfferingByName( String name ){
|
||||
return queryEntity("from CloudStackServiceOffering where name=?", new Object[] {name});
|
||||
}
|
||||
public List<CloudStackServiceOffering> getSvcOfferingByName( String name ){
|
||||
return queryEntities("from CloudStackServiceOffering where name=?", new Object[] {name});
|
||||
}
|
||||
|
||||
public CloudStackServiceOffering getSvcOfferingById( String id ){
|
||||
return queryEntity("from CloudStackServiceOffering where id=?", new Object[] {id});
|
||||
|
|
|
|||
|
|
@ -258,6 +258,10 @@ public class EC2SoapServiceImpl implements AmazonEC2SkeletonInterface {
|
|||
List<String> resourceTypeList = new ArrayList<String>();
|
||||
if (items != null) {
|
||||
for( int i=0; i < items.length; i++ ) {
|
||||
if (!items[i].getResourceId().contains(":") || items[i].getResourceId().split(":").length != 2) {
|
||||
throw new EC2ServiceException( ClientError.InvalidResourceId_Format,
|
||||
"Invalid Format. ResourceId format is resource-type:resource-uuid");
|
||||
}
|
||||
String resourceType = items[i].getResourceId().split(":")[0];
|
||||
if (resourceTypeList.isEmpty())
|
||||
resourceTypeList.add(resourceType);
|
||||
|
|
|
|||
|
|
@ -1775,8 +1775,12 @@ public class EC2Engine {
|
|||
if (null == instanceType) instanceType = "m1.small";
|
||||
|
||||
CloudStackSvcOfferingDao dao = new CloudStackSvcOfferingDao();
|
||||
return dao.getSvcOfferingByName(instanceType);
|
||||
|
||||
List<CloudStackServiceOffering> svcOfferingList = dao.getSvcOfferingByName(instanceType);
|
||||
for (CloudStackServiceOffering svcOffering : svcOfferingList) {
|
||||
if (svcOffering.getRemoved() == null)
|
||||
return svcOffering;
|
||||
}
|
||||
return null;
|
||||
} catch(Exception e) {
|
||||
logger.error( "Error while retrieving ServiceOffering information by name - ", e);
|
||||
throw new EC2ServiceException(ServerError.InternalError, e.getMessage());
|
||||
|
|
|
|||
|
|
@ -77,6 +77,7 @@ public class EC2ServiceException extends RuntimeException {
|
|||
InvalidPermission_Malformed("Client.InvalidPermission.Malformed", 400),
|
||||
InvalidReservationID_Malformed("Client.InvalidReservationID.Malformed", 400),
|
||||
InvalidReservationID_NotFound("Client.InvalidReservationID.NotFound", 400),
|
||||
InvalidResourceId_Format("Client.InvalidResourceId.Format", 400),
|
||||
InvalidSnapshotID_Malformed("Client.InvalidSnapshotID.Malformed", 400),
|
||||
InvalidSnapshot_NotFound("Client.InvalidSnapshot.NotFound", 400),
|
||||
InvalidUserID_Malformed("Client.InvalidUserID.Malformed", 400),
|
||||
|
|
|
|||
|
|
@ -11,6 +11,9 @@
|
|||
<property name="domainId">
|
||||
<column name="domain_id" />
|
||||
</property>
|
||||
<property name="removed">
|
||||
<column name="removed" />
|
||||
</property>
|
||||
</class>
|
||||
</hibernate-mapping>
|
||||
|
||||
|
|
|
|||
|
|
@ -57,6 +57,8 @@ public class CloudStackServiceOffering {
|
|||
private String systemVmType;
|
||||
@SerializedName(ApiConstants.TAGS)
|
||||
private String tags;
|
||||
@SerializedName(ApiConstants.REMOVED)
|
||||
private String removed;
|
||||
|
||||
/**
|
||||
*
|
||||
|
|
@ -196,4 +198,14 @@ public class CloudStackServiceOffering {
|
|||
return tags;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the removed
|
||||
*/
|
||||
public String getRemoved() {
|
||||
return removed;
|
||||
}
|
||||
|
||||
public void setRemoved(String removed) {
|
||||
this.removed = removed;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,4 +1,6 @@
|
|||
#new labels (begin) **********************************************************************************************
|
||||
label.tier.details=Tier details
|
||||
label.edit.tags=Edit tags
|
||||
label.network.rate.megabytes=Network Rate (MB/s)
|
||||
label.action.enable.physical.network=Enable physical network
|
||||
label.action.disable.physical.network=Disable physical network
|
||||
|
|
|
|||
|
|
@ -40,9 +40,8 @@ public class AjaxFIFOImageCache {
|
|||
|
||||
public synchronized int putImage(byte[] image) {
|
||||
while(cache.size() >= cacheSize) {
|
||||
Integer keyToRemove = fifoQueue.remove(0);
|
||||
Integer keyToRemove = fifoQueue.remove(0);
|
||||
cache.remove(keyToRemove);
|
||||
|
||||
if(s_logger.isTraceEnabled())
|
||||
s_logger.trace("Remove image from cache, key: " + keyToRemove);
|
||||
}
|
||||
|
|
@ -51,26 +50,30 @@ public class AjaxFIFOImageCache {
|
|||
|
||||
if(s_logger.isTraceEnabled())
|
||||
s_logger.trace("Add image to cache, key: " + key);
|
||||
|
||||
cache.put(key, image);
|
||||
|
||||
cache.put(key, image);
|
||||
fifoQueue.add(key);
|
||||
return key;
|
||||
}
|
||||
|
||||
public synchronized byte[] getImage(int key) {
|
||||
public synchronized byte[] getImage(int key) {
|
||||
|
||||
if(cache.containsKey(key)) {
|
||||
if(s_logger.isTraceEnabled())
|
||||
s_logger.trace("Retrieve image from cache, key: " + key);
|
||||
|
||||
s_logger.trace("Retrieve image from cache, key: " + key);
|
||||
|
||||
return cache.get(key);
|
||||
}
|
||||
|
||||
if(s_logger.isTraceEnabled())
|
||||
|
||||
s_logger.trace("Image is no long in cache, key: " + key);
|
||||
return null;
|
||||
}
|
||||
|
||||
public synchronized int getNextKey() {
|
||||
return nextKey++;
|
||||
}
|
||||
|
||||
public synchronized int getKey() {
|
||||
return nextKey;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -61,6 +61,9 @@ public class ConsoleProxyAjaxImageHandler implements HttpHandler {
|
|||
String tag = queryMap.get("tag");
|
||||
String ticket = queryMap.get("ticket");
|
||||
String keyStr = queryMap.get("key");
|
||||
String console_url = queryMap.get("consoleurl");
|
||||
String console_host_session = queryMap.get("sessionref");
|
||||
|
||||
int key = 0;
|
||||
|
||||
if(tag == null)
|
||||
|
|
@ -90,8 +93,14 @@ public class ConsoleProxyAjaxImageHandler implements HttpHandler {
|
|||
param.setClientHostPassword(sid);
|
||||
param.setClientTag(tag);
|
||||
param.setTicket(ticket);
|
||||
ConsoleProxyClient viewer = ConsoleProxy.getVncViewer(param);
|
||||
byte[] img = viewer.getAjaxImageCache().getImage(key);
|
||||
param.setClientTunnelUrl(console_url);
|
||||
param.setClientTunnelSession(console_host_session);
|
||||
|
||||
ConsoleProxyClient viewer = ConsoleProxy.getVncViewer(param);
|
||||
AjaxFIFOImageCache imageCache =viewer.getAjaxImageCache();
|
||||
|
||||
byte[] img = imageCache.getImage(imageCache.getKey() - 1);
|
||||
|
||||
if(img != null) {
|
||||
Headers hds = t.getResponseHeaders();
|
||||
hds.set("Content-Type", "image/jpeg");
|
||||
|
|
|
|||
|
|
@ -607,6 +607,8 @@ public class VirtualRoutingResource implements Manager {
|
|||
args = "-D";
|
||||
args += " -r ";
|
||||
args += cmd.getPeerGatewayIp();
|
||||
args += " -n ";
|
||||
args += cmd.getLocalGuestCidr();
|
||||
args += " -N ";
|
||||
args += cmd.getPeerGuestCidrList();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -496,6 +496,10 @@ public class VmwareResource implements StoragePoolResource, ServerResource, Vmwa
|
|||
}
|
||||
|
||||
protected Answer execute(NetworkUsageCommand cmd) {
|
||||
if ( cmd.isForVpc() ) {
|
||||
return VPCNetworkUsage(cmd);
|
||||
}
|
||||
|
||||
if (s_logger.isInfoEnabled()) {
|
||||
s_logger.info("Executing resource NetworkUsageCommand " + _gson.toJson(cmd));
|
||||
}
|
||||
|
|
@ -510,6 +514,69 @@ public class VmwareResource implements StoragePoolResource, ServerResource, Vmwa
|
|||
return answer;
|
||||
}
|
||||
|
||||
protected NetworkUsageAnswer VPCNetworkUsage(NetworkUsageCommand cmd) {
|
||||
String privateIp = cmd.getPrivateIP();
|
||||
String option = cmd.getOption();
|
||||
String publicIp = cmd.getGatewayIP();
|
||||
|
||||
|
||||
String args = "-l " + publicIp+ " ";
|
||||
if (option.equals("get")) {
|
||||
args += "-g";
|
||||
} else if (option.equals("create")) {
|
||||
args += "-c";
|
||||
String vpcCIDR = cmd.getVpcCIDR();
|
||||
args += " -v " + vpcCIDR;
|
||||
} else if (option.equals("reset")) {
|
||||
args += "-r";
|
||||
} else if (option.equals("vpn")) {
|
||||
args += "-n";
|
||||
} else if (option.equals("remove")) {
|
||||
args += "-d";
|
||||
} else {
|
||||
return new NetworkUsageAnswer(cmd, "success", 0L, 0L);
|
||||
}
|
||||
|
||||
try {
|
||||
if (s_logger.isTraceEnabled()) {
|
||||
s_logger.trace("Executing /opt/cloud/bin/vpc_netusage.sh " + args + " on DomR " + privateIp);
|
||||
}
|
||||
|
||||
VmwareManager mgr = getServiceContext().getStockObject(VmwareManager.CONTEXT_STOCK_NAME);
|
||||
|
||||
Pair<Boolean, String> resultPair = SshHelper.sshExecute(privateIp, DEFAULT_DOMR_SSHPORT, "root", mgr.getSystemVMKeyFile(), null, "/opt/cloud/bin/vpc_netusage.sh " + args);
|
||||
|
||||
if (!resultPair.first()) {
|
||||
return null;
|
||||
}
|
||||
|
||||
String result = resultPair.second();
|
||||
|
||||
if (option.equals("get")) {
|
||||
long[] stats = new long[2];
|
||||
if (result != null) {
|
||||
String[] splitResult = result.split(":");
|
||||
int i = 0;
|
||||
while (i < splitResult.length - 1) {
|
||||
stats[0] += (new Long(splitResult[i++])).longValue();
|
||||
stats[1] += (new Long(splitResult[i++])).longValue();
|
||||
}
|
||||
return new NetworkUsageAnswer(cmd, "success", stats[0], stats[1]);
|
||||
}
|
||||
}
|
||||
if (result == null || result.isEmpty()) {
|
||||
throw new Exception(" vpc network usage plugin call failed ");
|
||||
}
|
||||
return new NetworkUsageAnswer(cmd, "success", 0L, 0L);
|
||||
|
||||
} catch (Throwable e) {
|
||||
s_logger.error("Unable to execute NetworkUsage command on DomR (" + privateIp + "), domR may not be ready yet. failure due to "
|
||||
+ VmwareHelper.getExceptionMessage(e), e);
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
private SetStaticRouteAnswer execute(SetStaticRouteCommand cmd) {
|
||||
if (s_logger.isInfoEnabled()) {
|
||||
s_logger.info("Executing resource SetStaticRouteCommand: " + _gson.toJson(cmd));
|
||||
|
|
@ -741,7 +808,95 @@ public class VmwareResource implements StoragePoolResource, ServerResource, Vmwa
|
|||
return new SetStaticNatRulesAnswer(cmd, results, endResult);
|
||||
}
|
||||
|
||||
protected Answer VPCLoadBalancerConfig(final LoadBalancerConfigCommand cmd) {
|
||||
VmwareManager mgr = getServiceContext().getStockObject(VmwareManager.CONTEXT_STOCK_NAME);
|
||||
File keyFile = mgr.getSystemVMKeyFile();
|
||||
|
||||
String routerIp = cmd.getAccessDetail(NetworkElementCommand.ROUTER_IP);
|
||||
String controlIp = getRouterSshControlIp(cmd);
|
||||
|
||||
assert(controlIp != null);
|
||||
|
||||
LoadBalancerConfigurator cfgtr = new HAProxyConfigurator();
|
||||
String[] config = cfgtr.generateConfiguration(cmd);
|
||||
|
||||
String tmpCfgFilePath = "/etc/haproxy/haproxy.cfg.new";
|
||||
String tmpCfgFileContents = "";
|
||||
for (int i = 0; i < config.length; i++) {
|
||||
tmpCfgFileContents += config[i];
|
||||
tmpCfgFileContents += "\n";
|
||||
}
|
||||
|
||||
try {
|
||||
SshHelper.scpTo(controlIp, DEFAULT_DOMR_SSHPORT, "root", keyFile, null, "/etc/haproxy/", tmpCfgFileContents.getBytes(), "haproxy.cfg.new", null);
|
||||
|
||||
try {
|
||||
String[][] rules = cfgtr.generateFwRules(cmd);
|
||||
|
||||
String[] addRules = rules[LoadBalancerConfigurator.ADD];
|
||||
String[] removeRules = rules[LoadBalancerConfigurator.REMOVE];
|
||||
String[] statRules = rules[LoadBalancerConfigurator.STATS];
|
||||
|
||||
String args = "";
|
||||
String ip = cmd.getNic().getIp();
|
||||
args += " -i " + ip;
|
||||
StringBuilder sb = new StringBuilder();
|
||||
if (addRules.length > 0) {
|
||||
for (int i = 0; i < addRules.length; i++) {
|
||||
sb.append(addRules[i]).append(',');
|
||||
}
|
||||
|
||||
args += " -a " + sb.toString();
|
||||
}
|
||||
|
||||
sb = new StringBuilder();
|
||||
if (removeRules.length > 0) {
|
||||
for (int i = 0; i < removeRules.length; i++) {
|
||||
sb.append(removeRules[i]).append(',');
|
||||
}
|
||||
|
||||
args += " -d " + sb.toString();
|
||||
}
|
||||
|
||||
sb = new StringBuilder();
|
||||
if (statRules.length > 0) {
|
||||
for (int i = 0; i < statRules.length; i++) {
|
||||
sb.append(statRules[i]).append(',');
|
||||
}
|
||||
|
||||
args += " -s " + sb.toString();
|
||||
}
|
||||
|
||||
// Invoke the command
|
||||
Pair<Boolean, String> result = SshHelper.sshExecute(controlIp, DEFAULT_DOMR_SSHPORT, "root", mgr.getSystemVMKeyFile(), null, "/opt/cloud/bin/vpc_loadbalancer.sh " + args);
|
||||
|
||||
if (!result.first()) {
|
||||
String msg = "LoadBalancerConfigCommand on domain router " + routerIp + " failed. message: " + result.second();
|
||||
s_logger.error(msg);
|
||||
|
||||
return new Answer(cmd, false, msg);
|
||||
}
|
||||
|
||||
if (s_logger.isInfoEnabled()) {
|
||||
s_logger.info("VPCLoadBalancerConfigCommand on domain router " + routerIp + " completed");
|
||||
}
|
||||
} finally {
|
||||
SshHelper.sshExecute(controlIp, DEFAULT_DOMR_SSHPORT, "root", mgr.getSystemVMKeyFile(), null, "rm " + tmpCfgFilePath);
|
||||
}
|
||||
return new Answer(cmd);
|
||||
} catch (Throwable e) {
|
||||
s_logger.error("Unexpected exception: " + e.toString(), e);
|
||||
return new Answer(cmd, false, "VPCLoadBalancerConfigCommand failed due to " + VmwareHelper.getExceptionMessage(e));
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
protected Answer execute(final LoadBalancerConfigCommand cmd) {
|
||||
if ( cmd.getVpcId() != null ) {
|
||||
return VPCLoadBalancerConfig(cmd);
|
||||
}
|
||||
|
||||
VmwareManager mgr = getServiceContext().getStockObject(VmwareManager.CONTEXT_STOCK_NAME);
|
||||
File keyFile = mgr.getSystemVMKeyFile();
|
||||
|
||||
|
|
@ -869,7 +1024,7 @@ public class VmwareResource implements StoragePoolResource, ServerResource, Vmwa
|
|||
// eth0:xx.xx.xx.xx
|
||||
//
|
||||
// list IP with eth devices
|
||||
// ifconfig ethx |grep -B1 "inet addr" | awk '{ if ( $1 == "inet" ) { print $2 } else if ( $2 == "Link" ) { printf "%s:" ,$1 } }'
|
||||
// ifconfig ethx |grep -B1 "inet addr" | awk '{ if ( $1 == "inet" ) { print $2 } else if ( $2 == "Link" ) { printf "%s:" ,$1 } }'
|
||||
// | awk -F: '{ print $1 ": " $3 }'
|
||||
//
|
||||
//
|
||||
|
|
@ -1186,6 +1341,8 @@ public class VmwareResource implements StoragePoolResource, ServerResource, Vmwa
|
|||
args += " -D";
|
||||
args += " -r ";
|
||||
args += cmd.getPeerGatewayIp();
|
||||
args += " -n ";
|
||||
args += cmd.getLocalGuestCidr();
|
||||
args += " -N ";
|
||||
args += cmd.getPeerGuestCidrList();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -7406,6 +7406,8 @@ public abstract class CitrixResourceBase implements ServerResource, HypervisorRe
|
|||
args += " -D";
|
||||
args += " -r ";
|
||||
args += cmd.getPeerGatewayIp();
|
||||
args += " -n ";
|
||||
args += cmd.getLocalGuestCidr();
|
||||
args += " -N ";
|
||||
args += cmd.getPeerGuestCidrList();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -180,6 +180,10 @@ public class XenServer56Resource extends CitrixResourceBase {
|
|||
args += " -v " + vpcCIDR;
|
||||
} else if (option.equals("reset")) {
|
||||
args += "-r";
|
||||
} else if (option.equals("vpn")) {
|
||||
args += "-n";
|
||||
} else if (option.equals("remove")) {
|
||||
args += "-d";
|
||||
} else {
|
||||
return new NetworkUsageAnswer(cmd, "success", 0L, 0L);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -42,8 +42,8 @@ import com.citrix.netscaler.nitro.resource.config.network.vlan_nsip_binding;
|
|||
import com.citrix.netscaler.nitro.resource.config.ns.nsconfig;
|
||||
import com.citrix.netscaler.nitro.resource.config.ns.nshardware;
|
||||
import com.citrix.netscaler.nitro.resource.config.ns.nsip;
|
||||
import com.citrix.netscaler.nitro.resource.config.timer.timerpolicy;
|
||||
import com.citrix.netscaler.nitro.resource.config.timer.timertrigger_timerpolicy_binding;
|
||||
import com.citrix.netscaler.nitro.resource.config.ns.nstimer;
|
||||
import com.citrix.netscaler.nitro.resource.config.ns.nstimer_autoscalepolicy_binding;
|
||||
import com.citrix.netscaler.nitro.resource.config.autoscale.*;
|
||||
import com.citrix.netscaler.nitro.resource.stat.lb.lbvserver_stats;
|
||||
import com.citrix.netscaler.nitro.service.nitro_service;
|
||||
|
|
@ -238,7 +238,7 @@ public class NetscalerResource implements ServerResource {
|
|||
if (!_isSdx) {
|
||||
_netscalerService = new com.citrix.netscaler.nitro.service.nitro_service(_ip, "https");
|
||||
_netscalerService.set_credential(_username, _password);
|
||||
// _netscalerService.set_timeout(_timeout);
|
||||
_netscalerService.set_timeout(_timeout);
|
||||
apiCallResult = _netscalerService.login();
|
||||
if (apiCallResult.errorcode != 0) {
|
||||
throw new ExecutionException ("Failed to log in to Netscaler device at " + _ip + " due to error " + apiCallResult.errorcode + " and message " + apiCallResult.message);
|
||||
|
|
@ -701,7 +701,7 @@ public class NetscalerResource implements ServerResource {
|
|||
try {
|
||||
nitro_service _netscalerService = new nitro_service(cmd.getLoadBalancerIP(), "https");
|
||||
_netscalerService.set_credential(username, password);
|
||||
// _netscalerService.set_timeout(_timeout);
|
||||
_netscalerService.set_timeout(_timeout);
|
||||
apiCallResult = _netscalerService.login();
|
||||
if (apiCallResult.errorcode == 0) {
|
||||
nsServiceUp = true;
|
||||
|
|
@ -1367,15 +1367,15 @@ public class NetscalerResource implements ServerResource {
|
|||
|
||||
boolean vserverExisis = false;
|
||||
lbvserver vserver = getVirtualServerIfExisits(virtualServerName);
|
||||
if (vserver == null) {
|
||||
vserver = new lbvserver();
|
||||
} else {
|
||||
if (vserver != null) {
|
||||
if (!vserver.get_servicetype().equalsIgnoreCase(protocol)) {
|
||||
throw new ExecutionException("Can not update virtual server:" + virtualServerName + " as current protocol:" + vserver.get_servicetype() + " of virtual server is different from the "
|
||||
+ " intended protocol:" + protocol);
|
||||
}
|
||||
vserverExisis = true;
|
||||
}
|
||||
// Use new vserver always for configuration
|
||||
vserver = new lbvserver();
|
||||
vserver.set_name(virtualServerName);
|
||||
vserver.set_ipv46(publicIp);
|
||||
vserver.set_port(publicPort);
|
||||
|
|
@ -1419,16 +1419,8 @@ public class NetscalerResource implements ServerResource {
|
|||
// set session persistence timeout
|
||||
vserver.set_timeout(timeout);
|
||||
} else {
|
||||
if (vserver.get_persistencetype() != null) {
|
||||
// delete the LB stickyness policy
|
||||
vserver.set_persistencetype("NONE");
|
||||
}
|
||||
}
|
||||
if(vmGroupTO != null) {
|
||||
vserver.set_mysqlcharacterset(null);
|
||||
vserver.set_mysqlprotocolversion(null);
|
||||
vserver.set_mysqlservercapabilities(null);
|
||||
vserver.set_mysqlserverversion(null);
|
||||
// delete the LB stickyness policy
|
||||
vserver.set_persistencetype("NONE");
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -1557,7 +1549,9 @@ public class NetscalerResource implements ServerResource {
|
|||
String nsVirtualServerName = generateNSVirtualServerName(srcIp, srcPort);
|
||||
String serviceGroupName = generateAutoScaleServiceGroupName(srcIp, srcPort);
|
||||
|
||||
disableAutoScaleConfig(loadBalancerTO, false);
|
||||
if(loadBalancerTO.getAutoScaleVmGroupTO().getState().equals("enabled")) {
|
||||
disableAutoScaleConfig(loadBalancerTO, false);
|
||||
}
|
||||
|
||||
if(isServiceGroupBoundToVirtualServer(nsVirtualServerName, serviceGroupName)) {
|
||||
// UnBind autoscale service group
|
||||
|
|
@ -1648,7 +1642,7 @@ public class NetscalerResource implements ServerResource {
|
|||
}
|
||||
|
||||
// Add Timer
|
||||
com.citrix.netscaler.nitro.resource.config.timer.timertrigger timer = new com.citrix.netscaler.nitro.resource.config.timer.timertrigger();
|
||||
nstimer timer = new nstimer();
|
||||
try {
|
||||
timer.set_name(timerName);
|
||||
timer.set_interval(interval);
|
||||
|
|
@ -1945,7 +1939,7 @@ public class NetscalerResource implements ServerResource {
|
|||
}
|
||||
|
||||
// Delete Timer
|
||||
com.citrix.netscaler.nitro.resource.config.timer.timertrigger timer = new com.citrix.netscaler.nitro.resource.config.timer.timertrigger();
|
||||
nstimer timer = new nstimer();
|
||||
try {
|
||||
timer.set_name(timerName);
|
||||
timer.delete(_netscalerService, timer);
|
||||
|
|
@ -2017,7 +2011,7 @@ public class NetscalerResource implements ServerResource {
|
|||
// Adding a autoscale policy
|
||||
// add timer policy lb_policy_scaleUp_cpu_mem -rule - (SYS.CUR_VSERVER.METRIC_TABLE(cpu).AVG_VAL.GT(80)-
|
||||
// -action lb_scaleUpAction
|
||||
timerpolicy timerPolicy = new timerpolicy();
|
||||
autoscalepolicy timerPolicy = new autoscalepolicy();
|
||||
try {
|
||||
timerPolicy.set_name(policyName);
|
||||
timerPolicy.set_action(action);
|
||||
|
|
@ -2033,7 +2027,7 @@ public class NetscalerResource implements ServerResource {
|
|||
// bind timer trigger lb_astimer -policyName lb_policy_scaleUp -vserver lb -priority 1 -samplesize 5
|
||||
// TODO: later bind to lbvserver. bind timer trigger lb_astimer -policyName lb_policy_scaleUp -vserver lb -priority 1 -samplesize 5
|
||||
// -thresholdsize 5
|
||||
timertrigger_timerpolicy_binding timer_policy_binding = new timertrigger_timerpolicy_binding();
|
||||
nstimer_autoscalepolicy_binding timer_policy_binding = new nstimer_autoscalepolicy_binding();
|
||||
int sampleSize = duration/interval;
|
||||
try {
|
||||
timer_policy_binding.set_name(timerName);
|
||||
|
|
@ -2053,7 +2047,7 @@ public class NetscalerResource implements ServerResource {
|
|||
private void removeAutoScalePolicy(String timerName, String policyName, boolean isCleanUp) throws Exception {
|
||||
// unbind timer policy
|
||||
// unbbind timer trigger lb_astimer -policyName lb_policy_scaleUp
|
||||
com.citrix.netscaler.nitro.resource.config.timer.timertrigger_timerpolicy_binding timer_policy_binding = new com.citrix.netscaler.nitro.resource.config.timer.timertrigger_timerpolicy_binding();
|
||||
nstimer_autoscalepolicy_binding timer_policy_binding = new nstimer_autoscalepolicy_binding();
|
||||
try {
|
||||
timer_policy_binding.set_name(timerName);
|
||||
timer_policy_binding.set_policyname(policyName);
|
||||
|
|
@ -2066,7 +2060,7 @@ public class NetscalerResource implements ServerResource {
|
|||
|
||||
// Removing Timer policy
|
||||
// rm timer policy lb_policy_scaleUp_cpu_mem
|
||||
com.citrix.netscaler.nitro.resource.config.timer.timerpolicy timerPolicy = new com.citrix.netscaler.nitro.resource.config.timer.timerpolicy();
|
||||
autoscalepolicy timerPolicy = new autoscalepolicy();
|
||||
try {
|
||||
timerPolicy.set_name(policyName);
|
||||
timerPolicy.delete(_netscalerService, timerPolicy);
|
||||
|
|
@ -2278,8 +2272,4 @@ public class NetscalerResource implements ServerResource {
|
|||
public void disconnected() {
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
|
|
|||
Binary file not shown.
|
|
@ -21,6 +21,7 @@ fi
|
|||
|
||||
vpnconfdir="/etc/ipsec.d"
|
||||
vpnoutmark="0x525"
|
||||
vpninmark="0x524"
|
||||
|
||||
usage() {
|
||||
printf "Usage: %s: (-A|-D) -l <left-side vpn peer> -n <left-side guest cidr> -g <left-side gateway> -r <right-side vpn peer> -N <right-side private subnets> -e <esp policy> -i <ike policy> -t <ike lifetime> -T <esp lifetime> -s <pre-shared secret> -d <dpd 0 or 1> \n" $(basename $0) >&2
|
||||
|
|
@ -55,6 +56,8 @@ enable_iptables_subnets() {
|
|||
do
|
||||
sudo iptables -A FORWARD -t mangle -s $leftnet -d $net -j MARK --set-mark $vpnoutmark
|
||||
sudo iptables -A OUTPUT -t mangle -s $leftnet -d $net -j MARK --set-mark $vpnoutmark
|
||||
sudo iptables -A FORWARD -t mangle -s $net -d $leftnet -j MARK --set-mark $vpninmark
|
||||
sudo iptables -A INPUT -t mangle -s $net -d $leftnet -j MARK --set-mark $vpninmark
|
||||
done
|
||||
return 0
|
||||
}
|
||||
|
|
@ -64,6 +67,7 @@ check_and_enable_iptables() {
|
|||
if [ $? -ne 0 ]
|
||||
then
|
||||
sudo iptables -A INPUT -i $outIf -p udp -m udp --dport 500 -j ACCEPT
|
||||
sudo iptables -A INPUT -i $outIf -p udp -m udp --dport 4500 -j ACCEPT
|
||||
# Prevent NAT on "marked" VPN traffic, so need to be the first one on POSTROUTING chain
|
||||
sudo iptables -t nat -I POSTROUTING -t nat -o $outIf -m mark --mark $vpnoutmark -j ACCEPT
|
||||
fi
|
||||
|
|
@ -75,6 +79,8 @@ disable_iptables_subnets() {
|
|||
do
|
||||
sudo iptables -D FORWARD -t mangle -s $leftnet -d $net -j MARK --set-mark $vpnoutmark
|
||||
sudo iptables -D OUTPUT -t mangle -s $leftnet -d $net -j MARK --set-mark $vpnoutmark
|
||||
sudo iptables -D FORWARD -t mangle -s $net -d $leftnet -j MARK --set-mark $vpninmark
|
||||
sudo iptables -D INPUT -t mangle -s $net -d $leftnet -j MARK --set-mark $vpninmark
|
||||
done
|
||||
return 0
|
||||
}
|
||||
|
|
@ -85,6 +91,7 @@ check_and_disable_iptables() {
|
|||
then
|
||||
#Nobody else use s2s vpn now, so delete the iptables rules
|
||||
sudo iptables -D INPUT -i $outIf -p udp -m udp --dport 500 -j ACCEPT
|
||||
sudo iptables -D INPUT -i $outIf -p udp -m udp --dport 4500 -j ACCEPT
|
||||
sudo iptables -t nat -D POSTROUTING -t nat -o $outIf -m mark --mark $vpnoutmark -j ACCEPT
|
||||
fi
|
||||
return 0
|
||||
|
|
@ -142,7 +149,7 @@ ipsec_tunnel_add() {
|
|||
sudo echo " esp=$esppolicy" >> $vpnconffile &&
|
||||
sudo echo " salifetime=${esplifetime}s" >> $vpnconffile &&
|
||||
sudo echo " pfs=$pfs" >> $vpnconffile &&
|
||||
sudo echo " keyingtries=3" >> $vpnconffile &&
|
||||
sudo echo " keyingtries=2" >> $vpnconffile &&
|
||||
sudo echo " auto=add" >> $vpnconffile &&
|
||||
sudo echo "$leftpeer $rightpeer: PSK \"$secret\"" > $vpnsecretsfile &&
|
||||
sudo chmod 0400 $vpnsecretsfile
|
||||
|
|
@ -162,8 +169,8 @@ ipsec_tunnel_add() {
|
|||
|
||||
logger -t cloud "$(basename $0): done ipsec tunnel entry for right peer=$rightpeer right networks=$rightnets"
|
||||
|
||||
#20 seconds for checking if it's ready
|
||||
for i in {1..4}
|
||||
#5 seconds for checking if it's ready
|
||||
for i in {1..5}
|
||||
do
|
||||
logger -t cloud "$(basename $0): checking connection status..."
|
||||
/opt/cloud/bin/checks2svpn.sh $rightpeer
|
||||
|
|
@ -172,7 +179,7 @@ ipsec_tunnel_add() {
|
|||
then
|
||||
break
|
||||
fi
|
||||
sleep 5
|
||||
sleep 1
|
||||
done
|
||||
if [ $result -eq 0 ]
|
||||
then
|
||||
|
|
|
|||
|
|
@ -15,6 +15,8 @@
|
|||
source /root/func.sh
|
||||
source /opt/cloud/bin/vpc_func.sh
|
||||
|
||||
vpnoutmark="0x525"
|
||||
vpninmark="0x524"
|
||||
lock="biglock"
|
||||
locked=$(getLockFile $lock)
|
||||
if [ "$locked" != "1" ]
|
||||
|
|
@ -23,27 +25,62 @@ then
|
|||
fi
|
||||
|
||||
usage() {
|
||||
printf "Usage: %s -[c|g|r] [-[a|d] <public interface>]\n" $(basename $0) >&2
|
||||
printf "Usage: %s -[c|g|r|n|d] [-l <public gateway>] [-v <vpc cidr>] \n" $(basename $0) >&2
|
||||
}
|
||||
|
||||
create_usage_rules () {
|
||||
iptables -N NETWORK_STATS_$ethDev > /dev/null
|
||||
iptables -I FORWARD -j NETWORK_STATS_$ethDev > /dev/null
|
||||
iptables-save|grep "NETWORK_STATS_$ethDev -i $ethDev" > /dev/null
|
||||
iptables-save|grep "NETWORK_STATS_$ethDev" > /dev/null
|
||||
if [ $? -gt 0 ]
|
||||
then
|
||||
iptables -A NETWORK_STATS_$ethDev -i $ethDev -d $vcidr > /dev/null
|
||||
fi
|
||||
iptables-save|grep "NETWORK_STATS_$ethDev -o $ethDev" > /dev/null
|
||||
iptables -N NETWORK_STATS_$ethDev > /dev/null;
|
||||
iptables -I FORWARD -j NETWORK_STATS_$ethDev > /dev/null;
|
||||
iptables -A NETWORK_STATS_$ethDev -i $ethDev -d $vcidr > /dev/null;
|
||||
iptables -A NETWORK_STATS_$ethDev -o $ethDev -s $vcidr > /dev/null;
|
||||
fi
|
||||
return $?
|
||||
}
|
||||
|
||||
create_vpn_usage_rules () {
|
||||
iptables-save|grep "VPN_STATS_$ethDev" > /dev/null
|
||||
if [ $? -gt 0 ]
|
||||
then
|
||||
iptables -A NETWORK_STATS_$ethDev -o $ethDev -s $vcidr > /dev/null
|
||||
iptables -N VPN_STATS_$ethDev > /dev/null;
|
||||
iptables -I FORWARD -j VPN_STATS_$ethDev > /dev/null;
|
||||
iptables -A VPN_STATS_$ethDev -i $ethDev -m mark --mark $vpninmark > /dev/null;
|
||||
iptables -A VPN_STATS_$ethDev -o $ethDev -m mark --mark $vpnoutmark > /dev/null;
|
||||
fi
|
||||
return $?
|
||||
}
|
||||
|
||||
remove_usage_rules () {
|
||||
echo $ethDev >> /root/removedVifs
|
||||
return $?
|
||||
}
|
||||
|
||||
get_usage () {
|
||||
iptables -L NETWORK_STATS_$ethDev -n -v -x | awk '$1 ~ /^[0-9]+$/ { printf "%s:", $2}'; > /dev/null
|
||||
if [ -f /root/removedVifs ]
|
||||
then
|
||||
var=`cat /root/removedVifs`
|
||||
# loop through vifs to be cleared
|
||||
for i in $var; do
|
||||
# Make sure vif doesn't exist
|
||||
if [ ! -f /sys/class/net/$i ]
|
||||
then
|
||||
# flush rules and remove chain
|
||||
iptables -F NETWORK_STATS_$i > /dev/null;
|
||||
iptables -X NETWORK_STATS_$i > /dev/null;
|
||||
iptables -F VPN_STATS_$i > /dev/null;
|
||||
iptables -X VPN_STATS_$i > /dev/null;
|
||||
fi
|
||||
done
|
||||
rm /root/removedVifs
|
||||
fi
|
||||
return 1
|
||||
}
|
||||
|
||||
get_vpn_usage () {
|
||||
iptables -L VPN_STATS_$ethDev -n -v -x | awk '$1 ~ /^[0-9]+$/ { printf "%s:", $2}'; > /dev/null
|
||||
if [ $? -gt 0 ]
|
||||
then
|
||||
printf $?
|
||||
|
|
@ -51,6 +88,8 @@ get_usage () {
|
|||
fi
|
||||
}
|
||||
|
||||
|
||||
|
||||
reset_usage () {
|
||||
iptables -Z NETWORK_STATS_$ethDev > /dev/null
|
||||
if [ $? -gt 0 -a $? -ne 2 ]
|
||||
|
|
@ -65,9 +104,11 @@ cflag=
|
|||
gflag=
|
||||
rflag=
|
||||
lflag=
|
||||
vflag=
|
||||
nflag=
|
||||
dflag=
|
||||
|
||||
|
||||
while getopts 'cgrl:v:' OPTION
|
||||
while getopts 'cgndrl:v:' OPTION
|
||||
do
|
||||
case $OPTION in
|
||||
c) cflag=1
|
||||
|
|
@ -82,6 +123,10 @@ do
|
|||
v) vflag=1
|
||||
vcidr="$OPTARG"
|
||||
;;
|
||||
n) nflag=1
|
||||
;;
|
||||
d) dflag=1
|
||||
;;
|
||||
i) #Do nothing, since it's parameter for host script
|
||||
;;
|
||||
?) usage
|
||||
|
|
@ -93,8 +138,12 @@ done
|
|||
ethDev=$(getEthByIp $publicIp)
|
||||
if [ "$cflag" == "1" ]
|
||||
then
|
||||
create_usage_rules
|
||||
unlock_exit 0 $lock $locked
|
||||
if [ "$ethDev" != "" ]
|
||||
then
|
||||
create_usage_rules
|
||||
create_vpn_usage_rules
|
||||
unlock_exit 0 $lock $locked
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ "$gflag" == "1" ]
|
||||
|
|
@ -103,6 +152,18 @@ then
|
|||
unlock_exit $? $lock $locked
|
||||
fi
|
||||
|
||||
if [ "$nflag" == "1" ]
|
||||
then
|
||||
get_vpn_usage
|
||||
unlock_exit $? $lock $locked
|
||||
fi
|
||||
|
||||
if [ "$dflag" == "1" ]
|
||||
then
|
||||
remove_usage_rules
|
||||
unlock_exit 0 $lock $locked
|
||||
fi
|
||||
|
||||
if [ "$rflag" == "1" ]
|
||||
then
|
||||
reset_usage
|
||||
|
|
|
|||
|
|
@ -469,6 +469,7 @@ public class ApiResponseHelper implements ResponseGenerator {
|
|||
}
|
||||
diskOfferingResponse.setTags(offering.getTags());
|
||||
diskOfferingResponse.setCustomized(offering.isCustomized());
|
||||
diskOfferingResponse.setStorageType(offering.getUseLocalStorage() ? ServiceOffering.StorageType.local.toString() : ServiceOffering.StorageType.shared.toString());
|
||||
diskOfferingResponse.setObjectName("diskoffering");
|
||||
return diskOfferingResponse;
|
||||
}
|
||||
|
|
@ -1123,24 +1124,6 @@ public class ApiResponseHelper implements ResponseGenerator {
|
|||
|
||||
populateOwner(volResponse, volume);
|
||||
|
||||
String storageType;
|
||||
try {
|
||||
if (volume.getPoolId() == null) {
|
||||
if (volume.getState() == Volume.State.Allocated || volume.getState() == Volume.State.UploadOp) {
|
||||
/* set it as shared, so the UI can attach it to VM */
|
||||
storageType = "shared";
|
||||
} else {
|
||||
storageType = "unknown";
|
||||
}
|
||||
} else {
|
||||
storageType = ApiDBUtils.volumeIsOnSharedStorage(volume.getId()) ? ServiceOffering.StorageType.shared.toString() : ServiceOffering.StorageType.local.toString();
|
||||
}
|
||||
} catch (InvalidParameterValueException e) {
|
||||
s_logger.error(e.getMessage(), e);
|
||||
throw new ServerApiException(BaseCmd.INTERNAL_ERROR, "Volume " + volume.getName() + " does not have a valid ID");
|
||||
}
|
||||
|
||||
volResponse.setStorageType(storageType);
|
||||
if (volume.getVolumeType().equals(Volume.Type.ROOT)) {
|
||||
volResponse.setServiceOfferingId(volume.getDiskOfferingId());
|
||||
} else {
|
||||
|
|
@ -1155,6 +1138,7 @@ public class ApiResponseHelper implements ResponseGenerator {
|
|||
volResponse.setDiskOfferingName(diskOffering.getName());
|
||||
volResponse.setDiskOfferingDisplayText(diskOffering.getDisplayText());
|
||||
}
|
||||
volResponse.setStorageType(diskOffering.getUseLocalStorage() ? ServiceOffering.StorageType.local.toString() : ServiceOffering.StorageType.shared.toString());
|
||||
|
||||
Long poolId = volume.getPoolId();
|
||||
String poolName = (poolId == null) ? "none" : ApiDBUtils.findStoragePoolById(poolId).getName();
|
||||
|
|
|
|||
|
|
@ -63,7 +63,7 @@ public class BareMetalPingServiceImpl extends BareMetalPxeServiceBase implements
|
|||
List<IdentityProxy> idList = new ArrayList<IdentityProxy>();
|
||||
idList.add(new IdentityProxy("pod", podId, "podId"));
|
||||
idList.add(new IdentityProxy(zone, zoneId, "zoneId"));
|
||||
InvalidParameterValueException ex = new InvalidParameterValueException("Already had a PXE server in Pod with specified podId and zone with specified zoneId", idList);
|
||||
throw new InvalidParameterValueException("Already had a PXE server in Pod with specified podId and zone with specified zoneId", idList);
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -4331,27 +4331,25 @@ public class NetworkManagerImpl implements NetworkManager, NetworkService, Manag
|
|||
|
||||
@Override
|
||||
public boolean networkIsConfiguredForExternalNetworking(long zoneId, long networkId) {
|
||||
boolean netscalerInNetwork = isProviderForNetwork(Network.Provider.Netscaler, networkId);
|
||||
boolean juniperInNetwork = isProviderForNetwork(Network.Provider.JuniperSRX, networkId);
|
||||
boolean f5InNetwork = isProviderForNetwork(Network.Provider.F5BigIp, networkId);
|
||||
|
||||
if (netscalerInNetwork || juniperInNetwork || f5InNetwork) {
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
List<Provider> networkProviders = getNetworkProviders(networkId);
|
||||
for(Provider provider : networkProviders){
|
||||
if(provider.isExternal()){
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
public boolean networkOfferingIsConfiguredForExternalNetworking(long networkOfferingId) {
|
||||
boolean netscalerInNetworkOffering = isProviderForNetworkOffering(Network.Provider.Netscaler, networkOfferingId);
|
||||
boolean juniperInNetworkOffering = isProviderForNetworkOffering(Network.Provider.JuniperSRX, networkOfferingId);
|
||||
boolean f5InNetworkOffering = isProviderForNetworkOffering(Network.Provider.F5BigIp, networkOfferingId);
|
||||
|
||||
if (netscalerInNetworkOffering || juniperInNetworkOffering || f5InNetworkOffering) {
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
List<Provider> networkOffProviders = getNtwkOffDistinctProviders(networkOfferingId);
|
||||
for(Provider provider : networkOffProviders){
|
||||
if(provider.isExternal()){
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
@ -6748,14 +6746,6 @@ public class NetworkManagerImpl implements NetworkManager, NetworkService, Manag
|
|||
l.add(service);
|
||||
}
|
||||
|
||||
for (String provider : providerSvcs.keySet()) {
|
||||
NetworkElement element = getElementImplementingProvider(provider);
|
||||
List<String> services = providerSvcs.get(provider);
|
||||
if (!element.verifyServicesCombination(services)) {
|
||||
throw new UnsupportedServiceException("Provider " + provider + " doesn't support services combination: " + services);
|
||||
}
|
||||
}
|
||||
|
||||
return svcProviders;
|
||||
}
|
||||
|
||||
|
|
@ -6780,12 +6770,14 @@ public class NetworkManagerImpl implements NetworkManager, NetworkService, Manag
|
|||
|
||||
private List<Provider> getNetworkProviders(long networkId) {
|
||||
List<String> providerNames = _ntwkSrvcDao.getDistinctProviders(networkId);
|
||||
List<Provider> providers = new ArrayList<Provider>();
|
||||
Map<String, Provider> providers = new HashMap<String, Provider>();
|
||||
for (String providerName : providerNames) {
|
||||
providers.add(Network.Provider.getProvider(providerName));
|
||||
if(!providers.containsKey(providerName)){
|
||||
providers.put(providerName, Network.Provider.getProvider(providerName));
|
||||
}
|
||||
}
|
||||
|
||||
return providers;
|
||||
return new ArrayList<Provider>(providers.values());
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
@ -6852,11 +6844,16 @@ public class NetworkManagerImpl implements NetworkManager, NetworkService, Manag
|
|||
+ provider.getName(), null);
|
||||
}
|
||||
}
|
||||
List<String> serviceList = new ArrayList<String>();
|
||||
for (Service service : enabledServices) {
|
||||
// check if the service is provided by this Provider
|
||||
if (!element.getCapabilities().containsKey(service)) {
|
||||
throw new UnsupportedServiceException(provider.getName() + " Provider cannot provide service " + service.getName());
|
||||
}
|
||||
serviceList.add(service.getName());
|
||||
}
|
||||
if (!element.verifyServicesCombination(enabledServices)) {
|
||||
throw new UnsupportedServiceException("Provider " + provider.getName() + " doesn't support services combination: " + serviceList);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -7128,12 +7125,14 @@ public class NetworkManagerImpl implements NetworkManager, NetworkService, Manag
|
|||
@Override
|
||||
public List<Provider> getNtwkOffDistinctProviders(long networkId) {
|
||||
List<String> providerNames = _ntwkOfferingSrvcDao.getDistinctProviders(networkId);
|
||||
List<Provider> providers = new ArrayList<Provider>();
|
||||
Map<String, Provider> providers = new HashMap<String, Provider>();
|
||||
for (String providerName : providerNames) {
|
||||
providers.add(Network.Provider.getProvider(providerName));
|
||||
if(!providers.containsKey(providerName)){
|
||||
providers.put(providerName, Network.Provider.getProvider(providerName));
|
||||
}
|
||||
}
|
||||
|
||||
return providers;
|
||||
return new ArrayList<Provider>(providers.values());
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
|||
|
|
@ -454,7 +454,7 @@ public class NetworkVO implements Network, Identity {
|
|||
@Override
|
||||
public String toString() {
|
||||
StringBuilder buf = new StringBuilder("Ntwk[");
|
||||
buf.append(id).append("|").append(trafficType.toString()).append("|").append(networkOfferingId).append("]");
|
||||
buf.append(id).append("|").append(trafficType).append("|").append(networkOfferingId).append("]");
|
||||
return buf.toString();
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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 {
|
||||
|
|
|
|||
|
|
@ -719,14 +719,15 @@ public class AutoScaleManagerImpl<Type> implements AutoScaleService, Manager {
|
|||
return vmGroup.getLoadBalancerId() != null;
|
||||
}
|
||||
|
||||
public boolean configureAutoScaleVmGroup(long vmGroupid) {
|
||||
private boolean configureAutoScaleVmGroup(long vmGroupid) throws InvalidParameterValueException {
|
||||
AutoScaleVmGroup vmGroup = _autoScaleVmGroupDao.findById(vmGroupid);
|
||||
|
||||
if (isLoadBalancerBasedAutoScaleVmGroup(vmGroup)) {
|
||||
try {
|
||||
return _lbRulesMgr.configureLbAutoScaleVmGroup(vmGroupid);
|
||||
} catch (RuntimeException re) {
|
||||
s_logger.warn("Exception during configureLbAutoScaleVmGrouop in lb rules manager", re);
|
||||
} catch (Exception e) {
|
||||
s_logger.warn("Exception during configureLbAutoScaleVmGroup in lb rules manager", e);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -14,6 +14,7 @@ package com.cloud.network.element;
|
|||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
|
||||
import javax.ejb.Local;
|
||||
|
||||
|
|
@ -118,7 +119,7 @@ public class BareMetalElement extends AdapterBase implements NetworkElement {
|
|||
}
|
||||
|
||||
@Override
|
||||
public boolean verifyServicesCombination(List<String> services) {
|
||||
public boolean verifyServicesCombination(Set<Service> services) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -15,6 +15,7 @@ package com.cloud.network.element;
|
|||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Set;
|
||||
|
||||
import javax.ejb.Local;
|
||||
|
||||
|
|
@ -127,7 +128,7 @@ public class CiscoNexusVSMElement extends CiscoNexusVSMDeviceManagerImpl impleme
|
|||
}
|
||||
|
||||
@Override
|
||||
public boolean verifyServicesCombination(List<String> services) {
|
||||
public boolean verifyServicesCombination(Set<Service> services) {
|
||||
return true;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -15,6 +15,7 @@ package com.cloud.network.element;
|
|||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
|
||||
import javax.ejb.Local;
|
||||
|
||||
|
|
@ -43,7 +44,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 +70,6 @@ public class CloudZonesNetworkElement extends AdapterBase implements NetworkElem
|
|||
@Inject
|
||||
NetworkManager _networkMgr;
|
||||
@Inject
|
||||
VirtualNetworkApplianceManager _routerMgr;
|
||||
@Inject
|
||||
UserVmManager _userVmMgr;
|
||||
@Inject
|
||||
UserVmDao _userVmDao;
|
||||
|
|
@ -236,7 +234,7 @@ public class CloudZonesNetworkElement extends AdapterBase implements NetworkElem
|
|||
}
|
||||
|
||||
@Override
|
||||
public boolean verifyServicesCombination(List<String> services) {
|
||||
public boolean verifyServicesCombination(Set<Service> services) {
|
||||
return true;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -178,7 +178,7 @@ public class ElasticLoadBalancerElement extends AdapterBase implements LoadBalan
|
|||
}
|
||||
|
||||
@Override
|
||||
public boolean verifyServicesCombination(List<String> services) {
|
||||
public boolean verifyServicesCombination(Set<Service> services) {
|
||||
return true;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -15,6 +15,7 @@ package com.cloud.network.element;
|
|||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
|
||||
import javax.ejb.Local;
|
||||
|
||||
|
|
@ -142,7 +143,7 @@ public class ExternalDhcpElement extends AdapterBase implements NetworkElement,
|
|||
}
|
||||
|
||||
@Override
|
||||
public boolean verifyServicesCombination(List<String> services) {
|
||||
public boolean verifyServicesCombination(Set<Service> services) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -458,7 +458,7 @@ public class F5ExternalLoadBalancerElement extends ExternalLoadBalancerDeviceMan
|
|||
}
|
||||
|
||||
@Override
|
||||
public boolean verifyServicesCombination(List<String> services) {
|
||||
public boolean verifyServicesCombination(Set<Service> services) {
|
||||
return true;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -535,7 +535,7 @@ PortForwardingServiceProvider, RemoteAccessVPNServiceProvider, IpDeployer, Junip
|
|||
}
|
||||
|
||||
@Override
|
||||
public boolean verifyServicesCombination(List<String> services) {
|
||||
public boolean verifyServicesCombination(Set<Service> services) {
|
||||
return true;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -15,6 +15,7 @@ package com.cloud.network.element;
|
|||
import java.net.URI;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
|
|
@ -543,15 +544,19 @@ StaticNatServiceProvider {
|
|||
}
|
||||
|
||||
@Override
|
||||
public boolean verifyServicesCombination(List<String> services) {
|
||||
List<String> netscalerServices = new ArrayList<String>();
|
||||
netscalerServices.add(Service.Lb.getName());
|
||||
netscalerServices.add(Service.StaticNat.getName());
|
||||
public boolean verifyServicesCombination(Set<Service> services) {
|
||||
Set<Service> netscalerServices = new HashSet<Service>();
|
||||
netscalerServices.add(Service.Lb);
|
||||
netscalerServices.add(Service.StaticNat);
|
||||
|
||||
// NetScaler can only act as Lb and Static Nat service provider
|
||||
if (services != null && !services.isEmpty() && !netscalerServices.containsAll(services)) {
|
||||
String servicesList = "";
|
||||
for (Service service : services) {
|
||||
servicesList += service.getName() + " ";
|
||||
}
|
||||
s_logger.warn("NetScaler network element can only support LB and Static NAT services and service combination "
|
||||
+ services + " is not supported.");
|
||||
+ servicesList + " is not supported.");
|
||||
return false;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -14,6 +14,7 @@ package com.cloud.network.element;
|
|||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
|
||||
import javax.ejb.Local;
|
||||
|
||||
|
|
@ -126,7 +127,7 @@ public class OvsElement extends AdapterBase implements NetworkElement {
|
|||
}
|
||||
|
||||
@Override
|
||||
public boolean verifyServicesCombination(List<String> services) {
|
||||
public boolean verifyServicesCombination(Set<Service> services) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -15,6 +15,7 @@ package com.cloud.network.element;
|
|||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
|
||||
import javax.ejb.Local;
|
||||
|
||||
|
|
@ -101,7 +102,7 @@ public class SecurityGroupElement extends AdapterBase implements NetworkElement
|
|||
}
|
||||
|
||||
@Override
|
||||
public boolean verifyServicesCombination(List<String> services) {
|
||||
public boolean verifyServicesCombination(Set<Service> services) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
@ -869,11 +869,16 @@ LoadBalancingServiceProvider, PortForwardingServiceProvider, RemoteAccessVPNServ
|
|||
}
|
||||
|
||||
@Override
|
||||
public boolean verifyServicesCombination(List<String> services) {
|
||||
if (!services.contains("SourceNat")) {
|
||||
if (services.contains("StaticNat") || services.contains("Firewall") || services.contains("Lb") || services.contains("PortForwarding") ||
|
||||
services.contains("Vpn")) {
|
||||
s_logger.warn("Virtual router can't enable services " + services + " without source NAT service");
|
||||
public boolean verifyServicesCombination(Set<Service> services) {
|
||||
if (!services.contains(Service.SourceNat)) {
|
||||
if (services.contains(Service.StaticNat) || services.contains(Service.Firewall) || services.contains(Service.Lb) ||
|
||||
services.contains(Service.PortForwarding) || services.contains(Service.Vpn)) {
|
||||
String servicesList = "[";
|
||||
for (Service service : services) {
|
||||
servicesList += service.getName() + " ";
|
||||
}
|
||||
servicesList += "]";
|
||||
s_logger.warn("Virtual router can't enable services " + servicesList + " without source NAT service");
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load Diff
|
|
@ -132,6 +132,7 @@ import com.cloud.network.RemoteAccessVpn;
|
|||
import com.cloud.network.Site2SiteCustomerGateway;
|
||||
import com.cloud.network.Site2SiteVpnConnection;
|
||||
import com.cloud.network.Site2SiteVpnConnectionVO;
|
||||
import com.cloud.network.Site2SiteVpnGatewayVO;
|
||||
import com.cloud.network.SshKeysDistriMonitor;
|
||||
import com.cloud.network.VirtualNetworkApplianceService;
|
||||
import com.cloud.network.VirtualRouterProvider;
|
||||
|
|
@ -763,15 +764,15 @@ VirtualMachineGuru<DomainRouterVO>, Listener {
|
|||
String privateIP = router.getPrivateIpAddress();
|
||||
|
||||
if (privateIP != null) {
|
||||
boolean forVpc = router.getVpcId() != null;
|
||||
List<? extends Nic> routerNics = _nicDao.listByVmId(router.getId());
|
||||
for (Nic routerNic : routerNics) {
|
||||
Network network = _networkMgr.getNetwork(routerNic.getNetworkId());
|
||||
if (network.getTrafficType() == TrafficType.Public) {
|
||||
boolean forVpc = router.getVpcId() != null;
|
||||
if ((forVpc && network.getTrafficType() == TrafficType.Public) || (!forVpc && network.getTrafficType() == TrafficType.Guest)) {
|
||||
final NetworkUsageCommand usageCmd = new NetworkUsageCommand(privateIP, router.getHostName(),
|
||||
forVpc, routerNic.getIp4Address());
|
||||
UserStatisticsVO previousStats = _statsDao.findBy(router.getAccountId(),
|
||||
router.getDataCenterIdToDeployIn(), network.getId(), null, router.getId(), router.getType().toString());
|
||||
router.getDataCenterIdToDeployIn(), network.getId(), (forVpc ? routerNic.getIp4Address() : null), router.getId(), router.getType().toString());
|
||||
NetworkUsageAnswer answer = null;
|
||||
try {
|
||||
answer = (NetworkUsageAnswer) _agentMgr.easySend(router.getHostId(), usageCmd);
|
||||
|
|
@ -793,7 +794,7 @@ VirtualMachineGuru<DomainRouterVO>, Listener {
|
|||
}
|
||||
txn.start();
|
||||
UserStatisticsVO stats = _statsDao.lock(router.getAccountId(),
|
||||
router.getDataCenterIdToDeployIn(), network.getId(), routerNic.getIp4Address(), router.getId(), router.getType().toString());
|
||||
router.getDataCenterIdToDeployIn(), network.getId(), (forVpc ? routerNic.getIp4Address() : null), router.getId(), router.getType().toString());
|
||||
if (stats == null) {
|
||||
s_logger.warn("unable to find stats for account: " + router.getAccountId());
|
||||
continue;
|
||||
|
|
@ -838,6 +839,81 @@ VirtualMachineGuru<DomainRouterVO>, Listener {
|
|||
txn.close();
|
||||
}
|
||||
}
|
||||
if(forVpc){
|
||||
//Get VPN gateway
|
||||
Site2SiteVpnGatewayVO s2sVpn = _s2sVpnGatewayDao.findByVpcId(router.getVpcId());
|
||||
if(s2sVpn != null){
|
||||
final NetworkUsageCommand vpnUsageCmd = new NetworkUsageCommand(privateIP, router.getHostName(), "vpn", forVpc, routerNic.getIp4Address());
|
||||
previousStats = _statsDao.findBy(s2sVpn.getAccountId(), router.getDataCenterIdToDeployIn(), network.getId(),
|
||||
routerNic.getIp4Address(), s2sVpn.getId(), "VPNGateway");
|
||||
answer = null;
|
||||
try {
|
||||
answer = (NetworkUsageAnswer) _agentMgr.easySend(router.getHostId(), vpnUsageCmd);
|
||||
} catch (Exception e) {
|
||||
s_logger.warn("Error while collecting vpn network stats from router: "+router.getInstanceName()+" from host: "+router.getHostId(), e);
|
||||
continue;
|
||||
}
|
||||
|
||||
if (answer != null) {
|
||||
if (!answer.getResult()) {
|
||||
s_logger.warn("Error while collecting vpn network stats from router: "+router.getInstanceName()+" from host: "+router.getHostId() + "; details: " + answer.getDetails());
|
||||
continue;
|
||||
}
|
||||
Transaction txn = Transaction.open(Transaction.CLOUD_DB);
|
||||
try {
|
||||
if ((answer.getBytesReceived() == 0) && (answer.getBytesSent() == 0)) {
|
||||
s_logger.debug("Recieved and Sent bytes are both 0. Not updating user_statistics");
|
||||
continue;
|
||||
}
|
||||
txn.start();
|
||||
UserStatisticsVO stats = _statsDao.lock(s2sVpn.getAccountId(), router.getDataCenterIdToDeployIn(), network.getId(),
|
||||
routerNic.getIp4Address(), s2sVpn.getId(), "VPNGateway");
|
||||
if (stats == null) {
|
||||
s_logger.warn("unable to find vpn stats for account: " + router.getAccountId()+" vpc Id: "+router.getVpcId());
|
||||
continue;
|
||||
}
|
||||
|
||||
if(previousStats != null
|
||||
&& ((previousStats.getCurrentBytesReceived() != stats.getCurrentBytesReceived())
|
||||
|| (previousStats.getCurrentBytesSent() != stats.getCurrentBytesSent()))){
|
||||
s_logger.debug("Router stats changed from the time NetworkUsageCommand was sent. " +
|
||||
"Ignoring current answer. Router: "+answer.getRouterName()+" Rcvd: " +
|
||||
answer.getBytesReceived()+ "Sent: " +answer.getBytesSent());
|
||||
continue;
|
||||
}
|
||||
|
||||
if (stats.getCurrentBytesReceived() > answer.getBytesReceived()) {
|
||||
if (s_logger.isDebugEnabled()) {
|
||||
s_logger.debug("Received # of bytes that's less than the last one. " +
|
||||
"Assuming something went wrong and persisting it. Router: " +
|
||||
answer.getRouterName()+" Reported: " + answer.getBytesReceived()
|
||||
+ " Stored: " + stats.getCurrentBytesReceived());
|
||||
}
|
||||
stats.setNetBytesReceived(stats.getNetBytesReceived() + stats.getCurrentBytesReceived());
|
||||
}
|
||||
stats.setCurrentBytesReceived(answer.getBytesReceived());
|
||||
if (stats.getCurrentBytesSent() > answer.getBytesSent()) {
|
||||
if (s_logger.isDebugEnabled()) {
|
||||
s_logger.debug("Received # of bytes that's less than the last one. " +
|
||||
"Assuming something went wrong and persisting it. Router: " +
|
||||
answer.getRouterName()+" Reported: " + answer.getBytesSent()
|
||||
+ " Stored: " + stats.getCurrentBytesSent());
|
||||
}
|
||||
stats.setNetBytesSent(stats.getNetBytesSent() + stats.getCurrentBytesSent());
|
||||
}
|
||||
stats.setCurrentBytesSent(answer.getBytesSent());
|
||||
_statsDao.update(stats.getId(), stats);
|
||||
txn.commit();
|
||||
} catch (Exception e) {
|
||||
txn.rollback();
|
||||
s_logger.warn("Unable to update user statistics for account: " + router.getAccountId()
|
||||
+ " Rx: " + answer.getBytesReceived() + "; Tx: " + answer.getBytesSent());
|
||||
} finally {
|
||||
txn.close();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -900,6 +976,7 @@ VirtualMachineGuru<DomainRouterVO>, Listener {
|
|||
}
|
||||
}
|
||||
|
||||
@DB
|
||||
protected void updateSite2SiteVpnConnectionState(List<DomainRouterVO> routers) {
|
||||
for (DomainRouterVO router : routers) {
|
||||
List<Site2SiteVpnConnectionVO> conns = _s2sVpnMgr.getConnectionsForRouter(router);
|
||||
|
|
@ -949,26 +1026,34 @@ VirtualMachineGuru<DomainRouterVO>, Listener {
|
|||
continue;
|
||||
}
|
||||
for (Site2SiteVpnConnectionVO conn : conns) {
|
||||
if (conn.getState() != Site2SiteVpnConnection.State.Connected &&
|
||||
conn.getState() != Site2SiteVpnConnection.State.Disconnected) {
|
||||
continue;
|
||||
Site2SiteVpnConnectionVO lock = _s2sVpnConnectionDao.acquireInLockTable(conn.getId());
|
||||
if (lock == null) {
|
||||
throw new CloudRuntimeException("Unable to acquire lock on " + lock);
|
||||
}
|
||||
Site2SiteVpnConnection.State oldState = conn.getState();
|
||||
Site2SiteCustomerGateway gw = _s2sCustomerGatewayDao.findById(conn.getCustomerGatewayId());
|
||||
if (answer.isConnected(gw.getGatewayIp())) {
|
||||
conn.setState(Site2SiteVpnConnection.State.Connected);
|
||||
} else {
|
||||
conn.setState(Site2SiteVpnConnection.State.Disconnected);
|
||||
}
|
||||
_s2sVpnConnectionDao.persist(conn);
|
||||
if (oldState != conn.getState()) {
|
||||
String title = "Site-to-site Vpn Connection to " + gw.getName() +
|
||||
" just switch from " + oldState + " to " + conn.getState();
|
||||
String context = "Site-to-site Vpn Connection to " + gw.getName() + " on router " + router.getHostName() +
|
||||
"(id: " + router.getId() + ") " + " just switch from " + oldState + " to " + conn.getState();
|
||||
s_logger.info(context);
|
||||
_alertMgr.sendAlert(AlertManager.ALERT_TYPE_DOMAIN_ROUTER,
|
||||
router.getDataCenterIdToDeployIn(), router.getPodIdToDeployIn(), title, context);
|
||||
try {
|
||||
if (conn.getState() != Site2SiteVpnConnection.State.Connected &&
|
||||
conn.getState() != Site2SiteVpnConnection.State.Disconnected) {
|
||||
continue;
|
||||
}
|
||||
Site2SiteVpnConnection.State oldState = conn.getState();
|
||||
Site2SiteCustomerGateway gw = _s2sCustomerGatewayDao.findById(conn.getCustomerGatewayId());
|
||||
if (answer.isConnected(gw.getGatewayIp())) {
|
||||
conn.setState(Site2SiteVpnConnection.State.Connected);
|
||||
} else {
|
||||
conn.setState(Site2SiteVpnConnection.State.Disconnected);
|
||||
}
|
||||
_s2sVpnConnectionDao.persist(conn);
|
||||
if (oldState != conn.getState()) {
|
||||
String title = "Site-to-site Vpn Connection to " + gw.getName() +
|
||||
" just switch from " + oldState + " to " + conn.getState();
|
||||
String context = "Site-to-site Vpn Connection to " + gw.getName() + " on router " + router.getHostName() +
|
||||
"(id: " + router.getId() + ") " + " just switch from " + oldState + " to " + conn.getState();
|
||||
s_logger.info(context);
|
||||
_alertMgr.sendAlert(AlertManager.ALERT_TYPE_DOMAIN_ROUTER,
|
||||
router.getDataCenterIdToDeployIn(), router.getPodIdToDeployIn(), title, context);
|
||||
}
|
||||
} finally {
|
||||
_s2sVpnConnectionDao.releaseFromLockTable(lock.getId());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -2311,6 +2396,11 @@ VirtualMachineGuru<DomainRouterVO>, Listener {
|
|||
ConcurrentOperationException, ResourceUnavailableException {
|
||||
s_logger.debug("Starting router " + router);
|
||||
if (_itMgr.start(router, params, user, caller, planToDeploy) != null) {
|
||||
// We don't want the failure of VPN Connection affect the status of router, so we try to make connection only after router start successfully
|
||||
Long vpcId = router.getVpcId();
|
||||
if (vpcId != null) {
|
||||
_s2sVpnMgr.reconnectDisconnectedVpnByVpc(vpcId);
|
||||
}
|
||||
return _routerDao.findById(router.getId());
|
||||
} else {
|
||||
return null;
|
||||
|
|
@ -2375,9 +2465,19 @@ VirtualMachineGuru<DomainRouterVO>, Listener {
|
|||
if (offering.getRedundantRouter()) {
|
||||
return findGatewayIp(userVmId);
|
||||
}
|
||||
|
||||
DataCenter dc = _dcDao.findById(_networkMgr.getNetwork(defaultNic.getNetworkId()).getDataCenterId());
|
||||
boolean isZoneBasic = (dc.getNetworkType() == NetworkType.Basic);
|
||||
|
||||
//find domR's nic in the network
|
||||
NicVO domrDefaultNic = _nicDao.findByNetworkIdAndType(defaultNic.getNetworkId(), VirtualMachine.Type.DomainRouter);
|
||||
NicVO domrDefaultNic;
|
||||
if (isZoneBasic){
|
||||
domrDefaultNic = _nicDao.findByNetworkIdTypeAndGateway(defaultNic.getNetworkId(), VirtualMachine.Type.DomainRouter, defaultNic.getGateway());
|
||||
}
|
||||
else{
|
||||
domrDefaultNic = _nicDao.findByNetworkIdAndType(defaultNic.getNetworkId(), VirtualMachine.Type.DomainRouter);
|
||||
}
|
||||
|
||||
return domrDefaultNic.getIp4Address();
|
||||
}
|
||||
|
||||
|
|
@ -3282,12 +3382,12 @@ VirtualMachineGuru<DomainRouterVO>, Listener {
|
|||
List<? extends Nic> routerNics = _nicDao.listByVmId(router.getId());
|
||||
for (Nic routerNic : routerNics) {
|
||||
Network network = _networkMgr.getNetwork(routerNic.getNetworkId());
|
||||
if (network.getTrafficType() == TrafficType.Public) {
|
||||
boolean forVpc = router.getVpcId() != null;
|
||||
boolean forVpc = router.getVpcId() != null;
|
||||
if ((forVpc && network.getTrafficType() == TrafficType.Public) || (!forVpc && network.getTrafficType() == TrafficType.Guest)) {
|
||||
final NetworkUsageCommand usageCmd = new NetworkUsageCommand(privateIP, router.getHostName(),
|
||||
forVpc, routerNic.getIp4Address());
|
||||
UserStatisticsVO previousStats = _statsDao.findBy(router.getAccountId(),
|
||||
router.getDataCenterIdToDeployIn(), network.getId(), null, router.getId(), router.getType().toString());
|
||||
router.getDataCenterIdToDeployIn(), network.getId(), (forVpc ? routerNic.getIp4Address() : null), router.getId(), router.getType().toString());
|
||||
NetworkUsageAnswer answer = null;
|
||||
try {
|
||||
answer = (NetworkUsageAnswer) _agentMgr.easySend(router.getHostId(), usageCmd);
|
||||
|
|
@ -3309,7 +3409,7 @@ VirtualMachineGuru<DomainRouterVO>, Listener {
|
|||
}
|
||||
txn.start();
|
||||
UserStatisticsVO stats = _statsDao.lock(router.getAccountId(),
|
||||
router.getDataCenterIdToDeployIn(), network.getId(), null, router.getId(), router.getType().toString());
|
||||
router.getDataCenterIdToDeployIn(), network.getId(), (forVpc ? routerNic.getIp4Address() : null), router.getId(), router.getType().toString());
|
||||
if (stats == null) {
|
||||
s_logger.warn("unable to find stats for account: " + router.getAccountId());
|
||||
continue;
|
||||
|
|
|
|||
|
|
@ -113,6 +113,7 @@ import com.cloud.utils.net.NetUtils;
|
|||
import com.cloud.vm.DomainRouterVO;
|
||||
import com.cloud.vm.Nic;
|
||||
import com.cloud.vm.NicProfile;
|
||||
import com.cloud.vm.NicVO;
|
||||
import com.cloud.vm.ReservationContext;
|
||||
import com.cloud.vm.VirtualMachine;
|
||||
import com.cloud.vm.VirtualMachine.State;
|
||||
|
|
@ -128,6 +129,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
|
||||
|
|
@ -333,15 +335,13 @@ public class VpcVirtualNetworkApplianceManagerImpl extends VirtualNetworkApplian
|
|||
PlugNicCommand plugNicCmd = new PlugNicCommand(nic, vm.getName());
|
||||
|
||||
Commands cmds = new Commands(OnError.Stop);
|
||||
cmds.addCommand("plugnic", plugNicCmd);
|
||||
cmds.addCommand("plugnic", plugNicCmd);
|
||||
_agentMgr.send(dest.getHost().getId(), cmds);
|
||||
|
||||
PlugNicAnswer plugNicAnswer = cmds.getAnswer(PlugNicAnswer.class);
|
||||
if (!(plugNicAnswer != null && plugNicAnswer.getResult())) {
|
||||
s_logger.warn("Unable to plug nic for vm " + vm.getHostName());
|
||||
result = false;
|
||||
}
|
||||
|
||||
} catch (OperationTimedoutException e) {
|
||||
throw new AgentUnavailableException("Unable to plug nic for router " + vm.getHostName() + " in network " + network,
|
||||
dest.getHost().getId(), e);
|
||||
|
|
@ -365,8 +365,12 @@ public class VpcVirtualNetworkApplianceManagerImpl extends VirtualNetworkApplian
|
|||
|
||||
if (router.getState() == State.Running) {
|
||||
try {
|
||||
Commands cmds = new Commands(OnError.Stop);
|
||||
if(network.getTrafficType() == TrafficType.Public){
|
||||
NetworkUsageCommand netUsageCmd = new NetworkUsageCommand(router.getPrivateIpAddress(), router.getInstanceName(), "remove", true, nic.getIp());
|
||||
cmds.addCommand(netUsageCmd);
|
||||
}
|
||||
UnPlugNicCommand unplugNicCmd = new UnPlugNicCommand(nic, vm.getName());
|
||||
Commands cmds = new Commands(OnError.Stop);
|
||||
cmds.addCommand("unplugnic", unplugNicCmd);
|
||||
_agentMgr.send(dest.getHost().getId(), cmds);
|
||||
|
||||
|
|
@ -374,8 +378,14 @@ public class VpcVirtualNetworkApplianceManagerImpl extends VirtualNetworkApplian
|
|||
if (!(unplugNicAnswer != null && unplugNicAnswer.getResult())) {
|
||||
s_logger.warn("Unable to unplug nic from router " + router);
|
||||
result = false;
|
||||
}
|
||||
|
||||
} else {
|
||||
if(network.getTrafficType() == TrafficType.Public){
|
||||
NetworkUsageCommand netUsageCmd = new NetworkUsageCommand(router.getPrivateIpAddress(), router.getInstanceName(), "remove", true, nic.getIp());
|
||||
cmds = new Commands(OnError.Stop);
|
||||
cmds.addCommand(netUsageCmd);
|
||||
_agentMgr.send(dest.getHost().getId(), cmds);
|
||||
}
|
||||
}
|
||||
} catch (OperationTimedoutException e) {
|
||||
throw new AgentUnavailableException("Unable to unplug nic from rotuer " + router + " from network " + network,
|
||||
dest.getHost().getId(), e);
|
||||
|
|
@ -568,7 +578,10 @@ public class VpcVirtualNetworkApplianceManagerImpl extends VirtualNetworkApplian
|
|||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Commands netUsagecmds = new Commands(OnError.Continue);
|
||||
VpcVO vpc = _vpcDao.findById(router.getVpcId());
|
||||
|
||||
//2) Plug the nics
|
||||
for (String vlanTag : nicsToPlug.keySet()) {
|
||||
PublicIpAddress ip = nicsToPlug.get(vlanTag);
|
||||
|
|
@ -603,6 +616,16 @@ public class VpcVirtualNetworkApplianceManagerImpl extends VirtualNetworkApplian
|
|||
return false;
|
||||
}
|
||||
}
|
||||
//Create network usage commands. Send commands to router after IPAssoc
|
||||
NetworkUsageCommand netUsageCmd = new NetworkUsageCommand(router.getPrivateIpAddress(), router.getInstanceName(), true, defaultNic.getIp4Address(), vpc.getCidr());
|
||||
netUsagecmds.addCommand(netUsageCmd);
|
||||
UserStatisticsVO stats = _userStatsDao.findBy(router.getAccountId(), router.getDataCenterIdToDeployIn(),
|
||||
publicNtwk.getId(), publicNic.getIp4Address(), router.getId(), router.getType().toString());
|
||||
if (stats == null) {
|
||||
stats = new UserStatisticsVO(router.getAccountId(), router.getDataCenterIdToDeployIn(), publicNic.getIp4Address(), router.getId(),
|
||||
router.getType().toString(), publicNtwk.getId());
|
||||
_userStatsDao.persist(stats);
|
||||
}
|
||||
}
|
||||
|
||||
//3) apply the rules
|
||||
|
|
@ -634,7 +657,10 @@ public class VpcVirtualNetworkApplianceManagerImpl extends VirtualNetworkApplian
|
|||
return sendCommandsToRouter(router, cmds);
|
||||
}
|
||||
});
|
||||
|
||||
if(result && netUsagecmds.size() > 0){
|
||||
//After successful ipassoc, send commands to router
|
||||
sendCommandsToRouter(router, netUsagecmds);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
|
|
@ -1118,7 +1144,7 @@ public class VpcVirtualNetworkApplianceManagerImpl extends VirtualNetworkApplian
|
|||
String localGuestCidr = vpc.getCidr();
|
||||
String localPublicGateway = _vlanDao.findById(ip.getVlanId()).getVlanGateway();
|
||||
String peerGatewayIp = gw.getGatewayIp();
|
||||
String peerGuestCidrList = gw.getGuestCidrList();
|
||||
String peerGuestCidrList = gw.getGuestCidrList().replace(";", ",");
|
||||
String ipsecPsk = gw.getIpsecPsk();
|
||||
String ikePolicy = gw.getIkePolicy();
|
||||
String espPolicy = gw.getEspPolicy();
|
||||
|
|
@ -1325,10 +1351,19 @@ public class VpcVirtualNetworkApplianceManagerImpl extends VirtualNetworkApplian
|
|||
Nic nic = _nicDao.findByNetworkIdInstanceIdAndBroadcastUri(publicNtwkId, router.getId(),
|
||||
broadcastUri.toString());
|
||||
|
||||
if ((nic == null && nicsToPlug.get(ip.getVlanTag()) == null) || nicsToUnplug.get(ip.getVlanTag()) != null) {
|
||||
if (nic == null && nicsToPlug.get(ip.getVlanTag()) == null) {
|
||||
nicsToPlug.put(ip.getVlanTag(), ip);
|
||||
s_logger.debug("Need to plug the nic for ip=" + ip + "; vlan=" + ip.getVlanTag() +
|
||||
" in public network id =" + publicNtwkId);
|
||||
} else {
|
||||
PublicIpAddress nicToUnplug = nicsToUnplug.get(ip.getVlanTag());
|
||||
if (nicToUnplug != null) {
|
||||
NicVO nicVO = _nicDao.findByIp4AddressAndNetworkIdAndInstanceId(publicNtwkId, router.getId(), nicToUnplug.getAddress().addr());
|
||||
nicVO.setIp4Address(ip.getAddress().addr());
|
||||
_nicDao.update(nicVO.getId(), nicVO);
|
||||
s_logger.debug("Updated the nic " + nicVO + " with the new ip address " + ip.getAddress().addr());
|
||||
nicsToUnplug.remove(ip.getVlanTag());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1348,4 +1383,5 @@ public class VpcVirtualNetworkApplianceManagerImpl extends VirtualNetworkApplian
|
|||
_s2sVpnMgr.markDisconnectVpnConnByVpc(vpcId);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -207,8 +207,8 @@ public class VpcManagerImpl implements VpcManager, Manager{
|
|||
|
||||
String maxNtwks = configs.get(Config.VpcMaxNetworks.key());
|
||||
_maxNetworks = NumbersUtil.parseInt(maxNtwks, 3); // max=3 is default
|
||||
|
||||
|
||||
|
||||
|
||||
IpAddressSearch = _ipAddressDao.createSearchBuilder();
|
||||
IpAddressSearch.and("accountId", IpAddressSearch.entity().getAllocatedToAccountId(), Op.EQ);
|
||||
IpAddressSearch.and("dataCenterId", IpAddressSearch.entity().getDataCenterId(), Op.EQ);
|
||||
|
|
@ -218,7 +218,7 @@ public class VpcManagerImpl implements VpcManager, Manager{
|
|||
virtualNetworkVlanSB.and("vlanType", virtualNetworkVlanSB.entity().getVlanType(), Op.EQ);
|
||||
IpAddressSearch.join("virtualNetworkVlanSB", virtualNetworkVlanSB, IpAddressSearch.entity().getVlanId(), virtualNetworkVlanSB.entity().getId(), JoinBuilder.JoinType.INNER);
|
||||
IpAddressSearch.done();
|
||||
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
|
@ -517,7 +517,7 @@ public class VpcManagerImpl implements VpcManager, Manager{
|
|||
|
||||
//Verify that caller can perform actions in behalf of vpc owner
|
||||
_accountMgr.checkAccess(caller, null, false, owner);
|
||||
|
||||
|
||||
//check resource limit
|
||||
_resourceLimitMgr.checkResourceLimit(owner, ResourceType.vpc);
|
||||
|
||||
|
|
@ -633,7 +633,7 @@ public class VpcManagerImpl implements VpcManager, Manager{
|
|||
@DB
|
||||
public boolean destroyVpc(Vpc vpc) throws ConcurrentOperationException, ResourceUnavailableException {
|
||||
UserContext ctx = UserContext.current();
|
||||
|
||||
s_logger.debug("Destroying vpc " + vpc);
|
||||
//don't allow to delete vpc if it's in use by existing networks
|
||||
int networksCount = _ntwkDao.getNetworkCountByVpcId(vpc.getId());
|
||||
if (networksCount > 0) {
|
||||
|
|
@ -647,16 +647,16 @@ public class VpcManagerImpl implements VpcManager, Manager{
|
|||
s_logger.debug("Updating VPC " + vpc + " with state " + Vpc.State.Inactive + " as a part of vpc delete");
|
||||
VpcVO vpcVO = _vpcDao.findById(vpc.getId());
|
||||
vpcVO.setState(Vpc.State.Inactive);
|
||||
|
||||
|
||||
Transaction txn = Transaction.currentTxn();
|
||||
txn.start();
|
||||
_vpcDao.update(vpc.getId(), vpcVO);
|
||||
|
||||
|
||||
//decrement resource count
|
||||
_resourceLimitMgr.decrementResourceCount(vpc.getAccountId(), ResourceType.vpc);
|
||||
txn.commit();
|
||||
}
|
||||
|
||||
|
||||
//shutdown VPC
|
||||
if (!shutdownVpc(vpc.getId())) {
|
||||
s_logger.warn("Failed to shutdown vpc " + vpc + " as a part of vpc destroy process");
|
||||
|
|
@ -671,9 +671,10 @@ public class VpcManagerImpl implements VpcManager, Manager{
|
|||
|
||||
//update the instance with removed flag only when the cleanup is executed successfully
|
||||
if (_vpcDao.remove(vpc.getId())) {
|
||||
s_logger.debug("Vpc " + vpc + " is removed succesfully");
|
||||
s_logger.debug("Vpc " + vpc + " is destroyed succesfully");
|
||||
return true;
|
||||
} else {
|
||||
s_logger.warn("Vpc " + vpc + " failed to destroy");
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
|
@ -714,13 +715,13 @@ public class VpcManagerImpl implements VpcManager, Manager{
|
|||
@Override
|
||||
public List<? extends Vpc> listVpcs(Long id, String vpcName, String displayText, List<String> supportedServicesStr,
|
||||
String cidr, Long vpcOffId, String state, String accountName, Long domainId, String keyword,
|
||||
Long startIndex, Long pageSizeVal, Long zoneId, Boolean isRecursive, Boolean listAll, Boolean restartRequired, Map<String, String> tags) {
|
||||
Long startIndex, Long pageSizeVal, Long zoneId, Boolean isRecursive, Boolean listAll, Boolean restartRequired, Map<String, String> tags, Long projectId) {
|
||||
Account caller = UserContext.current().getCaller();
|
||||
List<Long> permittedAccounts = new ArrayList<Long>();
|
||||
|
||||
Ternary<Long, Boolean, ListProjectResourcesCriteria> domainIdRecursiveListProject = new Ternary<Long, Boolean,
|
||||
ListProjectResourcesCriteria>(domainId, isRecursive, null);
|
||||
_accountMgr.buildACLSearchParameters(caller, id, accountName, null, permittedAccounts, domainIdRecursiveListProject,
|
||||
_accountMgr.buildACLSearchParameters(caller, id, accountName, projectId, permittedAccounts, domainIdRecursiveListProject,
|
||||
listAll, false);
|
||||
domainId = domainIdRecursiveListProject.first();
|
||||
isRecursive = domainIdRecursiveListProject.second();
|
||||
|
|
@ -839,7 +840,7 @@ public class VpcManagerImpl implements VpcManager, Manager{
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
protected List<Service> getSupportedServices() {
|
||||
List<Service> services = new ArrayList<Service>();
|
||||
services.add(Network.Service.Dhcp);
|
||||
|
|
@ -865,9 +866,7 @@ public class VpcManagerImpl implements VpcManager, Manager{
|
|||
//check if vpc exists
|
||||
Vpc vpc = getActiveVpc(vpcId);
|
||||
if (vpc == null) {
|
||||
InvalidParameterValueException ex = new InvalidParameterValueException("Unable to find Enabled VPC by id specified", null);
|
||||
ex.addProxyObject("vpc", vpcId, "VPC");
|
||||
throw ex;
|
||||
throw new InvalidParameterValueException("Unable to find Enabled VPC", null);
|
||||
}
|
||||
|
||||
//permission check
|
||||
|
|
@ -929,9 +928,10 @@ public class VpcManagerImpl implements VpcManager, Manager{
|
|||
_accountMgr.checkAccess(caller, null, false, vpc);
|
||||
|
||||
//shutdown provider
|
||||
s_logger.debug("Shutting down vpc " + vpc);
|
||||
boolean success = getVpcElement().shutdownVpc(vpc);
|
||||
|
||||
//TODO - cleanup all vpc resources here (ACLs, gateways, etc)
|
||||
//TODO - shutdown all vpc resources here (ACLs, gateways, etc)
|
||||
if (success) {
|
||||
s_logger.debug("Vpc " + vpc + " has been shutdown succesfully");
|
||||
} else {
|
||||
|
|
@ -944,8 +944,12 @@ public class VpcManagerImpl implements VpcManager, Manager{
|
|||
@DB
|
||||
public void validateNtkwOffForVpc(long ntwkOffId, String cidr, String networkDomain,
|
||||
Account networkOwner, Vpc vpc, Long networkId, String gateway) {
|
||||
|
||||
|
||||
NetworkOffering guestNtwkOff = _configMgr.getNetworkOffering(ntwkOffId);
|
||||
|
||||
if (guestNtwkOff == null) {
|
||||
throw new InvalidParameterValueException("Can't find network offering by id specified", null);
|
||||
}
|
||||
|
||||
if (networkId == null) {
|
||||
//1) Validate attributes that has to be passed in when create new guest network
|
||||
|
|
@ -958,7 +962,7 @@ public class VpcManagerImpl implements VpcManager, Manager{
|
|||
|
||||
throw new InvalidParameterValueException("Only networks of type " + GuestType.Isolated + " with service "
|
||||
+ Service.SourceNat.getName() +
|
||||
" can be added as a part of VPC", null);
|
||||
" can be added as a part of VPC ", null);
|
||||
}
|
||||
|
||||
//3) No redundant router support
|
||||
|
|
@ -1002,12 +1006,11 @@ public class VpcManagerImpl implements VpcManager, Manager{
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@DB
|
||||
protected void validateNewVpcGuestNetwork(String cidr, String gateway, Account networkOwner, Vpc vpc, String networkDomain) {
|
||||
|
||||
|
||||
Transaction txn = Transaction.currentTxn();
|
||||
txn.start();
|
||||
Vpc locked = _vpcDao.acquireInLockTable(vpc.getId());
|
||||
|
|
@ -1087,6 +1090,10 @@ public class VpcManagerImpl implements VpcManager, Manager{
|
|||
vpcElement = ((VpcProvider)_ntwkMgr.getElementImplementingProvider(Provider.VPCVirtualRouter.getName()));
|
||||
}
|
||||
|
||||
if (vpcElement == null) {
|
||||
throw new CloudRuntimeException("Failed to initialize vpc element");
|
||||
}
|
||||
|
||||
return vpcElement;
|
||||
}
|
||||
|
||||
|
|
@ -1154,7 +1161,7 @@ public class VpcManagerImpl implements VpcManager, Manager{
|
|||
// Verify input parameters
|
||||
Vpc vpc = getActiveVpc(vpcId);
|
||||
if (vpc == null) {
|
||||
InvalidParameterValueException ex = new InvalidParameterValueException("Unable to find Enabled VPC by id", null);
|
||||
throw new InvalidParameterValueException("Unable to find Enabled VPC", null);
|
||||
}
|
||||
|
||||
_accountMgr.checkAccess(caller, null, false, vpc);
|
||||
|
|
@ -1220,7 +1227,7 @@ public class VpcManagerImpl implements VpcManager, Manager{
|
|||
//Validate parameters
|
||||
Vpc vpc = getActiveVpc(vpcId);
|
||||
if (vpc == null) {
|
||||
InvalidParameterValueException ex = new InvalidParameterValueException("Unable to find Enabled VPC by id", null);
|
||||
throw new InvalidParameterValueException("Unable to find Enabled VPC", null);
|
||||
}
|
||||
|
||||
//allow only one private gateway per vpc
|
||||
|
|
@ -1300,7 +1307,7 @@ public class VpcManagerImpl implements VpcManager, Manager{
|
|||
@ActionEvent(eventType = EventTypes.EVENT_PRIVATE_GATEWAY_DELETE, eventDescription = "deleting private gateway")
|
||||
@DB
|
||||
public boolean deleteVpcPrivateGateway(long gatewayId) throws ConcurrentOperationException, ResourceUnavailableException {
|
||||
|
||||
|
||||
Transaction txn = Transaction.currentTxn();
|
||||
txn.start();
|
||||
VpcGatewayVO gatewayVO = _vpcGatewayDao.acquireInLockTable(gatewayId);
|
||||
|
|
@ -1315,11 +1322,11 @@ public class VpcManagerImpl implements VpcManager, Manager{
|
|||
throw new CloudRuntimeException("Can't delete private gateway " + gatewayVO + " as it has " + routeCount +
|
||||
" static routes applied. Remove the routes first");
|
||||
}
|
||||
|
||||
|
||||
gatewayVO.setState(VpcGateway.State.Deleting);
|
||||
_vpcGatewayDao.update(gatewayVO.getId(), gatewayVO);
|
||||
s_logger.debug("Marked gateway " + gatewayVO + " with state " + VpcGateway.State.Deleting);
|
||||
|
||||
|
||||
txn.commit();
|
||||
|
||||
//1) delete the gateway on the backend
|
||||
|
|
@ -1390,11 +1397,12 @@ public class VpcManagerImpl implements VpcManager, Manager{
|
|||
Account caller = UserContext.current().getCaller();
|
||||
List<Long> permittedAccounts = new ArrayList<Long>();
|
||||
String state = cmd.getState();
|
||||
Long projectId = cmd.getProjectId();
|
||||
|
||||
Filter searchFilter = new Filter(VpcGatewayVO.class, "id", false, cmd.getStartIndex(), cmd.getPageSizeVal());
|
||||
Ternary<Long, Boolean, ListProjectResourcesCriteria> domainIdRecursiveListProject = new Ternary<Long, Boolean,
|
||||
ListProjectResourcesCriteria>(domainId, isRecursive, null);
|
||||
_accountMgr.buildACLSearchParameters(caller, null, accountName, null, permittedAccounts, domainIdRecursiveListProject,
|
||||
_accountMgr.buildACLSearchParameters(caller, id, accountName, projectId, permittedAccounts, domainIdRecursiveListProject,
|
||||
listAll, false);
|
||||
domainId = domainIdRecursiveListProject.first();
|
||||
isRecursive = domainIdRecursiveListProject.second();
|
||||
|
|
@ -1566,8 +1574,18 @@ public class VpcManagerImpl implements VpcManager, Manager{
|
|||
if (!NetUtils.isValidCIDR(cidr)){
|
||||
throw new InvalidParameterValueException("Invalid format for cidr " + cidr, null);
|
||||
}
|
||||
|
||||
//validate the cidr
|
||||
//1) CIDR should be outside of VPC cidr for guest networks
|
||||
if (NetUtils.isNetworksOverlap(vpc.getCidr(), cidr)) {
|
||||
throw new InvalidParameterValueException("CIDR should be outside of VPC cidr " + vpc.getCidr(), null);
|
||||
}
|
||||
|
||||
//2) CIDR should be outside of link-local cidr
|
||||
if (NetUtils.isNetworksOverlap(vpc.getCidr(), NetUtils.getLinkLocalCIDR())) {
|
||||
throw new InvalidParameterValueException("CIDR should be outside of link local cidr " + NetUtils.getLinkLocalCIDR(), null);
|
||||
}
|
||||
|
||||
//TODO - check cidr for the conflicts
|
||||
Transaction txn = Transaction.currentTxn();
|
||||
txn.start();
|
||||
|
||||
|
|
@ -1599,10 +1617,11 @@ public class VpcManagerImpl implements VpcManager, Manager{
|
|||
Account caller = UserContext.current().getCaller();
|
||||
List<Long> permittedAccounts = new ArrayList<Long>();
|
||||
Map<String, String> tags = cmd.getTags();
|
||||
Long projectId = cmd.getProjectId();
|
||||
|
||||
Ternary<Long, Boolean, ListProjectResourcesCriteria> domainIdRecursiveListProject = new Ternary<Long, Boolean,
|
||||
ListProjectResourcesCriteria>(domainId, isRecursive, null);
|
||||
_accountMgr.buildACLSearchParameters(caller, id, accountName, null, permittedAccounts, domainIdRecursiveListProject,
|
||||
_accountMgr.buildACLSearchParameters(caller, id, accountName, projectId, permittedAccounts, domainIdRecursiveListProject,
|
||||
listAll, false);
|
||||
domainId = domainIdRecursiveListProject.first();
|
||||
isRecursive = domainIdRecursiveListProject.second();
|
||||
|
|
@ -1734,7 +1753,7 @@ public class VpcManagerImpl implements VpcManager, Manager{
|
|||
public VpcGateway getPrivateGatewayForVpc(long vpcId) {
|
||||
return _vpcGatewayDao.getPrivateGatewayForVpc(vpcId);
|
||||
}
|
||||
|
||||
|
||||
@DB
|
||||
@Override
|
||||
@ActionEvent(eventType = EventTypes.EVENT_NET_IP_ASSIGN, eventDescription = "associating Ip", async = true)
|
||||
|
|
@ -1783,8 +1802,8 @@ public class VpcManagerImpl implements VpcManager, Manager{
|
|||
|
||||
return _ipAddressDao.findById(ipId);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
@Override
|
||||
public void unassignIPFromVpcNetwork(long ipId, long networkId) {
|
||||
IPAddressVO ip = _ipAddressDao.findById(ipId);
|
||||
|
|
@ -1818,13 +1837,13 @@ public class VpcManagerImpl implements VpcManager, Manager{
|
|||
}
|
||||
s_logger.debug("Successfully released VPC ip address " + ip + " back to VPC pool ");
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public boolean ipUsedInVpc(IpAddress ip) {
|
||||
return (ip != null && ip.getVpcId() != null &&
|
||||
(ip.isOneToOneNat() || !_firewallDao.listByIp(ip.getId()).isEmpty()));
|
||||
}
|
||||
|
||||
|
||||
@DB
|
||||
@Override
|
||||
public Network createVpcGuestNetwork(long ntwkOffId, String name, String displayText, String gateway,
|
||||
|
|
@ -1835,20 +1854,18 @@ public class VpcManagerImpl implements VpcManager, Manager{
|
|||
Vpc vpc = getActiveVpc(vpcId);
|
||||
|
||||
if (vpc == null) {
|
||||
InvalidParameterValueException ex = new InvalidParameterValueException("Unable to find Enabled VPC ", null);
|
||||
ex.addProxyObject("vpc", vpcId, "VPC");
|
||||
throw ex;
|
||||
throw new InvalidParameterValueException("Unable to find Enabled VPC ", null);
|
||||
}
|
||||
_accountMgr.checkAccess(caller, null, false, vpc);
|
||||
|
||||
|
||||
if (networkDomain == null) {
|
||||
networkDomain = vpc.getNetworkDomain();
|
||||
}
|
||||
|
||||
|
||||
if (vpc.getZoneId() != zoneId) {
|
||||
throw new InvalidParameterValueException("New network doesn't belong to vpc zone", null);
|
||||
}
|
||||
|
||||
|
||||
//1) Validate if network can be created for VPC
|
||||
validateNtkwOffForVpc(ntwkOffId, cidr, networkDomain, owner, vpc, null, gateway);
|
||||
|
||||
|
|
@ -1858,12 +1875,12 @@ public class VpcManagerImpl implements VpcManager, Manager{
|
|||
|
||||
return guestNetwork;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
protected IPAddressVO getExistingSourceNatInVpc(long ownerId, long vpcId) {
|
||||
|
||||
List<IPAddressVO> addrs = listPublicIpsAssignedToVpc(ownerId, true, vpcId);
|
||||
|
||||
|
||||
IPAddressVO sourceNatIp = null;
|
||||
if (addrs.isEmpty()) {
|
||||
return null;
|
||||
|
|
@ -1882,7 +1899,7 @@ public class VpcManagerImpl implements VpcManager, Manager{
|
|||
|
||||
return sourceNatIp;
|
||||
}
|
||||
|
||||
|
||||
protected List<IPAddressVO> listPublicIpsAssignedToVpc(long accountId, Boolean sourceNat, long vpcId) {
|
||||
SearchCriteria<IPAddressVO> sc = IpAddressSearch.create();
|
||||
sc.setParameters("accountId", accountId);
|
||||
|
|
@ -1895,8 +1912,8 @@ public class VpcManagerImpl implements VpcManager, Manager{
|
|||
|
||||
return _ipAddressDao.search(sc, null);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
@Override
|
||||
public PublicIp assignSourceNatIpAddressToVpc(Account owner, Vpc vpc) throws InsufficientAddressCapacityException, ConcurrentOperationException {
|
||||
long dcId = vpc.getZoneId();
|
||||
|
|
@ -1928,7 +1945,7 @@ public class VpcManagerImpl implements VpcManager, Manager{
|
|||
Vpc vpc = getVpc(network.getVpcId());
|
||||
validateNtkwOffForVpc(ntwkOffId, null, null, null, vpc, networkId, null);
|
||||
}
|
||||
|
||||
|
||||
return _ntwkMgr.updateGuestNetwork(networkId, name, displayText, callerAccount, callerUser, domainSuffix,
|
||||
ntwkOffId, changeCidr);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -11,4 +11,5 @@ public interface Site2SiteVpnManager extends Site2SiteVpnService {
|
|||
void markDisconnectVpnConnByVpc(long vpcId);
|
||||
List<Site2SiteVpnConnectionVO> getConnectionsForRouter(DomainRouterVO router);
|
||||
boolean deleteCustomerGatewayByAccount(long accountId);
|
||||
void reconnectDisconnectedVpnByVpc(Long vpcId);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -49,11 +49,14 @@ import com.cloud.projects.Project.ListProjectResourcesCriteria;
|
|||
import com.cloud.user.Account;
|
||||
import com.cloud.user.AccountManager;
|
||||
import com.cloud.user.UserContext;
|
||||
import com.cloud.user.UserStatisticsVO;
|
||||
import com.cloud.user.dao.AccountDao;
|
||||
import com.cloud.user.dao.UserStatisticsDao;
|
||||
import com.cloud.utils.IdentityProxy;
|
||||
import com.cloud.utils.Ternary;
|
||||
import com.cloud.utils.component.Inject;
|
||||
import com.cloud.utils.component.Manager;
|
||||
import com.cloud.utils.db.DB;
|
||||
import com.cloud.utils.db.Filter;
|
||||
import com.cloud.utils.db.GenericDao;
|
||||
import com.cloud.utils.db.JoinBuilder;
|
||||
|
|
@ -76,7 +79,7 @@ public class Site2SiteVpnManagerImpl implements Site2SiteVpnManager, Manager {
|
|||
@Inject AccountDao _accountDao;
|
||||
@Inject VpcManager _vpcMgr;
|
||||
@Inject AccountManager _accountMgr;
|
||||
|
||||
@Inject UserStatisticsDao _statsDao = null;
|
||||
String _name;
|
||||
|
||||
@Override
|
||||
|
|
@ -128,6 +131,13 @@ public class Site2SiteVpnManagerImpl implements Site2SiteVpnManager, Manager {
|
|||
|
||||
Site2SiteVpnGatewayVO gw = new Site2SiteVpnGatewayVO(owner.getAccountId(), owner.getDomainId(), ips.get(0).getId(), vpcId);
|
||||
_vpnGatewayDao.persist(gw);
|
||||
UserStatisticsVO stats = _statsDao.findBy(owner.getAccountId(), vpc.getZoneId(), ips.get(0).getSourceNetworkId(),
|
||||
ips.get(0).getAddress().toString(), gw.getId(), "VPNGateway");
|
||||
if (stats == null) {
|
||||
stats = new UserStatisticsVO(owner.getAccountId(), vpc.getZoneId(), ips.get(0).getAddress().toString(), gw.getId(),
|
||||
"VPNGateway", ips.get(0).getSourceNetworkId());
|
||||
_statsDao.persist(stats);
|
||||
}
|
||||
return gw;
|
||||
}
|
||||
|
||||
|
|
@ -218,6 +228,10 @@ public class Site2SiteVpnManagerImpl implements Site2SiteVpnManager, Manager {
|
|||
throw new InvalidParameterValueException("Unable to find specified Site to Site VPN gateway by id", null);
|
||||
}
|
||||
_accountMgr.checkAccess(caller, null, false, vpnGateway);
|
||||
|
||||
if (customerGateway.getAccountId() != vpnGateway.getAccountId() || customerGateway.getDomainId() != vpnGateway.getDomainId()) {
|
||||
throw new InvalidParameterValueException("VPN connection can only be esitablished between same account's VPN gateway and customer gateway!", null);
|
||||
}
|
||||
|
||||
if (_vpnConnectionDao.findByVpnGatewayIdAndCustomerGatewayId(vpnGatewayId, customerGatewayId) != null) {
|
||||
List<IdentityProxy> idList = new ArrayList<IdentityProxy>();
|
||||
|
|
@ -251,30 +265,39 @@ public class Site2SiteVpnManagerImpl implements Site2SiteVpnManager, Manager {
|
|||
}
|
||||
|
||||
@Override
|
||||
@DB
|
||||
public Site2SiteVpnConnection startVpnConnection(long id) throws ResourceUnavailableException {
|
||||
Site2SiteVpnConnectionVO conn = _vpnConnectionDao.findById(id);
|
||||
if (conn.getState() != State.Pending && conn.getState() != State.Disconnected) {
|
||||
List<IdentityProxy> idList = new ArrayList<IdentityProxy>();
|
||||
idList.add(new IdentityProxy(conn, id, "connectionId"));
|
||||
throw new InvalidParameterValueException("Site to site VPN connection with specified connectionId not in correct state(pending or disconnected) to process!", idList);
|
||||
Site2SiteVpnConnectionVO conn = _vpnConnectionDao.acquireInLockTable(id);
|
||||
if (conn == null) {
|
||||
throw new CloudRuntimeException("Unable to acquire lock on " + conn);
|
||||
}
|
||||
try {
|
||||
if (conn.getState() != State.Pending && conn.getState() != State.Disconnected) {
|
||||
List<IdentityProxy> idList = new ArrayList<IdentityProxy>();
|
||||
idList.add(new IdentityProxy(conn, id, "connectionId"));
|
||||
throw new InvalidParameterValueException("Site to site VPN connection with specified connectionId not in correct state(pending or disconnected) to process!", idList);
|
||||
}
|
||||
|
||||
conn.setState(State.Pending);
|
||||
_vpnConnectionDao.persist(conn);
|
||||
List <? extends Site2SiteVpnServiceProvider> elements = _networkMgr.getSite2SiteVpnElements();
|
||||
boolean result = true;
|
||||
for (Site2SiteVpnServiceProvider element : elements) {
|
||||
result = result & element.startSite2SiteVpn(conn);
|
||||
}
|
||||
|
||||
if (result) {
|
||||
conn.setState(State.Connected);
|
||||
conn.setState(State.Pending);
|
||||
_vpnConnectionDao.persist(conn);
|
||||
return conn;
|
||||
|
||||
List <? extends Site2SiteVpnServiceProvider> elements = _networkMgr.getSite2SiteVpnElements();
|
||||
boolean result = true;
|
||||
for (Site2SiteVpnServiceProvider element : elements) {
|
||||
result = result & element.startSite2SiteVpn(conn);
|
||||
}
|
||||
|
||||
if (result) {
|
||||
conn.setState(State.Connected);
|
||||
_vpnConnectionDao.persist(conn);
|
||||
return conn;
|
||||
}
|
||||
conn.setState(State.Error);
|
||||
_vpnConnectionDao.persist(conn);
|
||||
throw new ResourceUnavailableException("Failed to apply site-to-site VPN", Site2SiteVpnConnection.class, id);
|
||||
} finally {
|
||||
_vpnConnectionDao.releaseFromLockTable(conn.getId());
|
||||
}
|
||||
conn.setState(State.Error);
|
||||
_vpnConnectionDao.persist(conn);
|
||||
throw new ResourceUnavailableException("Failed to apply site-to-site VPN", Site2SiteVpnConnection.class, id);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
@ -439,26 +462,35 @@ public class Site2SiteVpnManagerImpl implements Site2SiteVpnManager, Manager {
|
|||
return true;
|
||||
}
|
||||
|
||||
@DB
|
||||
private void stopVpnConnection(Long id) throws ResourceUnavailableException {
|
||||
Site2SiteVpnConnectionVO conn = _vpnConnectionDao.findById(id);
|
||||
if (conn.getState() != State.Connected && conn.getState() != State.Error) {
|
||||
List<IdentityProxy> idList = new ArrayList<IdentityProxy>();
|
||||
idList.add(new IdentityProxy(conn, id, "vpnConnectionId"));
|
||||
throw new InvalidParameterValueException("Site to site VPN connection with specified id is not in correct state(connected) to process disconnect!", idList);
|
||||
Site2SiteVpnConnectionVO conn = _vpnConnectionDao.acquireInLockTable(id);
|
||||
if (conn == null) {
|
||||
throw new CloudRuntimeException("Unable to acquire lock on " + conn);
|
||||
}
|
||||
try {
|
||||
if (conn.getState() != State.Connected && conn.getState() != State.Error) {
|
||||
List<IdentityProxy> idList = new ArrayList<IdentityProxy>();
|
||||
idList.add(new IdentityProxy(conn, id, "vpnConnectionId"));
|
||||
throw new InvalidParameterValueException("Site to site VPN connection with specified id is not in correct state(connected) to process disconnect!", idList);
|
||||
}
|
||||
|
||||
List <? extends Site2SiteVpnServiceProvider> elements = _networkMgr.getSite2SiteVpnElements();
|
||||
boolean result = true;
|
||||
conn.setState(State.Disconnected);
|
||||
_vpnConnectionDao.persist(conn);
|
||||
for (Site2SiteVpnServiceProvider element : elements) {
|
||||
result = result & element.stopSite2SiteVpn(conn);
|
||||
}
|
||||
|
||||
if (!result) {
|
||||
conn.setState(State.Error);
|
||||
conn.setState(State.Disconnected);
|
||||
_vpnConnectionDao.persist(conn);
|
||||
throw new ResourceUnavailableException("Failed to apply site-to-site VPN", Site2SiteVpnConnection.class, id);
|
||||
|
||||
List <? extends Site2SiteVpnServiceProvider> elements = _networkMgr.getSite2SiteVpnElements();
|
||||
boolean result = true;
|
||||
for (Site2SiteVpnServiceProvider element : elements) {
|
||||
result = result & element.stopSite2SiteVpn(conn);
|
||||
}
|
||||
|
||||
if (!result) {
|
||||
conn.setState(State.Error);
|
||||
_vpnConnectionDao.persist(conn);
|
||||
throw new ResourceUnavailableException("Failed to apply site-to-site VPN", Site2SiteVpnConnection.class, id);
|
||||
}
|
||||
} finally {
|
||||
_vpnConnectionDao.releaseFromLockTable(conn.getId());
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -641,15 +673,24 @@ public class Site2SiteVpnManagerImpl implements Site2SiteVpnManager, Manager {
|
|||
}
|
||||
|
||||
@Override
|
||||
@DB
|
||||
public void markDisconnectVpnConnByVpc(long vpcId) {
|
||||
List<Site2SiteVpnConnectionVO> conns = _vpnConnectionDao.listByVpcId(vpcId);
|
||||
for (Site2SiteVpnConnectionVO conn : conns) {
|
||||
if (conn == null) {
|
||||
continue;
|
||||
}
|
||||
if (conn.getState() == Site2SiteVpnConnection.State.Connected) {
|
||||
conn.setState(Site2SiteVpnConnection.State.Disconnected);
|
||||
_vpnConnectionDao.persist(conn);
|
||||
Site2SiteVpnConnectionVO lock = _vpnConnectionDao.acquireInLockTable(conn.getId());
|
||||
if (lock == null) {
|
||||
throw new CloudRuntimeException("Unable to acquire lock on " + conn);
|
||||
}
|
||||
try {
|
||||
if (conn.getState() == Site2SiteVpnConnection.State.Connected) {
|
||||
conn.setState(Site2SiteVpnConnection.State.Disconnected);
|
||||
_vpnConnectionDao.persist(conn);
|
||||
}
|
||||
} finally {
|
||||
_vpnConnectionDao.releaseFromLockTable(lock.getId());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -675,4 +716,22 @@ public class Site2SiteVpnManagerImpl implements Site2SiteVpnManager, Manager {
|
|||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void reconnectDisconnectedVpnByVpc(Long vpcId) {
|
||||
List<Site2SiteVpnConnectionVO> conns = _vpnConnectionDao.listByVpcId(vpcId);
|
||||
for (Site2SiteVpnConnectionVO conn : conns) {
|
||||
if (conn == null) {
|
||||
continue;
|
||||
}
|
||||
if (conn.getState() == Site2SiteVpnConnection.State.Disconnected) {
|
||||
try {
|
||||
startVpnConnection(conn.getId());
|
||||
} catch (ResourceUnavailableException e) {
|
||||
Site2SiteCustomerGatewayVO gw = _customerGatewayDao.findById(conn.getCustomerGatewayId());
|
||||
s_logger.warn("Site2SiteVpnManager: Fail to re-initiate VPN connection " + conn.getId() + " which connect to " + gw.getName());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -611,7 +611,7 @@ public class ResourceManagerImpl implements ResourceManager, ResourceService, Ma
|
|||
if (clusterId != null) {
|
||||
ClusterVO cluster = _clusterDao.findById(clusterId);
|
||||
if (cluster == null) {
|
||||
InvalidParameterValueException ex = new InvalidParameterValueException("can not find cluster by Id", null);
|
||||
throw new InvalidParameterValueException("can not find cluster", null);
|
||||
} else {
|
||||
if (cluster.getGuid() == null) {
|
||||
List<HostVO> hosts = listAllHostsInCluster(clusterId);
|
||||
|
|
|
|||
|
|
@ -1303,9 +1303,9 @@ public class ManagementServerImpl implements ManagementServer {
|
|||
}// If ISO requested then it should be ISO.
|
||||
if (isIso && template.getFormat() != ImageFormat.ISO) {
|
||||
s_logger.error("Template Id " + templateId + " is not an ISO");
|
||||
InvalidParameterValueException ex = new InvalidParameterValueException("Specified Template Id is not an ISO", null);
|
||||
ex.addProxyObject(template, templateId, "templateId");
|
||||
throw ex;
|
||||
List<IdentityProxy> idList = new ArrayList<IdentityProxy>();
|
||||
idList.add(new IdentityProxy(template, templateId, "templateId"));
|
||||
throw new InvalidParameterValueException("Specified Template Id is not an ISO", idList);
|
||||
}// If ISO not requested then it shouldn't be an ISO.
|
||||
if (!isIso && template.getFormat() == ImageFormat.ISO) {
|
||||
s_logger.error("Incorrect format of the template id " + templateId);
|
||||
|
|
|
|||
|
|
@ -175,7 +175,8 @@ public class ConsoleProxyServlet extends HttpServlet {
|
|||
return;
|
||||
}
|
||||
|
||||
String rootUrl = _ms.getConsoleAccessUrlRoot(vmId);
|
||||
String rootUrl = _ms.getConsoleAccessUrlRoot(vmId);
|
||||
|
||||
if(rootUrl == null) {
|
||||
sendResponse(resp, "");
|
||||
return;
|
||||
|
|
@ -226,7 +227,9 @@ public class ConsoleProxyServlet extends HttpServlet {
|
|||
return;
|
||||
}
|
||||
|
||||
String rootUrl = _ms.getConsoleAccessUrlRoot(vmId);
|
||||
String rootUrl = _ms.getConsoleAccessUrlRoot(vmId);
|
||||
//String rootUrl = "http://localhost:8099";
|
||||
|
||||
if(rootUrl == null) {
|
||||
sendResponse(resp, "<html><body><p>Console access will be ready in a few minutes. Please try it again later.</p></body></html>");
|
||||
return;
|
||||
|
|
@ -322,6 +325,7 @@ public class ConsoleProxyServlet extends HttpServlet {
|
|||
|
||||
ConsoleProxyPasswordBasedEncryptor encryptor = new ConsoleProxyPasswordBasedEncryptor(_ms.getHashKey());
|
||||
ConsoleProxyClientParam param = new ConsoleProxyClientParam();
|
||||
|
||||
param.setClientHostAddress(parsedHostInfo.first());
|
||||
param.setClientHostPort(portInfo.second());
|
||||
param.setClientHostPassword(sid);
|
||||
|
|
@ -331,9 +335,9 @@ public class ConsoleProxyServlet extends HttpServlet {
|
|||
param.setClientTunnelUrl(parsedHostInfo.second());
|
||||
param.setClientTunnelSession(parsedHostInfo.third());
|
||||
}
|
||||
|
||||
sb.append("/ajax?token=" + encryptor.encryptObject(ConsoleProxyClientParam.class, param));
|
||||
sb.append("&w=").append(w).append("&h=").append(h);
|
||||
s_logger.debug("Thumbnail url params" + param.toString());
|
||||
sb.append("/ajaximg?token=" + encryptor.encryptObject(ConsoleProxyClientParam.class, param));
|
||||
sb.append("&w=").append(w).append("&h=").append(h).append("&key=0");
|
||||
|
||||
if(s_logger.isDebugEnabled()) {
|
||||
s_logger.debug("Compose thumbnail url: " + sb.toString());
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
@ -642,6 +639,9 @@ public class StorageManagerImpl implements StorageManager, Manager, ClusterManag
|
|||
Pair<VolumeVO, String> volumeDetails = createVolumeFromSnapshot(volume, snapshot);
|
||||
if (volumeDetails != null) {
|
||||
createdVolume = volumeDetails.first();
|
||||
UsageEventVO usageEvent = new UsageEventVO(EventTypes.EVENT_VOLUME_CREATE, createdVolume.getAccountId(), createdVolume.getDataCenterId(), createdVolume.getId(), createdVolume.getName(),
|
||||
createdVolume.getDiskOfferingId(), null, createdVolume.getSize());
|
||||
_usageEventDao.persist(usageEvent);
|
||||
}
|
||||
return createdVolume;
|
||||
}
|
||||
|
|
@ -1996,8 +1996,11 @@ public class StorageManagerImpl implements StorageManager, Manager, ClusterManag
|
|||
volume.setDomainId((caller == null) ? Domain.ROOT_DOMAIN : caller.getDomainId());
|
||||
|
||||
volume = _volsDao.persist(volume);
|
||||
UsageEventVO usageEvent = new UsageEventVO(EventTypes.EVENT_VOLUME_CREATE, volume.getAccountId(), volume.getDataCenterId(), volume.getId(), volume.getName(), diskOfferingId, null, size);
|
||||
_usageEventDao.persist(usageEvent);
|
||||
if(cmd.getSnapshotId() == null){
|
||||
//for volume created from snapshot, create usage event after volume creation
|
||||
UsageEventVO usageEvent = new UsageEventVO(EventTypes.EVENT_VOLUME_CREATE, volume.getAccountId(), volume.getDataCenterId(), volume.getId(), volume.getName(), diskOfferingId, null, size);
|
||||
_usageEventDao.persist(usageEvent);
|
||||
}
|
||||
|
||||
UserContext.current().setEventDetails("Volume Id: " + volume.getId());
|
||||
|
||||
|
|
@ -3223,7 +3226,8 @@ public class StorageManagerImpl implements StorageManager, Manager, ClusterManag
|
|||
if (s_logger.isDebugEnabled()) {
|
||||
s_logger.debug("Mismatch in storage pool " + assignedPool + " assigned by deploymentPlanner and the one associated with volume " + vol);
|
||||
}
|
||||
if (vm.getServiceOffering().getUseLocalStorage())
|
||||
DiskOfferingVO diskOffering = _diskOfferingDao.findById(vol.getDiskOfferingId());
|
||||
if (diskOffering.getUseLocalStorage())
|
||||
{
|
||||
if (s_logger.isDebugEnabled()) {
|
||||
s_logger.debug("Local volume " + vol + " will be recreated on storage pool " + assignedPool + " assigned by deploymentPlanner");
|
||||
|
|
@ -3234,10 +3238,12 @@ public class StorageManagerImpl implements StorageManager, Manager, ClusterManag
|
|||
s_logger.debug("Shared volume " + vol + " will be migrated on storage pool " + assignedPool + " assigned by deploymentPlanner");
|
||||
}
|
||||
try {
|
||||
Volume migratedVol = migrateVolume(vol.getId(), assignedPool.getId());
|
||||
vm.addDisk(new VolumeTO(migratedVol, assignedPool));
|
||||
List<Volume> volumesToMigrate = new ArrayList<Volume>();
|
||||
volumesToMigrate.add(vol);
|
||||
migrateVolumes(volumesToMigrate, assignedPool);
|
||||
vm.addDisk(new VolumeTO(vol, assignedPool));
|
||||
} catch (ConcurrentOperationException e) {
|
||||
throw new StorageUnavailableException("Volume migration failed for " + vol, Volume.class, vol.getId());
|
||||
throw new CloudRuntimeException("Migration of volume " + vol + " to storage pool " + assignedPool + " failed", e);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -525,7 +525,7 @@ public class UserVmManagerImpl implements UserVmManager, UserVmService, Manager
|
|||
|
||||
return maxDataVolumesSupported.intValue();
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
@ActionEvent(eventType = EventTypes.EVENT_VOLUME_ATTACH, eventDescription = "attaching volume", async = true)
|
||||
public Volume attachVolumeToVM(AttachVolumeCmd command) {
|
||||
|
|
@ -2549,6 +2549,9 @@ public class UserVmManagerImpl implements UserVmManager, UserVmService, Manager
|
|||
private void validateUserData(String userData) {
|
||||
byte[] decodedUserData = null;
|
||||
if (userData != null) {
|
||||
if ( !userData.matches("^([A-Za-z0-9+/]{4})*([A-Za-z0-9+/]{4}|[A-Za-z0-9+/]{3}=|[A-Za-z0-9+/]{2}==)$")) {
|
||||
throw new InvalidParameterValueException("User data is not base64 encoded", null);
|
||||
}
|
||||
if (userData.length() >= 2 * MAX_USER_DATA_LENGTH_BYTES) {
|
||||
throw new InvalidParameterValueException("User data is too long", null);
|
||||
}
|
||||
|
|
@ -2928,9 +2931,7 @@ public class UserVmManagerImpl implements UserVmManager, UserVmService, Manager
|
|||
// Verify input parameters
|
||||
UserVmVO vm = _vmDao.findById(vmId);
|
||||
if (vm == null || vm.getRemoved() != null) {
|
||||
InvalidParameterValueException ex = new InvalidParameterValueException("Unable to find a virtual machine with specified vmId", null);
|
||||
ex.addProxyObject(vm, vmId, "vmId");
|
||||
throw ex;
|
||||
throw new InvalidParameterValueException("Unable to find a virtual machine with specified vmId", null);
|
||||
}
|
||||
|
||||
if (vm.getState() == State.Destroyed || vm.getState() == State.Expunging) {
|
||||
|
|
@ -3138,11 +3139,11 @@ public class UserVmManagerImpl implements UserVmManager, UserVmService, Manager
|
|||
if (id != null) {
|
||||
sc.setParameters("id", id);
|
||||
}
|
||||
|
||||
|
||||
if (templateId != null) {
|
||||
sc.setParameters("templateId", templateId);
|
||||
}
|
||||
|
||||
|
||||
if (isoId != null) {
|
||||
sc.setParameters("isoId", isoId);
|
||||
}
|
||||
|
|
@ -3314,9 +3315,9 @@ public class UserVmManagerImpl implements UserVmManager, UserVmService, Manager
|
|||
if (s_logger.isDebugEnabled()) {
|
||||
s_logger.debug("VM is not Running, unable to migrate the vm " + vm);
|
||||
}
|
||||
InvalidParameterValueException ex = new InvalidParameterValueException("VM is not Running, unable to migrate the vm with specified id", null);
|
||||
ex.addProxyObject(vm, vmId, "vmId");
|
||||
throw ex;
|
||||
List<IdentityProxy> idList = new ArrayList<IdentityProxy>();
|
||||
idList.add(new IdentityProxy(vm, vmId, "vmId"));
|
||||
throw new InvalidParameterValueException("VM is not Running, unable to migrate the vm with specified id", idList);
|
||||
}
|
||||
if (!vm.getHypervisorType().equals(HypervisorType.XenServer) && !vm.getHypervisorType().equals(HypervisorType.VMware) && !vm.getHypervisorType().equals(HypervisorType.KVM) && !vm.getHypervisorType().equals(HypervisorType.Ovm)) {
|
||||
if (s_logger.isDebugEnabled()) {
|
||||
|
|
@ -3396,9 +3397,9 @@ public class UserVmManagerImpl implements UserVmManager, UserVmService, Manager
|
|||
}
|
||||
//don't allow to move the vm from the project
|
||||
if (oldAccount.getType() == Account.ACCOUNT_TYPE_PROJECT) {
|
||||
InvalidParameterValueException ex = new InvalidParameterValueException("Specified Vm id belongs to the project and can't be moved", null);
|
||||
ex.addProxyObject(vm, cmd.getVmId(), "vmId");
|
||||
throw ex;
|
||||
List<IdentityProxy> idList = new ArrayList<IdentityProxy>();
|
||||
idList.add(new IdentityProxy(vm, cmd.getVmId(), "vmId"));
|
||||
throw new InvalidParameterValueException("Specified Vm id belongs to the project and can't be moved", idList);
|
||||
}
|
||||
Account newAccount = _accountService.getActiveAccountByName(cmd.getAccountName(), cmd.getDomainId());
|
||||
if (newAccount == null || newAccount.getType() == Account.ACCOUNT_TYPE_PROJECT) {
|
||||
|
|
@ -3425,8 +3426,7 @@ public class UserVmManagerImpl implements UserVmManager, UserVmService, Manager
|
|||
idList.add(new IdentityProxy(oldAccount, oldAccount.getAccountId(), "accountId"));
|
||||
throw new InvalidParameterValueException("The account with the specified id should be same domain for moving VM between two accounts.", idList);
|
||||
}
|
||||
|
||||
|
||||
|
||||
// don't allow to move the vm if there are existing PF/LB/Static Nat rules, or vm is assigned to static Nat ip
|
||||
List<PortForwardingRuleVO> pfrules = _portForwardingDao.listByVm(cmd.getVmId());
|
||||
if (pfrules != null && pfrules.size() > 0){
|
||||
|
|
@ -3456,6 +3456,9 @@ public class UserVmManagerImpl implements UserVmManager, UserVmService, Manager
|
|||
//VV 2: check if account/domain is with in resource limits to create a new vm
|
||||
_resourceLimitMgr.checkResourceLimit(newAccount, ResourceType.user_vm);
|
||||
|
||||
//VV 3: check if volumes are with in resource limits
|
||||
_resourceLimitMgr.checkResourceLimit(newAccount, ResourceType.volume, _volsDao.findByInstance(cmd.getVmId()).size());
|
||||
|
||||
// VV 4: Check if new owner can use the vm template
|
||||
VirtualMachineTemplate template = _templateDao.findById(vm.getTemplateId());
|
||||
if (!template.isPublicTemplate()) {
|
||||
|
|
@ -3680,9 +3683,7 @@ public class UserVmManagerImpl implements UserVmManager, UserVmService, Manager
|
|||
long vmId = cmd.getVmId();
|
||||
UserVmVO vm = _vmDao.findById(vmId);
|
||||
if (vm == null) {
|
||||
InvalidParameterValueException ex = new InvalidParameterValueException("Cann not find VM by ID ", null);
|
||||
ex.addProxyObject(vm, vmId, "vmId");
|
||||
throw ex;
|
||||
throw new InvalidParameterValueException("Cann not find VM", null);
|
||||
}
|
||||
|
||||
Account owner = _accountDao.findById(vm.getAccountId());
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load Diff
|
|
@ -288,12 +288,14 @@ public class DomainRouterDaoImpl extends GenericDaoBase<DomainRouterVO, Long> im
|
|||
RouterNetworkVO routerNtwkMap = new RouterNetworkVO(router.getId(), guestNetwork.getId(), guestNetwork.getGuestType());
|
||||
_routerNetworkDao.persist(routerNtwkMap);
|
||||
//2) create user stats entry for the network
|
||||
UserStatisticsVO stats = _userStatsDao.findBy(router.getAccountId(), router.getDataCenterIdToDeployIn(),
|
||||
guestNetwork.getId(), null, router.getId(), router.getType().toString());
|
||||
if (stats == null) {
|
||||
stats = new UserStatisticsVO(router.getAccountId(), router.getDataCenterIdToDeployIn(), null, router.getId(),
|
||||
router.getType().toString(), guestNetwork.getId());
|
||||
_userStatsDao.persist(stats);
|
||||
if(router.getVpcId() == null){
|
||||
UserStatisticsVO stats = _userStatsDao.findBy(router.getAccountId(), router.getDataCenterIdToDeployIn(),
|
||||
guestNetwork.getId(), null, router.getId(), router.getType().toString());
|
||||
if (stats == null) {
|
||||
stats = new UserStatisticsVO(router.getAccountId(), router.getDataCenterIdToDeployIn(), null, router.getId(),
|
||||
router.getType().toString(), guestNetwork.getId());
|
||||
_userStatsDao.persist(stats);
|
||||
}
|
||||
}
|
||||
txn.commit();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -33,6 +33,7 @@ public interface NicDao extends GenericDao<NicVO, Long> {
|
|||
void removeNicsForInstance(long instanceId);
|
||||
|
||||
NicVO findByNetworkIdAndType(long networkId, VirtualMachine.Type vmType);
|
||||
NicVO findByNetworkIdTypeAndGateway(long networkId, VirtualMachine.Type vmType, String gateway);
|
||||
|
||||
NicVO findByIp4AddressAndNetworkId(String ip4Address, long networkId);
|
||||
|
||||
|
|
|
|||
|
|
@ -43,6 +43,7 @@ public class NicDaoImpl extends GenericDaoBase<NicVO, Long> implements NicDao {
|
|||
AllFieldsSearch.and("network", AllFieldsSearch.entity().getNetworkId(), Op.EQ);
|
||||
AllFieldsSearch.and("vmType", AllFieldsSearch.entity().getVmType(), Op.EQ);
|
||||
AllFieldsSearch.and("address", AllFieldsSearch.entity().getIp4Address(), Op.EQ);
|
||||
AllFieldsSearch.and("gateway", AllFieldsSearch.entity().getGateway(), Op.EQ);
|
||||
AllFieldsSearch.and("isDefault", AllFieldsSearch.entity().isDefaultNic(), Op.EQ);
|
||||
AllFieldsSearch.and("broadcastUri", AllFieldsSearch.entity().getBroadcastUri(), Op.EQ);
|
||||
AllFieldsSearch.done();
|
||||
|
|
@ -126,6 +127,15 @@ public class NicDaoImpl extends GenericDaoBase<NicVO, Long> implements NicDao {
|
|||
return findOneBy(sc);
|
||||
}
|
||||
|
||||
@Override
|
||||
public NicVO findByNetworkIdTypeAndGateway(long networkId, VirtualMachine.Type vmType, String gateway) {
|
||||
SearchCriteria<NicVO> sc = AllFieldsSearch.create();
|
||||
sc.setParameters("network", networkId);
|
||||
sc.setParameters("vmType", vmType);
|
||||
sc.setParameters("gateway", gateway);
|
||||
return findOneBy(sc);
|
||||
}
|
||||
|
||||
@Override
|
||||
public NicVO findByIp4AddressAndNetworkId(String ip4Address, long networkId) {
|
||||
SearchCriteria<NicVO> sc = AllFieldsSearch.create();
|
||||
|
|
|
|||
|
|
@ -51,7 +51,6 @@ import com.cloud.network.element.UserDataServiceProvider;
|
|||
import com.cloud.network.guru.NetworkGuru;
|
||||
import com.cloud.network.rules.FirewallRule;
|
||||
import com.cloud.network.rules.StaticNat;
|
||||
import com.cloud.network.vpc.Vpc;
|
||||
import com.cloud.offering.NetworkOffering;
|
||||
import com.cloud.offerings.NetworkOfferingVO;
|
||||
import com.cloud.user.Account;
|
||||
|
|
@ -946,15 +945,6 @@ public class MockNetworkManagerImpl implements NetworkManager, Manager, NetworkS
|
|||
return null;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see com.cloud.network.NetworkManager#unassignIPFromVpcNetwork(long)
|
||||
*/
|
||||
@Override
|
||||
public void unassignIPFromVpcNetwork(long ipId, long networkId) {
|
||||
// TODO Auto-generated method stub
|
||||
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see com.cloud.network.NetworkManager#getNicProfile(com.cloud.vm.VirtualMachine, long)
|
||||
*/
|
||||
|
|
@ -973,16 +963,6 @@ public class MockNetworkManagerImpl implements NetworkManager, Manager, NetworkS
|
|||
return false;
|
||||
}
|
||||
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see com.cloud.network.NetworkService#allocateIP(com.cloud.user.Account, boolean, long)
|
||||
*/
|
||||
@Override
|
||||
public IpAddress allocateIP(Account ipOwner, boolean isSystem, long zoneId) throws ResourceAllocationException, InsufficientAddressCapacityException, ConcurrentOperationException {
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see com.cloud.network.NetworkService#listNetworksByVpc(long)
|
||||
*/
|
||||
|
|
@ -1010,15 +990,6 @@ public class MockNetworkManagerImpl implements NetworkManager, Manager, NetworkS
|
|||
return null;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see com.cloud.network.NetworkManager#assignSourceNatIpAddressToVpc(com.cloud.user.Account, com.cloud.network.vpc.Vpc)
|
||||
*/
|
||||
@Override
|
||||
public PublicIp assignSourceNatIpAddressToVpc(Account owner, Vpc vpc) throws InsufficientAddressCapacityException, ConcurrentOperationException {
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see com.cloud.network.NetworkService#canUseForDeploy(com.cloud.network.Network)
|
||||
*/
|
||||
|
|
@ -1085,11 +1056,29 @@ public class MockNetworkManagerImpl implements NetworkManager, Manager, NetworkS
|
|||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see com.cloud.network.NetworkManager#ipUsedInVpc(com.cloud.network.IpAddress)
|
||||
* @see com.cloud.network.NetworkService#allocateIP(com.cloud.user.Account, long)
|
||||
*/
|
||||
@Override
|
||||
public boolean ipUsedInVpc(IpAddress ip) {
|
||||
public IpAddress allocateIP(Account ipOwner, long zoneId) throws ResourceAllocationException, InsufficientAddressCapacityException, ConcurrentOperationException {
|
||||
// TODO Auto-generated method stub
|
||||
return false;
|
||||
return null;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see com.cloud.network.NetworkManager#markPublicIpAsAllocated(com.cloud.network.IPAddressVO)
|
||||
*/
|
||||
@Override
|
||||
public void markPublicIpAsAllocated(IPAddressVO addr) {
|
||||
// TODO Auto-generated method stub
|
||||
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see com.cloud.network.NetworkManager#assignDedicateIpAddress(com.cloud.user.Account, java.lang.Long, java.lang.Long, long, boolean)
|
||||
*/
|
||||
@Override
|
||||
public PublicIp assignDedicateIpAddress(Account owner, Long guestNtwkId, Long vpcId, long dcId, boolean isSourceNat) throws ConcurrentOperationException, InsufficientAddressCapacityException {
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -39,7 +39,7 @@ import com.cloud.utils.db.SearchCriteria;
|
|||
|
||||
|
||||
@Local(value = { AccountManager.class, AccountService.class })
|
||||
public class MockAccountManagerImpl implements Manager, AccountManager {
|
||||
public class MockAccountManagerImpl implements Manager, AccountManager, AccountService {
|
||||
|
||||
|
||||
@Override
|
||||
|
|
@ -98,14 +98,12 @@ public class MockAccountManagerImpl implements Manager, AccountManager {
|
|||
|
||||
@Override
|
||||
public Account getSystemAccount() {
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
return new AccountVO();
|
||||
}
|
||||
|
||||
@Override
|
||||
public User getSystemUser() {
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
return new UserVO();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
|||
|
|
@ -0,0 +1,599 @@
|
|||
// Copyright 2012 Citrix Systems, Inc. Licensed under the
|
||||
// Apache License, Version 2.0 (the "License"); you may not use this
|
||||
// file except in compliance with the License. Citrix Systems, Inc.
|
||||
// reserves all rights not expressly granted by the License.
|
||||
// You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
//
|
||||
// Automatically generated by addcopyright.py at 04/03/2012
|
||||
package com.cloud.vpc;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
|
||||
import javax.ejb.Local;
|
||||
import javax.naming.ConfigurationException;
|
||||
import javax.naming.NamingException;
|
||||
|
||||
import com.cloud.api.commands.CreateDiskOfferingCmd;
|
||||
import com.cloud.api.commands.CreateNetworkOfferingCmd;
|
||||
import com.cloud.api.commands.CreateServiceOfferingCmd;
|
||||
import com.cloud.api.commands.CreateVlanIpRangeCmd;
|
||||
import com.cloud.api.commands.CreateZoneCmd;
|
||||
import com.cloud.api.commands.DeleteDiskOfferingCmd;
|
||||
import com.cloud.api.commands.DeleteNetworkOfferingCmd;
|
||||
import com.cloud.api.commands.DeletePodCmd;
|
||||
import com.cloud.api.commands.DeleteServiceOfferingCmd;
|
||||
import com.cloud.api.commands.DeleteVlanIpRangeCmd;
|
||||
import com.cloud.api.commands.DeleteZoneCmd;
|
||||
import com.cloud.api.commands.LDAPConfigCmd;
|
||||
import com.cloud.api.commands.LDAPRemoveCmd;
|
||||
import com.cloud.api.commands.ListNetworkOfferingsCmd;
|
||||
import com.cloud.api.commands.UpdateCfgCmd;
|
||||
import com.cloud.api.commands.UpdateDiskOfferingCmd;
|
||||
import com.cloud.api.commands.UpdateNetworkOfferingCmd;
|
||||
import com.cloud.api.commands.UpdatePodCmd;
|
||||
import com.cloud.api.commands.UpdateServiceOfferingCmd;
|
||||
import com.cloud.api.commands.UpdateZoneCmd;
|
||||
import com.cloud.configuration.Configuration;
|
||||
import com.cloud.configuration.ConfigurationManager;
|
||||
import com.cloud.configuration.ConfigurationService;
|
||||
import com.cloud.dc.ClusterVO;
|
||||
import com.cloud.dc.DataCenter;
|
||||
import com.cloud.dc.DataCenter.NetworkType;
|
||||
import com.cloud.dc.DataCenterVO;
|
||||
import com.cloud.dc.HostPodVO;
|
||||
import com.cloud.dc.Pod;
|
||||
import com.cloud.dc.Vlan;
|
||||
import com.cloud.exception.ConcurrentOperationException;
|
||||
import com.cloud.exception.InsufficientCapacityException;
|
||||
import com.cloud.exception.InvalidParameterValueException;
|
||||
import com.cloud.exception.ResourceAllocationException;
|
||||
import com.cloud.exception.ResourceUnavailableException;
|
||||
import com.cloud.network.Network.Capability;
|
||||
import com.cloud.network.Network.GuestType;
|
||||
import com.cloud.network.Network.Provider;
|
||||
import com.cloud.network.Network.Service;
|
||||
import com.cloud.network.Networks.TrafficType;
|
||||
import com.cloud.offering.DiskOffering;
|
||||
import com.cloud.offering.NetworkOffering;
|
||||
import com.cloud.offering.NetworkOffering.Availability;
|
||||
import com.cloud.offering.ServiceOffering;
|
||||
import com.cloud.offerings.NetworkOfferingVO;
|
||||
import com.cloud.offerings.dao.NetworkOfferingDao;
|
||||
import com.cloud.org.Grouping.AllocationState;
|
||||
import com.cloud.service.ServiceOfferingVO;
|
||||
import com.cloud.storage.DiskOfferingVO;
|
||||
import com.cloud.user.Account;
|
||||
import com.cloud.utils.component.Inject;
|
||||
import com.cloud.utils.component.Manager;
|
||||
import com.cloud.vm.VirtualMachine.Type;
|
||||
|
||||
@Local(value = { ConfigurationManager.class, ConfigurationService.class })
|
||||
public class MockConfigurationManagerImpl implements ConfigurationManager, ConfigurationService, Manager{
|
||||
@Inject
|
||||
NetworkOfferingDao _ntwkOffDao;
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see com.cloud.configuration.ConfigurationService#updateConfiguration(com.cloud.api.commands.UpdateCfgCmd)
|
||||
*/
|
||||
@Override
|
||||
public Configuration updateConfiguration(UpdateCfgCmd cmd) {
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see com.cloud.configuration.ConfigurationService#createServiceOffering(com.cloud.api.commands.CreateServiceOfferingCmd)
|
||||
*/
|
||||
@Override
|
||||
public ServiceOffering createServiceOffering(CreateServiceOfferingCmd cmd) {
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see com.cloud.configuration.ConfigurationService#updateServiceOffering(com.cloud.api.commands.UpdateServiceOfferingCmd)
|
||||
*/
|
||||
@Override
|
||||
public ServiceOffering updateServiceOffering(UpdateServiceOfferingCmd cmd) {
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see com.cloud.configuration.ConfigurationService#deleteServiceOffering(com.cloud.api.commands.DeleteServiceOfferingCmd)
|
||||
*/
|
||||
@Override
|
||||
public boolean deleteServiceOffering(DeleteServiceOfferingCmd cmd) {
|
||||
// TODO Auto-generated method stub
|
||||
return false;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see com.cloud.configuration.ConfigurationService#updateDiskOffering(com.cloud.api.commands.UpdateDiskOfferingCmd)
|
||||
*/
|
||||
@Override
|
||||
public DiskOffering updateDiskOffering(UpdateDiskOfferingCmd cmd) {
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see com.cloud.configuration.ConfigurationService#deleteDiskOffering(com.cloud.api.commands.DeleteDiskOfferingCmd)
|
||||
*/
|
||||
@Override
|
||||
public boolean deleteDiskOffering(DeleteDiskOfferingCmd cmd) {
|
||||
// TODO Auto-generated method stub
|
||||
return false;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see com.cloud.configuration.ConfigurationService#createDiskOffering(com.cloud.api.commands.CreateDiskOfferingCmd)
|
||||
*/
|
||||
@Override
|
||||
public DiskOffering createDiskOffering(CreateDiskOfferingCmd cmd) {
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see com.cloud.configuration.ConfigurationService#createPod(long, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String)
|
||||
*/
|
||||
@Override
|
||||
public Pod createPod(long zoneId, String name, String startIp, String endIp, String gateway, String netmask, String allocationState) {
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see com.cloud.configuration.ConfigurationService#editPod(com.cloud.api.commands.UpdatePodCmd)
|
||||
*/
|
||||
@Override
|
||||
public Pod editPod(UpdatePodCmd cmd) {
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see com.cloud.configuration.ConfigurationService#deletePod(com.cloud.api.commands.DeletePodCmd)
|
||||
*/
|
||||
@Override
|
||||
public boolean deletePod(DeletePodCmd cmd) {
|
||||
// TODO Auto-generated method stub
|
||||
return false;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see com.cloud.configuration.ConfigurationService#createZone(com.cloud.api.commands.CreateZoneCmd)
|
||||
*/
|
||||
@Override
|
||||
public DataCenter createZone(CreateZoneCmd cmd) {
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see com.cloud.configuration.ConfigurationService#editZone(com.cloud.api.commands.UpdateZoneCmd)
|
||||
*/
|
||||
@Override
|
||||
public DataCenter editZone(UpdateZoneCmd cmd) {
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see com.cloud.configuration.ConfigurationService#deleteZone(com.cloud.api.commands.DeleteZoneCmd)
|
||||
*/
|
||||
@Override
|
||||
public boolean deleteZone(DeleteZoneCmd cmd) {
|
||||
// TODO Auto-generated method stub
|
||||
return false;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see com.cloud.configuration.ConfigurationService#createVlanAndPublicIpRange(com.cloud.api.commands.CreateVlanIpRangeCmd)
|
||||
*/
|
||||
@Override
|
||||
public Vlan createVlanAndPublicIpRange(CreateVlanIpRangeCmd cmd) throws InsufficientCapacityException, ConcurrentOperationException, ResourceUnavailableException, ResourceAllocationException {
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see com.cloud.configuration.ConfigurationService#markDefaultZone(java.lang.String, long, long)
|
||||
*/
|
||||
@Override
|
||||
public Account markDefaultZone(String accountName, long domainId, long defaultZoneId) {
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see com.cloud.configuration.ConfigurationService#deleteVlanIpRange(com.cloud.api.commands.DeleteVlanIpRangeCmd)
|
||||
*/
|
||||
@Override
|
||||
public boolean deleteVlanIpRange(DeleteVlanIpRangeCmd cmd) {
|
||||
// TODO Auto-generated method stub
|
||||
return false;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see com.cloud.configuration.ConfigurationService#createNetworkOffering(com.cloud.api.commands.CreateNetworkOfferingCmd)
|
||||
*/
|
||||
@Override
|
||||
public NetworkOffering createNetworkOffering(CreateNetworkOfferingCmd cmd) {
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see com.cloud.configuration.ConfigurationService#updateNetworkOffering(com.cloud.api.commands.UpdateNetworkOfferingCmd)
|
||||
*/
|
||||
@Override
|
||||
public NetworkOffering updateNetworkOffering(UpdateNetworkOfferingCmd cmd) {
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see com.cloud.configuration.ConfigurationService#searchForNetworkOfferings(com.cloud.api.commands.ListNetworkOfferingsCmd)
|
||||
*/
|
||||
@Override
|
||||
public List<? extends NetworkOffering> searchForNetworkOfferings(ListNetworkOfferingsCmd cmd) {
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see com.cloud.configuration.ConfigurationService#deleteNetworkOffering(com.cloud.api.commands.DeleteNetworkOfferingCmd)
|
||||
*/
|
||||
@Override
|
||||
public boolean deleteNetworkOffering(DeleteNetworkOfferingCmd cmd) {
|
||||
// TODO Auto-generated method stub
|
||||
return false;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see com.cloud.configuration.ConfigurationService#getNetworkOffering(long)
|
||||
*/
|
||||
@Override
|
||||
public NetworkOffering getNetworkOffering(long id) {
|
||||
return _ntwkOffDao.findById(id);
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see com.cloud.configuration.ConfigurationService#getNetworkOfferingNetworkRate(long)
|
||||
*/
|
||||
@Override
|
||||
public Integer getNetworkOfferingNetworkRate(long networkOfferingId) {
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see com.cloud.configuration.ConfigurationService#getVlanAccount(long)
|
||||
*/
|
||||
@Override
|
||||
public Account getVlanAccount(long vlanId) {
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see com.cloud.configuration.ConfigurationService#listNetworkOfferings(com.cloud.network.Networks.TrafficType, boolean)
|
||||
*/
|
||||
@Override
|
||||
public List<? extends NetworkOffering> listNetworkOfferings(TrafficType trafficType, boolean systemOnly) {
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see com.cloud.configuration.ConfigurationService#getZone(long)
|
||||
*/
|
||||
@Override
|
||||
public DataCenter getZone(long id) {
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see com.cloud.configuration.ConfigurationService#getServiceOffering(long)
|
||||
*/
|
||||
@Override
|
||||
public ServiceOffering getServiceOffering(long serviceOfferingId) {
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see com.cloud.configuration.ConfigurationService#getDefaultPageSize()
|
||||
*/
|
||||
@Override
|
||||
public Long getDefaultPageSize() {
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see com.cloud.configuration.ConfigurationService#getServiceOfferingNetworkRate(long)
|
||||
*/
|
||||
@Override
|
||||
public Integer getServiceOfferingNetworkRate(long serviceOfferingId) {
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see com.cloud.configuration.ConfigurationService#getDiskOffering(long)
|
||||
*/
|
||||
@Override
|
||||
public DiskOffering getDiskOffering(long diskOfferingId) {
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see com.cloud.configuration.ConfigurationService#updateLDAP(com.cloud.api.commands.LDAPConfigCmd)
|
||||
*/
|
||||
@Override
|
||||
public boolean updateLDAP(LDAPConfigCmd cmd) throws NamingException {
|
||||
// TODO Auto-generated method stub
|
||||
return false;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see com.cloud.configuration.ConfigurationService#removeLDAP(com.cloud.api.commands.LDAPRemoveCmd)
|
||||
*/
|
||||
@Override
|
||||
public boolean removeLDAP(LDAPRemoveCmd cmd) {
|
||||
// TODO Auto-generated method stub
|
||||
return false;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see com.cloud.configuration.ConfigurationService#isOfferingForVpc(com.cloud.offering.NetworkOffering)
|
||||
*/
|
||||
@Override
|
||||
public boolean isOfferingForVpc(NetworkOffering offering) {
|
||||
// TODO Auto-generated method stub
|
||||
return false;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see com.cloud.utils.component.Manager#configure(java.lang.String, java.util.Map)
|
||||
*/
|
||||
@Override
|
||||
public boolean configure(String name, Map<String, Object> params) throws ConfigurationException {
|
||||
// TODO Auto-generated method stub
|
||||
return true;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see com.cloud.utils.component.Manager#start()
|
||||
*/
|
||||
@Override
|
||||
public boolean start() {
|
||||
// TODO Auto-generated method stub
|
||||
return true;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see com.cloud.utils.component.Manager#stop()
|
||||
*/
|
||||
@Override
|
||||
public boolean stop() {
|
||||
// TODO Auto-generated method stub
|
||||
return true;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see com.cloud.utils.component.Manager#getName()
|
||||
*/
|
||||
@Override
|
||||
public String getName() {
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see com.cloud.configuration.ConfigurationManager#updateConfiguration(long, java.lang.String, java.lang.String, java.lang.String)
|
||||
*/
|
||||
@Override
|
||||
public void updateConfiguration(long userId, String name, String category, String value) {
|
||||
// TODO Auto-generated method stub
|
||||
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see com.cloud.configuration.ConfigurationManager#createServiceOffering(long, boolean, com.cloud.vm.VirtualMachine.Type, java.lang.String, int, int, int, java.lang.String, boolean, boolean, boolean, java.lang.String, java.lang.Long, java.lang.String, java.lang.Integer)
|
||||
*/
|
||||
@Override
|
||||
public ServiceOfferingVO createServiceOffering(long userId, boolean isSystem, Type vm_typeType, String name, int cpu, int ramSize, int speed, String displayText, boolean localStorageRequired, boolean offerHA,
|
||||
boolean limitResourceUse, String tags, Long domainId, String hostTag, Integer networkRate) {
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see com.cloud.configuration.ConfigurationManager#createDiskOffering(java.lang.Long, java.lang.String, java.lang.String, java.lang.Long, java.lang.String, boolean, boolean)
|
||||
*/
|
||||
@Override
|
||||
public DiskOfferingVO createDiskOffering(Long domainId, String name, String description, Long numGibibytes, String tags, boolean isCustomized, boolean localStorageRequired) {
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see com.cloud.configuration.ConfigurationManager#createPod(long, java.lang.String, long, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, boolean)
|
||||
*/
|
||||
@Override
|
||||
public HostPodVO createPod(long userId, String podName, long zoneId, String gateway, String cidr, String startIp, String endIp, String allocationState, boolean skipGatewayOverlapCheck) {
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see com.cloud.configuration.ConfigurationManager#createZone(long, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.Long, com.cloud.dc.DataCenter.NetworkType, java.lang.String, java.lang.String, boolean, boolean)
|
||||
*/
|
||||
@Override
|
||||
public DataCenterVO createZone(long userId, String zoneName, String dns1, String dns2, String internalDns1, String internalDns2, String guestCidr, String domain, Long domainId, NetworkType zoneType,
|
||||
String allocationState, String networkDomain, boolean isSecurityGroupEnabled, boolean isLocalStorageEnabled) {
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see com.cloud.configuration.ConfigurationManager#deleteVlanAndPublicIpRange(long, long, com.cloud.user.Account)
|
||||
*/
|
||||
@Override
|
||||
public boolean deleteVlanAndPublicIpRange(long userId, long vlanDbId, Account caller) {
|
||||
// TODO Auto-generated method stub
|
||||
return false;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see com.cloud.configuration.ConfigurationManager#csvTagsToList(java.lang.String)
|
||||
*/
|
||||
@Override
|
||||
public List<String> csvTagsToList(String tags) {
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see com.cloud.configuration.ConfigurationManager#listToCsvTags(java.util.List)
|
||||
*/
|
||||
@Override
|
||||
public String listToCsvTags(List<String> tags) {
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see com.cloud.configuration.ConfigurationManager#checkZoneAccess(com.cloud.user.Account, com.cloud.dc.DataCenter)
|
||||
*/
|
||||
@Override
|
||||
public void checkZoneAccess(Account caller, DataCenter zone) {
|
||||
// TODO Auto-generated method stub
|
||||
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see com.cloud.configuration.ConfigurationManager#checkDiskOfferingAccess(com.cloud.user.Account, com.cloud.offering.DiskOffering)
|
||||
*/
|
||||
@Override
|
||||
public void checkDiskOfferingAccess(Account caller, DiskOffering dof) {
|
||||
// TODO Auto-generated method stub
|
||||
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see com.cloud.configuration.ConfigurationManager#createNetworkOffering(java.lang.String, java.lang.String, com.cloud.network.Networks.TrafficType, java.lang.String, boolean, com.cloud.offering.NetworkOffering.Availability, java.lang.Integer, java.util.Map, boolean, com.cloud.network.Network.GuestType, boolean, java.lang.Long, boolean, java.util.Map, boolean)
|
||||
*/
|
||||
@Override
|
||||
public NetworkOfferingVO createNetworkOffering(String name, String displayText, TrafficType trafficType, String tags, boolean specifyVlan, Availability availability, Integer networkRate,
|
||||
Map<Service, Set<Provider>> serviceProviderMap, boolean isDefault, GuestType type, boolean systemOnly, Long serviceOfferingId, boolean conserveMode,
|
||||
Map<Service, Map<Capability, String>> serviceCapabilityMap, boolean specifyIpRanges) {
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see com.cloud.configuration.ConfigurationManager#createVlanAndPublicIpRange(long, long, long, boolean, java.lang.Long, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, com.cloud.user.Account)
|
||||
*/
|
||||
@Override
|
||||
public Vlan createVlanAndPublicIpRange(long zoneId, long networkId, long physicalNetworkId, boolean forVirtualNetwork, Long podId, String startIP, String endIP, String vlanGateway, String vlanNetmask, String vlanId,
|
||||
Account vlanOwner) throws InsufficientCapacityException, ConcurrentOperationException, InvalidParameterValueException {
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see com.cloud.configuration.ConfigurationManager#createDefaultSystemNetworks(long)
|
||||
*/
|
||||
@Override
|
||||
public void createDefaultSystemNetworks(long zoneId) throws ConcurrentOperationException {
|
||||
// TODO Auto-generated method stub
|
||||
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see com.cloud.configuration.ConfigurationManager#getPod(long)
|
||||
*/
|
||||
@Override
|
||||
public HostPodVO getPod(long id) {
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see com.cloud.configuration.ConfigurationManager#getCluster(long)
|
||||
*/
|
||||
@Override
|
||||
public ClusterVO getCluster(long id) {
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see com.cloud.configuration.ConfigurationManager#deleteAccountSpecificVirtualRanges(long)
|
||||
*/
|
||||
@Override
|
||||
public boolean deleteAccountSpecificVirtualRanges(long accountId) {
|
||||
// TODO Auto-generated method stub
|
||||
return false;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see com.cloud.configuration.ConfigurationManager#editPod(long, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String)
|
||||
*/
|
||||
@Override
|
||||
public Pod editPod(long id, String name, String startIp, String endIp, String gateway, String netmask, String allocationStateStr) {
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see com.cloud.configuration.ConfigurationManager#checkPodCidrSubnets(long, java.lang.Long, java.lang.String)
|
||||
*/
|
||||
@Override
|
||||
public void checkPodCidrSubnets(long zoneId, Long podIdToBeSkipped, String cidr) {
|
||||
// TODO Auto-generated method stub
|
||||
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see com.cloud.configuration.ConfigurationManager#findPodAllocationState(com.cloud.dc.HostPodVO)
|
||||
*/
|
||||
@Override
|
||||
public AllocationState findPodAllocationState(HostPodVO pod) {
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see com.cloud.configuration.ConfigurationManager#findClusterAllocationState(com.cloud.dc.ClusterVO)
|
||||
*/
|
||||
@Override
|
||||
public AllocationState findClusterAllocationState(ClusterVO cluster) {
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see com.cloud.configuration.ConfigurationManager#cleanupTags(java.lang.String)
|
||||
*/
|
||||
@Override
|
||||
public String cleanupTags(String tags) {
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
}
|
||||
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
|
|
@ -0,0 +1,150 @@
|
|||
// Copyright 2012 Citrix Systems, Inc. Licensed under the
|
||||
// Apache License, Version 2.0 (the "License"); you may not use this
|
||||
// file except in compliance with the License. Citrix Systems, Inc.
|
||||
// reserves all rights not expressly granted by the License.
|
||||
// You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
//
|
||||
// Automatically generated by addcopyright.py at 04/03/2012
|
||||
package com.cloud.vpc;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import javax.ejb.Local;
|
||||
import javax.naming.ConfigurationException;
|
||||
|
||||
import com.cloud.configuration.Resource.ResourceType;
|
||||
import com.cloud.configuration.ResourceCount;
|
||||
import com.cloud.configuration.ResourceLimit;
|
||||
import com.cloud.domain.Domain;
|
||||
import com.cloud.exception.ResourceAllocationException;
|
||||
import com.cloud.user.Account;
|
||||
import com.cloud.user.ResourceLimitService;
|
||||
import com.cloud.utils.component.Manager;
|
||||
|
||||
@Local(value = { ResourceLimitService.class })
|
||||
public class MockResourceLimitManagerImpl implements ResourceLimitService, Manager{
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see com.cloud.user.ResourceLimitService#updateResourceLimit(java.lang.Long, java.lang.Long, java.lang.Integer, java.lang.Long)
|
||||
*/
|
||||
@Override
|
||||
public ResourceLimit updateResourceLimit(Long accountId, Long domainId, Integer resourceType, Long max) {
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see com.cloud.user.ResourceLimitService#recalculateResourceCount(java.lang.Long, java.lang.Long, java.lang.Integer)
|
||||
*/
|
||||
@Override
|
||||
public List<? extends ResourceCount> recalculateResourceCount(Long accountId, Long domainId, Integer typeId) {
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see com.cloud.user.ResourceLimitService#searchForLimits(java.lang.Long, java.lang.Long, java.lang.Long, java.lang.Integer, java.lang.Long, java.lang.Long)
|
||||
*/
|
||||
@Override
|
||||
public List<? extends ResourceLimit> searchForLimits(Long id, Long accountId, Long domainId, Integer type, Long startIndex, Long pageSizeVal) {
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see com.cloud.user.ResourceLimitService#findCorrectResourceLimitForAccount(com.cloud.user.Account, com.cloud.configuration.Resource.ResourceType)
|
||||
*/
|
||||
@Override
|
||||
public long findCorrectResourceLimitForAccount(Account account, ResourceType type) {
|
||||
// TODO Auto-generated method stub
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see com.cloud.user.ResourceLimitService#findCorrectResourceLimitForDomain(com.cloud.domain.Domain, com.cloud.configuration.Resource.ResourceType)
|
||||
*/
|
||||
@Override
|
||||
public long findCorrectResourceLimitForDomain(Domain domain, ResourceType type) {
|
||||
// TODO Auto-generated method stub
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see com.cloud.user.ResourceLimitService#incrementResourceCount(long, com.cloud.configuration.Resource.ResourceType, java.lang.Long[])
|
||||
*/
|
||||
@Override
|
||||
public void incrementResourceCount(long accountId, ResourceType type, Long... delta) {
|
||||
// TODO Auto-generated method stub
|
||||
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see com.cloud.user.ResourceLimitService#decrementResourceCount(long, com.cloud.configuration.Resource.ResourceType, java.lang.Long[])
|
||||
*/
|
||||
@Override
|
||||
public void decrementResourceCount(long accountId, ResourceType type, Long... delta) {
|
||||
// TODO Auto-generated method stub
|
||||
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see com.cloud.user.ResourceLimitService#checkResourceLimit(com.cloud.user.Account, com.cloud.configuration.Resource.ResourceType, long[])
|
||||
*/
|
||||
@Override
|
||||
public void checkResourceLimit(Account account, ResourceType type, long... count) throws ResourceAllocationException {
|
||||
// TODO Auto-generated method stub
|
||||
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see com.cloud.user.ResourceLimitService#getResourceCount(com.cloud.user.Account, com.cloud.configuration.Resource.ResourceType)
|
||||
*/
|
||||
@Override
|
||||
public long getResourceCount(Account account, ResourceType type) {
|
||||
// TODO Auto-generated method stub
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see com.cloud.utils.component.Manager#configure(java.lang.String, java.util.Map)
|
||||
*/
|
||||
@Override
|
||||
public boolean configure(String name, Map<String, Object> params) throws ConfigurationException {
|
||||
// TODO Auto-generated method stub
|
||||
return true;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see com.cloud.utils.component.Manager#start()
|
||||
*/
|
||||
@Override
|
||||
public boolean start() {
|
||||
// TODO Auto-generated method stub
|
||||
return true;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see com.cloud.utils.component.Manager#stop()
|
||||
*/
|
||||
@Override
|
||||
public boolean stop() {
|
||||
// TODO Auto-generated method stub
|
||||
return true;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see com.cloud.utils.component.Manager#getName()
|
||||
*/
|
||||
@Override
|
||||
public String getName() {
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,253 @@
|
|||
// Copyright 2012 Citrix Systems, Inc. Licensed under the
|
||||
// Apache License, Version 2.0 (the "License"); you may not use this
|
||||
// file except in compliance with the License. Citrix Systems, Inc.
|
||||
// reserves all rights not expressly granted by the License.
|
||||
// You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
//
|
||||
// Automatically generated by addcopyright.py at 04/03/2012
|
||||
package com.cloud.vpc;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import javax.ejb.Local;
|
||||
import javax.naming.ConfigurationException;
|
||||
|
||||
import com.cloud.api.commands.CreateVpnConnectionCmd;
|
||||
import com.cloud.api.commands.CreateVpnCustomerGatewayCmd;
|
||||
import com.cloud.api.commands.CreateVpnGatewayCmd;
|
||||
import com.cloud.api.commands.DeleteVpnConnectionCmd;
|
||||
import com.cloud.api.commands.DeleteVpnCustomerGatewayCmd;
|
||||
import com.cloud.api.commands.DeleteVpnGatewayCmd;
|
||||
import com.cloud.api.commands.ListVpnConnectionsCmd;
|
||||
import com.cloud.api.commands.ListVpnCustomerGatewaysCmd;
|
||||
import com.cloud.api.commands.ListVpnGatewaysCmd;
|
||||
import com.cloud.api.commands.ResetVpnConnectionCmd;
|
||||
import com.cloud.api.commands.UpdateVpnCustomerGatewayCmd;
|
||||
import com.cloud.exception.NetworkRuleConflictException;
|
||||
import com.cloud.exception.ResourceUnavailableException;
|
||||
import com.cloud.network.Site2SiteCustomerGateway;
|
||||
import com.cloud.network.Site2SiteVpnConnection;
|
||||
import com.cloud.network.Site2SiteVpnConnectionVO;
|
||||
import com.cloud.network.Site2SiteVpnGateway;
|
||||
import com.cloud.network.vpn.Site2SiteVpnManager;
|
||||
import com.cloud.network.vpn.Site2SiteVpnService;
|
||||
import com.cloud.utils.component.Manager;
|
||||
import com.cloud.vm.DomainRouterVO;
|
||||
|
||||
@Local(value = { Site2SiteVpnManager.class, Site2SiteVpnService.class } )
|
||||
public class MockSite2SiteVpnManagerImpl implements Site2SiteVpnManager, Site2SiteVpnService, Manager{
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see com.cloud.network.vpn.Site2SiteVpnService#createVpnGateway(com.cloud.api.commands.CreateVpnGatewayCmd)
|
||||
*/
|
||||
@Override
|
||||
public Site2SiteVpnGateway createVpnGateway(CreateVpnGatewayCmd cmd) {
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see com.cloud.network.vpn.Site2SiteVpnService#createCustomerGateway(com.cloud.api.commands.CreateVpnCustomerGatewayCmd)
|
||||
*/
|
||||
@Override
|
||||
public Site2SiteCustomerGateway createCustomerGateway(CreateVpnCustomerGatewayCmd cmd) {
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see com.cloud.network.vpn.Site2SiteVpnService#startVpnConnection(long)
|
||||
*/
|
||||
@Override
|
||||
public Site2SiteVpnConnection startVpnConnection(long id) throws ResourceUnavailableException {
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see com.cloud.network.vpn.Site2SiteVpnService#getVpnGateway(java.lang.Long)
|
||||
*/
|
||||
@Override
|
||||
public Site2SiteVpnGateway getVpnGateway(Long vpnGatewayId) {
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see com.cloud.network.vpn.Site2SiteVpnService#createVpnConnection(com.cloud.api.commands.CreateVpnConnectionCmd)
|
||||
*/
|
||||
@Override
|
||||
public Site2SiteVpnConnection createVpnConnection(CreateVpnConnectionCmd cmd) throws NetworkRuleConflictException {
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see com.cloud.network.vpn.Site2SiteVpnService#deleteCustomerGateway(com.cloud.api.commands.DeleteVpnCustomerGatewayCmd)
|
||||
*/
|
||||
@Override
|
||||
public boolean deleteCustomerGateway(DeleteVpnCustomerGatewayCmd deleteVpnCustomerGatewayCmd) {
|
||||
// TODO Auto-generated method stub
|
||||
return false;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see com.cloud.network.vpn.Site2SiteVpnService#deleteVpnGateway(com.cloud.api.commands.DeleteVpnGatewayCmd)
|
||||
*/
|
||||
@Override
|
||||
public boolean deleteVpnGateway(DeleteVpnGatewayCmd deleteVpnGatewayCmd) {
|
||||
// TODO Auto-generated method stub
|
||||
return false;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see com.cloud.network.vpn.Site2SiteVpnService#deleteVpnConnection(com.cloud.api.commands.DeleteVpnConnectionCmd)
|
||||
*/
|
||||
@Override
|
||||
public boolean deleteVpnConnection(DeleteVpnConnectionCmd deleteVpnConnectionCmd) throws ResourceUnavailableException {
|
||||
// TODO Auto-generated method stub
|
||||
return false;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see com.cloud.network.vpn.Site2SiteVpnService#resetVpnConnection(com.cloud.api.commands.ResetVpnConnectionCmd)
|
||||
*/
|
||||
@Override
|
||||
public Site2SiteVpnConnection resetVpnConnection(ResetVpnConnectionCmd resetVpnConnectionCmd) throws ResourceUnavailableException {
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see com.cloud.network.vpn.Site2SiteVpnService#searchForCustomerGateways(com.cloud.api.commands.ListVpnCustomerGatewaysCmd)
|
||||
*/
|
||||
@Override
|
||||
public List<Site2SiteCustomerGateway> searchForCustomerGateways(ListVpnCustomerGatewaysCmd listVpnCustomerGatewaysCmd) {
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see com.cloud.network.vpn.Site2SiteVpnService#searchForVpnGateways(com.cloud.api.commands.ListVpnGatewaysCmd)
|
||||
*/
|
||||
@Override
|
||||
public List<Site2SiteVpnGateway> searchForVpnGateways(ListVpnGatewaysCmd listVpnGatewaysCmd) {
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see com.cloud.network.vpn.Site2SiteVpnService#searchForVpnConnections(com.cloud.api.commands.ListVpnConnectionsCmd)
|
||||
*/
|
||||
@Override
|
||||
public List<Site2SiteVpnConnection> searchForVpnConnections(ListVpnConnectionsCmd listVpnConnectionsCmd) {
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see com.cloud.network.vpn.Site2SiteVpnService#updateCustomerGateway(com.cloud.api.commands.UpdateVpnCustomerGatewayCmd)
|
||||
*/
|
||||
@Override
|
||||
public Site2SiteCustomerGateway updateCustomerGateway(UpdateVpnCustomerGatewayCmd updateVpnCustomerGatewayCmd) {
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see com.cloud.network.vpn.Site2SiteVpnManager#cleanupVpnConnectionByVpc(long)
|
||||
*/
|
||||
@Override
|
||||
public boolean cleanupVpnConnectionByVpc(long vpcId) {
|
||||
// TODO Auto-generated method stub
|
||||
return false;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see com.cloud.network.vpn.Site2SiteVpnManager#cleanupVpnGatewayByVpc(long)
|
||||
*/
|
||||
@Override
|
||||
public boolean cleanupVpnGatewayByVpc(long vpcId) {
|
||||
// TODO Auto-generated method stub
|
||||
return false;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see com.cloud.network.vpn.Site2SiteVpnManager#markDisconnectVpnConnByVpc(long)
|
||||
*/
|
||||
@Override
|
||||
public void markDisconnectVpnConnByVpc(long vpcId) {
|
||||
// TODO Auto-generated method stub
|
||||
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see com.cloud.network.vpn.Site2SiteVpnManager#getConnectionsForRouter(com.cloud.vm.DomainRouterVO)
|
||||
*/
|
||||
@Override
|
||||
public List<Site2SiteVpnConnectionVO> getConnectionsForRouter(DomainRouterVO router) {
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see com.cloud.network.vpn.Site2SiteVpnManager#deleteCustomerGatewayByAccount(long)
|
||||
*/
|
||||
@Override
|
||||
public boolean deleteCustomerGatewayByAccount(long accountId) {
|
||||
// TODO Auto-generated method stub
|
||||
return false;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see com.cloud.utils.component.Manager#configure(java.lang.String, java.util.Map)
|
||||
*/
|
||||
@Override
|
||||
public boolean configure(String name, Map<String, Object> params) throws ConfigurationException {
|
||||
// TODO Auto-generated method stub
|
||||
return true;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see com.cloud.utils.component.Manager#start()
|
||||
*/
|
||||
@Override
|
||||
public boolean start() {
|
||||
// TODO Auto-generated method stub
|
||||
return true;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see com.cloud.utils.component.Manager#stop()
|
||||
*/
|
||||
@Override
|
||||
public boolean stop() {
|
||||
// TODO Auto-generated method stub
|
||||
return true;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see com.cloud.utils.component.Manager#getName()
|
||||
*/
|
||||
@Override
|
||||
public String getName() {
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see com.cloud.network.vpn.Site2SiteVpnManager#reconnectDisconnectedVpnByVpc(java.lang.Long)
|
||||
*/
|
||||
@Override
|
||||
public void reconnectDisconnectedVpnByVpc(Long vpcId) {
|
||||
// TODO Auto-generated method stub
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,445 @@
|
|||
// Copyright 2012 Citrix Systems, Inc. Licensed under the
|
||||
// Apache License, Version 2.0 (the "License"); you may not use this
|
||||
// file except in compliance with the License. Citrix Systems, Inc.
|
||||
// reserves all rights not expressly granted by the License.
|
||||
// You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
//
|
||||
// Automatically generated by addcopyright.py at 04/03/2012
|
||||
package com.cloud.vpc;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
|
||||
import javax.ejb.Local;
|
||||
import javax.naming.ConfigurationException;
|
||||
|
||||
import com.cloud.acl.ControlledEntity.ACLType;
|
||||
import com.cloud.api.commands.ListPrivateGatewaysCmd;
|
||||
import com.cloud.api.commands.ListStaticRoutesCmd;
|
||||
import com.cloud.exception.ConcurrentOperationException;
|
||||
import com.cloud.exception.InsufficientAddressCapacityException;
|
||||
import com.cloud.exception.InsufficientCapacityException;
|
||||
import com.cloud.exception.NetworkRuleConflictException;
|
||||
import com.cloud.exception.ResourceAllocationException;
|
||||
import com.cloud.exception.ResourceUnavailableException;
|
||||
import com.cloud.network.IpAddress;
|
||||
import com.cloud.network.Network;
|
||||
import com.cloud.network.Network.Provider;
|
||||
import com.cloud.network.Network.Service;
|
||||
import com.cloud.network.PhysicalNetwork;
|
||||
import com.cloud.network.addr.PublicIp;
|
||||
import com.cloud.network.vpc.PrivateGateway;
|
||||
import com.cloud.network.vpc.StaticRoute;
|
||||
import com.cloud.network.vpc.Vpc;
|
||||
import com.cloud.network.vpc.VpcGateway;
|
||||
import com.cloud.network.vpc.VpcManager;
|
||||
import com.cloud.network.vpc.VpcOffering;
|
||||
import com.cloud.network.vpc.VpcService;
|
||||
import com.cloud.user.Account;
|
||||
import com.cloud.user.User;
|
||||
import com.cloud.utils.component.ComponentLocator;
|
||||
import com.cloud.utils.component.Manager;
|
||||
import com.cloud.vm.DomainRouterVO;
|
||||
import com.cloud.vpc.dao.MockVpcDaoImpl;
|
||||
|
||||
@Local(value = { VpcManager.class, VpcService.class })
|
||||
public class MockVpcManagerImpl implements VpcManager, Manager{
|
||||
MockVpcDaoImpl _vpcDao = ComponentLocator.inject(MockVpcDaoImpl.class);
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see com.cloud.network.vpc.VpcService#getVpcOffering(long)
|
||||
*/
|
||||
@Override
|
||||
public VpcOffering getVpcOffering(long vpcOfferingId) {
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see com.cloud.network.vpc.VpcService#createVpcOffering(java.lang.String, java.lang.String, java.util.List)
|
||||
*/
|
||||
@Override
|
||||
public VpcOffering createVpcOffering(String name, String displayText, List<String> supportedServices) {
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see com.cloud.network.vpc.VpcService#getVpc(long)
|
||||
*/
|
||||
@Override
|
||||
public Vpc getVpc(long vpcId) {
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see com.cloud.network.vpc.VpcService#getActiveVpc(long)
|
||||
*/
|
||||
@Override
|
||||
public Vpc getActiveVpc(long vpcId) {
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see com.cloud.network.vpc.VpcService#getVpcNetworks(long)
|
||||
*/
|
||||
@Override
|
||||
public List<? extends Network> getVpcNetworks(long vpcId) {
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see com.cloud.network.vpc.VpcService#getVpcOffSvcProvidersMap(long)
|
||||
*/
|
||||
@Override
|
||||
public Map<Service, Set<Provider>> getVpcOffSvcProvidersMap(long vpcOffId) {
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see com.cloud.network.vpc.VpcService#listVpcOfferings(java.lang.Long, java.lang.String, java.lang.String, java.util.List, java.lang.Boolean, java.lang.String, java.lang.String, java.lang.Long, java.lang.Long)
|
||||
*/
|
||||
@Override
|
||||
public List<? extends VpcOffering> listVpcOfferings(Long id, String name, String displayText, List<String> supportedServicesStr, Boolean isDefault, String keyword, String state, Long startIndex, Long pageSizeVal) {
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see com.cloud.network.vpc.VpcService#deleteVpcOffering(long)
|
||||
*/
|
||||
@Override
|
||||
public boolean deleteVpcOffering(long offId) {
|
||||
// TODO Auto-generated method stub
|
||||
return false;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see com.cloud.network.vpc.VpcService#updateVpcOffering(long, java.lang.String, java.lang.String, java.lang.String)
|
||||
*/
|
||||
@Override
|
||||
public VpcOffering updateVpcOffering(long vpcOffId, String vpcOfferingName, String displayText, String state) {
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see com.cloud.network.vpc.VpcService#createVpc(long, long, long, java.lang.String, java.lang.String, java.lang.String, java.lang.String)
|
||||
*/
|
||||
@Override
|
||||
public Vpc createVpc(long zoneId, long vpcOffId, long vpcOwnerId, String vpcName, String displayText, String cidr, String networkDomain) throws ResourceAllocationException {
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see com.cloud.network.vpc.VpcService#deleteVpc(long)
|
||||
*/
|
||||
@Override
|
||||
public boolean deleteVpc(long vpcId) throws ConcurrentOperationException, ResourceUnavailableException {
|
||||
// TODO Auto-generated method stub
|
||||
return false;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see com.cloud.network.vpc.VpcService#updateVpc(long, java.lang.String, java.lang.String)
|
||||
*/
|
||||
@Override
|
||||
public Vpc updateVpc(long vpcId, String vpcName, String displayText) {
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see com.cloud.network.vpc.VpcService#listVpcs(java.lang.Long, java.lang.String, java.lang.String, java.util.List, java.lang.String, java.lang.Long, java.lang.String, java.lang.String, java.lang.Long, java.lang.String, java.lang.Long, java.lang.Long, java.lang.Long, java.lang.Boolean, java.lang.Boolean, java.lang.Boolean, java.util.Map, java.lang.Long)
|
||||
*/
|
||||
@Override
|
||||
public List<? extends Vpc> listVpcs(Long id, String vpcName, String displayText, List<String> supportedServicesStr, String cidr, Long vpcOffId, String state, String accountName, Long domainId, String keyword,
|
||||
Long startIndex, Long pageSizeVal, Long zoneId, Boolean isRecursive, Boolean listAll, Boolean restartRequired, Map<String, String> tags, Long projectId) {
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see com.cloud.network.vpc.VpcService#startVpc(long, boolean)
|
||||
*/
|
||||
@Override
|
||||
public boolean startVpc(long vpcId, boolean destroyOnFailure) throws ConcurrentOperationException, ResourceUnavailableException, InsufficientCapacityException {
|
||||
// TODO Auto-generated method stub
|
||||
return false;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see com.cloud.network.vpc.VpcService#shutdownVpc(long)
|
||||
*/
|
||||
@Override
|
||||
public boolean shutdownVpc(long vpcId) throws ConcurrentOperationException, ResourceUnavailableException {
|
||||
// TODO Auto-generated method stub
|
||||
return false;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see com.cloud.network.vpc.VpcService#restartVpc(long)
|
||||
*/
|
||||
@Override
|
||||
public boolean restartVpc(long id) throws ConcurrentOperationException, ResourceUnavailableException, InsufficientCapacityException {
|
||||
// TODO Auto-generated method stub
|
||||
return false;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see com.cloud.network.vpc.VpcService#getVpcPrivateGateway(long)
|
||||
*/
|
||||
@Override
|
||||
public PrivateGateway getVpcPrivateGateway(long id) {
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see com.cloud.network.vpc.VpcService#createVpcPrivateGateway(long, java.lang.Long, java.lang.String, java.lang.String, java.lang.String, java.lang.String, long)
|
||||
*/
|
||||
@Override
|
||||
public PrivateGateway createVpcPrivateGateway(long vpcId, Long physicalNetworkId, String vlan, String ipAddress, String gateway, String netmask, long gatewayOwnerId) throws ResourceAllocationException,
|
||||
ConcurrentOperationException, InsufficientCapacityException {
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see com.cloud.network.vpc.VpcService#applyVpcPrivateGateway(long, boolean)
|
||||
*/
|
||||
@Override
|
||||
public PrivateGateway applyVpcPrivateGateway(long gatewayId, boolean destroyOnFailure) throws ConcurrentOperationException, ResourceUnavailableException {
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see com.cloud.network.vpc.VpcService#deleteVpcPrivateGateway(long)
|
||||
*/
|
||||
@Override
|
||||
public boolean deleteVpcPrivateGateway(long gatewayId) throws ConcurrentOperationException, ResourceUnavailableException {
|
||||
// TODO Auto-generated method stub
|
||||
return false;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see com.cloud.network.vpc.VpcService#listPrivateGateway(com.cloud.api.commands.ListPrivateGatewaysCmd)
|
||||
*/
|
||||
@Override
|
||||
public List<PrivateGateway> listPrivateGateway(ListPrivateGatewaysCmd listPrivateGatewaysCmd) {
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see com.cloud.network.vpc.VpcService#getStaticRoute(long)
|
||||
*/
|
||||
@Override
|
||||
public StaticRoute getStaticRoute(long routeId) {
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see com.cloud.network.vpc.VpcService#applyStaticRoutes(long)
|
||||
*/
|
||||
@Override
|
||||
public boolean applyStaticRoutes(long vpcId) throws ResourceUnavailableException {
|
||||
// TODO Auto-generated method stub
|
||||
return false;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see com.cloud.network.vpc.VpcService#revokeStaticRoute(long)
|
||||
*/
|
||||
@Override
|
||||
public boolean revokeStaticRoute(long routeId) throws ResourceUnavailableException {
|
||||
// TODO Auto-generated method stub
|
||||
return false;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see com.cloud.network.vpc.VpcService#createStaticRoute(long, java.lang.String)
|
||||
*/
|
||||
@Override
|
||||
public StaticRoute createStaticRoute(long gatewayId, String cidr) throws NetworkRuleConflictException {
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see com.cloud.network.vpc.VpcService#listStaticRoutes(com.cloud.api.commands.ListStaticRoutesCmd)
|
||||
*/
|
||||
@Override
|
||||
public List<? extends StaticRoute> listStaticRoutes(ListStaticRoutesCmd cmd) {
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see com.cloud.network.vpc.VpcService#getVpcGateway(long)
|
||||
*/
|
||||
@Override
|
||||
public VpcGateway getVpcGateway(long id) {
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see com.cloud.network.vpc.VpcService#associateIPToVpc(long, long)
|
||||
*/
|
||||
@Override
|
||||
public IpAddress associateIPToVpc(long ipId, long vpcId) throws ResourceAllocationException, ResourceUnavailableException, InsufficientAddressCapacityException, ConcurrentOperationException {
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see com.cloud.network.vpc.VpcService#updateVpcGuestNetwork(long, java.lang.String, java.lang.String, com.cloud.user.Account, com.cloud.user.User, java.lang.String, java.lang.Long, java.lang.Boolean)
|
||||
*/
|
||||
@Override
|
||||
public Network updateVpcGuestNetwork(long networkId, String name, String displayText, Account callerAccount, User callerUser, String domainSuffix, Long ntwkOffId, Boolean changeCidr) {
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see com.cloud.network.vpc.VpcManager#validateNtkwOffForVpc(long, java.lang.String, java.lang.String, com.cloud.user.Account, com.cloud.network.vpc.Vpc, java.lang.Long, java.lang.String)
|
||||
*/
|
||||
@Override
|
||||
public void validateNtkwOffForVpc(long ntwkOffId, String cidr, String networkDomain, Account networkOwner, Vpc vpc, Long networkId, String gateway) {
|
||||
// TODO Auto-generated method stub
|
||||
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see com.cloud.network.vpc.VpcManager#getVpcsForAccount(long)
|
||||
*/
|
||||
@Override
|
||||
public List<? extends Vpc> getVpcsForAccount(long accountId) {
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see com.cloud.network.vpc.VpcManager#destroyVpc(com.cloud.network.vpc.Vpc)
|
||||
*/
|
||||
@Override
|
||||
public boolean destroyVpc(Vpc vpc) throws ConcurrentOperationException, ResourceUnavailableException {
|
||||
// TODO Auto-generated method stub
|
||||
return false;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see com.cloud.network.vpc.VpcManager#getVpcRouters(long)
|
||||
*/
|
||||
@Override
|
||||
public List<DomainRouterVO> getVpcRouters(long vpcId) {
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see com.cloud.network.vpc.VpcManager#vpcProviderEnabledInZone(long)
|
||||
*/
|
||||
@Override
|
||||
public boolean vpcProviderEnabledInZone(long zoneId) {
|
||||
// TODO Auto-generated method stub
|
||||
return false;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see com.cloud.network.vpc.VpcManager#getPrivateGatewayForVpc(long)
|
||||
*/
|
||||
@Override
|
||||
public VpcGateway getPrivateGatewayForVpc(long vpcId) {
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see com.cloud.network.vpc.VpcManager#ipUsedInVpc(com.cloud.network.IpAddress)
|
||||
*/
|
||||
@Override
|
||||
public boolean ipUsedInVpc(IpAddress ip) {
|
||||
// TODO Auto-generated method stub
|
||||
return false;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see com.cloud.network.vpc.VpcManager#unassignIPFromVpcNetwork(long, long)
|
||||
*/
|
||||
@Override
|
||||
public void unassignIPFromVpcNetwork(long ipId, long networkId) {
|
||||
// TODO Auto-generated method stub
|
||||
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see com.cloud.network.vpc.VpcManager#createVpcGuestNetwork(long, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, com.cloud.user.Account, java.lang.Long, com.cloud.network.PhysicalNetwork, long, com.cloud.acl.ControlledEntity.ACLType, java.lang.Boolean, long, com.cloud.user.Account)
|
||||
*/
|
||||
@Override
|
||||
public Network createVpcGuestNetwork(long ntwkOffId, String name, String displayText, String gateway, String cidr, String vlanId, String networkDomain, Account owner, Long domainId, PhysicalNetwork pNtwk,
|
||||
long zoneId, ACLType aclType, Boolean subdomainAccess, long vpcId, Account caller) throws ConcurrentOperationException, InsufficientCapacityException, ResourceAllocationException {
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see com.cloud.network.vpc.VpcManager#assignSourceNatIpAddressToVpc(com.cloud.user.Account, com.cloud.network.vpc.Vpc)
|
||||
*/
|
||||
@Override
|
||||
public PublicIp assignSourceNatIpAddressToVpc(Account owner, Vpc vpc) throws InsufficientAddressCapacityException, ConcurrentOperationException {
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see com.cloud.utils.component.Manager#configure(java.lang.String, java.util.Map)
|
||||
*/
|
||||
@Override
|
||||
public boolean configure(String name, Map<String, Object> params) throws ConfigurationException {
|
||||
// TODO Auto-generated method stub
|
||||
return true;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see com.cloud.utils.component.Manager#start()
|
||||
*/
|
||||
@Override
|
||||
public boolean start() {
|
||||
// TODO Auto-generated method stub
|
||||
return true;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see com.cloud.utils.component.Manager#stop()
|
||||
*/
|
||||
@Override
|
||||
public boolean stop() {
|
||||
// TODO Auto-generated method stub
|
||||
return true;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see com.cloud.utils.component.Manager#getName()
|
||||
*/
|
||||
@Override
|
||||
public String getName() {
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,289 @@
|
|||
// Copyright 2012 Citrix Systems, Inc. Licensed under the
|
||||
// Apache License, Version 2.0 (the "License"); you may not use this
|
||||
// file except in compliance with the License. Citrix Systems, Inc.
|
||||
// reserves all rights not expressly granted by the License.
|
||||
// You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
//
|
||||
// Automatically generated by addcopyright.py at 04/03/2012
|
||||
package com.cloud.vpc;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import junit.framework.TestCase;
|
||||
|
||||
import org.apache.log4j.Logger;
|
||||
import org.junit.Before;
|
||||
|
||||
import com.cloud.configuration.dao.ConfigurationDaoImpl;
|
||||
import com.cloud.configuration.dao.ResourceCountDaoImpl;
|
||||
import com.cloud.dc.dao.VlanDaoImpl;
|
||||
import com.cloud.exception.InvalidParameterValueException;
|
||||
import com.cloud.network.Network.Service;
|
||||
import com.cloud.network.dao.FirewallRulesDaoImpl;
|
||||
import com.cloud.network.dao.IPAddressDaoImpl;
|
||||
import com.cloud.network.dao.PhysicalNetworkDaoImpl;
|
||||
import com.cloud.network.element.VpcVirtualRouterElement;
|
||||
import com.cloud.network.vpc.Vpc;
|
||||
import com.cloud.network.vpc.VpcManager;
|
||||
import com.cloud.network.vpc.VpcManagerImpl;
|
||||
import com.cloud.network.vpc.Dao.PrivateIpDaoImpl;
|
||||
import com.cloud.network.vpc.Dao.StaticRouteDaoImpl;
|
||||
import com.cloud.network.vpc.Dao.VpcGatewayDaoImpl;
|
||||
import com.cloud.network.vpc.Dao.VpcOfferingDaoImpl;
|
||||
import com.cloud.server.ManagementService;
|
||||
import com.cloud.tags.dao.ResourceTagsDaoImpl;
|
||||
import com.cloud.user.AccountVO;
|
||||
import com.cloud.user.MockAccountManagerImpl;
|
||||
import com.cloud.user.dao.AccountDaoImpl;
|
||||
import com.cloud.utils.component.Adapter;
|
||||
import com.cloud.utils.component.ComponentLocator;
|
||||
import com.cloud.utils.component.MockComponentLocator;
|
||||
import com.cloud.vm.dao.DomainRouterDaoImpl;
|
||||
import com.cloud.vpc.dao.MockNetworkDaoImpl;
|
||||
import com.cloud.vpc.dao.MockNetworkOfferingDaoImpl;
|
||||
import com.cloud.vpc.dao.MockNetworkOfferingServiceMapDaoImpl;
|
||||
import com.cloud.vpc.dao.MockNetworkServiceMapDaoImpl;
|
||||
import com.cloud.vpc.dao.MockVpcDaoImpl;
|
||||
import com.cloud.vpc.dao.MockVpcOfferingDaoImpl;
|
||||
import com.cloud.vpc.dao.MockVpcOfferingServiceMapDaoImpl;
|
||||
|
||||
public class VpcApiUnitTest extends TestCase{
|
||||
private static final Logger s_logger = Logger.getLogger(VpcApiUnitTest.class);
|
||||
MockComponentLocator _locator;
|
||||
VpcManager _vpcService;
|
||||
|
||||
@Override
|
||||
@Before
|
||||
public void setUp() throws Exception {
|
||||
_locator = new MockComponentLocator(ManagementService.Name);
|
||||
_locator.addDao("VpcDao", MockVpcDaoImpl.class);
|
||||
_locator.addDao("VpcOfferingDao", VpcOfferingDaoImpl.class);
|
||||
_locator.addDao("ConfigurationDao", ConfigurationDaoImpl.class);
|
||||
_locator.addDao("NetworkDao", MockNetworkDaoImpl.class);
|
||||
_locator.addDao("IPAddressDao", IPAddressDaoImpl.class);
|
||||
_locator.addDao("DomainRouterDao", DomainRouterDaoImpl.class);
|
||||
_locator.addDao("VpcGatewayDao", VpcGatewayDaoImpl.class);
|
||||
_locator.addDao("PrivateIpDao", PrivateIpDaoImpl.class);
|
||||
_locator.addDao("StaticRouteDao", StaticRouteDaoImpl.class);
|
||||
_locator.addDao("NetworkOfferingServiceMapDao", MockNetworkOfferingServiceMapDaoImpl.class);
|
||||
_locator.addDao("VpcOfferingServiceMapDao", MockVpcOfferingServiceMapDaoImpl.class);
|
||||
_locator.addDao("PhysicalNetworkDao", PhysicalNetworkDaoImpl.class);
|
||||
_locator.addDao("ResourceTagDao", ResourceTagsDaoImpl.class);
|
||||
_locator.addDao("FirewallRulesDao", FirewallRulesDaoImpl.class);
|
||||
_locator.addDao("VlanDao", VlanDaoImpl.class);
|
||||
_locator.addDao("AccountDao", AccountDaoImpl.class);
|
||||
_locator.addDao("ResourceCountDao", ResourceCountDaoImpl.class);
|
||||
_locator.addDao("NetworkOfferingDao", MockNetworkOfferingDaoImpl.class);
|
||||
_locator.addDao("NetworkServiceMapDao", MockNetworkServiceMapDaoImpl.class);
|
||||
_locator.addDao("VpcOfferingDao", MockVpcOfferingDaoImpl.class);
|
||||
|
||||
_locator.addManager("ConfigService", MockConfigurationManagerImpl.class);
|
||||
_locator.addManager("vpc manager", VpcManagerImpl.class);
|
||||
_locator.addManager("account manager", MockAccountManagerImpl.class);
|
||||
_locator.addManager("network manager", MockNetworkManagerImpl.class);
|
||||
_locator.addManager("Site2SiteVpnManager", MockSite2SiteVpnManagerImpl.class);
|
||||
_locator.addManager("ResourceLimitService", MockResourceLimitManagerImpl.class);
|
||||
|
||||
_locator.makeActive(null);
|
||||
|
||||
_vpcService = ComponentLocator.inject(VpcManagerImpl.class);
|
||||
}
|
||||
|
||||
public void test() {
|
||||
s_logger.debug("Starting test for VpcService interface");
|
||||
//Vpc service methods
|
||||
getActiveVpc();
|
||||
deleteVpc();
|
||||
|
||||
//Vpc manager methods
|
||||
validateNtwkOffForVpc();
|
||||
//destroyVpc();
|
||||
|
||||
}
|
||||
|
||||
protected void deleteVpc() {
|
||||
//delete existing offering
|
||||
boolean result = false;
|
||||
String msg = null;
|
||||
try {
|
||||
List<String> svcs = new ArrayList<String>();
|
||||
svcs.add(Service.SourceNat.getName());
|
||||
result = _vpcService.deleteVpc(1);
|
||||
} catch (Exception ex) {
|
||||
msg = ex.getMessage();
|
||||
} finally {
|
||||
if (result) {
|
||||
s_logger.debug("Delete vpc: Test passed, vpc is deleted");
|
||||
} else {
|
||||
s_logger.error("Delete vpc: TEST FAILED, vpc failed to delete " + msg);
|
||||
}
|
||||
}
|
||||
|
||||
//delete non-existing offering
|
||||
result = false;
|
||||
msg = null;
|
||||
try {
|
||||
List<String> svcs = new ArrayList<String>();
|
||||
svcs.add(Service.SourceNat.getName());
|
||||
result = _vpcService.deleteVpc(100);
|
||||
} catch (Exception ex) {
|
||||
msg = ex.getMessage();
|
||||
} finally {
|
||||
if (!result) {
|
||||
s_logger.debug("Delete vpc: Test passed, non existing vpc failed to delete ");
|
||||
} else {
|
||||
s_logger.error("Delete vpc: TEST FAILED, true is returned when try to delete non existing vpc");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
protected void getActiveVpc() {
|
||||
//test for active vpc
|
||||
boolean result = false;
|
||||
String msg = null;
|
||||
Vpc vpc = null;
|
||||
try {
|
||||
List<String> svcs = new ArrayList<String>();
|
||||
svcs.add(Service.SourceNat.getName());
|
||||
vpc = _vpcService.getActiveVpc(1);
|
||||
if (vpc != null) {
|
||||
result = true;
|
||||
}
|
||||
} catch (Exception ex) {
|
||||
msg = ex.getMessage();
|
||||
} finally {
|
||||
if (result) {
|
||||
s_logger.debug("Get active Vpc: Test passed, active vpc is returned");
|
||||
} else {
|
||||
s_logger.error("Get active Vpc: TEST FAILED, active vpc is not returned " + msg);
|
||||
}
|
||||
}
|
||||
|
||||
//test for inactive vpc
|
||||
result = false;
|
||||
msg = null;
|
||||
vpc = null;
|
||||
try {
|
||||
List<String> svcs = new ArrayList<String>();
|
||||
svcs.add(Service.SourceNat.getName());
|
||||
vpc = _vpcService.getActiveVpc(2);
|
||||
if (vpc != null) {
|
||||
result = true;
|
||||
}
|
||||
} catch (Exception ex) {
|
||||
msg = ex.getMessage();
|
||||
} finally {
|
||||
if (!result) {
|
||||
s_logger.debug("Get active Vpc: Test passed, no vpc is returned");
|
||||
} else {
|
||||
s_logger.error("Get active Vpc: TEST FAILED, non active vpc is returned");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
protected void destroyVpc() {
|
||||
try {
|
||||
_vpcService.destroyVpc(_vpcService.getVpc(1));
|
||||
} catch (Exception ex) {
|
||||
s_logger.error("Destroy VPC TEST FAILED due to exc ", ex);
|
||||
}
|
||||
}
|
||||
|
||||
protected void validateNtwkOffForVpc() {
|
||||
//validate network offering
|
||||
//1) correct network offering
|
||||
boolean result = false;
|
||||
try {
|
||||
_vpcService.validateNtkwOffForVpc(1, "0.0.0.0", "111-", new AccountVO(), _vpcService.getVpc(1), 2L, "10.1.1.1");
|
||||
result = true;
|
||||
s_logger.debug("Validate network offering: Test passed: the offering is valid for vpc creation");
|
||||
} catch (Exception ex) {
|
||||
s_logger.error("Validate network offering: TEST FAILED due to exc ", ex);
|
||||
}
|
||||
|
||||
//2) invalid offering - source nat is not included
|
||||
result = false;
|
||||
String msg = null;
|
||||
try {
|
||||
_vpcService.validateNtkwOffForVpc(2, "0.0.0.0", "111-", new AccountVO(), _vpcService.getVpc(1), 2L, "10.1.1.1");
|
||||
result = true;
|
||||
} catch (InvalidParameterValueException ex) {
|
||||
msg = ex.getMessage();
|
||||
} finally {
|
||||
if (!result) {
|
||||
s_logger.debug("Validate network offering: Test passed: " + msg);
|
||||
} else {
|
||||
s_logger.error("Validate network offering: TEST FAILED, can't use network offering without SourceNat service");
|
||||
}
|
||||
}
|
||||
|
||||
//3) invalid offering - conserve mode is off
|
||||
result = false;
|
||||
msg = null;
|
||||
try {
|
||||
_vpcService.validateNtkwOffForVpc(3, "0.0.0.0", "111-", new AccountVO(), _vpcService.getVpc(1), 2L, "10.1.1.1");
|
||||
result = true;
|
||||
} catch (InvalidParameterValueException ex) {
|
||||
msg = ex.getMessage();
|
||||
} finally {
|
||||
if (!result) {
|
||||
s_logger.debug("Validate network offering: Test passed: " + msg);
|
||||
} else {
|
||||
s_logger.error("Validate network offering: TEST FAILED, can't use network offering without conserve mode = true");
|
||||
}
|
||||
}
|
||||
|
||||
//4) invalid offering - guest type shared
|
||||
result = false;
|
||||
try {
|
||||
_vpcService.validateNtkwOffForVpc(4, "0.0.0.0", "111-", new AccountVO(), _vpcService.getVpc(1), 2L, "10.1.1.1");
|
||||
result = true;
|
||||
} catch (InvalidParameterValueException ex) {
|
||||
msg = ex.getMessage();
|
||||
} finally {
|
||||
if (!result) {
|
||||
s_logger.debug("Validate network offering: Test passed: " + msg);
|
||||
} else {
|
||||
s_logger.error("Validate network offering: TEST FAILED, can't use network offering with guest type = Shared");
|
||||
}
|
||||
}
|
||||
|
||||
//5) Invalid offering - no redundant router support
|
||||
result = false;
|
||||
try {
|
||||
_vpcService.validateNtkwOffForVpc(5, "0.0.0.0", "111-", new AccountVO(), _vpcService.getVpc(1), 2L, "10.1.1.1");
|
||||
result = true;
|
||||
} catch (InvalidParameterValueException ex) {
|
||||
msg = ex.getMessage();
|
||||
} finally {
|
||||
if (!result) {
|
||||
s_logger.debug("Validate network offering: Test passed: " + msg);
|
||||
} else {
|
||||
s_logger.error("TEST FAILED, can't use network offering with guest type = Shared");
|
||||
}
|
||||
}
|
||||
|
||||
//6) Only one network in the VPC can support LB service - negative scenario
|
||||
result = false;
|
||||
try {
|
||||
_vpcService.validateNtkwOffForVpc(6, "0.0.0.0", "111-", new AccountVO(), _vpcService.getVpc(1), 2L, "10.1.1.1");
|
||||
result = true;
|
||||
s_logger.debug("Validate network offering: Test passed: the offering is valid for vpc creation");
|
||||
} catch (InvalidParameterValueException ex) {
|
||||
msg = ex.getMessage();
|
||||
} finally {
|
||||
if (!result) {
|
||||
s_logger.debug("Test passed: " + msg);
|
||||
} else {
|
||||
s_logger.error("Validate network offering: TEST FAILED, can't use network offering with guest type = Shared");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,106 @@
|
|||
// Copyright 2012 Citrix Systems, Inc. Licensed under the
|
||||
// Apache License, Version 2.0 (the "License"); you may not use this
|
||||
// file except in compliance with the License. Citrix Systems, Inc.
|
||||
// reserves all rights not expressly granted by the License.
|
||||
// You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
//
|
||||
// Automatically generated by addcopyright.py at 04/03/2012
|
||||
package com.cloud.vpc.dao;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
import javax.ejb.Local;
|
||||
|
||||
import com.cloud.configuration.ConfigurationVO;
|
||||
import com.cloud.configuration.dao.ConfigurationDao;
|
||||
import com.cloud.utils.db.GenericDaoBase;
|
||||
|
||||
@Local(value={ConfigurationDao.class})
|
||||
public class MockConfigurationDaoImpl extends GenericDaoBase<ConfigurationVO, String> implements ConfigurationDao{
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see com.cloud.configuration.dao.ConfigurationDao#getConfiguration(java.lang.String, java.util.Map)
|
||||
*/
|
||||
@Override
|
||||
public Map<String, String> getConfiguration(String instance, Map<String, ? extends Object> params) {
|
||||
return new HashMap<String, String>();
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see com.cloud.configuration.dao.ConfigurationDao#getConfiguration(java.util.Map)
|
||||
*/
|
||||
@Override
|
||||
public Map<String, String> getConfiguration(Map<String, ? extends Object> params) {
|
||||
return new HashMap<String, String>();
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see com.cloud.configuration.dao.ConfigurationDao#getConfiguration()
|
||||
*/
|
||||
@Override
|
||||
public Map<String, String> getConfiguration() {
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see com.cloud.configuration.dao.ConfigurationDao#update(java.lang.String, java.lang.String)
|
||||
*/
|
||||
@Override
|
||||
public boolean update(String name, String value) {
|
||||
// TODO Auto-generated method stub
|
||||
return false;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see com.cloud.configuration.dao.ConfigurationDao#getValue(java.lang.String)
|
||||
*/
|
||||
@Override
|
||||
public String getValue(String name) {
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see com.cloud.configuration.dao.ConfigurationDao#getValueAndInitIfNotExist(java.lang.String, java.lang.String, java.lang.String)
|
||||
*/
|
||||
@Override
|
||||
public String getValueAndInitIfNotExist(String name, String category, String initValue) {
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see com.cloud.configuration.dao.ConfigurationDao#isPremium()
|
||||
*/
|
||||
@Override
|
||||
public boolean isPremium() {
|
||||
// TODO Auto-generated method stub
|
||||
return false;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see com.cloud.configuration.dao.ConfigurationDao#findByName(java.lang.String)
|
||||
*/
|
||||
@Override
|
||||
public ConfigurationVO findByName(String name) {
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see com.cloud.configuration.dao.ConfigurationDao#update(java.lang.String, java.lang.String, java.lang.String)
|
||||
*/
|
||||
@Override
|
||||
public boolean update(String name, String category, String value) {
|
||||
// TODO Auto-generated method stub
|
||||
return false;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,341 @@
|
|||
// Copyright 2012 Citrix Systems, Inc. Licensed under the
|
||||
// Apache License, Version 2.0 (the "License"); you may not use this
|
||||
// file except in compliance with the License. Citrix Systems, Inc.
|
||||
// reserves all rights not expressly granted by the License.
|
||||
// You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
//
|
||||
// Automatically generated by addcopyright.py at 04/03/2012
|
||||
package com.cloud.vpc.dao;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import javax.ejb.Local;
|
||||
|
||||
import com.cloud.network.Network.GuestType;
|
||||
import com.cloud.network.NetworkAccountVO;
|
||||
import com.cloud.network.NetworkVO;
|
||||
import com.cloud.network.Networks.TrafficType;
|
||||
import com.cloud.network.dao.NetworkDao;
|
||||
import com.cloud.utils.db.DB;
|
||||
import com.cloud.utils.db.GenericDaoBase;
|
||||
import com.cloud.utils.db.SearchBuilder;
|
||||
|
||||
@Local(value = NetworkDao.class)
|
||||
@DB(txn = false)
|
||||
public class MockNetworkDaoImpl extends GenericDaoBase<NetworkVO, Long> implements NetworkDao{
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see com.cloud.network.dao.NetworkDao#listByOwner(long)
|
||||
*/
|
||||
@Override
|
||||
public List<NetworkVO> listByOwner(long ownerId) {
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see com.cloud.network.dao.NetworkDao#listBy(long, long, long)
|
||||
*/
|
||||
@Override
|
||||
public List<NetworkVO> listBy(long accountId, long offeringId, long dataCenterId) {
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see com.cloud.network.dao.NetworkDao#listBy(long, long, java.lang.String, boolean)
|
||||
*/
|
||||
@Override
|
||||
public List<NetworkVO> listBy(long accountId, long dataCenterId, String cidr, boolean skipVpc) {
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see com.cloud.network.dao.NetworkDao#listByZoneAndGuestType(long, long, com.cloud.network.Network.GuestType, java.lang.Boolean)
|
||||
*/
|
||||
@Override
|
||||
public List<NetworkVO> listByZoneAndGuestType(long accountId, long dataCenterId, GuestType type, Boolean isSystem) {
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see com.cloud.network.dao.NetworkDao#persist(com.cloud.network.NetworkVO, boolean, java.util.Map)
|
||||
*/
|
||||
@Override
|
||||
public NetworkVO persist(NetworkVO network, boolean gc, Map<String, String> serviceProviderMap) {
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see com.cloud.network.dao.NetworkDao#createSearchBuilderForAccount()
|
||||
*/
|
||||
@Override
|
||||
public SearchBuilder<NetworkAccountVO> createSearchBuilderForAccount() {
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see com.cloud.network.dao.NetworkDao#getNetworksForOffering(long, long, long)
|
||||
*/
|
||||
@Override
|
||||
public List<NetworkVO> getNetworksForOffering(long offeringId, long dataCenterId, long accountId) {
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see com.cloud.network.dao.NetworkDao#getNextAvailableMacAddress(long)
|
||||
*/
|
||||
@Override
|
||||
public String getNextAvailableMacAddress(long networkConfigId) {
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see com.cloud.network.dao.NetworkDao#listBy(long, long)
|
||||
*/
|
||||
@Override
|
||||
public List<NetworkVO> listBy(long accountId, long networkId) {
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see com.cloud.network.dao.NetworkDao#countByZoneAndUri(long, java.lang.String)
|
||||
*/
|
||||
@Override
|
||||
public long countByZoneAndUri(long zoneId, String broadcastUri) {
|
||||
// TODO Auto-generated method stub
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see com.cloud.network.dao.NetworkDao#countByZoneUriAndGuestType(long, java.lang.String, com.cloud.network.Network.GuestType)
|
||||
*/
|
||||
@Override
|
||||
public long countByZoneUriAndGuestType(long zoneId, String broadcastUri, GuestType guestType) {
|
||||
// TODO Auto-generated method stub
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see com.cloud.network.dao.NetworkDao#listByZone(long)
|
||||
*/
|
||||
@Override
|
||||
public List<NetworkVO> listByZone(long zoneId) {
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see com.cloud.network.dao.NetworkDao#changeActiveNicsBy(long, int)
|
||||
*/
|
||||
@Override
|
||||
public void changeActiveNicsBy(long networkId, int nicsCount) {
|
||||
// TODO Auto-generated method stub
|
||||
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see com.cloud.network.dao.NetworkDao#getActiveNicsIn(long)
|
||||
*/
|
||||
@Override
|
||||
public int getActiveNicsIn(long networkId) {
|
||||
// TODO Auto-generated method stub
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see com.cloud.network.dao.NetworkDao#findNetworksToGarbageCollect()
|
||||
*/
|
||||
@Override
|
||||
public List<Long> findNetworksToGarbageCollect() {
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see com.cloud.network.dao.NetworkDao#clearCheckForGc(long)
|
||||
*/
|
||||
@Override
|
||||
public void clearCheckForGc(long networkId) {
|
||||
// TODO Auto-generated method stub
|
||||
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see com.cloud.network.dao.NetworkDao#listByZoneSecurityGroup(java.lang.Long)
|
||||
*/
|
||||
@Override
|
||||
public List<NetworkVO> listByZoneSecurityGroup(Long zoneId) {
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see com.cloud.network.dao.NetworkDao#addDomainToNetwork(long, long, java.lang.Boolean)
|
||||
*/
|
||||
@Override
|
||||
public void addDomainToNetwork(long networkId, long domainId, Boolean subdomainAccess) {
|
||||
// TODO Auto-generated method stub
|
||||
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see com.cloud.network.dao.NetworkDao#listByPhysicalNetwork(long)
|
||||
*/
|
||||
@Override
|
||||
public List<NetworkVO> listByPhysicalNetwork(long physicalNetworkId) {
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see com.cloud.network.dao.NetworkDao#listSecurityGroupEnabledNetworks()
|
||||
*/
|
||||
@Override
|
||||
public List<NetworkVO> listSecurityGroupEnabledNetworks() {
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see com.cloud.network.dao.NetworkDao#listByPhysicalNetworkTrafficType(long, com.cloud.network.Networks.TrafficType)
|
||||
*/
|
||||
@Override
|
||||
public List<NetworkVO> listByPhysicalNetworkTrafficType(long physicalNetworkId, TrafficType trafficType) {
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see com.cloud.network.dao.NetworkDao#listBy(long, long, com.cloud.network.Network.GuestType, com.cloud.network.Networks.TrafficType)
|
||||
*/
|
||||
@Override
|
||||
public List<NetworkVO> listBy(long accountId, long dataCenterId, GuestType type, TrafficType trafficType) {
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see com.cloud.network.dao.NetworkDao#listByPhysicalNetworkAndProvider(long, java.lang.String)
|
||||
*/
|
||||
@Override
|
||||
public List<NetworkVO> listByPhysicalNetworkAndProvider(long physicalNetworkId, String providerName) {
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see com.cloud.network.dao.NetworkDao#persistNetworkServiceProviders(long, java.util.Map)
|
||||
*/
|
||||
@Override
|
||||
public void persistNetworkServiceProviders(long networkId, Map<String, String> serviceProviderMap) {
|
||||
// TODO Auto-generated method stub
|
||||
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see com.cloud.network.dao.NetworkDao#update(java.lang.Long, com.cloud.network.NetworkVO, java.util.Map)
|
||||
*/
|
||||
@Override
|
||||
public boolean update(Long networkId, NetworkVO network, Map<String, String> serviceProviderMap) {
|
||||
// TODO Auto-generated method stub
|
||||
return false;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see com.cloud.network.dao.NetworkDao#listByZoneAndTrafficType(long, com.cloud.network.Networks.TrafficType)
|
||||
*/
|
||||
@Override
|
||||
public List<NetworkVO> listByZoneAndTrafficType(long zoneId, TrafficType trafficType) {
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see com.cloud.network.dao.NetworkDao#setCheckForGc(long)
|
||||
*/
|
||||
@Override
|
||||
public void setCheckForGc(long networkId) {
|
||||
// TODO Auto-generated method stub
|
||||
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see com.cloud.network.dao.NetworkDao#getNetworkCountByNetworkOffId(long)
|
||||
*/
|
||||
@Override
|
||||
public int getNetworkCountByNetworkOffId(long networkOfferingId) {
|
||||
// TODO Auto-generated method stub
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see com.cloud.network.dao.NetworkDao#countNetworksUserCanCreate(long)
|
||||
*/
|
||||
@Override
|
||||
public long countNetworksUserCanCreate(long ownerId) {
|
||||
// TODO Auto-generated method stub
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see com.cloud.network.dao.NetworkDao#listSourceNATEnabledNetworks(long, long, com.cloud.network.Network.GuestType)
|
||||
*/
|
||||
@Override
|
||||
public List<NetworkVO> listSourceNATEnabledNetworks(long accountId, long dataCenterId, GuestType type) {
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see com.cloud.network.dao.NetworkDao#getNetworkCountByVpcId(long)
|
||||
*/
|
||||
@Override
|
||||
public int getNetworkCountByVpcId(long vpcId) {
|
||||
// TODO Auto-generated method stub
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see com.cloud.network.dao.NetworkDao#listByVpc(long)
|
||||
*/
|
||||
@Override
|
||||
public List<NetworkVO> listByVpc(long vpcId) {
|
||||
List<NetworkVO> networks = new ArrayList<NetworkVO>();
|
||||
networks.add(new NetworkVO());
|
||||
return networks;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see com.cloud.network.dao.NetworkDao#getPrivateNetwork(java.lang.String, java.lang.String, long, long)
|
||||
*/
|
||||
@Override
|
||||
public NetworkVO getPrivateNetwork(String broadcastUri, String cidr, long accountId, long zoneId) {
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see com.cloud.network.dao.NetworkDao#countVpcNetworks(long)
|
||||
*/
|
||||
@Override
|
||||
public long countVpcNetworks(long vpcId) {
|
||||
// TODO Auto-generated method stub
|
||||
return 0;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,148 @@
|
|||
// Copyright 2012 Citrix Systems, Inc. Licensed under the
|
||||
// Apache License, Version 2.0 (the "License"); you may not use this
|
||||
// file except in compliance with the License. Citrix Systems, Inc.
|
||||
// reserves all rights not expressly granted by the License.
|
||||
// You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
//
|
||||
// Automatically generated by addcopyright.py at 04/03/2012
|
||||
package com.cloud.vpc.dao;
|
||||
|
||||
import java.lang.reflect.Field;
|
||||
import java.util.List;
|
||||
|
||||
import javax.ejb.Local;
|
||||
|
||||
import org.apache.log4j.Logger;
|
||||
|
||||
import com.cloud.network.Network;
|
||||
import com.cloud.network.Network.GuestType;
|
||||
import com.cloud.network.Networks.TrafficType;
|
||||
import com.cloud.offering.NetworkOffering;
|
||||
import com.cloud.offering.NetworkOffering.Availability;
|
||||
import com.cloud.offering.NetworkOffering.State;
|
||||
import com.cloud.offerings.NetworkOfferingVO;
|
||||
import com.cloud.offerings.dao.NetworkOfferingDao;
|
||||
import com.cloud.utils.db.DB;
|
||||
import com.cloud.utils.db.GenericDaoBase;
|
||||
|
||||
@Local(value = NetworkOfferingDao.class)
|
||||
@DB(txn = false)
|
||||
public class MockNetworkOfferingDaoImpl extends GenericDaoBase<NetworkOfferingVO, Long> implements NetworkOfferingDao {
|
||||
private static final Logger s_logger = Logger.getLogger(MockNetworkOfferingDaoImpl.class);
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see com.cloud.offerings.dao.NetworkOfferingDao#findByUniqueName(java.lang.String)
|
||||
*/
|
||||
@Override
|
||||
public NetworkOfferingVO findByUniqueName(String uniqueName) {
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see com.cloud.offerings.dao.NetworkOfferingDao#persistDefaultNetworkOffering(com.cloud.offerings.NetworkOfferingVO)
|
||||
*/
|
||||
@Override
|
||||
public NetworkOfferingVO persistDefaultNetworkOffering(NetworkOfferingVO offering) {
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see com.cloud.offerings.dao.NetworkOfferingDao#listSystemNetworkOfferings()
|
||||
*/
|
||||
@Override
|
||||
public List<NetworkOfferingVO> listSystemNetworkOfferings() {
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see com.cloud.offerings.dao.NetworkOfferingDao#listByAvailability(com.cloud.offering.NetworkOffering.Availability, boolean)
|
||||
*/
|
||||
@Override
|
||||
public List<NetworkOfferingVO> listByAvailability(Availability availability, boolean isSystem) {
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see com.cloud.offerings.dao.NetworkOfferingDao#getOfferingIdsToUpgradeFrom(com.cloud.offering.NetworkOffering)
|
||||
*/
|
||||
@Override
|
||||
public List<Long> getOfferingIdsToUpgradeFrom(NetworkOffering originalOffering) {
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see com.cloud.offerings.dao.NetworkOfferingDao#listByTrafficTypeGuestTypeAndState(com.cloud.offering.NetworkOffering.State, com.cloud.network.Networks.TrafficType, com.cloud.network.Network.GuestType)
|
||||
*/
|
||||
@Override
|
||||
public List<NetworkOfferingVO> listByTrafficTypeGuestTypeAndState(State state, TrafficType trafficType, GuestType type) {
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public NetworkOfferingVO findById(Long id) {
|
||||
NetworkOfferingVO vo = null;
|
||||
if (id.longValue() == 1) {
|
||||
//network offering valid for vpc
|
||||
vo = new NetworkOfferingVO("vpc", "vpc", TrafficType.Guest, false, true, null, null, false,
|
||||
Availability.Optional, null, Network.GuestType.Isolated, false, false);
|
||||
} else if (id.longValue() == 2) {
|
||||
//invalid offering - source nat is not included
|
||||
vo = new NetworkOfferingVO("vpc", "vpc", TrafficType.Guest, false, true, null, null, false,
|
||||
Availability.Optional, null, Network.GuestType.Isolated, false, false);
|
||||
} else if (id.longValue() == 3) {
|
||||
//network offering invalid for vpc (conserve mode off)
|
||||
vo = new NetworkOfferingVO("non vpc", "non vpc", TrafficType.Guest, false, true, null, null, false,
|
||||
Availability.Optional, null, Network.GuestType.Isolated, true, false);
|
||||
} else if (id.longValue() == 4) {
|
||||
//network offering invalid for vpc (Shared)
|
||||
vo = new NetworkOfferingVO("non vpc", "non vpc", TrafficType.Guest, false, true, null, null, false,
|
||||
Availability.Optional, null, Network.GuestType.Shared, false, false);
|
||||
} else if (id.longValue() == 5) {
|
||||
//network offering invalid for vpc (has redundant router)
|
||||
vo = new NetworkOfferingVO("vpc", "vpc", TrafficType.Guest, false, true, null, null, false,
|
||||
Availability.Optional, null, Network.GuestType.Isolated, false, false);
|
||||
vo.setRedundantRouter(true);
|
||||
} else if (id.longValue() == 6) {
|
||||
//network offering invalid for vpc (has lb service)
|
||||
vo = new NetworkOfferingVO("vpc", "vpc", TrafficType.Guest, false, true, null, null, false,
|
||||
Availability.Optional, null, Network.GuestType.Isolated, false, false);
|
||||
}
|
||||
|
||||
if (vo != null) {
|
||||
vo = setId(vo, id);
|
||||
}
|
||||
|
||||
return vo;
|
||||
}
|
||||
|
||||
private NetworkOfferingVO setId(NetworkOfferingVO vo, long id) {
|
||||
NetworkOfferingVO voToReturn = vo;
|
||||
Class<?> c = voToReturn.getClass();
|
||||
try {
|
||||
Field f = c.getDeclaredField("id");
|
||||
f.setAccessible(true);
|
||||
f.setLong(voToReturn, id);
|
||||
} catch (NoSuchFieldException ex) {
|
||||
s_logger.warn(ex);
|
||||
return null;
|
||||
} catch (IllegalAccessException ex) {
|
||||
s_logger.warn(ex);
|
||||
return null;
|
||||
}
|
||||
|
||||
return voToReturn;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,35 @@
|
|||
// Copyright 2012 Citrix Systems, Inc. Licensed under the
|
||||
// Apache License, Version 2.0 (the "License"); you may not use this
|
||||
// file except in compliance with the License. Citrix Systems, Inc.
|
||||
// reserves all rights not expressly granted by the License.
|
||||
// You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
//
|
||||
// Automatically generated by addcopyright.py at 04/03/2012
|
||||
package com.cloud.vpc.dao;
|
||||
|
||||
import javax.ejb.Local;
|
||||
|
||||
import com.cloud.network.Network.Service;
|
||||
import com.cloud.offerings.dao.NetworkOfferingServiceMapDao;
|
||||
import com.cloud.offerings.dao.NetworkOfferingServiceMapDaoImpl;
|
||||
import com.cloud.utils.db.DB;
|
||||
|
||||
@Local(value = NetworkOfferingServiceMapDao.class)
|
||||
@DB(txn = false)
|
||||
public class MockNetworkOfferingServiceMapDaoImpl extends NetworkOfferingServiceMapDaoImpl{
|
||||
|
||||
@Override
|
||||
public boolean areServicesSupportedByNetworkOffering(long networkOfferingId, Service... services) {
|
||||
if (services.length > 0 && services[0] == Service.SourceNat && networkOfferingId != 2) {
|
||||
return true;
|
||||
} else if (services.length > 0 && services[0] == Service.Lb && networkOfferingId == 6) {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,94 @@
|
|||
// Copyright 2012 Citrix Systems, Inc. Licensed under the
|
||||
// Apache License, Version 2.0 (the "License"); you may not use this
|
||||
// file except in compliance with the License. Citrix Systems, Inc.
|
||||
// reserves all rights not expressly granted by the License.
|
||||
// You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
//
|
||||
// Automatically generated by addcopyright.py at 04/03/2012
|
||||
package com.cloud.vpc.dao;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import javax.ejb.Local;
|
||||
|
||||
import com.cloud.network.Network.Provider;
|
||||
import com.cloud.network.Network.Service;
|
||||
import com.cloud.network.NetworkServiceMapVO;
|
||||
import com.cloud.network.dao.NetworkServiceMapDao;
|
||||
import com.cloud.utils.db.DB;
|
||||
import com.cloud.utils.db.GenericDaoBase;
|
||||
|
||||
@Local(value = NetworkServiceMapDao.class)
|
||||
@DB(txn = false)
|
||||
public class MockNetworkServiceMapDaoImpl extends GenericDaoBase<NetworkServiceMapVO, Long> implements NetworkServiceMapDao{
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see com.cloud.network.dao.NetworkServiceMapDao#areServicesSupportedInNetwork(long, com.cloud.network.Network.Service[])
|
||||
*/
|
||||
@Override
|
||||
public boolean areServicesSupportedInNetwork(long networkId, Service... services) {
|
||||
if (services.length > 0 && services[0] == Service.Lb) {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see com.cloud.network.dao.NetworkServiceMapDao#canProviderSupportServiceInNetwork(long, com.cloud.network.Network.Service, com.cloud.network.Network.Provider)
|
||||
*/
|
||||
@Override
|
||||
public boolean canProviderSupportServiceInNetwork(long networkId, Service service, Provider provider) {
|
||||
// TODO Auto-generated method stub
|
||||
return false;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see com.cloud.network.dao.NetworkServiceMapDao#getServicesInNetwork(long)
|
||||
*/
|
||||
@Override
|
||||
public List<NetworkServiceMapVO> getServicesInNetwork(long networkId) {
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see com.cloud.network.dao.NetworkServiceMapDao#getProviderForServiceInNetwork(long, com.cloud.network.Network.Service)
|
||||
*/
|
||||
@Override
|
||||
public String getProviderForServiceInNetwork(long networkid, Service service) {
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see com.cloud.network.dao.NetworkServiceMapDao#deleteByNetworkId(long)
|
||||
*/
|
||||
@Override
|
||||
public void deleteByNetworkId(long networkId) {
|
||||
// TODO Auto-generated method stub
|
||||
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see com.cloud.network.dao.NetworkServiceMapDao#getDistinctProviders(long)
|
||||
*/
|
||||
@Override
|
||||
public List<String> getDistinctProviders(long networkId) {
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see com.cloud.network.dao.NetworkServiceMapDao#isProviderForNetwork(long, com.cloud.network.Network.Provider)
|
||||
*/
|
||||
@Override
|
||||
public String isProviderForNetwork(long networkId, Provider provider) {
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,126 @@
|
|||
// Copyright 2012 Citrix Systems, Inc. Licensed under the
|
||||
// Apache License, Version 2.0 (the "License"); you may not use this
|
||||
// file except in compliance with the License. Citrix Systems, Inc.
|
||||
// reserves all rights not expressly granted by the License.
|
||||
// You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
//
|
||||
// Automatically generated by addcopyright.py at 04/03/2012
|
||||
package com.cloud.vpc.dao;
|
||||
|
||||
import java.lang.reflect.Field;
|
||||
import java.util.List;
|
||||
|
||||
import javax.ejb.Local;
|
||||
|
||||
import org.apache.log4j.Logger;
|
||||
|
||||
import com.cloud.network.vpc.Vpc;
|
||||
import com.cloud.network.vpc.Vpc.State;
|
||||
import com.cloud.network.vpc.VpcVO;
|
||||
import com.cloud.network.vpc.Dao.VpcDao;
|
||||
import com.cloud.utils.db.DB;
|
||||
import com.cloud.utils.db.GenericDaoBase;
|
||||
|
||||
@Local(value = VpcDao.class)
|
||||
@DB(txn = false)
|
||||
public class MockVpcDaoImpl extends GenericDaoBase<VpcVO, Long> implements VpcDao{
|
||||
private static final Logger s_logger = Logger.getLogger(MockNetworkOfferingDaoImpl.class);
|
||||
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see com.cloud.network.vpc.Dao.VpcDao#getVpcCountByOfferingId(long)
|
||||
*/
|
||||
@Override
|
||||
public int getVpcCountByOfferingId(long offId) {
|
||||
return 100;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see com.cloud.network.vpc.Dao.VpcDao#getActiveVpcById(long)
|
||||
*/
|
||||
@Override
|
||||
public Vpc getActiveVpcById(long vpcId) {
|
||||
Vpc vpc = findById(vpcId);
|
||||
if (vpc != null && vpc.getState() == Vpc.State.Enabled) {
|
||||
return vpc;
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see com.cloud.network.vpc.Dao.VpcDao#listByAccountId(long)
|
||||
*/
|
||||
@Override
|
||||
public List<? extends Vpc> listByAccountId(long accountId) {
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see com.cloud.network.vpc.Dao.VpcDao#listInactiveVpcs()
|
||||
*/
|
||||
@Override
|
||||
public List<VpcVO> listInactiveVpcs() {
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see com.cloud.network.vpc.Dao.VpcDao#countByAccountId(long)
|
||||
*/
|
||||
@Override
|
||||
public long countByAccountId(long accountId) {
|
||||
// TODO Auto-generated method stub
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public VpcVO findById(Long id) {
|
||||
VpcVO vo = null;
|
||||
if (id.longValue() == 1) {
|
||||
vo = new VpcVO(1, "new vpc", "new vpc", 1,1 , 1, "0.0.0.0/0", "vpc domain");
|
||||
} else if (id.longValue() == 2) {
|
||||
vo = new VpcVO(1, "new vpc", "new vpc", 1,1 , 1, "0.0.0.0/0", "vpc domain");
|
||||
vo.setState(State.Inactive);
|
||||
}
|
||||
|
||||
vo = setId(vo, id);
|
||||
|
||||
return vo;
|
||||
}
|
||||
|
||||
private VpcVO setId(VpcVO vo, long id) {
|
||||
VpcVO voToReturn = vo;
|
||||
Class<?> c = voToReturn.getClass();
|
||||
try {
|
||||
Field f = c.getDeclaredField("id");
|
||||
f.setAccessible(true);
|
||||
f.setLong(voToReturn, id);
|
||||
} catch (NoSuchFieldException ex) {
|
||||
s_logger.warn(ex);
|
||||
return null;
|
||||
} catch (IllegalAccessException ex) {
|
||||
s_logger.warn(ex);
|
||||
return null;
|
||||
}
|
||||
|
||||
return voToReturn;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean remove(Long id) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean update(Long id, VpcVO vo) {
|
||||
return true;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,39 @@
|
|||
// Copyright 2012 Citrix Systems, Inc. Licensed under the
|
||||
// Apache License, Version 2.0 (the "License"); you may not use this
|
||||
// file except in compliance with the License. Citrix Systems, Inc.
|
||||
// reserves all rights not expressly granted by the License.
|
||||
// You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
//
|
||||
// Automatically generated by addcopyright.py at 04/03/2012
|
||||
package com.cloud.vpc.dao;
|
||||
|
||||
import javax.ejb.Local;
|
||||
|
||||
import com.cloud.network.vpc.VpcOfferingVO;
|
||||
import com.cloud.network.vpc.Dao.VpcOfferingDao;
|
||||
import com.cloud.utils.db.DB;
|
||||
import com.cloud.utils.db.GenericDaoBase;
|
||||
|
||||
@Local(value = VpcOfferingDao.class)
|
||||
@DB(txn = false)
|
||||
public class MockVpcOfferingDaoImpl extends GenericDaoBase<VpcOfferingVO, Long> implements VpcOfferingDao{
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see com.cloud.network.vpc.Dao.VpcOfferingDao#findByUniqueName(java.lang.String)
|
||||
*/
|
||||
@Override
|
||||
public VpcOfferingVO findByUniqueName(String uniqueName) {
|
||||
return new VpcOfferingVO();
|
||||
}
|
||||
|
||||
@Override
|
||||
public VpcOfferingVO persist(VpcOfferingVO vo) {
|
||||
return vo;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,69 @@
|
|||
// Copyright 2012 Citrix Systems, Inc. Licensed under the
|
||||
// Apache License, Version 2.0 (the "License"); you may not use this
|
||||
// file except in compliance with the License. Citrix Systems, Inc.
|
||||
// reserves all rights not expressly granted by the License.
|
||||
// You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
//
|
||||
// Automatically generated by addcopyright.py at 04/03/2012
|
||||
package com.cloud.vpc.dao;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import javax.ejb.Local;
|
||||
|
||||
import com.cloud.network.Network.Service;
|
||||
import com.cloud.network.vpc.VpcOfferingServiceMapVO;
|
||||
import com.cloud.network.vpc.Dao.VpcOfferingServiceMapDao;
|
||||
import com.cloud.utils.db.DB;
|
||||
import com.cloud.utils.db.GenericDaoBase;
|
||||
|
||||
@Local(value = VpcOfferingServiceMapDao.class)
|
||||
@DB(txn = false)
|
||||
public class MockVpcOfferingServiceMapDaoImpl extends GenericDaoBase<VpcOfferingServiceMapVO, Long> implements VpcOfferingServiceMapDao{
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see com.cloud.network.vpc.Dao.VpcOfferingServiceMapDao#listByVpcOffId(long)
|
||||
*/
|
||||
@Override
|
||||
public List<VpcOfferingServiceMapVO> listByVpcOffId(long vpcOffId) {
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see com.cloud.network.vpc.Dao.VpcOfferingServiceMapDao#areServicesSupportedByNetworkOffering(long, com.cloud.network.Network.Service[])
|
||||
*/
|
||||
@Override
|
||||
public boolean areServicesSupportedByNetworkOffering(long networkOfferingId, Service[] services) {
|
||||
// TODO Auto-generated method stub
|
||||
return false;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see com.cloud.network.vpc.Dao.VpcOfferingServiceMapDao#listServicesForVpcOffering(long)
|
||||
*/
|
||||
@Override
|
||||
public List<String> listServicesForVpcOffering(long vpcOfferingId) {
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see com.cloud.network.vpc.Dao.VpcOfferingServiceMapDao#findByServiceProviderAndOfferingId(java.lang.String, java.lang.String, long)
|
||||
*/
|
||||
@Override
|
||||
public VpcOfferingServiceMapVO findByServiceProviderAndOfferingId(String service, String provider, long vpcOfferingId) {
|
||||
return new VpcOfferingServiceMapVO();
|
||||
}
|
||||
|
||||
@Override
|
||||
public VpcOfferingServiceMapVO persist (VpcOfferingServiceMapVO vo) {
|
||||
return vo;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,26 @@
|
|||
// Copyright 2012 Citrix Systems, Inc. Licensed under the
|
||||
// Apache License, Version 2.0 (the "License"); you may not use this
|
||||
// file except in compliance with the License. Citrix Systems, Inc.
|
||||
// reserves all rights not expressly granted by the License.
|
||||
// You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
//
|
||||
// Automatically generated by addcopyright.py at 04/03/2012
|
||||
package com.cloud.vpc.dao;
|
||||
|
||||
import com.cloud.exception.ConcurrentOperationException;
|
||||
import com.cloud.exception.ResourceUnavailableException;
|
||||
import com.cloud.network.element.VpcVirtualRouterElement;
|
||||
import com.cloud.network.vpc.Vpc;
|
||||
|
||||
public class MockVpcVirtualRouterElement extends VpcVirtualRouterElement{
|
||||
@Override
|
||||
public boolean shutdownVpc(Vpc vpc) throws ConcurrentOperationException, ResourceUnavailableException {
|
||||
return true;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -347,9 +347,8 @@ UPDATE `cloud`.`data_center` SET `is_local_storage_enabled` = IF ((SELECT `value
|
|||
|
||||
ALTER TABLE `cloud`.`hypervisor_capabilities` ADD COLUMN `max_data_volumes_limit` int unsigned DEFAULT 6 COMMENT 'Max. data volumes per VM supported by hypervisor';
|
||||
|
||||
SET SQL_SAFE_UPDATES=0;
|
||||
UPDATE `cloud`.`hypervisor_capabilities` SET `max_data_volumes_limit`=13 WHERE `hypervisor_type`='XenServer' AND (`hypervisor_version`='6.0' OR `hypervisor_version`='6.0.2');
|
||||
SET SQL_SAFE_UPDATES=1;
|
||||
|
||||
UPDATE `cloud`.`configuration` SET description='In second, timeout for creating volume from snapshot' WHERE name='create.volume.from.snapshot.wait';
|
||||
|
||||
INSERT IGNORE INTO `cloud`.`configuration` VALUES ('Account Defaults', 'DEFAULT', 'management-server', 'max.account.vpcs', '20', 'The default maximum number of vpcs that can be created for an account');
|
||||
|
|
|
|||
|
|
@ -28,7 +28,7 @@ INSERT INTO `cloud`.`vm_template` (id, unique_name, name, public, created, type,
|
|||
VALUES (7, 'centos53-x64', 'CentOS 5.3(64-bit) no GUI (vSphere)', 1, now(), 'BUILTIN', 0, 64, 1, 'http://download.cloud.com/releases/2.2.0/CentOS5.3-x86_64.ova', 'f6f881b7f2292948d8494db837fe0f47', 0, 'CentOS 5.3(64-bit) no GUI (vSphere)', 'OVA', 12, 1, 1, 'VMware', 1);
|
||||
|
||||
INSERT INTO `cloud`.`vm_template` (id, unique_name, name, public, created, type, hvm, bits, account_id, url, checksum, enable_password, display_text, format, guest_os_id, featured, cross_zones, hypervisor_type)
|
||||
VALUES (8, 'routing-8', 'SystemVM Template (vSphere)', 0, now(), 'SYSTEM', 0, 32, 1, 'http://download.cloud.com/templates/acton/acton-systemvm-02062012.ova', 'e72b21c9541d005600297cb92d241434', 0, 'SystemVM Template (vSphere)', 'OVA', 15, 0, 1, 'VMware');
|
||||
VALUES (8, 'routing-8', 'SystemVM Template (vSphere)', 0, now(), 'SYSTEM', 0, 32, 1, 'http://download.cloud.com/templates/burbank/burbank-systemvm-08012012.ova', '7137e453f950079ea2ba6feaafd939e8', 0, 'SystemVM Template (vSphere)', 'OVA', 15, 0, 1, 'VMware');
|
||||
|
||||
INSERT INTO `cloud`.`vm_template` (id, unique_name, name, public, created, type, hvm, bits, account_id, url, checksum, enable_password, display_text, format, guest_os_id, featured, cross_zones, hypervisor_type)
|
||||
VALUES (9, 'routing-9', 'SystemVM Template (HyperV)', 0, now(), 'SYSTEM', 0, 32, 1, 'http://download.cloud.com/templates/acton/acton-systemvm-02062012.vhd.bz2', 'f613f38c96bf039f2e5cbf92fa8ad4f8', 0, 'SystemVM Template (HyperV)', 'VHD', 15, 0, 1, 'Hyperv');
|
||||
|
|
|
|||
|
|
@ -3580,7 +3580,7 @@ CREATE TABLE `template_host_ref` (
|
|||
|
||||
LOCK TABLES `template_host_ref` WRITE;
|
||||
/*!40000 ALTER TABLE `template_host_ref` DISABLE KEYS */;
|
||||
INSERT INTO `template_host_ref` VALUES (1,1,9,'2012-07-19 22:20:20','2012-07-19 22:20:20',NULL,100,0,0,'DOWNLOADED',NULL,NULL,'template/tmpl/1/9/','http://download.cloud.com/templates/acton/acton-systemvm-02062012.vhd.bz2',0,0),(2,1,8,'2012-07-19 22:20:20','2012-07-19 22:20:20',NULL,100,0,0,'DOWNLOADED',NULL,NULL,'template/tmpl/1/8/','http://download.cloud.com/templates/acton/acton-systemvm-02062012.ova',0,0),(3,1,3,'2012-07-19 22:20:20','2012-07-19 22:30:12',NULL,100,757071872,757071872,'DOWNLOADED',NULL,NULL,'template/tmpl/1/3//adb6033f-c806-4884-938a-1ec398fc5ff0.qcow2','http://download.cloud.com/templates/acton/acton-systemvm-02062012.qcow2.bz2',0,0),(4,1,1,'2012-07-19 22:20:20','2012-07-19 22:30:12',NULL,100,565240320,565240320,'DOWNLOADED',NULL,NULL,'template/tmpl/1/1//a349b09e-4f8a-436a-bf3e-fc70e79c04cc.vhd','http://download.cloud.com/templates/acton/acton-systemvm-02062012.vhd.bz2',0,0),(5,1,4,'2012-07-19 22:30:12','2012-07-19 22:30:12',NULL,0,0,0,'NOT_DOWNLOADED',NULL,NULL,NULL,'http://download.cloud.com/releases/2.2.0/eec2209b-9875-3c8d-92be-c001bd8a0faf.qcow2.bz2',0,0),(6,1,5,'2012-07-19 22:30:12','2012-07-19 22:47:50','ebdb6d62-aa39-4d43-b6c4-dc9740d5e31e',100,21474836480,1758786048,'DOWNLOADED','Install completed successfully at 7/19/12 4:39 PM','/mnt/SecStorage/60b4c411-98da-336f-a7f0-84a3e1c4c218/template/tmpl/1/5/dnld1522056867875408327tmp_','template/tmpl//1/5//facf39f0-4874-3086-85af-bafbed76a2c0.vhd','http://download.cloud.com/templates/builtin/centos56-x86_64.vhd.bz2',0,0),(7,1,7,'2012-07-19 22:30:12','2012-07-19 22:30:12',NULL,0,0,0,'NOT_DOWNLOADED',NULL,NULL,NULL,'http://download.cloud.com/releases/2.2.0/CentOS5.3-x86_64.ova',0,0);
|
||||
INSERT INTO `template_host_ref` VALUES (1,1,9,'2012-07-19 22:20:20','2012-07-19 22:20:20',NULL,100,0,0,'DOWNLOADED',NULL,NULL,'template/tmpl/1/9/','http://download.cloud.com/templates/acton/acton-systemvm-02062012.vhd.bz2',0,0),(2,1,8,'2012-07-19 22:20:20','2012-07-19 22:20:20',NULL,100,0,0,'DOWNLOADED',NULL,NULL,'template/tmpl/1/8/','http://download.cloud.com/templates/burbank/burbank-systemvm-08012012.ova',0,0),(3,1,3,'2012-07-19 22:20:20','2012-07-19 22:30:12',NULL,100,757071872,757071872,'DOWNLOADED',NULL,NULL,'template/tmpl/1/3//adb6033f-c806-4884-938a-1ec398fc5ff0.qcow2','http://download.cloud.com/templates/acton/acton-systemvm-02062012.qcow2.bz2',0,0),(4,1,1,'2012-07-19 22:20:20','2012-07-19 22:30:12',NULL,100,565240320,565240320,'DOWNLOADED',NULL,NULL,'template/tmpl/1/1//a349b09e-4f8a-436a-bf3e-fc70e79c04cc.vhd','http://download.cloud.com/templates/acton/acton-systemvm-02062012.vhd.bz2',0,0),(5,1,4,'2012-07-19 22:30:12','2012-07-19 22:30:12',NULL,0,0,0,'NOT_DOWNLOADED',NULL,NULL,NULL,'http://download.cloud.com/releases/2.2.0/eec2209b-9875-3c8d-92be-c001bd8a0faf.qcow2.bz2',0,0),(6,1,5,'2012-07-19 22:30:12','2012-07-19 22:47:50','ebdb6d62-aa39-4d43-b6c4-dc9740d5e31e',100,21474836480,1758786048,'DOWNLOADED','Install completed successfully at 7/19/12 4:39 PM','/mnt/SecStorage/60b4c411-98da-336f-a7f0-84a3e1c4c218/template/tmpl/1/5/dnld1522056867875408327tmp_','template/tmpl//1/5//facf39f0-4874-3086-85af-bafbed76a2c0.vhd','http://download.cloud.com/templates/builtin/centos56-x86_64.vhd.bz2',0,0),(7,1,7,'2012-07-19 22:30:12','2012-07-19 22:30:12',NULL,0,0,0,'NOT_DOWNLOADED',NULL,NULL,NULL,'http://download.cloud.com/releases/2.2.0/CentOS5.3-x86_64.ova',0,0);
|
||||
/*!40000 ALTER TABLE `template_host_ref` ENABLE KEYS */;
|
||||
UNLOCK TABLES;
|
||||
|
||||
|
|
@ -4210,7 +4210,7 @@ CREATE TABLE `vm_template` (
|
|||
|
||||
LOCK TABLES `vm_template` WRITE;
|
||||
/*!40000 ALTER TABLE `vm_template` DISABLE KEYS */;
|
||||
INSERT INTO `vm_template` VALUES (1,'routing-1','SystemVM Template (XenServer)','ea041c86-a510-4a66-af6d-94ac2261c075',0,0,'SYSTEM',0,64,'http://download.cloud.com/templates/acton/acton-systemvm-02062012.vhd.bz2','VHD','2012-07-19 15:19:39',NULL,1,'f613f38c96bf039f2e5cbf92fa8ad4f8','SystemVM Template (XenServer)',0,0,15,1,0,1,0,'XenServer',NULL,NULL,0),(2,'centos53-x86_64','CentOS 5.3(64-bit) no GUI (XenServer)','77783498-a5f3-411f-be92-8965d06cc968',1,1,'BUILTIN',0,64,'http://download.cloud.com/templates/builtin/f59f18fb-ae94-4f97-afd2-f84755767aca.vhd.bz2','VHD','2012-07-19 15:19:39','2012-07-19 15:19:39',1,'b63d854a9560c013142567bbae8d98cf','CentOS 5.3(64-bit) no GUI (XenServer)',0,0,12,1,0,1,1,'XenServer',NULL,NULL,0),(3,'routing-3','SystemVM Template (KVM)','af37c452-9d00-4f48-80f1-1d4bd773c37e',0,0,'SYSTEM',0,64,'http://download.cloud.com/templates/acton/acton-systemvm-02062012.qcow2.bz2','QCOW2','2012-07-19 15:19:39',NULL,1,'2755de1f9ef2ce4d6f2bee2efbb4da92','SystemVM Template (KVM)',0,0,15,1,0,1,0,'KVM',NULL,NULL,0),(4,'centos55-x86_64','CentOS 5.5(64-bit) no GUI (KVM)','1f3f38ea-e0ee-4f21-92ab-27ca5949538e',1,1,'BUILTIN',0,64,'http://download.cloud.com/releases/2.2.0/eec2209b-9875-3c8d-92be-c001bd8a0faf.qcow2.bz2','QCOW2','2012-07-19 15:19:39',NULL,1,'ed0e788280ff2912ea40f7f91ca7a249','CentOS 5.5(64-bit) no GUI (KVM)',0,0,112,1,0,1,1,'KVM',NULL,NULL,0),(5,'centos56-x86_64-xen','CentOS 5.6(64-bit) no GUI (XenServer)','14a118d5-5803-48c1-82c9-85882d1ff97c',1,1,'BUILTIN',0,64,'http://download.cloud.com/templates/builtin/centos56-x86_64.vhd.bz2','VHD','2012-07-19 15:19:39',NULL,1,'905cec879afd9c9d22ecc8036131a180','CentOS 5.6(64-bit) no GUI (XenServer)',0,0,12,1,0,1,1,'XenServer',NULL,NULL,0),(7,'centos53-x64','CentOS 5.3(64-bit) no GUI (vSphere)','4801c38d-16f1-494c-ad95-2f7c89bac8e2',1,1,'BUILTIN',0,64,'http://download.cloud.com/releases/2.2.0/CentOS5.3-x86_64.ova','OVA','2012-07-19 15:19:39',NULL,1,'f6f881b7f2292948d8494db837fe0f47','CentOS 5.3(64-bit) no GUI (vSphere)',0,0,12,1,0,1,1,'VMware',NULL,NULL,0),(8,'routing-8','SystemVM Template (vSphere)','5a4a9ab4-7cdd-4d4a-b3ff-b79ae165df96',0,0,'SYSTEM',0,32,'http://download.cloud.com/templates/acton/acton-systemvm-02062012.ova','OVA','2012-07-19 15:19:39',NULL,1,'e72b21c9541d005600297cb92d241434','SystemVM Template (vSphere)',0,0,15,1,0,1,0,'VMware',NULL,NULL,0),(9,'routing-9','SystemVM Template (HyperV)','35d9360e-1951-4a94-8acc-f759e338aa1a',0,0,'SYSTEM',0,32,'http://download.cloud.com/templates/acton/acton-systemvm-02062012.vhd.bz2','VHD','2012-07-19 15:19:39',NULL,1,'f613f38c96bf039f2e5cbf92fa8ad4f8','SystemVM Template (HyperV)',0,0,15,1,0,1,0,'Hyperv',NULL,NULL,0),(200,'xs-tools.iso','xs-tools.iso','f722a941-0c0f-4a59-b060-41de29c4e4f7',1,1,'PERHOST',1,64,NULL,'ISO','2012-07-19 22:20:10',NULL,1,NULL,'xen-pv-drv-iso',0,0,1,0,0,0,1,'XenServer',NULL,NULL,0),(201,'vmware-tools.iso','vmware-tools.iso','b6ecb286-861a-4c76-9978-410ba21fbbdf',1,1,'PERHOST',1,64,NULL,'ISO','2012-07-19 22:20:10',NULL,1,NULL,'VMware Tools Installer ISO',0,0,1,0,0,0,1,'VMware',NULL,NULL,0);
|
||||
INSERT INTO `vm_template` VALUES (1,'routing-1','SystemVM Template (XenServer)','ea041c86-a510-4a66-af6d-94ac2261c075',0,0,'SYSTEM',0,64,'http://download.cloud.com/templates/acton/acton-systemvm-02062012.vhd.bz2','VHD','2012-07-19 15:19:39',NULL,1,'f613f38c96bf039f2e5cbf92fa8ad4f8','SystemVM Template (XenServer)',0,0,15,1,0,1,0,'XenServer',NULL,NULL,0),(2,'centos53-x86_64','CentOS 5.3(64-bit) no GUI (XenServer)','77783498-a5f3-411f-be92-8965d06cc968',1,1,'BUILTIN',0,64,'http://download.cloud.com/templates/builtin/f59f18fb-ae94-4f97-afd2-f84755767aca.vhd.bz2','VHD','2012-07-19 15:19:39','2012-07-19 15:19:39',1,'b63d854a9560c013142567bbae8d98cf','CentOS 5.3(64-bit) no GUI (XenServer)',0,0,12,1,0,1,1,'XenServer',NULL,NULL,0),(3,'routing-3','SystemVM Template (KVM)','af37c452-9d00-4f48-80f1-1d4bd773c37e',0,0,'SYSTEM',0,64,'http://download.cloud.com/templates/acton/acton-systemvm-02062012.qcow2.bz2','QCOW2','2012-07-19 15:19:39',NULL,1,'2755de1f9ef2ce4d6f2bee2efbb4da92','SystemVM Template (KVM)',0,0,15,1,0,1,0,'KVM',NULL,NULL,0),(4,'centos55-x86_64','CentOS 5.5(64-bit) no GUI (KVM)','1f3f38ea-e0ee-4f21-92ab-27ca5949538e',1,1,'BUILTIN',0,64,'http://download.cloud.com/releases/2.2.0/eec2209b-9875-3c8d-92be-c001bd8a0faf.qcow2.bz2','QCOW2','2012-07-19 15:19:39',NULL,1,'ed0e788280ff2912ea40f7f91ca7a249','CentOS 5.5(64-bit) no GUI (KVM)',0,0,112,1,0,1,1,'KVM',NULL,NULL,0),(5,'centos56-x86_64-xen','CentOS 5.6(64-bit) no GUI (XenServer)','14a118d5-5803-48c1-82c9-85882d1ff97c',1,1,'BUILTIN',0,64,'http://download.cloud.com/templates/builtin/centos56-x86_64.vhd.bz2','VHD','2012-07-19 15:19:39',NULL,1,'905cec879afd9c9d22ecc8036131a180','CentOS 5.6(64-bit) no GUI (XenServer)',0,0,12,1,0,1,1,'XenServer',NULL,NULL,0),(7,'centos53-x64','CentOS 5.3(64-bit) no GUI (vSphere)','4801c38d-16f1-494c-ad95-2f7c89bac8e2',1,1,'BUILTIN',0,64,'http://download.cloud.com/releases/2.2.0/CentOS5.3-x86_64.ova','OVA','2012-07-19 15:19:39',NULL,1,'f6f881b7f2292948d8494db837fe0f47','CentOS 5.3(64-bit) no GUI (vSphere)',0,0,12,1,0,1,1,'VMware',NULL,NULL,0),(8,'routing-8','SystemVM Template (vSphere)','5a4a9ab4-7cdd-4d4a-b3ff-b79ae165df96',0,0,'SYSTEM',0,32,'http://download.cloud.com/templates/burbank/burbank-systemvm-08012012.ova','OVA','2012-07-19 15:19:39',NULL,1,'7137e453f950079ea2ba6feaafd939e8','SystemVM Template (vSphere)',0,0,15,1,0,1,0,'VMware',NULL,NULL,0),(9,'routing-9','SystemVM Template (HyperV)','35d9360e-1951-4a94-8acc-f759e338aa1a',0,0,'SYSTEM',0,32,'http://download.cloud.com/templates/acton/acton-systemvm-02062012.vhd.bz2','VHD','2012-07-19 15:19:39',NULL,1,'f613f38c96bf039f2e5cbf92fa8ad4f8','SystemVM Template (HyperV)',0,0,15,1,0,1,0,'Hyperv',NULL,NULL,0),(200,'xs-tools.iso','xs-tools.iso','f722a941-0c0f-4a59-b060-41de29c4e4f7',1,1,'PERHOST',1,64,NULL,'ISO','2012-07-19 22:20:10',NULL,1,NULL,'xen-pv-drv-iso',0,0,1,0,0,0,1,'XenServer',NULL,NULL,0),(201,'vmware-tools.iso','vmware-tools.iso','b6ecb286-861a-4c76-9978-410ba21fbbdf',1,1,'PERHOST',1,64,NULL,'ISO','2012-07-19 22:20:10',NULL,1,NULL,'VMware Tools Installer ISO',0,0,1,0,0,0,1,'VMware',NULL,NULL,0);
|
||||
/*!40000 ALTER TABLE `vm_template` ENABLE KEYS */;
|
||||
UNLOCK TABLES;
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,796 @@
|
|||
# -*- encoding: utf-8 -*-
|
||||
# Copyright 2012 Citrix Systems, Inc. Licensed under the
|
||||
# Apache License, Version 2.0 (the "License"); you may not use this
|
||||
# file except in compliance with the License. Citrix Systems, Inc.
|
||||
# reserves all rights not expressly granted by the License.
|
||||
# You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
#
|
||||
# Automatically generated by addcopyright.py at 04/03/2012
|
||||
|
||||
""" P1 tests for dedicated Host high availability
|
||||
"""
|
||||
#Import Local Modules
|
||||
import marvin
|
||||
from marvin.cloudstackTestCase import *
|
||||
from marvin.cloudstackAPI import *
|
||||
from integration.lib.utils import *
|
||||
from integration.lib.base import *
|
||||
from integration.lib.common import *
|
||||
from marvin import remoteSSHClient
|
||||
import datetime
|
||||
|
||||
|
||||
class Services:
|
||||
""" Dedicated host HA test cases """
|
||||
|
||||
def __init__(self):
|
||||
self.services = {
|
||||
"account": {
|
||||
"email": "test@test.com",
|
||||
"firstname": "HA",
|
||||
"lastname": "HA",
|
||||
"username": "HA",
|
||||
# Random characters are appended for unique
|
||||
# username
|
||||
"password": "password",
|
||||
},
|
||||
"service_offering_with_ha": {
|
||||
"name": "Tiny Instance With HA Enabled",
|
||||
"displaytext": "Tiny Instance",
|
||||
"cpunumber": 1,
|
||||
"cpuspeed": 100, # in MHz
|
||||
"memory": 64, # In MBs
|
||||
},
|
||||
"service_offering_without_ha": {
|
||||
"name": "Tiny Instance Without HA",
|
||||
"displaytext": "Tiny Instance",
|
||||
"cpunumber": 1,
|
||||
"cpuspeed": 100, # in MHz
|
||||
"memory": 64, # In MBs
|
||||
},
|
||||
"virtual_machine": {
|
||||
"displayname": "VM",
|
||||
"username": "root",
|
||||
"password": "password",
|
||||
"ssh_port": 22,
|
||||
"hypervisor": 'XenServer',
|
||||
# Hypervisor type should be same as
|
||||
# hypervisor type of cluster
|
||||
"privateport": 22,
|
||||
"publicport": 22,
|
||||
"protocol": 'TCP',
|
||||
},
|
||||
"ostypeid": '6a6b23aa-5e59-4b53-8161-0ad1aa5990f1',
|
||||
"timeout": 100,
|
||||
}
|
||||
|
||||
class TestHostHighAvailability(cloudstackTestCase):
|
||||
""" Dedicated host HA test cases """
|
||||
|
||||
@classmethod
|
||||
def setUpClass(cls):
|
||||
|
||||
cls.api_client = super(
|
||||
TestHostHighAvailability,
|
||||
cls
|
||||
).getClsTestClient().getApiClient()
|
||||
cls.services = Services().services
|
||||
# Get Zone, Domain and templates
|
||||
cls.domain = get_domain(
|
||||
cls.api_client,
|
||||
cls.services
|
||||
)
|
||||
cls.zone = get_zone(
|
||||
cls.api_client,
|
||||
cls.services
|
||||
)
|
||||
|
||||
cls.template = get_template(
|
||||
cls.api_client,
|
||||
cls.zone.id,
|
||||
cls.services["ostypeid"]
|
||||
)
|
||||
cls.services["virtual_machine"]["zoneid"] = cls.zone.id
|
||||
cls.services["virtual_machine"]["template"] = cls.template.id
|
||||
|
||||
cls.service_offering_with_ha = ServiceOffering.create(
|
||||
cls.api_client,
|
||||
cls.services["service_offering_with_ha"],
|
||||
offerha=True
|
||||
)
|
||||
|
||||
cls.service_offering_without_ha = ServiceOffering.create(
|
||||
cls.api_client,
|
||||
cls.services["service_offering_without_ha"],
|
||||
offerha=False
|
||||
)
|
||||
|
||||
cls._cleanup = [
|
||||
cls.service_offering_with_ha,
|
||||
cls.service_offering_without_ha,
|
||||
]
|
||||
return
|
||||
|
||||
@classmethod
|
||||
def tearDownClass(cls):
|
||||
try:
|
||||
#Cleanup resources used
|
||||
cleanup_resources(cls.api_client, cls._cleanup)
|
||||
except Exception as e:
|
||||
raise Exception("Warning: Exception during cleanup : %s" % e)
|
||||
return
|
||||
|
||||
def setUp(self):
|
||||
self.apiclient = self.testClient.getApiClient()
|
||||
self.dbclient = self.testClient.getDbConnection()
|
||||
self.account = Account.create(
|
||||
self.apiclient,
|
||||
self.services["account"],
|
||||
admin=True,
|
||||
domainid=self.domain.id
|
||||
)
|
||||
self.cleanup = [self.account]
|
||||
return
|
||||
|
||||
def tearDown(self):
|
||||
try:
|
||||
#Clean up, terminate the created accounts, domains etc
|
||||
cleanup_resources(self.apiclient, self.cleanup)
|
||||
self.testClient.close()
|
||||
except Exception as e:
|
||||
raise Exception("Warning: Exception during cleanup : %s" % e)
|
||||
return
|
||||
|
||||
def test_01_vm_deployment_with_compute_offering_with_ha_enabled(self):
|
||||
""" Test VM deployments (Create HA enabled Compute Service Offering and VM) """
|
||||
|
||||
# Steps,
|
||||
#1. Create a Compute service offering with the “Offer HA” option selected.
|
||||
#2. Create a Guest VM with the compute service offering created above.
|
||||
# Validations,
|
||||
#1. Ensure that the offering is created and that in the UI the “Offer HA” field is enabled (Yes)
|
||||
#The listServiceOffering API should list “offerha” as true.
|
||||
#2. Select the newly created VM and ensure that the Compute offering field value lists the compute service offering that was selected.
|
||||
# Also, check that the HA Enabled field is enabled “Yes”.
|
||||
|
||||
#list and validate above created service offering with Ha enabled
|
||||
list_service_response = list_service_offering(
|
||||
self.apiclient,
|
||||
id=self.service_offering_with_ha.id
|
||||
)
|
||||
self.assertEqual(
|
||||
isinstance(list_service_response, list),
|
||||
True,
|
||||
"listServiceOfferings returned invalid object in response."
|
||||
)
|
||||
self.assertNotEqual(
|
||||
len(list_service_response),
|
||||
0,
|
||||
"listServiceOfferings returned empty list."
|
||||
)
|
||||
self.assertEqual(
|
||||
list_service_response[0].offerha,
|
||||
True,
|
||||
"The service offering is not HA enabled"
|
||||
)
|
||||
|
||||
#create virtual machine with the service offering with Ha enabled
|
||||
virtual_machine = VirtualMachine.create(
|
||||
self.apiclient,
|
||||
self.services["virtual_machine"],
|
||||
accountid=self.account.account.name,
|
||||
domainid=self.account.account.domainid,
|
||||
serviceofferingid=self.service_offering_with_ha.id
|
||||
)
|
||||
vms = VirtualMachine.list(
|
||||
self.apiclient,
|
||||
id=virtual_machine.id,
|
||||
listall=True
|
||||
)
|
||||
self.assertEqual(
|
||||
isinstance(vms, list),
|
||||
True,
|
||||
"listVirtualMachines returned invalid object in response."
|
||||
)
|
||||
self.assertNotEqual(
|
||||
len(vms),
|
||||
0,
|
||||
"listVirtualMachines returned empty list."
|
||||
)
|
||||
self.debug("Deployed VM on host: %s" % vms[0].hostid)
|
||||
self.assertEqual(
|
||||
vms[0].haenable,
|
||||
True,
|
||||
"VM not created with HA enable tag"
|
||||
)
|
||||
|
||||
def test_02_no_vm_creation_on_host_with_haenabled(self):
|
||||
""" Verify you can not create new VMs on hosts with an ha.tag """
|
||||
|
||||
# Steps,
|
||||
#1. Fresh install CS (Bonita) that supports this feature
|
||||
#2. Create Basic zone, pod, cluster, add 3 hosts to cluster (host1, host2, host3), secondary & primary Storage
|
||||
#3. When adding host3, assign the HA host tag.
|
||||
#4. You should already have a compute service offering with HA already create from above. If not, create one for HA.
|
||||
#5. Create VMs with the service offering with and without the HA tag
|
||||
# Validations,
|
||||
#Check to make sure the newly created VM is not on any HA enabled hosts
|
||||
#The VM should be created only on host1 or host2 and never host3 (HA enabled)
|
||||
|
||||
#create and verify virtual machine with HA enabled service offering
|
||||
virtual_machine_with_ha = VirtualMachine.create(
|
||||
self.apiclient,
|
||||
self.services["virtual_machine"],
|
||||
accountid=self.account.account.name,
|
||||
domainid=self.account.account.domainid,
|
||||
serviceofferingid=self.service_offering_with_ha.id
|
||||
)
|
||||
|
||||
vms = VirtualMachine.list(
|
||||
self.apiclient,
|
||||
id=virtual_machine_with_ha.id,
|
||||
listall=True
|
||||
)
|
||||
|
||||
self.assertEqual(
|
||||
isinstance(vms, list),
|
||||
True,
|
||||
"listVirtualMachines returned invalid object in response."
|
||||
)
|
||||
|
||||
self.assertNotEqual(
|
||||
len(vms),
|
||||
0,
|
||||
"listVirtualMachines returned empty list."
|
||||
)
|
||||
|
||||
vm = vms[0]
|
||||
|
||||
self.debug("Deployed VM on host: %s" % vm.hostid)
|
||||
|
||||
#validate the virtual machine created is host Ha enabled
|
||||
list_hosts_response = list_hosts(
|
||||
self.apiclient,
|
||||
id=vm.hostid
|
||||
)
|
||||
self.assertEqual(
|
||||
isinstance(list_hosts_response, list),
|
||||
True,
|
||||
"listHosts returned invalid object in response."
|
||||
)
|
||||
|
||||
self.assertNotEqual(
|
||||
len(list_hosts_response),
|
||||
0,
|
||||
"listHosts retuned empty list in response."
|
||||
)
|
||||
|
||||
self.assertEqual(
|
||||
list_hosts_response[0].hahost,
|
||||
False,
|
||||
"VM created on HA enabled host."
|
||||
)
|
||||
|
||||
#create and verify virtual machine with Ha disabled service offering
|
||||
virtual_machine_without_ha = VirtualMachine.create(
|
||||
self.apiclient,
|
||||
self.services["virtual_machine"],
|
||||
accountid=self.account.account.name,
|
||||
domainid=self.account.account.domainid,
|
||||
serviceofferingid=self.service_offering_without_ha.id
|
||||
)
|
||||
|
||||
vms = VirtualMachine.list(
|
||||
self.apiclient,
|
||||
id=virtual_machine_without_ha.id,
|
||||
listall=True
|
||||
)
|
||||
|
||||
self.assertEqual(
|
||||
isinstance(vms, list),
|
||||
True,
|
||||
"listVirtualMachines returned invalid object in response."
|
||||
)
|
||||
|
||||
self.assertNotEqual(
|
||||
len(vms),
|
||||
0,
|
||||
"listVirtualMachines returned empty list."
|
||||
)
|
||||
|
||||
vm = vms[0]
|
||||
|
||||
self.debug("Deployed VM on host: %s" % vm.hostid)
|
||||
|
||||
#verify that the virtual machine created on the host is Ha disabled
|
||||
list_hosts_response = list_hosts(
|
||||
self.apiclient,
|
||||
id=vm.hostid
|
||||
)
|
||||
self.assertEqual(
|
||||
isinstance(list_hosts_response, list),
|
||||
True,
|
||||
"listHosts returned invalid object in response."
|
||||
)
|
||||
|
||||
self.assertNotEqual(
|
||||
len(list_hosts_response),
|
||||
0,
|
||||
"listHosts returned empty list."
|
||||
)
|
||||
|
||||
host = list_hosts_response[0]
|
||||
|
||||
self.assertEqual(
|
||||
host.hahost,
|
||||
False,
|
||||
"VM migrated to HA enabled host."
|
||||
)
|
||||
|
||||
def test_03_cant_migrate_vm_to_host_with_ha_positive(self):
|
||||
""" Verify you can not migrate VMs to hosts with an ha.tag (positive) """
|
||||
|
||||
# Steps,
|
||||
#1. Create a Compute service offering with the “Offer HA” option selected.
|
||||
#2. Create a Guest VM with the compute service offering created above.
|
||||
#3. Select the VM and migrate VM to another host. Choose a “Suitable” host (i.e. host2)
|
||||
# Validations
|
||||
#The option from the “Migrate instance to another host” dialog box” should list host3 as “Not Suitable” for migration.
|
||||
#Confirm that the VM is migrated to the “Suitable” host you selected (i.e. host2)
|
||||
|
||||
#create and verify the virtual machine with HA enabled service offering
|
||||
virtual_machine_with_ha = VirtualMachine.create(
|
||||
self.apiclient,
|
||||
self.services["virtual_machine"],
|
||||
accountid=self.account.account.name,
|
||||
domainid=self.account.account.domainid,
|
||||
serviceofferingid=self.service_offering_with_ha.id
|
||||
)
|
||||
|
||||
vms = VirtualMachine.list(
|
||||
self.apiclient,
|
||||
id=virtual_machine_with_ha.id,
|
||||
listall=True,
|
||||
)
|
||||
|
||||
self.assertEqual(
|
||||
isinstance(vms, list),
|
||||
True,
|
||||
"List VMs should return valid response for deployed VM"
|
||||
)
|
||||
|
||||
self.assertNotEqual(
|
||||
len(vms),
|
||||
0,
|
||||
"List VMs should return valid response for deployed VM"
|
||||
)
|
||||
|
||||
vm = vms[0]
|
||||
|
||||
self.debug("Deployed VM on host: %s" % vm.hostid)
|
||||
|
||||
#Find out a Suitable host for VM migration
|
||||
list_hosts_response = list_hosts(
|
||||
self.apiclient,
|
||||
)
|
||||
self.assertEqual(
|
||||
isinstance(list_hosts_response, list),
|
||||
True,
|
||||
"The listHosts API returned the invalid list"
|
||||
)
|
||||
|
||||
self.assertNotEqual(
|
||||
len(list_hosts_response),
|
||||
0,
|
||||
"The listHosts returned nothing."
|
||||
)
|
||||
suitableHost = None
|
||||
for host in list_hosts_response:
|
||||
if host.suitableformigration == True and host.hostid != vm.hostid:
|
||||
suitableHost = host
|
||||
break
|
||||
|
||||
self.assertTrue(suitableHost is not None, "suitablehost should not be None")
|
||||
|
||||
#Migration of the VM to a suitable host
|
||||
self.debug("Migrating VM-ID: %s to Host: %s" % (self.vm.id, suitableHost.id))
|
||||
|
||||
cmd = migrateVirtualMachine.migrateVirtualMachineCmd()
|
||||
cmd.hostid = suitableHost.id
|
||||
cmd.virtualmachineid = self.vm.id
|
||||
self.apiclient.migrateVirtualMachine(cmd)
|
||||
|
||||
#Verify that the VM migrated to a targeted Suitable host
|
||||
list_vm_response = list_virtual_machines(
|
||||
self.apiclient,
|
||||
id=vm.id
|
||||
)
|
||||
self.assertEqual(
|
||||
isinstance(list_vm_response, list),
|
||||
True,
|
||||
"The listVirtualMachines returned the invalid list."
|
||||
)
|
||||
|
||||
self.assertNotEqual(
|
||||
list_vm_response,
|
||||
None,
|
||||
"The listVirtualMachines API returned nothing."
|
||||
)
|
||||
|
||||
vm_response = list_vm_response[0]
|
||||
|
||||
self.assertEqual(
|
||||
vm_response.id,
|
||||
vm.id,
|
||||
"The virtual machine id and the the virtual machine from listVirtualMachines is not matching."
|
||||
)
|
||||
|
||||
self.assertEqual(
|
||||
vm_response.hostid,
|
||||
suitableHost.id,
|
||||
"The VM is not migrated to targeted suitable host."
|
||||
)
|
||||
|
||||
def test_04_cant_migrate_vm_to_host_with_ha_negative(self):
|
||||
""" Verify you can not migrate VMs to hosts with an ha.tag (negative) """
|
||||
|
||||
# Steps,
|
||||
#1. Create a Compute service offering with the “Offer HA” option selected.
|
||||
#2. Create a Guest VM with the compute service offering created above.
|
||||
#3. Select the VM and migrate VM to another host. Choose a “Not Suitable” host.
|
||||
# Validations,
|
||||
#The option from the “Migrate instance to another host” dialog box” should list host3 as “Not Suitable” for migration.
|
||||
#By design, The Guest VM can STILL can be migrated to host3 if the admin chooses to do so.
|
||||
|
||||
#create and verify virtual machine with HA enabled service offering
|
||||
virtual_machine_with_ha = VirtualMachine.create(
|
||||
self.apiclient,
|
||||
self.services["virtual_machine"],
|
||||
accountid=self.account.account.name,
|
||||
domainid=self.account.account.domainid,
|
||||
serviceofferingid=self.service_offering_with_ha.id
|
||||
)
|
||||
|
||||
vms = VirtualMachine.list(
|
||||
self.apiclient,
|
||||
id=virtual_machine_with_ha.id,
|
||||
listall=True
|
||||
)
|
||||
|
||||
self.assertEqual(
|
||||
isinstance(vms, list),
|
||||
True,
|
||||
"The listVirtualMachines returned invalid object in response."
|
||||
)
|
||||
|
||||
self.assertNotEqual(
|
||||
len(vms),
|
||||
0,
|
||||
"The listVirtualMachines returned empty response."
|
||||
)
|
||||
|
||||
vm = vms[0]
|
||||
|
||||
self.debug("Deployed VM on host: %s" % vm.hostid)
|
||||
|
||||
#Find out Non-Suitable host for VM migration
|
||||
list_hosts_response = list_hosts(
|
||||
self.apiclient,
|
||||
)
|
||||
self.assertEqual(
|
||||
isinstance(list_hosts_response, list),
|
||||
True,
|
||||
"listHosts returned invalid object in response."
|
||||
)
|
||||
|
||||
self.assertNotEqual(
|
||||
len(list_hosts_response),
|
||||
0,
|
||||
"listHosts returned empty response."
|
||||
)
|
||||
|
||||
notSuitableHost = None
|
||||
for host in list_hosts_response:
|
||||
if not host.suitableformigration and host.hostid != vm.hostid:
|
||||
notSuitableHost = host
|
||||
break
|
||||
|
||||
self.assertTrue(notSuitableHost is not None, "notsuitablehost should not be None")
|
||||
|
||||
#Migrate VM to Non-Suitable host
|
||||
self.debug("Migrating VM-ID: %s to Host: %s" % (vm.id, notSuitableHost.id))
|
||||
|
||||
cmd = migrateVirtualMachine.migrateVirtualMachineCmd()
|
||||
cmd.hostid = notSuitableHost.id
|
||||
cmd.virtualmachineid = vm.id
|
||||
self.apiclient.migrateVirtualMachine(cmd)
|
||||
|
||||
#Verify that the virtual machine got migrated to targeted Non-Suitable host
|
||||
list_vm_response = list_virtual_machines(
|
||||
self.apiclient,
|
||||
id=vm.id
|
||||
)
|
||||
self.assertEqual(
|
||||
isinstance(list_vm_response, list),
|
||||
True,
|
||||
"listVirtualMachine returned invalid object in response."
|
||||
)
|
||||
|
||||
self.assertNotEqual(
|
||||
len(list_vm_response),
|
||||
0,
|
||||
"listVirtualMachines returned empty response."
|
||||
)
|
||||
|
||||
self.assertEqual(
|
||||
list_vm_response[0].id,
|
||||
vm.id,
|
||||
"Virtual machine id with the virtual machine from listVirtualMachine is not matching."
|
||||
)
|
||||
|
||||
self.assertEqual(
|
||||
list_vm_response[0].hostid,
|
||||
notSuitableHost.id,
|
||||
"The detination host id of migrated VM is not matching."
|
||||
)
|
||||
|
||||
def test_05_no_vm_with_ha_gets_migrated_to_ha_host_in_live_migration(self):
|
||||
""" Verify that none of the VMs with HA enabled migrate to an ha tagged host during live migration """
|
||||
|
||||
# Steps,
|
||||
#1. Fresh install CS (Bonita) that supports this feature
|
||||
#2. Create Basic zone, pod, cluster, add 3 hosts to cluster (host1, host2, host3), secondary & primary Storage
|
||||
#3. When adding host3, assign the HA host tag.
|
||||
#4. Create VMs with and without the Compute Service Offering with the HA tag.
|
||||
#5. Note the VMs on host1 and whether any of the VMs have their “HA enabled” flags enabled.
|
||||
#6. Put host1 into maintenance mode.
|
||||
# Validations,
|
||||
#1. Make sure the VMs are created on either host1 or host2 and not on host3
|
||||
#2. Putting host1 into maintenance mode should trigger a live migration. Make sure the VMs are not migrated to HA enabled host3.
|
||||
|
||||
# create and verify virtual machine with HA disabled service offering
|
||||
virtual_machine_with_ha = VirtualMachine.create(
|
||||
self.apiclient,
|
||||
self.services["virtual_machine"],
|
||||
accountid=self.account.account.name,
|
||||
domainid=self.account.account.domainid,
|
||||
serviceofferingid=self.service_offering_with_ha.id
|
||||
)
|
||||
|
||||
vms = VirtualMachine.list(
|
||||
self.apiclient,
|
||||
id=virtual_machine_with_ha.id,
|
||||
listall=True
|
||||
)
|
||||
|
||||
self.assertEqual(
|
||||
isinstance(vms, list),
|
||||
True,
|
||||
"List VMs should return valid response for deployed VM"
|
||||
)
|
||||
|
||||
self.assertNotEqual(
|
||||
len(vms),
|
||||
0,
|
||||
"List VMs should return valid response for deployed VM"
|
||||
)
|
||||
|
||||
vm_with_ha_enabled = vms[0]
|
||||
|
||||
#Verify the virtual machine got created on non HA host
|
||||
list_hosts_response = list_hosts(
|
||||
self.apiclient,
|
||||
id=vm_with_ha_enabled.hostid
|
||||
)
|
||||
self.assertEqual(
|
||||
isinstance(list_hosts_response, list),
|
||||
True,
|
||||
"Check list response returns a valid list"
|
||||
)
|
||||
|
||||
self.assertNotEqual(
|
||||
len(list_hosts_response),
|
||||
0,
|
||||
"Check Host is available"
|
||||
)
|
||||
|
||||
self.assertEqual(
|
||||
list_hosts_response[0].hahost,
|
||||
False,
|
||||
"The virtual machine is not ha enabled so check if VM is created on host which is also not ha enabled"
|
||||
)
|
||||
|
||||
#put the Host in maintainance mode
|
||||
self.debug("Enabling maintenance mode for host %s" % vm_with_ha_enabled.hostid)
|
||||
cmd = prepareHostForMaintenance.prepareHostForMaintenanceCmd()
|
||||
cmd.id = vm_with_ha_enabled.hostid
|
||||
self.apiclient.prepareHostForMaintenance(cmd)
|
||||
|
||||
timeout = self.services["timeout"]
|
||||
|
||||
#verify the VM live migration happened to another running host
|
||||
self.debug("Waiting for VM to come up")
|
||||
wait_for_vm(
|
||||
self.apiclient,
|
||||
virtualmachineid=vm_with_ha_enabled.id,
|
||||
interval=timeout
|
||||
)
|
||||
|
||||
vms = VirtualMachine.list(
|
||||
self.apiclient,
|
||||
id=vm_with_ha_enabled.id,
|
||||
listall=True,
|
||||
)
|
||||
|
||||
self.assertEqual(
|
||||
isinstance(vms, list),
|
||||
True,
|
||||
"List VMs should return valid response for deployed VM"
|
||||
)
|
||||
|
||||
self.assertNotEqual(
|
||||
len(vms),
|
||||
0,
|
||||
"List VMs should return valid response for deployed VM"
|
||||
)
|
||||
|
||||
vm_with_ha_enabled1 = vms[0]
|
||||
|
||||
list_hosts_response = list_hosts(
|
||||
self.apiclient,
|
||||
id=vm_with_ha_enabled1.hostid
|
||||
)
|
||||
self.assertEqual(
|
||||
isinstance(list_hosts_response, list),
|
||||
True,
|
||||
"Check list response returns a valid list"
|
||||
)
|
||||
|
||||
self.assertNotEqual(
|
||||
len(list_hosts_response),
|
||||
0,
|
||||
"Check Host is available"
|
||||
)
|
||||
|
||||
self.assertEqual(
|
||||
list_hosts_response[0].hahost,
|
||||
False,
|
||||
"The virtual machine is not ha enabled so check if VM is created on host which is also not ha enabled"
|
||||
)
|
||||
|
||||
self.debug("Disabling the maintenance mode for host %s" % vm_with_ha_enabled.hostid)
|
||||
cmd = cancelHostMaintenance.cancelHostMaintenanceCmd()
|
||||
cmd.id = vm_with_ha_enabled.hostid
|
||||
self.apiclient.cancelHostMaintenance(cmd)
|
||||
|
||||
def test_06_no_vm_without_ha_gets_migrated_to_ha_host_in_live_migration(self):
|
||||
""" Verify that none of the VMs without HA enabled migrate to an ha tagged host during live migration """
|
||||
|
||||
# Steps,
|
||||
#1. Fresh install CS (Bonita) that supports this feature
|
||||
#2. Create Basic zone, pod, cluster, add 3 hosts to cluster (host1, host2, host3), secondary & primary Storage
|
||||
#3. When adding host3, assign the HA host tag.
|
||||
#4. Create VMs with and without the Compute Service Offering with the HA tag.
|
||||
#5. Note the VMs on host1 and whether any of the VMs have their “HA enabled” flags enabled.
|
||||
#6. Put host1 into maintenance mode.
|
||||
# Validations,
|
||||
#1. Make sure the VMs are created on either host1 or host2 and not on host3
|
||||
#2. Putting host1 into maintenance mode should trigger a live migration. Make sure the VMs are not migrated to HA enabled host3.
|
||||
|
||||
# create and verify virtual machine with HA disabled service offering
|
||||
virtual_machine_without_ha = VirtualMachine.create(
|
||||
self.apiclient,
|
||||
self.services["virtual_machine"],
|
||||
accountid=self.account.account.name,
|
||||
domainid=self.account.account.domainid,
|
||||
serviceofferingid=self.service_offering_without_ha.id
|
||||
)
|
||||
|
||||
vms = VirtualMachine.list(
|
||||
self.apiclient,
|
||||
id=virtual_machine_without_ha.id,
|
||||
listall=True
|
||||
)
|
||||
|
||||
self.assertEqual(
|
||||
isinstance(vms, list),
|
||||
True,
|
||||
"List VMs should return valid response for deployed VM"
|
||||
)
|
||||
|
||||
self.assertNotEqual(
|
||||
len(vms),
|
||||
0,
|
||||
"List VMs should return valid response for deployed VM"
|
||||
)
|
||||
|
||||
vm_with_ha_disabled = vms[0]
|
||||
|
||||
#Verify the virtual machine got created on non HA host
|
||||
list_hosts_response = list_hosts(
|
||||
self.apiclient,
|
||||
id=vm_with_ha_disabled.hostid
|
||||
)
|
||||
self.assertEqual(
|
||||
isinstance(list_hosts_response, list),
|
||||
True,
|
||||
"Check list response returns a valid list"
|
||||
)
|
||||
|
||||
self.assertNotEqual(
|
||||
len(list_hosts_response),
|
||||
0,
|
||||
"Check Host is available"
|
||||
)
|
||||
|
||||
self.assertEqual(
|
||||
list_hosts_response[0].hahost,
|
||||
False,
|
||||
"The virtual machine is not ha enabled so check if VM is created on host which is also not ha enabled"
|
||||
)
|
||||
|
||||
#put the Host in maintainance mode
|
||||
self.debug("Enabling maintenance mode for host %s" % vm_with_ha_disabled.hostid)
|
||||
cmd = prepareHostForMaintenance.prepareHostForMaintenanceCmd()
|
||||
cmd.id = vm_with_ha_disabled.hostid
|
||||
self.apiclient.prepareHostForMaintenance(cmd)
|
||||
|
||||
timeout = self.services["timeout"]
|
||||
|
||||
#verify the VM live migration happened to another running host
|
||||
self.debug("Waiting for VM to come up")
|
||||
wait_for_vm(
|
||||
self.apiclient,
|
||||
virtualmachineid=vm_with_ha_disabled.id,
|
||||
interval=timeout
|
||||
)
|
||||
|
||||
vms = VirtualMachine.list(
|
||||
self.apiclient,
|
||||
id=vm_with_ha_disabled.id,
|
||||
listall=True
|
||||
)
|
||||
|
||||
self.assertEqual(
|
||||
isinstance(vms, list),
|
||||
True,
|
||||
"List VMs should return valid response for deployed VM"
|
||||
)
|
||||
|
||||
self.assertNotEqual(
|
||||
len(vms),
|
||||
0,
|
||||
"List VMs should return valid response for deployed VM"
|
||||
)
|
||||
|
||||
list_hosts_response = list_hosts(
|
||||
self.apiclient,
|
||||
id=vms[0].hostid
|
||||
)
|
||||
self.assertEqual(
|
||||
isinstance(list_hosts_response, list),
|
||||
True,
|
||||
"Check list response returns a valid list"
|
||||
)
|
||||
|
||||
self.assertNotEqual(
|
||||
len(list_hosts_response),
|
||||
0,
|
||||
"Check Host is available"
|
||||
)
|
||||
|
||||
self.assertEqual(
|
||||
list_hosts_response[0].hahost,
|
||||
False,
|
||||
"The virtual machine is not ha enabled so check if VM is created on host which is also not ha enabled"
|
||||
)
|
||||
|
||||
self.debug("Disabling the maintenance mode for host %s" % vm_with_ha_disabled.hostid)
|
||||
cmd = cancelHostMaintenance.cancelHostMaintenanceCmd()
|
||||
cmd.id = vm_with_ha_disabled.hostid
|
||||
self.apiclient.cancelHostMaintenance(cmd)
|
||||
|
|
@ -185,6 +185,27 @@ def wait_for_ssvms(apiclient, zoneid, podid, interval=60):
|
|||
break
|
||||
return
|
||||
|
||||
def wait_for_vm(apiclient, virtualmachineid, interval=60):
|
||||
"""After setup wait for VM to come Up"""
|
||||
|
||||
time.sleep(interval)
|
||||
timeout = 40
|
||||
while True:
|
||||
list_vm_response = list_virtual_machines(
|
||||
apiclient,
|
||||
id=virtualmachineid
|
||||
)
|
||||
vm = list_vm_response[0]
|
||||
if vm.state != 'Running':
|
||||
# Sleep to ensure VM is Up and Running
|
||||
time.sleep(interval)
|
||||
timeout = timeout - 1
|
||||
elif vm.state == 'Running':
|
||||
break
|
||||
elif timeout == 0:
|
||||
raise Exception("VM failed to come up")
|
||||
break
|
||||
return
|
||||
|
||||
def download_builtin_templates(apiclient, zoneid, hypervisor, host,
|
||||
linklocalip, interval=60):
|
||||
|
|
|
|||
|
|
@ -9156,6 +9156,19 @@ div.panel.ui-dialog div.list-view div.fixed-header {
|
|||
|
||||
/** Dialog tagger*/
|
||||
.ui-dialog .tagger {
|
||||
width: 375px;
|
||||
}
|
||||
|
||||
.ui-dialog .tagger .tag-info {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.ui-dialog.editTags .ui-button {
|
||||
float: right;
|
||||
}
|
||||
|
||||
.ui-dialog.editTags .ui-dialog-buttonpane {
|
||||
float: right;
|
||||
}
|
||||
|
||||
.ui-dialog .tagger .field {
|
||||
|
|
@ -9634,21 +9647,43 @@ div.panel.ui-dialog div.list-view div.fixed-header {
|
|||
float: left;
|
||||
}
|
||||
|
||||
/*Configure ACL dialog*/
|
||||
.ui-dialog.configure-acl {
|
||||
/*Configure ACL dialog / VM tier list view dialog*/
|
||||
.ui-dialog.configure-acl .multi-edit {
|
||||
width: 866px;
|
||||
}
|
||||
|
||||
.ui-dialog.configure-acl .multi-edit table {
|
||||
max-width: none;
|
||||
}
|
||||
|
||||
.ui-dialog.configure-acl .ui-dialog-buttonpane {
|
||||
/*+placement:shift 709px -2px;*/
|
||||
/*+placement:shift 722px -2px;*/
|
||||
position: relative;
|
||||
left: 709px;
|
||||
left: 722px;
|
||||
top: -2px;
|
||||
}
|
||||
|
||||
.ui-dialog.configure-acl div.view.list-view {
|
||||
max-height: 474px;
|
||||
}
|
||||
|
||||
.ui-dialog.configure-acl .multi-edit .data {
|
||||
width: 807px;
|
||||
width: 901px;
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
height: 370px;
|
||||
overflow: auto;
|
||||
overflow-x: hidden;
|
||||
}
|
||||
|
||||
.ui-dialog.configure-acl .multi-edit .data .multi-actions {
|
||||
min-width: none !important;
|
||||
max-width: none !important;
|
||||
}
|
||||
|
||||
.ui-dialog.configure-acl .view.list-view table.body tr td.actions {
|
||||
width: 184px !important;
|
||||
max-width: 184px !important;
|
||||
}
|
||||
|
||||
/*Autoscaler*/
|
||||
|
|
@ -9657,6 +9692,19 @@ div.panel.ui-dialog div.list-view div.fixed-header {
|
|||
max-height: 600px;
|
||||
}
|
||||
|
||||
.ui-dialog div.autoscaler .detail-actions {
|
||||
}
|
||||
|
||||
.ui-dialog div.autoscaler .detail-actions .buttons {
|
||||
float: right;
|
||||
margin-right: 6px;
|
||||
}
|
||||
|
||||
.ui-dialog div.autoscaler .detail-actions .buttons .action {
|
||||
width: 32px;
|
||||
float: left;
|
||||
}
|
||||
|
||||
.ui-dialog div.autoscaler div.form-container div.form-item[rel=securityGroups] {
|
||||
display: block;
|
||||
width: 370px;
|
||||
|
|
@ -10244,3 +10292,11 @@ div.ui-dialog div.autoscaler div.field-group div.form-container form div.form-it
|
|||
background-position: -230px -615px;
|
||||
}
|
||||
|
||||
.editTags .icon {
|
||||
background-position: -228px -65px;
|
||||
}
|
||||
|
||||
.editTags:hover .icon {
|
||||
background-position: -228px -646px;
|
||||
}
|
||||
|
||||
|
|
|
|||
Binary file not shown.
|
Before Width: | Height: | Size: 175 KiB After Width: | Height: | Size: 176 KiB |
52
ui/index.jsp
52
ui/index.jsp
|
|
@ -5,7 +5,6 @@
|
|||
</c:if>
|
||||
<fmt:setBundle basename="resources/messages"/>
|
||||
<% long now = System.currentTimeMillis(); %>
|
||||
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
|
||||
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
|
|
@ -17,7 +16,6 @@
|
|||
<c:if test="${!empty cookie.lang && cookie.lang.value != 'en'}">
|
||||
<link type="text/css" rel="stylesheet" href="css/cloudstack3.${cookie.lang.value}.css" />
|
||||
</c:if>
|
||||
|
||||
<!--[if IE 7]>
|
||||
<link type="text/css" rel="stylesheet" href="css/cloudstack3-ie7.css" />
|
||||
<![endif]-->
|
||||
|
|
@ -25,7 +23,6 @@
|
|||
<body>
|
||||
<!-- CloudStack widget content -->
|
||||
<div id="cloudStack3-container"></div>
|
||||
|
||||
<!-- Templates -->
|
||||
<div id="template">
|
||||
<!-- Login form -->
|
||||
|
|
@ -38,22 +35,18 @@
|
|||
<label for="username"><fmt:message key="label.username"/></label>
|
||||
<input type="text" name="username" class="required" />
|
||||
</div>
|
||||
|
||||
<!-- Password -->
|
||||
<div class="field password">
|
||||
<label for="password"><fmt:message key="label.password"/></label>
|
||||
<input type="password" name="password" class="required" />
|
||||
</div>
|
||||
|
||||
<!-- Domain -->
|
||||
<div class="field domain">
|
||||
<label for="domain"><fmt:message key="label.domain"/></label>
|
||||
<input type="text" name="domain" />
|
||||
</div>
|
||||
|
||||
<!-- Submit (login) -->
|
||||
<input type="submit" value="<fmt:message key="label.login"/>" />
|
||||
|
||||
<!-- Select language -->
|
||||
<div class="select-language">
|
||||
<select name="language">
|
||||
|
|
@ -66,7 +59,6 @@
|
|||
</div>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
<!-- Instance wizard -->
|
||||
<div class="multi-wizard instance-wizard">
|
||||
<div class="progress">
|
||||
|
|
@ -95,7 +87,6 @@
|
|||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Select template -->
|
||||
<div class="section select-template">
|
||||
<h3><fmt:message key="label.select.iso.or.template" /></h3>
|
||||
|
|
@ -113,7 +104,6 @@
|
|||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Step 2: Select ISO -->
|
||||
<div class="step select-iso" wizard-step-id="select-iso">
|
||||
<!-- Select template -->
|
||||
|
|
@ -284,7 +274,6 @@
|
|||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Step 5c: Select security group -->
|
||||
<div class="wizard-step-conditional select-security-group">
|
||||
<div class="main-desc">
|
||||
|
|
@ -296,7 +285,6 @@
|
|||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Step 6: Review -->
|
||||
<div class="step review" wizard-step-id="review">
|
||||
<div class="main-desc">
|
||||
|
|
@ -313,7 +301,6 @@
|
|||
<input type="text" name="displayname" />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Add to group -->
|
||||
<div class="select odd">
|
||||
<div class="name">
|
||||
|
|
@ -323,7 +310,6 @@
|
|||
<input type="text" name="groupname" />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Zone -->
|
||||
<div class="select">
|
||||
<div class="name">
|
||||
|
|
@ -336,7 +322,6 @@
|
|||
<a href="1"><fmt:message key="label.edit"/></a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Hypervisor -->
|
||||
<div class="select odd">
|
||||
<div class="name">
|
||||
|
|
@ -349,7 +334,6 @@
|
|||
<a href="1"><fmt:message key="label.edit"/></a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Template -->
|
||||
<div class="select">
|
||||
<div class="name">
|
||||
|
|
@ -362,7 +346,6 @@
|
|||
<a href="2"><fmt:message key="label.edit"/></a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Service offering -->
|
||||
<div class="select odd">
|
||||
<div class="name">
|
||||
|
|
@ -375,7 +358,6 @@
|
|||
<a href="3"><fmt:message key="label.edit"/></a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Data disk offering -->
|
||||
<div class="select">
|
||||
<div class="name">
|
||||
|
|
@ -388,7 +370,6 @@
|
|||
<a href="4"><fmt:message key="label.edit"/></a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Primary network -->
|
||||
<div class="select odd">
|
||||
<div class="name">
|
||||
|
|
@ -406,7 +387,6 @@
|
|||
</div>
|
||||
</div>
|
||||
</form>
|
||||
|
||||
<!-- Computer diagram -->
|
||||
<div class="diagram">
|
||||
<div>
|
||||
|
|
@ -419,7 +399,6 @@
|
|||
<div class="part hd"></div>
|
||||
<div class="part network-card"></div>
|
||||
</div>
|
||||
|
||||
<!-- Buttons -->
|
||||
<div class="buttons">
|
||||
<div class="button previous"><span><fmt:message key="label.previous"/></span></div>
|
||||
|
|
@ -427,7 +406,6 @@
|
|||
<div class="button next"><span><fmt:message key="label.next"/></span></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Zone wizard -->
|
||||
<div class="multi-wizard zone-wizard">
|
||||
<div class="progress">
|
||||
|
|
@ -473,7 +451,6 @@
|
|||
</div>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
<!-- Step 2: Add zone -->
|
||||
<div class="setup-zone" zone-wizard-form="zone"
|
||||
zone-wizard-step-id="addZone">
|
||||
|
|
@ -484,7 +461,6 @@
|
|||
<div class="select-container"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Step 3.1: Setup Physical Network -->
|
||||
<div class="setup-physical-network"
|
||||
zone-wizard-step-id="setupPhysicalNetwork"
|
||||
|
|
@ -503,7 +479,6 @@
|
|||
<fmt:message key="message.setup.physical.network.during.zone.creation.basic"/>
|
||||
</div>
|
||||
<div class="button add new-physical-network"><span class="icon"> </span><span><fmt:message key="label.add.physical.network"/></span></div>
|
||||
|
||||
<!-- Traffic types drag area -->
|
||||
<div class="traffic-types-drag-area">
|
||||
<div class="header"><fmt:message key="label.traffic.types"/></div>
|
||||
|
|
@ -578,13 +553,11 @@
|
|||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="drag-helper-icon"></div>
|
||||
<div class="content input-area">
|
||||
<form></form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Step 3.1b: Add Netscaler device -->
|
||||
<div class="setup-physical-network-basic"
|
||||
zone-wizard-step-id="addNetscalerDevice"
|
||||
|
|
@ -597,13 +570,11 @@
|
|||
<li class="guest-traffic"><fmt:message key="label.guest.traffic"/></li>
|
||||
<li class="conditional storage-traffic"><fmt:message key="label.storage.traffic"/></li>
|
||||
</ul>
|
||||
|
||||
<div class="info-desc"><fmt:message key="label.please.specify.netscaler.info"/></div>
|
||||
<div class="content input-area">
|
||||
<div class="select-container"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Step 3.2: Configure public traffic -->
|
||||
<div class="setup-public-traffic" zone-wizard-prefilter="addPublicNetwork"
|
||||
zone-wizard-step-id="configurePublicTraffic">
|
||||
|
|
@ -614,14 +585,12 @@
|
|||
<li class="guest-traffic"><fmt:message key="label.guest.traffic"/></li>
|
||||
<li class="conditional storage-traffic"><fmt:message key="label.storage.traffic"/></li>
|
||||
</ul>
|
||||
|
||||
<div class="info-desc" id="add_zone_public_traffic_desc">
|
||||
<span id="for_basic_zone" style="display:none"><fmt:message key="message.public.traffic.in.basic.zone"/></span>
|
||||
<span id="for_advanced_zone" style="display:none"><fmt:message key="message.public.traffic.in.advanced.zone"/></span>
|
||||
</div>
|
||||
<div ui-custom="publicTrafficIPRange"></div>
|
||||
</div>
|
||||
|
||||
<!-- Step 3.3: Add pod -->
|
||||
<div class="add-pod" zone-wizard-form="pod"
|
||||
zone-wizard-step-id="addPod">
|
||||
|
|
@ -632,7 +601,6 @@
|
|||
<li class="guest-traffic"><fmt:message key="label.guest.traffic"/></li>
|
||||
<li class="conditional storage-traffic"><fmt:message key="label.storage.traffic"/></li>
|
||||
</ul>
|
||||
|
||||
<div class="info-desc">
|
||||
<fmt:message key="message.add.pod.during.zone.creation"/>
|
||||
</div>
|
||||
|
|
@ -640,7 +608,6 @@
|
|||
<div class="select-container"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Step 3.4: Configure guest traffic -->
|
||||
<div class="setup-guest-traffic"
|
||||
zone-wizard-form="guestTraffic"
|
||||
|
|
@ -653,7 +620,6 @@
|
|||
<li class="guest-traffic active"><fmt:message key="label.guest.traffic"/></li>
|
||||
<li class="conditional storage-traffic"><fmt:message key="label.storage.traffic"/></li>
|
||||
</ul>
|
||||
|
||||
<div class="info-desc" id="add_zone_guest_traffic_desc">
|
||||
<span id="for_basic_zone" style="display:none"><fmt:message key="message.guest.traffic.in.basic.zone"/></span>
|
||||
<span id="for_advanced_zone" style="display:none"><fmt:message key="message.guest.traffic.in.advanced.zone"/></span>
|
||||
|
|
@ -662,7 +628,6 @@
|
|||
<div class="select-container"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Step 3.5: Configure storage traffic -->
|
||||
<div class="setup-storage-traffic" zone-wizard-prefilter="configureStorageTraffic"
|
||||
zone-wizard-step-id="configureStorageTraffic">
|
||||
|
|
@ -673,13 +638,11 @@
|
|||
<li class="guest-traffic"><fmt:message key="label.guest.traffic"/></li>
|
||||
<li class="storage-traffic active"><fmt:message key="label.storage.traffic"/></li>
|
||||
</ul>
|
||||
|
||||
<div class="info-desc">
|
||||
<fmt:message key="message.storage.traffic"/>
|
||||
</div>
|
||||
<div ui-custom="storageTrafficIPRange"></div>
|
||||
</div>
|
||||
|
||||
<!-- Step 4.1: Add cluster -->
|
||||
<div class="add-cluster" zone-wizard-form="cluster"
|
||||
zone-wizard-step-id="addCluster">
|
||||
|
|
@ -697,7 +660,6 @@
|
|||
<div class="select-container"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Step 4.2: Add host -->
|
||||
<div class="add-cluster" zone-wizard-form="host"
|
||||
zone-wizard-step-id="addHost" zone-wizard-prefilter="addHost">
|
||||
|
|
@ -714,7 +676,6 @@
|
|||
<div class="select-container"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Step 4.3: Add primary storage -->
|
||||
<div class="add-cluster" zone-wizard-form="primaryStorage" zone-wizard-prefilter="addPrimaryStorage"
|
||||
zone-wizard-step-id="addPrimaryStorage">
|
||||
|
|
@ -731,7 +692,6 @@
|
|||
<div class="select-container"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Step 4.4: Add secondary storage -->
|
||||
<div class="add-cluster" zone-wizard-form="secondaryStorage"
|
||||
zone-wizard-step-id="addSecondaryStorage">
|
||||
|
|
@ -748,7 +708,6 @@
|
|||
<div class="select-container"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Step 5: Launch -->
|
||||
<div class="review" zone-wizard-step-id="launch">
|
||||
<div class="main-desc pre-setup"><fmt:message key="message.launch.zone"/></div>
|
||||
|
|
@ -762,7 +721,6 @@
|
|||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Buttons -->
|
||||
<div class="buttons">
|
||||
<div class="button previous"><span><fmt:message key="label.previous"/></span></div>
|
||||
|
|
@ -770,7 +728,6 @@
|
|||
<div class="button next"><span><fmt:message key="label.next"/></span></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Network chart -->
|
||||
<div class="network-chart normal">
|
||||
<ul>
|
||||
|
|
@ -788,7 +745,6 @@
|
|||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<!-- Static NAT network chart -->
|
||||
<div class="network-chart static-nat">
|
||||
<ul>
|
||||
|
|
@ -803,7 +759,6 @@
|
|||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<!-- Project dashboard -->
|
||||
<div class="project-dashboard-view">
|
||||
<div class="overview-area">
|
||||
|
|
@ -871,7 +826,6 @@
|
|||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="info-boxes">
|
||||
<!-- Networking and security -->
|
||||
<div class="info-box networking-and-security">
|
||||
|
|
@ -915,7 +869,6 @@
|
|||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<!-- Events -->
|
||||
<div class="info-box events">
|
||||
<div class="title">
|
||||
|
|
@ -934,7 +887,6 @@
|
|||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- System dashboard -->
|
||||
<div class="system-dashboard-view">
|
||||
<div class="toolbar">
|
||||
|
|
@ -1598,8 +1550,6 @@
|
|||
<script src="lib/flot/jquery.flot.stack.js" type="text/javascript"></script>
|
||||
<script src="lib/flot/jquery.flot.symbol.js" type="text/javascript"></script>
|
||||
<script src="lib/flot/jquery.flot.threshold.js" type="text/javascript"></script>
|
||||
|
||||
|
||||
<!-- CloudStack -->
|
||||
<script type="text/javascript" src="scripts/ui/core.js?t=<%=now%>"></script>
|
||||
<script type="text/javascript" src="scripts/ui/utils.js?t=<%=now%>"></script>
|
||||
|
|
@ -1656,6 +1606,8 @@
|
|||
</html>
|
||||
<script language="javascript">
|
||||
dictionary = {
|
||||
'label.tier.details': '<fmt:message key="label.tier.details"/>',
|
||||
'label.edit.tags': '<fmt:message key="label.edit.tags"/>',
|
||||
'label.network.rate.megabytes': '<fmt:message key="label.network.rate.megabytes"/>',
|
||||
'message.setup.physical.network.during.zone.creation.basic': '<fmt:message key="message.setup.physical.network.during.zone.creation.basic"/>',
|
||||
'label.traffic.label': '<fmt:message key="label.traffic.label"/>',
|
||||
|
|
|
|||
|
|
@ -17,6 +17,78 @@
|
|||
var totalScaleDownCondition = 0;
|
||||
|
||||
cloudStack.autoscaler = {
|
||||
// UI actions to appear in dialog
|
||||
autoscaleActions: {
|
||||
enable: {
|
||||
label: 'Enable Autoscale VM Group',
|
||||
action: function(args) {
|
||||
$.ajax({
|
||||
url: createURL('enableAutoScaleVmGroup'),
|
||||
data: {
|
||||
id: args.context.originalAutoscaleData.context.autoscaleVmGroup.id
|
||||
},
|
||||
success: function(json) {
|
||||
var jid = json.enableautoscalevmGroupresponse.jobid;
|
||||
args.response.success({
|
||||
_custom: {
|
||||
jobId: jid,
|
||||
getUpdatedItem: function(json) {
|
||||
return json.queryasyncjobresultresponse.jobresult.autoscalevmgroup;
|
||||
},
|
||||
getActionFilter: function() {
|
||||
return cloudStack.autoscaler.actionFilter;
|
||||
}
|
||||
},
|
||||
notification: {
|
||||
poll: pollAsyncJobResult
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
},
|
||||
disable: {
|
||||
label: 'Disable Autoscale VM Group',
|
||||
action: function(args) {
|
||||
$.ajax({
|
||||
url: createURL('disableAutoScaleVmGroup'),
|
||||
data: {
|
||||
id: args.context.originalAutoscaleData.context.autoscaleVmGroup.id
|
||||
},
|
||||
success: function(json) {
|
||||
var jid = json.disableautoscalevmGroupresponse.jobid;
|
||||
args.response.success({
|
||||
_custom: {
|
||||
jobId: jid,
|
||||
getUpdatedItem: function(json) {
|
||||
return json.queryasyncjobresultresponse.jobresult.autoscalevmgroup;
|
||||
},
|
||||
getActionFilter: function() {
|
||||
return cloudStack.autoscaler.actionFilter;
|
||||
}
|
||||
},
|
||||
notification: {
|
||||
poll: pollAsyncJobResult
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
},
|
||||
actionFilter: function(args) {
|
||||
var allowedActions = [];
|
||||
if(args.context.originalAutoscaleData == null) { //new LB rule
|
||||
//no actions for new LB rule
|
||||
}
|
||||
else { //existing LB rule
|
||||
if(args.context.originalAutoscaleData[0].context.autoscaleVmGroup.state == 'disabled')
|
||||
allowedActions.push('enable');
|
||||
else if(args.context.originalAutoscaleData[0].context.autoscaleVmGroup.state == 'enabled')
|
||||
allowedActions.push('disable');
|
||||
}
|
||||
return allowedActions;
|
||||
},
|
||||
dataProvider: function(args) {
|
||||
// Reset data
|
||||
scaleUpData = [];
|
||||
|
|
@ -31,6 +103,7 @@
|
|||
$.ajax({
|
||||
url: createURL('listAutoScaleVmGroups'),
|
||||
data: {
|
||||
listAll: true,
|
||||
lbruleid: args.context.multiRules[0].id
|
||||
},
|
||||
success: function(json) {
|
||||
|
|
@ -39,6 +112,7 @@
|
|||
$.ajax({
|
||||
url: createURL('listAutoScaleVmProfiles'),
|
||||
data: {
|
||||
listAll: true,
|
||||
id: autoscaleVmGroup.vmprofileid
|
||||
},
|
||||
success: function(json) {
|
||||
|
|
@ -76,15 +150,17 @@
|
|||
|
||||
var diskOfferingId, securityGroups;
|
||||
var otherdeployparams = autoscaleVmProfile.otherdeployparams;
|
||||
var array1 = otherdeployparams.split('&');
|
||||
$(array1).each(function(){
|
||||
var array2 = this.split('=');
|
||||
if(array2[0] == 'diskofferingid')
|
||||
diskOfferingId= array2[1];
|
||||
if(array2[0] == 'securitygroupids')
|
||||
securityGroups = array2[1];
|
||||
});
|
||||
|
||||
if(otherdeployparams != null && otherdeployparams.length > 0) {
|
||||
var array1 = otherdeployparams.split('&');
|
||||
$(array1).each(function(){
|
||||
var array2 = this.split('=');
|
||||
if(array2[0] == 'diskofferingid')
|
||||
diskOfferingId= array2[1];
|
||||
if(array2[0] == 'securitygroupids')
|
||||
securityGroups = array2[1];
|
||||
});
|
||||
}
|
||||
|
||||
var originalAutoscaleData = {
|
||||
templateNames: autoscaleVmProfile.templateid,
|
||||
serviceOfferingId: autoscaleVmProfile.serviceofferingid,
|
||||
|
|
@ -337,25 +413,50 @@
|
|||
label: 'User',
|
||||
select: function(args) {
|
||||
var items = [];
|
||||
if(isAdmin() || isDomainAdmin()) {
|
||||
$.ajax({
|
||||
url: createURL('listUsers'),
|
||||
data: {
|
||||
domainid: g_domainid,
|
||||
account: g_account
|
||||
},
|
||||
success: function(json) {
|
||||
var users = json.listusersresponse.user;
|
||||
$(users).each(function(){
|
||||
items.push({id: this.id, description: this.username});
|
||||
});
|
||||
args.response.success({ data: items });
|
||||
}
|
||||
});
|
||||
}
|
||||
else { //regular user doesn't have access to listUers API call.
|
||||
items.push({id: "", description: ""});
|
||||
}
|
||||
if(args.context.originalAutoscaleData == null) { //new LB rule
|
||||
if(isAdmin() || isDomainAdmin()) {
|
||||
$.ajax({
|
||||
url: createURL('listUsers'),
|
||||
data: {
|
||||
domainid: g_domainid,
|
||||
account: g_account
|
||||
},
|
||||
success: function(json) {
|
||||
var users = json.listusersresponse.user;
|
||||
$(users).each(function(){
|
||||
items.push({id: this.id, description: this.username});
|
||||
});
|
||||
args.response.success({ data: items });
|
||||
}
|
||||
});
|
||||
}
|
||||
else { //regular user doesn't have access to listUers API call.
|
||||
items.push({id: "", description: ""});
|
||||
args.response.success({ data: items });
|
||||
}
|
||||
}
|
||||
else { //existing LB rule
|
||||
if(isAdmin() || isDomainAdmin()) {
|
||||
$.ajax({
|
||||
url: createURL('listUsers'),
|
||||
data: {
|
||||
domainid: args.context.originalAutoscaleData.context.autoscaleVmProfile.domainid,
|
||||
account: args.context.originalAutoscaleData.context.autoscaleVmProfile.account
|
||||
},
|
||||
success: function(json) {
|
||||
var users = json.listusersresponse.user;
|
||||
$(users).each(function(){
|
||||
items.push({id: this.id, description: this.username});
|
||||
});
|
||||
args.response.success({ data: items });
|
||||
}
|
||||
});
|
||||
}
|
||||
else { //regular user doesn't have access to listUers API call.
|
||||
items.push({id: "", description: ""});
|
||||
args.response.success({ data: items });
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
|
|
@ -1005,7 +1106,7 @@
|
|||
array1.push("&destroyvmgraceperiod=" + args.data.destroyVMgracePeriod);
|
||||
array1.push("&snmpcommunity=" + args.data.snmpCommunity);
|
||||
array1.push("&snmpport=" + args.data.snmpPort);
|
||||
if(args.data.username != "")
|
||||
if(args.data.username != null && args.data.username.length > 0)
|
||||
array1.push("&autoscaleuserid=" + args.data.username);
|
||||
|
||||
$.ajax({
|
||||
|
|
@ -1156,7 +1257,9 @@
|
|||
id: args.context.originalAutoscaleData.context.autoscaleVmGroup.id,
|
||||
minmembers: args.data.minInstance,
|
||||
maxmembers: args.data.maxInstance,
|
||||
interval: args.data.interval
|
||||
interval: args.data.interval,
|
||||
scaleuppolicyids: args.context.originalAutoscaleData.scaleUpPolicy.id,
|
||||
scaledownpolicyids: args.context.originalAutoscaleData.scaleDownPolicy.id
|
||||
};
|
||||
|
||||
$.ajax({
|
||||
|
|
|
|||
|
|
@ -945,7 +945,8 @@
|
|||
}
|
||||
},
|
||||
tags: { label: 'label.storage.tags' },
|
||||
domain: { label: 'label.domain' }
|
||||
domain: { label: 'label.domain' },
|
||||
storagetype: { label: 'label.storage.type' }
|
||||
}
|
||||
],
|
||||
|
||||
|
|
|
|||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue