use of com.vmware.photon.controller.model.resources.ResourceGroupService.ResourceGroupState in project photon-model by vmware.
the class TestAzureProvisionTask method testProvisionVMUsingSharedNetwork.
/**
* Creates Azure instance that uses shared/existing Network via a provision task.
* <p>
* It duplicates {@link #testProvision()} and just points to an external/shared Network.
*/
@Test
@Ignore("Since azure build timeouts due to the time consuming provision-decommission VM " + "executed by the tests. So far we sacrifice this test.")
public void testProvisionVMUsingSharedNetwork() throws Throwable {
// The test is only suitable for real (non-mocking env).
Assume.assumeFalse(this.isMock);
/*
* Create SHARED vNet-Subnets in a separate RG.
*
* VERY IMPORTANT NOTE1: The names of the vNet and Subnets MUST be equal to the ones set by
* AzureTestUtil.createDefaultNicStates.
*
* NOTE2: Since this is SHARED vNet it's not deleted after the test.
*
* The idea here is that we are provisioning a VM and linking it to an already existing
* subnet/network. That's why the network is with a !!!FIXED!!! name, and that SAME name is
* being used by standard provisioning!
*/
final ResourceGroupInner sharedNetworkRG = AzureTestUtil.createResourceGroupWithSharedNetwork(getAzureSdkClients().getResourceManagementClientImpl(), getAzureSdkClients().getNetworkManagementClientImpl(), SHARED_NETWORK_NIC_SPEC);
// Create corresponding ResourceGroupState
ResourceGroupState sharedNetworkRGState = createDefaultResourceGroupState(getHost(), sharedNetworkRG.name(), this.computeHost, this.endpointState, ResourceGroupStateType.AzureResourceGroup);
// END of prepare phase.
// In this scenario mark the VM name (and its corresponding RG) with "-withSharedNW"
String vmName = azureVMName + "-SharedNW";
// create a Azure VM compute resource
this.vmState = createDefaultVMResource(getHost(), vmName, this.computeHost, this.endpointState, DEFAULT_NIC_SPEC, // In addition to standard provisioning pass the RG of the shared network
sharedNetworkRGState.documentSelfLink);
kickOffProvisionTask();
assertVmNetworksConfiguration(DEFAULT_NIC_SPEC, vmName);
}
use of com.vmware.photon.controller.model.resources.ResourceGroupService.ResourceGroupState in project photon-model by vmware.
the class AzureLoadBalancerServiceTest method setUpTests.
@Before
public void setUpTests() throws Throwable {
if (computeHost == null) {
ResourcePoolState resourcePool = createDefaultResourcePool(this.host);
endpointState = this.createEndpointState();
// create a compute host for the Azure
computeHost = createDefaultComputeHost(this.host, resourcePool.documentSelfLink, endpointState);
}
AuthCredentialsServiceState azureVMAuth = new AuthCredentialsServiceState();
azureVMAuth.userEmail = AZURE_ADMIN_USERNAME;
azureVMAuth.privateKey = AZURE_ADMIN_PASSWORD;
azureVMAuth = TestUtils.doPost(host, azureVMAuth, AuthCredentialsServiceState.class, UriUtils.buildUri(host, AuthCredentialsService.FACTORY_LINK));
ComputeDescription compDesc = buildComputeDescription(host, computeHost, endpointState, azureVMAuth);
this.rgName = AzureUtils.DEFAULT_GROUP_PREFIX + compDesc.documentCreationTimeMicros / 1000;
ResourceGroupState rgState = createDefaultResourceGroupState(this.host, this.rgName, computeHost, endpointState, ResourceGroupStateType.AzureResourceGroup);
networkState = createNetworkState(rgState.documentSelfLink);
vmStates = new ArrayList<>();
for (int i = 0; i < poolSize; i++) {
ComputeState vmState = createDefaultVMResource(getHost(), this.rgName + "VM" + i, computeHost, endpointState, NO_PUBLIC_IP_NIC_SPEC, null, 0, compDesc, this.rgName);
vmStates.add(vmState);
}
subnetState = createSubnetState(this.subnetName);
if (!this.isMock) {
this.loadBalancerClient = getAzureSdkClients().getNetworkManagementClientImpl().loadBalancers();
this.rgOpsClient = getAzureSdkClients().getResourceManagementClientImpl().resourceGroups();
ResourceGroupInner rg = new ResourceGroupInner();
rg.withName(this.rgName);
rg.withLocation(this.regionId);
this.rgOpsClient.createOrUpdate(this.rgName, rg);
VirtualNetworkInner vNet = new VirtualNetworkInner();
AddressSpace addressSpace = new AddressSpace();
addressSpace.withAddressPrefixes(Collections.singletonList(AZURE_DEFAULT_VPC_CIDR));
vNet.withAddressSpace(addressSpace);
vNet.withLocation(this.regionId);
VirtualNetworksInner vNetClient = getAzureSdkClients().getNetworkManagementClientImpl().virtualNetworks();
vNetClient.createOrUpdate(this.rgName, this.vNetName, vNet);
kickOffComputeProvision();
kickOffSubnetProvision(InstanceRequestType.CREATE, subnetState, TaskStage.FINISHED);
}
}
use of com.vmware.photon.controller.model.resources.ResourceGroupService.ResourceGroupState in project photon-model by vmware.
the class AzureSubnetTaskServiceTest method setUp.
@Override
@Before
public void setUp() throws Throwable {
CommandLineArgumentParser.parseFromProperties(this);
if (computeHost == null) {
PhotonModelServices.startServices(this.host);
PhotonModelTaskServices.startServices(this.host);
PhotonModelAdaptersRegistryAdapters.startServices(this.host);
AzureAdaptersTestUtils.startServicesSynchronouslyAzure(this.host);
this.host.waitForServiceAvailable(PhotonModelServices.LINKS);
this.host.waitForServiceAvailable(PhotonModelTaskServices.LINKS);
// TODO: VSYM-992 - improve test/fix arbitrary timeout
this.host.setTimeoutSeconds(600);
ResourcePoolState resourcePool = createDefaultResourcePool(this.host);
AuthCredentialsServiceState authCredentials = createDefaultAuthCredentials(this.host, this.clientID, this.clientKey, this.subscriptionId, this.tenantId);
endpointState = createDefaultEndpointState(this.host, authCredentials.documentSelfLink);
// create a compute host for the Azure
computeHost = createDefaultComputeHost(this.host, resourcePool.documentSelfLink, endpointState);
}
if (!this.isMock) {
ApplicationTokenCredentials credentials = new ApplicationTokenCredentials(this.clientID, this.tenantId, this.clientKey, AzureEnvironment.AZURE);
NetworkManagementClientImpl networkManagementClient = new NetworkManagementClientImpl(credentials).withSubscriptionId(this.subscriptionId);
ResourceManagementClientImpl resourceManagementClient = new ResourceManagementClientImpl(credentials).withSubscriptionId(this.subscriptionId);
this.vNetClient = networkManagementClient.virtualNetworks();
this.rgOpsClient = resourceManagementClient.resourceGroups();
this.subnetsClient = networkManagementClient.subnets();
ResourceGroupInner rg = new ResourceGroupInner();
rg.withName(this.rgName);
rg.withLocation(this.regionId);
this.rgOpsClient.createOrUpdate(this.rgName, rg);
VirtualNetworkInner vNet = new VirtualNetworkInner();
// Azure's custom serializers don't handle well collections constructed with
// Collections.singletonList(), so initialize an ArrayList
AddressSpace addressSpace = new AddressSpace();
List<String> cidrs = new ArrayList<>();
cidrs.add(AZURE_DEFAULT_VPC_CIDR);
addressSpace.withAddressPrefixes(cidrs);
vNet.withAddressSpace(addressSpace);
vNet.withLocation(this.regionId);
this.vNetClient.createOrUpdate(this.rgName, this.vNetName, vNet);
}
ResourceGroupState rgState = createDefaultResourceGroupState(this.host, this.rgName, computeHost, endpointState, ResourceGroupStateType.AzureResourceGroup);
this.networkState = createNetworkState(rgState.documentSelfLink);
}
use of com.vmware.photon.controller.model.resources.ResourceGroupService.ResourceGroupState in project photon-model by vmware.
the class AzureTestUtil method createDefaultResourceGroupState.
public static ResourceGroupState createDefaultResourceGroupState(VerificationHost host, String resourceGroupName, ComputeState computeHost, EndpointState endpointState, ResourceGroupStateType resourceGroupType) throws Throwable {
ResourceGroupState rGroupState = new ResourceGroupState();
rGroupState.name = resourceGroupName;
rGroupState.id = rGroupState.name + randomString(4);
rGroupState.groupLinks = Collections.singleton(rGroupState.name + randomString(4));
rGroupState.tenantLinks = endpointState.tenantLinks;
rGroupState.regionId = AZURE_RESOURCE_GROUP_LOCATION;
rGroupState.endpointLink = endpointState.documentSelfLink;
rGroupState.endpointLinks = new HashSet<>();
rGroupState.endpointLinks.add(endpointState.documentSelfLink);
rGroupState.computeHostLink = computeHost.documentSelfLink;
rGroupState.customProperties = new HashMap<>();
rGroupState.customProperties.put(COMPUTE_HOST_LINK_PROP_NAME, computeHost.documentSelfLink);
rGroupState.customProperties.put(CUSTOM_PROP_ENDPOINT_LINK, endpointState.documentSelfLink);
rGroupState.customProperties.put(AZURE_STORAGE_TYPE, AZURE_STORAGE_CONTAINERS);
rGroupState.customProperties.put(AZURE_STORAGE_CONTAINER_LEASE_LAST_MODIFIED, randomString(10));
rGroupState.customProperties.put(AZURE_STORAGE_CONTAINER_LEASE_STATE, randomString(5));
rGroupState.customProperties.put(AZURE_STORAGE_CONTAINER_LEASE_STATUS, randomString(5));
rGroupState.customProperties.put(ComputeProperties.RESOURCE_TYPE_KEY, resourceGroupType.name());
return TestUtils.doPost(host, rGroupState, ResourceGroupState.class, UriUtils.buildUri(host, ResourceGroupService.FACTORY_LINK));
}
use of com.vmware.photon.controller.model.resources.ResourceGroupService.ResourceGroupState in project photon-model by vmware.
the class TestGCPEnumerationTask method createResourcePoolComputeHostAndVMState.
/**
* Creates the state associated with the resource pool, compute host and the VM to be created.
* @throws Throwable Exception during creating default resource pool, compute host or VM.
*/
private void createResourcePoolComputeHostAndVMState() throws Throwable {
// Create a resource pool where the VM will be housed.
this.outPool = createDefaultResourcePool(this.host);
// Create a resource group for the GCP project.
ResourceGroupState resourceGroup = createDefaultResourceGroup(this.host, this.projectID);
// Create a compute host for the GCP VM.
this.computeHost = createDefaultComputeHost(this.host, this.userEmail, this.privateKey, this.zoneID, this.outPool.documentSelfLink, resourceGroup.documentSelfLink);
// Create a GCP VM compute resource.
// This vm is stale and should be deleted after the first enumeration.
this.vmState = createDefaultVMResource(this.host, this.userEmail, this.privateKey, this.zoneID, this.gcpVMName, this.computeHost.documentSelfLink, this.outPool.documentSelfLink);
}
Aggregations