예제 #1
0
        public async Task <IActionResult> Targets(CancellationToken cancellationToken,
                                                  [FromServices] IEnvironmentTypeService environmentTypeService)
        {
            var environmentTypes = await environmentTypeService.GetEnvironmentTypes(cancellationToken);

            var targets = (await _targetSource.GetOrganizationsAsync(cancellationToken))
                          .SelectMany(
                organization => organization.Projects.SelectMany(project => project.DeploymentTargets))
                          .Select(deploymentTarget =>
            {
                string editUrl = Url.RouteUrl(TargetConstants.EditTargetRouteName,
                                              new { deploymentTargetId = deploymentTarget.Id });
                string historyUrl = Url.RouteUrl(DeploymentConstants.HistoryRouteName,
                                                 new { deploymentTargetId = deploymentTarget.Id });
                string statusUrl = Url.RouteUrl(TargetConstants.TargetStatusApiRouteName,
                                                new { deploymentTargetId = deploymentTarget.Id });

                EnvironmentType environmentType =
                    environmentTypes.SingleOrDefault(type => type.Id.Equals(deploymentTarget.EnvironmentTypeId)) ??
                    EnvironmentType.Unknown;

                return(new
                {
                    targetId = deploymentTarget.Id,
                    name = deploymentTarget.Name,
                    url = deploymentTarget.Url,
                    editUrl,
                    historyUrl,
                    statusKey = DeployStatus.Unknown.Key,
                    statusDisplayName = DeployStatus.Unknown.DisplayName,
                    statusUrl,
                    isPreReleaseVersion = false,
                    semanticVersion = "",
                    preReleaseClass = "",
                    intervalAgo = "",
                    intervalAgoName = "",
                    deployedAtLocalTime = "",
                    environmentType = environmentType.Name,
                    metadataUrl =
                        deploymentTarget.Url is null
                                ? null
                                : $"{deploymentTarget.Url.AbsoluteUri.TrimEnd('/')}/applicationmetadata.json",
                    statusMessage = "",
                    latestNewerAvailabe = "",
                    deployEnabled = deploymentTarget.Enabled && !deploymentTarget.IsReadOnly,
                    packages = Array.Empty <object>(),
                    packageId = deploymentTarget.PackageId
                });
            })
예제 #2
0
        public async Task SeedAsync(CancellationToken cancellationToken)
        {
            var types = await _environmentTypeService.GetEnvironmentTypes(cancellationToken);

            if (!types.IsDefaultOrEmpty)
            {
                return;
            }

            CreateEnvironment[] commands =
            {
                new()
                {
                    EnvironmentTypeId   = "qa",
                    EnvironmentTypeName = "QualityAssurance",
                    PreReleaseBehavior  = PreReleaseBehavior.AllowWithForceFlag.Name
                },
                new()
                {
                    EnvironmentTypeId   = "production",
                    EnvironmentTypeName = "Production",
                    PreReleaseBehavior  = PreReleaseBehavior.Deny.Name
                },
                new()
                {
                    EnvironmentTypeId   = "development ",
                    EnvironmentTypeName = "Development ",
                    PreReleaseBehavior  = PreReleaseBehavior.Allow.Name
                },
                new()
                {
                    EnvironmentTypeId   = "test",
                    EnvironmentTypeName = "Test",
                    PreReleaseBehavior  = PreReleaseBehavior.Allow.Name
                }
            };

            foreach (CreateEnvironment createEnvironment in commands)
            {
                CreateEnvironmentResult result = await _mediator.Send(createEnvironment, cancellationToken);

                _logger.Debug("CreateEnvironment result for Id {Id}: {Status}", result.Id, result.Status);
            }
        }
예제 #3
0
        public async Task SeedAsync(CancellationToken cancellationToken)
        {
            try
            {
                var environmentTypes = await _environmentTypeService.GetEnvironmentTypes(cancellationToken);

                var targets =
                    await _deploymentTargetReadService.GetDeploymentTargetsAsync(stoppingToken : cancellationToken);

                foreach (DeploymentTarget deploymentTarget in targets)
                {
                    await UpdateTarget(cancellationToken, deploymentTarget, environmentTypes);
                }
            }
            catch (TaskCanceledException ex)
            {
                _logger.Error(ex, "Could not run seeder task");
            }
        }