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