Пример #1
0
 public TaskService(
     IOptionsMonitor <VsphereOptions> optionsMonitor,
     ILogger <TaskService> logger,
     IHubContext <ProgressHub> progressHub,
     IConnectionService connectionService,
     IMachineStateService machineStateService,
     IServiceProvider serviceProvider,
     TaskServiceHealthCheck taskServiceHealthCheck
     )
 {
     _optionsMonitor         = optionsMonitor;
     _logger                 = logger;
     _progressHub            = progressHub;
     _connectionService      = connectionService;
     _serviceProvider        = serviceProvider;
     _machineStateService    = machineStateService;
     _taskServiceHealthCheck = taskServiceHealthCheck;
     _taskServiceHealthCheck.HealthAllowance = _optionsMonitor.CurrentValue.HealthAllowanceSeconds;
 }
Пример #2
0
 public MachineOverviewController(IMachineOverviewService machineOverviewService, IMachineStateService machineStateService)
 {
     _machineOverviewService = machineOverviewService ?? throw new ArgumentNullException(nameof(machineOverviewService));
     _machineStateService    = machineStateService ?? throw new ArgumentNullException(nameof(machineStateService));
 }
        public async Task <SubscriptionOverview> GetSubscriptionsAsync(CancellationToken cancellationToken, IMachineStateService machineStateService)
        {
            async Task GetMachineState(SubscriptionOverview subscriptionOverview)
            {
                var tasks = (
                    from subscription in subscriptionOverview.Subscriptions
                    from assignedMachine in subscription.AssignedMachines
                    select Task.Run(async() =>
                {
                    var machineState =
                        await machineStateService.GetMachineStateAsync(assignedMachine.Id, cancellationToken);
                    assignedMachine.MachineState =
                        machineState.HasValues ? Models.MachineState.Running : Models.MachineState.Offline;
                }, cancellationToken)).ToList();
                await Task.WhenAll(tasks);
            }

            var token = await _tokenProvider.ReceiveTokenAsync(TapioScope.GlobalDiscovery);

            var request = new HttpRequestMessage(HttpMethod.Get, new Uri($"{TargetUrl}{TargetRoute}{WebUtility.UrlEncode(_tapioEmail)}"));

            request.Headers.Authorization = new AuthenticationHeaderValue("Bearer", token);
            var responseMessage = await _httpClient.SendAsync(request, cancellationToken).ConfigureAwait(false);

            responseMessage.EnsureSuccessStatusCode();
            var content = await responseMessage.Content.ReadAsStringAsync().ConfigureAwait(false);

            var result = SubscriptionOverviewExtension.FromJson(content);

            await GetMachineState(result);

            return(result);
        }