Exemplo n.º 1
0
        List <EnvironmentResource> GetEnvironments(IOctopusSpaceRepository repository)
        {
            var selectedEnvironments = repository.Environments.FindByNames(EnvironmentNames);

            var missing = EnvironmentNames.Except(selectedEnvironments.Select(e => e.Name), StringComparer.OrdinalIgnoreCase).ToList();

            if (missing.Any())
            {
                throw new ArgumentException(CouldNotFindMessage("environment", missing.ToArray()));
            }

            return(selectedEnvironments);
        }
Exemplo n.º 2
0
        List <WorkerPoolResource> GetWorkerPools(IOctopusSpaceRepository repository)
        {
            var selectedPools = repository.WorkerPools.FindByNames(WorkerPoolNames);

            var missing = WorkerPoolNames.Except(selectedPools.Select(p => p.Name), StringComparer.OrdinalIgnoreCase).ToList();

            if (missing.Any())
            {
                throw new InvalidRegistrationArgumentsException(CouldNotFindMessage("worker pool", missing.ToArray()));
            }

            return(selectedPools);
        }
Exemplo n.º 3
0
        protected ProxyResource GetProxy(IOctopusSpaceRepository repository)
        {
            var proxy = default(ProxyResource);

            if (!string.IsNullOrEmpty(ProxyName))
            {
                proxy = repository.Proxies.FindByName(ProxyName);
                if (proxy == null)
                {
                    throw new ArgumentException(CouldNotFindMessage("proxy name", ProxyName));
                }
            }
            return(proxy);
        }
Exemplo n.º 4
0
        protected MachinePolicyResource GetMachinePolicy(IOctopusSpaceRepository repository)
        {
            var machinePolicy = default(MachinePolicyResource);

            if (!string.IsNullOrEmpty(MachinePolicy))
            {
                machinePolicy = repository.MachinePolicies.FindByName(MachinePolicy);
                if (machinePolicy == null)
                {
                    throw new ArgumentException(CouldNotFindMessage("machine policy", MachinePolicy));
                }
            }
            return(machinePolicy);
        }
Exemplo n.º 5
0
        void ValidateTenantTags(IOctopusSpaceRepository repository)
        {
            if (TenantTags == null || !TenantTags.Any())
            {
                return;
            }

            var tagSets     = repository.TagSets.FindAll();
            var missingTags = TenantTags.Where(tt => !tagSets.Any(ts => ts.Tags.Any(t => t.CanonicalTagName.Equals(tt, StringComparison.OrdinalIgnoreCase)))).ToList();

            if (missingTags.Any())
            {
                throw new ArgumentException(CouldNotFindMessage("tag", missingTags.ToArray()));
            }
        }
Exemplo n.º 6
0
        MachineResource GetMachine(IOctopusSpaceRepository repository)
        {
            var existing = default(MachineResource);

            try
            {
                existing = repository.Machines.FindByName(MachineName);
                if (!AllowOverwrite && existing?.Id != null)
                {
                    throw new ArgumentException($"A machine named '{MachineName}' already exists on the Octopus Server in the target space. Use the 'force' parameter if you intended to update the existing machine.");
                }
            }
            catch (OctopusDeserializationException) // eat it, probably caused by resource incompatability between versions
            {
            }
            return(existing ?? new MachineResource());
        }
Exemplo n.º 7
0
        WorkerResource GetWorker(IOctopusSpaceRepository repository)
        {
            var existing = default(WorkerResource);

            try
            {
                existing = repository.Workers.FindByName(MachineName);
                if (!AllowOverwrite && existing?.Id != null)
                {
                    throw new InvalidRegistrationArgumentsException($"A worker named '{MachineName}' already exists. Use the 'force' parameter if you intended to update the existing machine.");
                }
            }
            catch (OctopusDeserializationException) // eat it, probably caused by resource incompatability between versions
            {
            }
            return(existing ?? new WorkerResource());
        }
Exemplo n.º 8
0
        /// <summary>
        /// Executes the operation against the specified Octopus Deploy server.
        /// </summary>
        /// <param name="repository">The Octopus Deploy server repository.</param>
        /// <exception cref="InvalidRegistrationArgumentsException">
        /// </exception>
        public override void Execute(IOctopusSpaceRepository repository)
        {
            var selectedPools = GetWorkerPools(repository);
            var machinePolicy = GetMachinePolicy(repository);
            var machine       = GetWorker(repository);
            var proxy         = GetProxy(repository);

            ApplyBaseChanges(machine, machinePolicy, proxy);

            machine.WorkerPoolIds = new ReferenceCollection(selectedPools.Select(p => p.Id).ToArray());

            if (machine.Id != null)
            {
                repository.Workers.Modify(machine);
            }
            else
            {
                repository.Workers.Create(machine);
            }
        }
Exemplo n.º 9
0
        List <TenantResource> GetTenants(IOctopusSpaceRepository repository)
        {
            if (Tenants == null || !Tenants.Any())
            {
                return(new List <TenantResource>());
            }
            var tenantsByName = repository.Tenants.FindByNames(Tenants);
            var missing       = Tenants.Except(tenantsByName.Select(e => e.Name), StringComparer.OrdinalIgnoreCase).ToArray();


            var tenantsById = repository.Tenants.Get(missing);

            missing = missing.Except(tenantsById.Select(e => e.Id), StringComparer.OrdinalIgnoreCase).ToArray();

            if (missing.Any())
            {
                throw new ArgumentException(CouldNotFindMessage("tenant", missing));
            }

            return(tenantsById.Concat(tenantsByName).ToList());
        }
Exemplo n.º 10
0
        /// <summary>
        /// Executes the operation against the specified Octopus Deploy server.
        /// </summary>
        /// <param name="repository">The Octopus Deploy server repository.</param>
        /// <exception cref="System.ArgumentException">
        /// </exception>
        public override void Execute(IOctopusSpaceRepository repository)
        {
            var selectedEnvironments = GetEnvironments(repository);
            var machinePolicy        = GetMachinePolicy(repository);
            var machine = GetMachine(repository);
            var tenants = GetTenants(repository);

            ValidateTenantTags(repository);
            var proxy = GetProxy(repository);

            ApplyBaseChanges(machine, machinePolicy, proxy);
            ApplyDeploymentTargetChanges(machine, selectedEnvironments, tenants);

            if (machine.Id != null)
            {
                repository.Machines.Modify(machine);
            }
            else
            {
                repository.Machines.Create(machine);
            }
        }
Exemplo n.º 11
0
 /// <summary>
 /// Executes the operation against the specified Octopus Deploy server.
 /// </summary>
 /// <param name="repository">The Octopus Deploy server repository.</param>
 /// <exception cref="System.ArgumentException">
 /// </exception>
 public abstract void Execute(IOctopusSpaceRepository repository);