public async Task <InvokeResult> DeleteInstanceAsync(String instanceId, EntityHeader org, EntityHeader user) { var instance = await _instanceRepo.GetInstanceAsync(instanceId); await AuthorizeAsync(instance, AuthorizeResult.AuthorizeActions.Delete, user, org); await CheckForDepenenciesAsync(instance); var repo = await _deviceManagerRepo.GetDeviceRepositoryAsync(instance.DeviceRepository.Id, org, user); if (repo != null) { /* Upon deletion release the repo so it can be used somewhere else */ repo.Instance = null; await _deviceManagerRepo.UpdateDeviceRepositoryAsync(repo, org, user); } await _instanceRepo.DeleteInstanceAsync(instanceId); if (!EntityHeader.IsNullOrEmpty(instance.PrimaryHost)) { var host = await _deploymentHostManager.GetDeploymentHostAsync(instance.PrimaryHost.Id, org, user); if (host.HostType.Value == HostTypes.Dedicated) { await _deploymentHostManager.DeleteDeploymentHostAsync(host.Id, org, user); } } return(InvokeResult.Success); }
public async Task <ListResponse <UsageMetrics> > GetMetricsForInstanceAsync(string instanceId, ListRequest request, EntityHeader org, EntityHeader user) { var instance = await _deploymentInstanceRepo.GetInstanceAsync(instanceId); await AuthorizeOrgAccessAsync(user, org, typeof(UsageMetrics), Core.Validation.Actions.Read, "Instance"); if (instance.LogStorage.Value == LogStorage.Local) { var proxy = _proxyFactory.Create <IUsageMetricsRepo>(new ProxySettings { OrganizationId = org.Id, InstanceId = instanceId }); return(await proxy.GetMetricsForInstanceAsync(instanceId, request)); } else { return(await _metricsRepo.GetMetricsForInstanceAsync(instanceId, request)); } }
public async Task <ListResponse <TelemetryReportData> > GetForDeviceAsync(DeviceRepository deviceRepo, string deviceId, string recordType, ListRequest request, EntityHeader org, EntityHeader user) { if (deviceRepo.Instance == null) { return(ListResponse <TelemetryReportData> .FromError("No associated instance.")); } await base.AuthorizeOrgAccessAsync(user, org, typeof(TelemetryReportData)); var instance = await _deploymentInstanceRepo.GetInstanceAsync(deviceRepo.Instance.Id); if (instance.LogStorage.Value == LogStorage.Local) { var proxy = _proxyFactory.Create <ITelemetryService>(new ProxySettings { OrganizationId = org.Id, InstanceId = deviceRepo.Instance.Id }); return(await proxy.GetForPemAsync(deviceId, recordType, request)); } else { return(await _telemetryService.GetForDeviceAsync(deviceId, recordType, request)); } }
public async Task <InvokeResult> DeployHostAsync(String id, EntityHeader org, EntityHeader user) { var instance = await _instanceRepo.GetInstanceAsync(id); var host = await _hostRepo.GetDeploymentHostAsync(instance.PrimaryHost.Id); var transitionResult = CanTransitionToState(host, instance, DeploymentActivityTaskTypes.DeployHost, org, user); if (!transitionResult.Successful) { return(transitionResult); } return(await PerformActionAsync(instance, org, user, DeploymentActivityTaskTypes.DeployHost)); }