Search in sources :

Example 6 with ResourceGroupState

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);
}
Also used : ResourceGroupInner(com.microsoft.azure.management.resources.implementation.ResourceGroupInner) ResourceGroupState(com.vmware.photon.controller.model.resources.ResourceGroupService.ResourceGroupState) AzureTestUtil.createDefaultResourceGroupState(com.vmware.photon.controller.model.adapters.azure.instance.AzureTestUtil.createDefaultResourceGroupState) Ignore(org.junit.Ignore) AzureBaseTest(com.vmware.photon.controller.model.adapters.azure.base.AzureBaseTest) Test(org.junit.Test)

Example 7 with ResourceGroupState

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);
    }
}
Also used : ComputeState(com.vmware.photon.controller.model.resources.ComputeService.ComputeState) VirtualNetworksInner(com.microsoft.azure.management.network.implementation.VirtualNetworksInner) ResourcePoolState(com.vmware.photon.controller.model.resources.ResourcePoolService.ResourcePoolState) AuthCredentialsServiceState(com.vmware.xenon.services.common.AuthCredentialsService.AuthCredentialsServiceState) VirtualNetworkInner(com.microsoft.azure.management.network.implementation.VirtualNetworkInner) ResourceGroupInner(com.microsoft.azure.management.resources.implementation.ResourceGroupInner) AddressSpace(com.microsoft.azure.management.network.AddressSpace) ComputeDescription(com.vmware.photon.controller.model.resources.ComputeDescriptionService.ComputeDescription) AzureTestUtil.buildComputeDescription(com.vmware.photon.controller.model.adapters.azure.instance.AzureTestUtil.buildComputeDescription) ResourceGroupState(com.vmware.photon.controller.model.resources.ResourceGroupService.ResourceGroupState) AzureTestUtil.createDefaultResourceGroupState(com.vmware.photon.controller.model.adapters.azure.instance.AzureTestUtil.createDefaultResourceGroupState) Before(org.junit.Before)

Example 8 with ResourceGroupState

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);
}
Also used : NetworkManagementClientImpl(com.microsoft.azure.management.network.implementation.NetworkManagementClientImpl) ResourcePoolState(com.vmware.photon.controller.model.resources.ResourcePoolService.ResourcePoolState) AuthCredentialsServiceState(com.vmware.xenon.services.common.AuthCredentialsService.AuthCredentialsServiceState) VirtualNetworkInner(com.microsoft.azure.management.network.implementation.VirtualNetworkInner) ResourceGroupInner(com.microsoft.azure.management.resources.implementation.ResourceGroupInner) AddressSpace(com.microsoft.azure.management.network.AddressSpace) ResourceGroupState(com.vmware.photon.controller.model.resources.ResourceGroupService.ResourceGroupState) AzureTestUtil.createDefaultResourceGroupState(com.vmware.photon.controller.model.adapters.azure.instance.AzureTestUtil.createDefaultResourceGroupState) ArrayList(java.util.ArrayList) ApplicationTokenCredentials(com.microsoft.azure.credentials.ApplicationTokenCredentials) ResourceManagementClientImpl(com.microsoft.azure.management.resources.implementation.ResourceManagementClientImpl) Before(org.junit.Before)

Example 9 with ResourceGroupState

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));
}
Also used : ResourceGroupState(com.vmware.photon.controller.model.resources.ResourceGroupService.ResourceGroupState)

Example 10 with ResourceGroupState

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);
}
Also used : ResourceGroupState(com.vmware.photon.controller.model.resources.ResourceGroupService.ResourceGroupState)

Aggregations

ResourceGroupState (com.vmware.photon.controller.model.resources.ResourceGroupService.ResourceGroupState)31 Operation (com.vmware.xenon.common.Operation)10 QueryTask (com.vmware.xenon.services.common.QueryTask)10 ComputeProperties (com.vmware.photon.controller.model.ComputeProperties)9 QueryUtils (com.vmware.photon.controller.model.query.QueryUtils)9 ResourceState (com.vmware.photon.controller.model.resources.ResourceState)9 List (java.util.List)9 AdapterUtils (com.vmware.photon.controller.model.adapters.util.AdapterUtils)8 ResourceGroupService (com.vmware.photon.controller.model.resources.ResourceGroupService)8 StorageDescription (com.vmware.photon.controller.model.resources.StorageDescriptionService.StorageDescription)8 ManagedObjectReference (com.vmware.vim25.ManagedObjectReference)8 ServiceDocumentQueryResult (com.vmware.xenon.common.ServiceDocumentQueryResult)8 Collections (java.util.Collections)8 CompletionHandler (com.vmware.xenon.common.Operation.CompletionHandler)7 Utils (com.vmware.xenon.common.Utils)7 AuthCredentialsServiceState (com.vmware.xenon.services.common.AuthCredentialsService.AuthCredentialsServiceState)7 ArrayList (java.util.ArrayList)7 HashSet (java.util.HashSet)7 Builder (com.vmware.xenon.services.common.QueryTask.Query.Builder)6 VimNames (com.vmware.photon.controller.model.adapters.vsphere.util.VimNames)5