Search in sources :

Example 36 with ResourcePoolState

use of com.vmware.photon.controller.model.resources.ResourcePoolService.ResourcePoolState in project photon-model by vmware.

the class TestAWSCostAdapterService method testAwsCostAdapterEndToEnd.

@Test
public void testAwsCostAdapterEndToEnd() throws Throwable {
    if (this.isMock || new LocalDate(DateTimeZone.UTC).getDayOfMonth() == 1) {
        return;
    }
    ResourcePoolState resourcePool = TestAWSSetupUtils.createAWSResourcePool(this.host);
    EndpointState endpointState = new EndpointState();
    endpointState.resourcePoolLink = resourcePool.documentSelfLink;
    endpointState.endpointType = PhotonModelConstants.EndpointType.aws.name();
    endpointState.name = "test-aws-endpoint";
    endpointState.endpointProperties = new HashMap<>();
    endpointState.endpointProperties.put(EndpointConfigRequest.PRIVATE_KEY_KEY, this.secretKey);
    endpointState.endpointProperties.put(EndpointConfigRequest.PRIVATE_KEYID_KEY, this.accessKey);
    EndpointAllocationTaskState endpointAllocationTaskState = new EndpointAllocationTaskState();
    endpointAllocationTaskState.endpointState = endpointState;
    endpointAllocationTaskState.tenantLinks = Collections.singletonList("tenant-1");
    EndpointAllocationTaskState returnState = postServiceSynchronously(EndpointAllocationTaskService.FACTORY_LINK, endpointAllocationTaskState, EndpointAllocationTaskState.class);
    EndpointAllocationTaskState completeState = this.waitForServiceState(EndpointAllocationTaskState.class, returnState.documentSelfLink, state -> TaskState.TaskStage.FINISHED.ordinal() <= state.taskInfo.stage.ordinal());
    System.setProperty(AWSCostStatsService.BILLS_BACK_IN_TIME_MONTHS_KEY, "1");
    triggerStatsCollection(resourcePool);
    verifyPersistedStats(completeState, AWSConstants.COST, 2);
    // Check if second iteration of adapter succeeds.
    triggerStatsCollection(resourcePool);
    verifyPersistedStats(completeState, AWSConstants.AWS_ACCOUNT_BILL_PROCESSED_TIME_MILLIS, 2);
    System.clearProperty(AWSCostStatsService.BILLS_BACK_IN_TIME_MONTHS_KEY);
}
Also used : EndpointState(com.vmware.photon.controller.model.resources.EndpointService.EndpointState) ResourcePoolState(com.vmware.photon.controller.model.resources.ResourcePoolService.ResourcePoolState) EndpointAllocationTaskState(com.vmware.photon.controller.model.tasks.EndpointAllocationTaskService.EndpointAllocationTaskState) LocalDate(org.joda.time.LocalDate) BaseModelTest(com.vmware.photon.controller.model.helpers.BaseModelTest) Test(org.junit.Test)

Example 37 with ResourcePoolState

use of com.vmware.photon.controller.model.resources.ResourcePoolService.ResourcePoolState in project photon-model by vmware.

the class TestAWSEnumerationAtScale method initResourcePoolAndComputeHost.

/**
 * Creates the state associated with the resource pool, compute host and the VM to be created.
 * @throws Throwable
 */
public void initResourcePoolAndComputeHost() throws Throwable {
    // Create a resource pool where the VM will be housed
    ResourcePoolState resourcePool = createAWSResourcePool(this.host);
    AuthCredentialsServiceState auth = createAWSAuthentication(this.host, this.accessKey, this.secretKey);
    this.endpointState = TestAWSSetupUtils.createAWSEndpointState(this.host, auth.documentSelfLink, resourcePool.documentSelfLink);
    // create a compute host for the AWS EC2 VM
    this.computeHost = createAWSComputeHost(this.host, this.endpointState, zoneId, regionId, this.isAwsClientMock, this.awsMockEndpointReference, null);
}
Also used : ResourcePoolState(com.vmware.photon.controller.model.resources.ResourcePoolService.ResourcePoolState) AuthCredentialsServiceState(com.vmware.xenon.services.common.AuthCredentialsService.AuthCredentialsServiceState)

Example 38 with ResourcePoolState

use of com.vmware.photon.controller.model.resources.ResourcePoolService.ResourcePoolState in project photon-model by vmware.

the class StatsCollectionTaskService method initializeQuery.

private void initializeQuery(Operation op, StatsCollectionTaskState currentState, ResourcePoolState resourcePoolState) {
    // load the RP state, if not already
    if (resourcePoolState == null) {
        sendRequest(Operation.createGet(UriUtils.extendUri(ClusterUtil.getClusterUri(getHost(), ServiceTypeCluster.INVENTORY_SERVICE), currentState.resourcePoolLink)).setCompletion((o, e) -> {
            if (e != null) {
                if (e instanceof ServiceNotFoundException || o.getStatusCode() == Operation.STATUS_CODE_NOT_FOUND) {
                    logInfo(() -> String.format("Resource pool %s seems to have been deleted", currentState.resourcePoolLink));
                } else {
                    logWarning(() -> String.format("Error retrieving resource pool %s: %s", currentState.resourcePoolLink, Utils.toString(e)));
                }
                sendSelfPatch(new StatsCollectionTaskState(), TaskStage.FAILED, patchBody -> {
                    patchBody.taskInfo.failure = Utils.toServiceErrorResponse(e);
                });
                return;
            }
            ResourcePoolState loadedRpState = o.getBody(ResourcePoolState.class);
            initializeQuery(op, currentState, loadedRpState);
        }));
        return;
    }
    int resultLimit = DEFAULT_QUERY_RESULT_LIMIT;
    try {
        resultLimit = (QUERY_RESULT_LIMIT != null) ? Integer.valueOf(QUERY_RESULT_LIMIT) : DEFAULT_QUERY_RESULT_LIMIT;
    } catch (NumberFormatException e) {
        // use the default;
        logWarning(STATS_QUERY_RESULT_LIMIT + " is not a number; Using a default value of " + DEFAULT_QUERY_RESULT_LIMIT);
    }
    Query resourcePoolStateQuery = resourcePoolState.query;
    // Customize default resource pool Query.
    if (currentState.customizationClauses != null && !currentState.customizationClauses.isEmpty()) {
        currentState.customizationClauses.stream().forEach(q -> {
            resourcePoolStateQuery.addBooleanClause(q);
        });
    }
    QueryTask.Builder queryTaskBuilder = QueryTask.Builder.createDirectTask().setQuery(resourcePoolStateQuery).setResultLimit(resultLimit);
    QueryTask qTask = queryTaskBuilder.build();
    QueryUtils.startInventoryQueryTask(this, qTask).whenComplete((queryRsp, queryEx) -> {
        if (queryEx != null) {
            TaskUtils.sendFailurePatch(this, new StatsCollectionTaskState(), queryEx);
            return;
        }
        StatsCollectionTaskState patchBody = new StatsCollectionTaskState();
        if (queryRsp.results.nextPageLink == null) {
            patchBody.taskInfo = TaskUtils.createTaskState(TaskStage.FINISHED);
        } else {
            patchBody.taskInfo = TaskUtils.createTaskState(TaskStage.STARTED);
            patchBody.taskSubStage = StatsCollectionStage.GET_RESOURCES;
            patchBody.nextPageLink = queryRsp.results.nextPageLink;
        }
        TaskUtils.sendPatch(this, patchBody);
    });
}
Also used : Service(com.vmware.xenon.common.Service) ServiceTypeCluster(com.vmware.photon.controller.model.util.ClusterUtil.ServiceTypeCluster) QueryTask(com.vmware.xenon.services.common.QueryTask) ResourcePoolState(com.vmware.photon.controller.model.resources.ResourcePoolService.ResourcePoolState) PhotonModelUtils(com.vmware.photon.controller.model.resources.util.PhotonModelUtils) SingleResourceStatsCollectionTaskState(com.vmware.photon.controller.model.tasks.monitoring.SingleResourceStatsCollectionTaskService.SingleResourceStatsCollectionTaskState) ServiceUriPaths(com.vmware.xenon.services.common.ServiceUriPaths) SubTaskService(com.vmware.photon.controller.model.tasks.SubTaskService) Utils(com.vmware.xenon.common.Utils) Query(com.vmware.xenon.services.common.QueryTask.Query) UriPaths(com.vmware.photon.controller.model.UriPaths) TaskFactoryService(com.vmware.xenon.services.common.TaskFactoryService) ServiceNotFoundException(com.vmware.xenon.common.ServiceHost.ServiceNotFoundException) PropertyUsageOption(com.vmware.xenon.common.ServiceDocumentDescription.PropertyUsageOption) URI(java.net.URI) EnumSet(java.util.EnumSet) SubTaskState(com.vmware.photon.controller.model.tasks.SubTaskService.SubTaskState) ServiceTaskCallback(com.vmware.photon.controller.model.tasks.ServiceTaskCallback) Operation(com.vmware.xenon.common.Operation) QueryUtils(com.vmware.photon.controller.model.query.QueryUtils) TaskStage(com.vmware.xenon.common.TaskState.TaskStage) TimeUnit(java.util.concurrent.TimeUnit) List(java.util.List) ClusterUtil(com.vmware.photon.controller.model.util.ClusterUtil) ServiceTaskCallbackResponse(com.vmware.photon.controller.model.tasks.ServiceTaskCallback.ServiceTaskCallbackResponse) UriUtils(com.vmware.xenon.common.UriUtils) TaskState(com.vmware.xenon.common.TaskState) TaskOption(com.vmware.photon.controller.model.tasks.TaskOption) FactoryService(com.vmware.xenon.common.FactoryService) TaskService(com.vmware.xenon.services.common.TaskService) PhotonModelUriUtils.createInventoryUri(com.vmware.photon.controller.model.util.PhotonModelUriUtils.createInventoryUri) TaskUtils(com.vmware.photon.controller.model.tasks.TaskUtils) ResourcePoolState(com.vmware.photon.controller.model.resources.ResourcePoolService.ResourcePoolState) QueryTask(com.vmware.xenon.services.common.QueryTask) Query(com.vmware.xenon.services.common.QueryTask.Query) ServiceNotFoundException(com.vmware.xenon.common.ServiceHost.ServiceNotFoundException) SingleResourceStatsCollectionTaskState(com.vmware.photon.controller.model.tasks.monitoring.SingleResourceStatsCollectionTaskService.SingleResourceStatsCollectionTaskState)

Aggregations

ResourcePoolState (com.vmware.photon.controller.model.resources.ResourcePoolService.ResourcePoolState)38 AuthCredentialsServiceState (com.vmware.xenon.services.common.AuthCredentialsService.AuthCredentialsServiceState)22 Test (org.junit.Test)12 BaseModelTest (com.vmware.photon.controller.model.helpers.BaseModelTest)10 ComputeDescription (com.vmware.photon.controller.model.resources.ComputeDescriptionService.ComputeDescription)10 ComputeState (com.vmware.photon.controller.model.resources.ComputeService.ComputeState)10 Operation (com.vmware.xenon.common.Operation)10 ArrayList (java.util.ArrayList)9 StatsCollectionTaskState (com.vmware.photon.controller.model.tasks.monitoring.StatsCollectionTaskService.StatsCollectionTaskState)7 ServiceDocumentQueryResult (com.vmware.xenon.common.ServiceDocumentQueryResult)7 Before (org.junit.Before)7 ServiceStats (com.vmware.xenon.common.ServiceStats)6 ApplicationTokenCredentials (com.microsoft.azure.credentials.ApplicationTokenCredentials)5 SingleResourceStatsCollectionTaskState (com.vmware.photon.controller.model.tasks.monitoring.SingleResourceStatsCollectionTaskService.SingleResourceStatsCollectionTaskState)5 ComputeManagementClientImpl (com.microsoft.azure.management.compute.implementation.ComputeManagementClientImpl)4 SecurityGroupState (com.vmware.photon.controller.model.resources.SecurityGroupService.SecurityGroupState)4 ProvisionSecurityGroupTaskState (com.vmware.photon.controller.model.tasks.ProvisionSecurityGroupTaskService.ProvisionSecurityGroupTaskState)4 ScheduledTaskState (com.vmware.photon.controller.model.tasks.ScheduledTaskService.ScheduledTaskState)4 Query (com.vmware.xenon.services.common.QueryTask.Query)4 NetworkManagementClientImpl (com.microsoft.azure.management.network.implementation.NetworkManagementClientImpl)3