using System.ComponentModel.DataAnnotations; namespace OTSSignsOrchestrator.Core.Models.DTOs; public class UpdateInstanceDto { // ── Identity / rendering context (populated from live service inspect) ── /// Customer display name (used in log messages and comment header). [MaxLength(100)] public string? CustomerName { get; set; } /// /// 3-letter abbreviation. If null, derived automatically from the stack name /// by stripping the "-cms-stack" suffix. /// [MaxLength(3)] public string? CustomerAbbrev { get; set; } /// Public hostname for the CMS (e.g. "acm.ots-signs.com"). [MaxLength(200)] public string? CmsServerName { get; set; } /// Host-side HTTP port (defaults to 80 when null). public int? HostHttpPort { get; set; } /// Host path bind-mounted as the theme directory. [MaxLength(500)] public string? ThemeHostPath { get; set; } // ── Optional overrides (null = keep / use global settings) ── [MaxLength(500)] public string? TemplateRepoUrl { get; set; } [MaxLength(500)] public string? TemplateRepoPat { get; set; } [MaxLength(200)] public string? SmtpServer { get; set; } [MaxLength(200)] public string? SmtpUsername { get; set; } public List? Constraints { get; set; } // ── NFS volume settings (per-instance) ── [MaxLength(200)] public string? NfsServer { get; set; } /// NFS export path on the server (e.g. "/srv/nfs"). [MaxLength(500)] public string? NfsExport { get; set; } /// Optional subfolder within the export (e.g. "ots_cms"). Omit to use the export root. [MaxLength(500)] public string? NfsExportFolder { get; set; } [MaxLength(500)] public string? NfsExtraOptions { get; set; } // ── Pangolin / Newt tunnel settings ── /// Pangolin Newt ID for the tunnel service. [MaxLength(500)] public string? NewtId { get; set; } /// Pangolin Newt Secret for the tunnel service. [MaxLength(500)] public string? NewtSecret { get; set; } }