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)))); }
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); }