public static MachinePolicy ToModel(this MachinePolicyResource resource)
 {
     return(new MachinePolicy(
                new ElementIdentifier(resource.Name),
                resource.Description,
                resource.MachineHealthCheckPolicy.ToModel(),
                resource.MachineConnectivityPolicy.ToModel(),
                resource.MachineUpdatePolicy.ToModel(),
                resource.MachineCleanupPolicy.ToModel()));
 }
 public static MachinePolicyResource UpdateWith(this MachinePolicyResource resource, MachinePolicy model)
 {
     resource.Name        = model.Identifier.Name;
     resource.Description = model.Description;
     resource.MachineHealthCheckPolicy.UpdateWith(model.HealthCheckPolicy);
     resource.MachineConnectivityPolicy.UpdateWith(model.ConnectivityPolicy);
     resource.MachineUpdatePolicy.UpdateWith(model.UpdatePolicy);
     resource.MachineCleanupPolicy.UpdateWith(model.CleanupPolicy);
     return(resource);
 }
示例#3
0
        protected void ApplyBaseChanges(MachineBasedResource machine, MachinePolicyResource machinePolicy, ProxyResource proxy)
        {
            machine.Name = MachineName;
            if (machinePolicy != null)
            {
                machine.MachinePolicyId = machinePolicy.Id;
            }

            if (CommunicationStyle == CommunicationStyle.TentaclePassive)
            {
                var listening = new ListeningTentacleEndpointResource();
                listening.Uri        = new Uri("https://" + TentacleHostname.ToLowerInvariant() + ":" + TentaclePort.ToString(CultureInfo.InvariantCulture) + "/").ToString();
                listening.Thumbprint = TentacleThumbprint;
                listening.ProxyId    = proxy?.Id;
                machine.Endpoint     = listening;
            }
            else if (CommunicationStyle == CommunicationStyle.TentacleActive)
            {
                var polling = new PollingTentacleEndpointResource();
                polling.Uri        = SubscriptionId.ToString();
                polling.Thumbprint = TentacleThumbprint;
                machine.Endpoint   = polling;
            }
        }
        void ApplyChanges(MachineResource machine, IEnumerable <EnvironmentResource> environment, MachinePolicyResource machinePolicy, IEnumerable <TenantResource> tenants)
        {
            machine.EnvironmentIds = new ReferenceCollection(environment.Select(e => e.Id).ToArray());
            machine.TenantIds      = new ReferenceCollection(tenants.Select(t => t.Id).ToArray());
            machine.TenantTags     = new ReferenceCollection(TenantTags);
            machine.Roles          = new ReferenceCollection(Roles);
            machine.Name           = MachineName;
            if (machinePolicy != null)
            {
                machine.MachinePolicyId = machinePolicy.Id;
            }

            if (CommunicationStyle == CommunicationStyle.TentaclePassive)
            {
                var listening = new ListeningTentacleEndpointResource();
                listening.Uri        = new Uri("https://" + TentacleHostname.ToLowerInvariant() + ":" + TentaclePort.ToString(CultureInfo.InvariantCulture) + "/").ToString();
                listening.Thumbprint = TentacleThumbprint;
                machine.Endpoint     = listening;
            }
            else if (CommunicationStyle == CommunicationStyle.TentacleActive)
            {
                var polling = new PollingTentacleEndpointResource();
                polling.Uri        = SubscriptionId.ToString();
                polling.Thumbprint = TentacleThumbprint;
                machine.Endpoint   = polling;
            }
        }
示例#5
0
 private async Task <MachinePolicy> ReadMachinePolicy(MachinePolicyResource resource)
 {
     _logger.LogInformation($"Downloading {nameof(MachinePolicyResource)}: {resource.Name}");
     return(await Task.FromResult(resource.ToModel()));
 }
示例#6
0
        /// <summary>
        /// Creates a machine Resources.
        /// </summary>
        /// <param name="octRepository">The repository to call against.</param>
        /// <param name="name">Name of the new Machine.</param>
        /// <param name="roles">Roles to add to the Machine.</param>
        /// <param name="environmentIds">Environment Ids to add to the machine.</param>
        /// <param name="thumbprint">Thumbprint of the machine.</param>
        /// <param name="machineUri">Uri of the Machine.</param>
        /// <param name="machinePolicy">Policy of the Machine.</param>
        /// <returns>MachineResource</returns>
        public static MachineResource CreateMachineResource(OctopusRepository octRepository, string name, List <string> roles, List <string> environmentIds, string thumbprint, string machineUri, MachinePolicyResource machinePolicy)
        {
            var rolesReferenceCollection      = new ReferenceCollection(roles);
            var evironmentReferenceCollection = new ReferenceCollection(environmentIds);
            var machineToCreate = new MachineResource()
            {
                Name            = name,
                Roles           = rolesReferenceCollection,
                EnvironmentIds  = evironmentReferenceCollection,
                Thumbprint      = thumbprint,
                MachinePolicyId = machinePolicy.Id,
                Uri             = machineUri
            };

            return(octRepository.Machines.Create(machineToCreate));
        }
示例#7
0
 internal MachinePolicy DownloadMachinePolicy(MachinePolicyResource resource)
 {
     Logger.Trace($"Downloading {nameof(MachinePolicyResource)}: {resource.Name}");
     return(resource.ToModel());
 }
 private MachinePolicy ReadMachinePolicy(MachinePolicyResource resource)
 {
     Logger.Info($"Downloading {nameof(MachinePolicyResource)}: {resource.Name}");
     return(resource.ToModel());
 }