use of com.vmware.photon.controller.model.tasks.ResourceEnumerationTaskService.ResourceEnumerationTaskState in project photon-model by vmware.
the class EndpointAllocationTaskService method doTriggerEnumeration.
private void doTriggerEnumeration(EndpointAllocationTaskState currentState, SubStage next, URI adapterManagementReference) {
EndpointState endpoint = currentState.endpointState;
long intervalMicros = currentState.enumerationRequest.refreshIntervalMicros != null ? currentState.enumerationRequest.refreshIntervalMicros : DEFAULT_SCHEDULED_TASK_INTERVAL_MICROS;
// Use endpoint documentSelfLink's last part as convention, so that we are able to stop
// enumeration during endpoint update.
String id = UriUtils.getLastPathSegment(endpoint.documentSelfLink);
ResourceEnumerationTaskState enumTaskState = new ResourceEnumerationTaskState();
enumTaskState.parentComputeLink = endpoint.computeLink;
enumTaskState.endpointLink = endpoint.documentSelfLink;
enumTaskState.resourcePoolLink = currentState.enumerationRequest.resourcePoolLink;
enumTaskState.adapterManagementReference = adapterManagementReference;
enumTaskState.tenantLinks = endpoint.tenantLinks;
enumTaskState.options = EnumSet.of(TaskOption.SELF_DELETE_ON_COMPLETION);
if (currentState.options.contains(TaskOption.IS_MOCK)) {
enumTaskState.options.add(TaskOption.IS_MOCK);
}
if (currentState.options.contains(TaskOption.PRESERVE_MISSING_RESOUCES)) {
enumTaskState.options.add(TaskOption.PRESERVE_MISSING_RESOUCES);
}
ScheduledTaskState scheduledTaskState = new ScheduledTaskState();
scheduledTaskState.documentSelfLink = id;
scheduledTaskState.factoryLink = ResourceEnumerationTaskService.FACTORY_LINK;
scheduledTaskState.initialStateJson = Utils.toJson(enumTaskState);
scheduledTaskState.intervalMicros = intervalMicros;
scheduledTaskState.delayMicros = currentState.enumerationRequest.delayMicros;
scheduledTaskState.noDelayOnInitialExecution = Boolean.TRUE;
scheduledTaskState.tenantLinks = endpoint.tenantLinks;
scheduledTaskState.customProperties = new HashMap<>();
scheduledTaskState.customProperties.put(ENDPOINT_LINK_PROP_NAME, endpoint.documentSelfLink);
Operation.createPost(this, ScheduledTaskService.FACTORY_LINK).addPragmaDirective(Operation.PRAGMA_DIRECTIVE_FORCE_INDEX_UPDATE).setBody(scheduledTaskState).setCompletion((o, e) -> {
if (e != null) {
logWarning(() -> String.format("Error triggering Enumeration task, reason:" + " %s", e.getMessage()));
}
sendSelfPatch(createUpdateSubStageTask(next));
}).sendWith(this);
}
use of com.vmware.photon.controller.model.tasks.ResourceEnumerationTaskService.ResourceEnumerationTaskState in project photon-model by vmware.
the class TestAzureEnumerationTask method runEnumeration.
private void runEnumeration() throws Throwable {
ResourceEnumerationTaskState enumerationTaskState = new ResourceEnumerationTaskState();
enumerationTaskState.endpointLink = endpointState.documentSelfLink;
enumerationTaskState.tenantLinks = endpointState.tenantLinks;
enumerationTaskState.parentComputeLink = computeHost.documentSelfLink;
enumerationTaskState.enumerationAction = EnumerationAction.START;
enumerationTaskState.adapterManagementReference = UriUtils.buildUri(AzureEnumerationAdapterService.SELF_LINK);
enumerationTaskState.resourcePoolLink = computeHost.resourcePoolLink;
if (this.isMock) {
enumerationTaskState.options = EnumSet.of(TaskOption.IS_MOCK);
}
ResourceEnumerationTaskState enumTask = TestUtils.doPost(this.host, enumerationTaskState, ResourceEnumerationTaskState.class, UriUtils.buildUri(this.host, ResourceEnumerationTaskService.FACTORY_LINK));
this.host.waitFor("Error waiting for enumeration task", () -> {
try {
ResourceEnumerationTaskState state = this.host.waitForFinishedTask(ResourceEnumerationTaskState.class, enumTask.documentSelfLink);
if (state != null) {
return true;
}
} catch (Throwable e) {
return false;
}
return false;
});
}
use of com.vmware.photon.controller.model.tasks.ResourceEnumerationTaskService.ResourceEnumerationTaskState in project photon-model by vmware.
the class TestGCPStatsCollection method runEnumeration.
/**
* Run the enumeration and wait until it ends.
* @throws Throwable Exception during running and waiting enumeration.
*/
private void runEnumeration() throws Throwable {
ResourceEnumerationTaskState enumTask = createResourceEnumerationTask(this.outPool.documentSelfLink, this.computeHost.documentSelfLink, GCPEnumerationAdapterService.SELF_LINK, this.isMock, this.computeHost.tenantLinks);
ResourceEnumerationTaskState enumTaskState = performResourceEnumeration(this.host, null, enumTask);
this.host.waitForFinishedTask(ResourceEnumerationTaskState.class, enumTaskState.documentSelfLink);
}
use of com.vmware.photon.controller.model.tasks.ResourceEnumerationTaskService.ResourceEnumerationTaskState in project photon-model by vmware.
the class BaseVSphereAdapterTest method enumerateComputes.
protected void enumerateComputes(ComputeState computeHost, EndpointState endpointState, EnumSet<TaskOption> options) throws Throwable {
ResourceEnumerationTaskState task = new ResourceEnumerationTaskState();
task.adapterManagementReference = computeHost.adapterManagementReference;
task.enumerationAction = EnumerationAction.REFRESH;
task.parentComputeLink = computeHost.documentSelfLink;
task.resourcePoolLink = this.resourcePool.documentSelfLink;
if (endpointState != null) {
task.endpointLink = endpointState.documentSelfLink;
} else {
task.endpointLink = "/some/endpoint/link";
}
task.options = options;
if (isMock()) {
if (task.options == null) {
task.options = EnumSet.of(TaskOption.IS_MOCK);
} else {
task.options.add(TaskOption.IS_MOCK);
}
}
ResourceEnumerationTaskState outTask = TestUtils.doPost(this.host, task, ResourceEnumerationTaskState.class, UriUtils.buildUri(this.host, ResourceEnumerationTaskService.FACTORY_LINK));
this.host.waitForFinishedTask(ResourceEnumerationTaskState.class, outTask.documentSelfLink);
}
use of com.vmware.photon.controller.model.tasks.ResourceEnumerationTaskService.ResourceEnumerationTaskState in project photon-model by vmware.
the class AzureTestUtil method runEnumeration.
/**
* Runs azure enumeration.
*/
public static void runEnumeration(VerificationHost host, String hostSelfLink, String resourcePoolLink, EndpointState endpointState, boolean isMock) throws Throwable {
ResourceEnumerationTaskState enumerationTaskState = new ResourceEnumerationTaskState();
enumerationTaskState.endpointLink = endpointState.documentSelfLink;
enumerationTaskState.tenantLinks = endpointState.tenantLinks;
enumerationTaskState.parentComputeLink = hostSelfLink;
enumerationTaskState.enumerationAction = EnumerationAction.START;
enumerationTaskState.adapterManagementReference = UriUtils.buildUri(AzureEnumerationAdapterService.SELF_LINK);
enumerationTaskState.resourcePoolLink = resourcePoolLink;
if (isMock) {
enumerationTaskState.options = EnumSet.of(TaskOption.IS_MOCK);
}
ResourceEnumerationTaskState enumTask = TestUtils.doPost(host, enumerationTaskState, ResourceEnumerationTaskState.class, UriUtils.buildUri(host, ResourceEnumerationTaskService.FACTORY_LINK));
host.waitFor("Error waiting for enumeration task", () -> {
try {
ResourceEnumerationTaskState state = host.waitForFinishedTask(ResourceEnumerationTaskState.class, enumTask.documentSelfLink);
if (state != null) {
return true;
}
} catch (Throwable e) {
return false;
}
return false;
});
}
Aggregations