Example #1
0
 public static Phase ToModel(this PhaseResource resource, IOctopusRepository repository)
 {
     return(new Phase(
                new ElementIdentifier(resource.Name),
                resource.ReleaseRetentionPolicy?.ToModel(),
                resource.TentacleRetentionPolicy?.ToModel(),
                resource.MinimumEnvironmentsBeforePromotion,
                resource.AutomaticDeploymentTargets.Select(id => new ElementReference(repository.Environments.Get(id).Name)),
                resource.OptionalDeploymentTargets.Select(id => new ElementReference(repository.Environments.Get(id).Name))));
 }
Example #2
0
 public static PhaseResource UpdateWith(this PhaseResource resource, Phase model, IOctopusRepository repository)
 {
     resource.Name = model.Identifier.Name;
     resource.MinimumEnvironmentsBeforePromotion = model.MinimumEnvironmentsBeforePromotion;
     resource.ReleaseRetentionPolicy             = model.ReleaseRetentionPolicy?.FromModel();
     resource.TentacleRetentionPolicy            = model.TentacleRetentionPolicy?.FromModel();
     resource.AutomaticDeploymentTargets         = new ReferenceCollection(model.AutomaticDeploymentTargetRefs.Select(r => repository.Environments.ResolveResourceId(r)));
     resource.OptionalDeploymentTargets          = new ReferenceCollection(model.OptionalDeploymentTargetRefs.Select(r => repository.Environments.ResolveResourceId(r)));
     return(resource);
 }
        private static List <LifecycleResource> CreateLifecycles()
        {
            CreateEnvironments();//Start by creating the environments that will be added to the repository

            //Create the rest of the lifecycles for test
            var lifecycleList = new List <LifecycleResource>();

            foreach (var lifecycleName in LifecycleNames)
            {
                var lifecycle = _repository.Lifecycles.FindByName(lifecycleName).Result ??
                                new LifecycleResource();

                lifecycle.Name        = lifecycleName;
                lifecycle.Description = GeneralResourceProperty.ResourceDescription;

                if (lifecycle.Name == "Default Lifecycle")
                {
                    lifecycle.Phases.Clear();

                    for (int i = 0; i < EnvironmentNames.Length; i++)
                    {
                        var environment = _repository.Environments.FindByName(EnvironmentNames[i]).Result;

                        var phase = new PhaseResource()
                        {
                            Name                      = environment.Name,
                            IsOptionalPhase           = false,
                            OptionalDeploymentTargets = ReferenceCollection.One(environment.Id)
                        };

                        lifecycle.Phases.Insert(i, phase);
                    }
                }

                try
                {
                    Log.Information($"Creating/Modifying Lifecycle [{lifecycle.Name}]");
                    lifecycleList.Add(lifecycle.Id == null ?
                                      _repository.Lifecycles.Create(lifecycle).Result :
                                      _repository.Lifecycles.Modify(lifecycle).Result
                                      );
                }
                catch (Exception e)
                {
                    Console.WriteLine(e);
                    throw;
                }
            }

            return(lifecycleList);
        }
        public static async Task <Phase> ToModel(this PhaseResource resource, IOctopusAsyncRepository repository)
        {
            var automaticDeploymentTargets = resource.AutomaticDeploymentTargets.Select(async id =>
            {
                var environment = await repository.Environments.Get(id);
                return(new ElementReference(environment.Name));
            });

            var optionalDeploymentTargets = resource.OptionalDeploymentTargets.Select(async id =>
            {
                var environment = await repository.Environments.Get(id);
                return(new ElementReference(environment.Name));
            });

            return(new Phase(
                       new ElementIdentifier(resource.Name),
                       resource.ReleaseRetentionPolicy?.ToModel(),
                       resource.TentacleRetentionPolicy?.ToModel(),
                       resource.MinimumEnvironmentsBeforePromotion,
                       await Task.WhenAll(automaticDeploymentTargets),
                       await Task.WhenAll(optionalDeploymentTargets)));
        }
        /// <summary>
        /// Gathers the list of Environments of a Phase
        /// </summary>
        /// <param name="octRepository">The repository to call against.</param>
        /// <param name="phase">Phase to gather from.</param>
        /// <returns>Enumerable of EnvironmentResources</returns>
        public static IEnumerable <EnvironmentResource> GetPhaseEnvironments(OctopusRepository octRepository, PhaseResource phase)
        {
            var environmentList = new List <EnvironmentResource>();

            foreach (var environment in phase.OptionalDeploymentTargets)
            {
                var environmentToAdd = GetEnvironmentById(octRepository, environment);
                environmentList.Add(environmentToAdd);
            }
            return(environmentList);
        }