<?xml version="1.0"?>
<doc>
    <assembly>
        <name>Eryph.GuestServices.CloudConfig</name>
    </assembly>
    <members>
        <member name="T:Eryph.GuestServices.CloudConfig.CloudInitFieldAttribute">
            <summary>
            Marks a property on a CloudConfig record as a cloud-init field. The
            source generator uses this metadata to emit the platform inventory.
            </summary>
        </member>
        <member name="P:Eryph.GuestServices.CloudConfig.CloudInitFieldAttribute.Platforms">
            <summary>Platforms this key has meaningful behaviour on. Default <see cref="F:Eryph.GuestServices.CloudConfig.CloudInitPlatforms.All"/>.</summary>
        </member>
        <member name="P:Eryph.GuestServices.CloudConfig.CloudInitFieldAttribute.YamlName">
            <summary>
            The snake_case YAML key. When omitted, derived from the property name
            via the underscored naming convention used by the YAML deserializer.
            </summary>
        </member>
        <member name="P:Eryph.GuestServices.CloudConfig.CloudInitFieldAttribute.Description">
            <summary>
            Operator-visible reason text used by inventory-driven logging
            (e.g. for Linux-only keys reported as Information). When omitted the
            generator falls back to <c>"Linux-only cloud-init key"</c>.
            </summary>
        </member>
        <member name="T:Eryph.GuestServices.CloudConfig.CloudInitRecordAttribute">
            <summary>
            Marks a record (or class / struct) as a participant in the source-generated
            deep-merge. The generator emits a <c>MergeXyz</c> helper for every type
            carrying this attribute.
            </summary>
        </member>
        <member name="T:Eryph.GuestServices.CloudConfig.CloudInitRootAttribute">
            <summary>
            Marks the top-level cloud-config record. Exactly one type should carry this
            attribute. The generator emits the root <c>CloudConfigMerge.Merge</c>
            entry-point and the platform inventory from this type.
            </summary>
        </member>
        <member name="T:Eryph.GuestServices.CloudConfig.MergeBehaviorAttribute">
            <summary>
            Override the source-generated merge behaviour for a property. See
            <see cref="T:Eryph.GuestServices.CloudConfig.MergeKind"/> for the available strategies.
            </summary>
        </member>
        <member name="M:Eryph.GuestServices.CloudConfig.MergeBehaviorAttribute.#ctor(Eryph.GuestServices.CloudConfig.MergeKind)">
            <summary>
            Override the source-generated merge behaviour for a property. See
            <see cref="T:Eryph.GuestServices.CloudConfig.MergeKind"/> for the available strategies.
            </summary>
        </member>
        <member name="P:Eryph.GuestServices.CloudConfig.MergeBehaviorAttribute.KeyedMergeMethod">
            <summary>
            For <see cref="F:Eryph.GuestServices.CloudConfig.MergeKind.KeyedByName"/>: the static merge helper name
            (e.g. <c>"MergeUser"</c>) the generator dispatches to per-entry.
            </summary>
        </member>
        <member name="T:Eryph.GuestServices.CloudConfig.MergeKind">
            <summary>
            Per-property merge strategy for the source-generated CloudConfig deep-merge.
            </summary>
        </member>
        <member name="F:Eryph.GuestServices.CloudConfig.MergeKind.Auto">
            <summary>
            Generator infers from the declared type:
            <list type="bullet">
              <item><c>string?</c> / <c>bool?</c> / <c>int?</c> / numeric nullable / enum? / object? → <see cref="F:Eryph.GuestServices.CloudConfig.MergeKind.RightWins"/></item>
              <item><c>IReadOnlyList&lt;T&gt;?</c> non-keyed → <see cref="F:Eryph.GuestServices.CloudConfig.MergeKind.Concat"/></item>
              <item>record? carrying <see cref="T:Eryph.GuestServices.CloudConfig.CloudInitRecordAttribute"/> → <see cref="F:Eryph.GuestServices.CloudConfig.MergeKind.DeepMerge"/></item>
            </list>
            </summary>
        </member>
        <member name="F:Eryph.GuestServices.CloudConfig.MergeKind.RightWins">
            <summary><c>Name = right.Name ?? left.Name</c>.</summary>
        </member>
        <member name="F:Eryph.GuestServices.CloudConfig.MergeKind.Concat">
            <summary><c>(left ?? empty).Concat(right ?? empty)</c> preserving null-when-both-null.</summary>
        </member>
        <member name="F:Eryph.GuestServices.CloudConfig.MergeKind.DeepMerge">
            <summary>Recursive nested merge. Both null → null; one null → other; otherwise nested merge.</summary>
        </member>
        <member name="F:Eryph.GuestServices.CloudConfig.MergeKind.KeyedByName">
            <summary>
            Keyed-by-name merge of an <c>IReadOnlyList&lt;T&gt;</c>. The user provides a static
            <c>T Merge(T, T)</c> helper named by <see cref="P:Eryph.GuestServices.CloudConfig.MergeBehaviorAttribute.KeyedMergeMethod"/>;
            the generator dispatches by <c>Name</c>.
            </summary>
        </member>
        <member name="T:Eryph.GuestServices.CloudConfig.BoolOrString">
            <summary>
            YAML scalar that is either a bool (per PyYAML SafeLoader / YAML 1.1)
            or a string. Mirrors cloud-init's bool|string union fields —
            <c>manage_etc_hosts</c>, <c>resize_rootfs</c>, <c>power_state.condition</c>.
            </summary>
            <remarks>
            <para>
            The operator's quoting intent decides the resolved variant:
            </para>
            <list type="bullet">
              <item>A plain (unquoted) scalar whose text is one of the 22 YAML 1.1
              bool tokens becomes a <see cref="P:Eryph.GuestServices.CloudConfig.BoolOrString.Bool"/>.</item>
              <item>A quoted scalar — single, double, or block style — becomes a
              <see cref="P:Eryph.GuestServices.CloudConfig.BoolOrString.String"/> verbatim, even when its text is a bool token.</item>
              <item>A plain scalar whose text is not a bool token becomes a
              <see cref="P:Eryph.GuestServices.CloudConfig.BoolOrString.String"/>.</item>
              <item>An empty / omitted scalar becomes <see cref="F:Eryph.GuestServices.CloudConfig.BoolOrString.Empty"/>.</item>
            </list>
            <para>
            Value-type struct so the default-constructed form is <see cref="F:Eryph.GuestServices.CloudConfig.BoolOrString.Empty"/>
            and merge semantics can be derived without a sentinel reference.
            </para>
            </remarks>
        </member>
        <member name="P:Eryph.GuestServices.CloudConfig.BoolOrString.Bool">
            <summary>Resolved bool value when the scalar was a plain bool token.</summary>
        </member>
        <member name="P:Eryph.GuestServices.CloudConfig.BoolOrString.String">
            <summary>Resolved string value when the scalar was quoted or a non-bool plain token.</summary>
        </member>
        <member name="M:Eryph.GuestServices.CloudConfig.BoolOrString.FromBool(System.Boolean)">
            <summary>Construct a bool-valued instance.</summary>
        </member>
        <member name="M:Eryph.GuestServices.CloudConfig.BoolOrString.FromString(System.String)">
            <summary>Construct a string-valued instance.</summary>
        </member>
        <member name="F:Eryph.GuestServices.CloudConfig.BoolOrString.Empty">
            <summary>The empty (no-value) instance. Same as <c>default</c>.</summary>
        </member>
        <member name="P:Eryph.GuestServices.CloudConfig.BoolOrString.IsBool">
            <summary><c>true</c> when this instance carries a bool value.</summary>
        </member>
        <member name="P:Eryph.GuestServices.CloudConfig.BoolOrString.IsString">
            <summary><c>true</c> when this instance carries a string value.</summary>
        </member>
        <member name="P:Eryph.GuestServices.CloudConfig.BoolOrString.IsEmpty">
            <summary><c>true</c> when no value was supplied.</summary>
        </member>
        <member name="M:Eryph.GuestServices.CloudConfig.CloudConfigMerge.Merge(Eryph.GuestServices.CloudConfig.CloudConfig,Eryph.GuestServices.CloudConfig.CloudConfig)">
            <summary>Source-generated deep merge for <see cref="T:Eryph.GuestServices.CloudConfig.CloudConfig"/>.</summary>
        </member>
        <member name="M:Eryph.GuestServices.CloudConfig.CloudConfigMerge.MergeChpasswdConfig(Eryph.GuestServices.CloudConfig.ChpasswdConfig,Eryph.GuestServices.CloudConfig.ChpasswdConfig)">
            <summary>Source-generated deep merge for <see cref="T:Eryph.GuestServices.CloudConfig.ChpasswdConfig"/>.</summary>
        </member>
        <member name="M:Eryph.GuestServices.CloudConfig.CloudConfigMerge.MergeChpasswdListEntry(Eryph.GuestServices.CloudConfig.ChpasswdListEntry,Eryph.GuestServices.CloudConfig.ChpasswdListEntry)">
            <summary>Source-generated deep merge for <see cref="T:Eryph.GuestServices.CloudConfig.ChpasswdListEntry"/>.</summary>
        </member>
        <member name="M:Eryph.GuestServices.CloudConfig.CloudConfigMerge.MergeGroupConfig(Eryph.GuestServices.CloudConfig.GroupConfig,Eryph.GuestServices.CloudConfig.GroupConfig)">
            <summary>Source-generated deep merge for <see cref="T:Eryph.GuestServices.CloudConfig.GroupConfig"/>.</summary>
        </member>
        <member name="M:Eryph.GuestServices.CloudConfig.CloudConfigMerge.MergeGrowpartConfig(Eryph.GuestServices.CloudConfig.GrowpartConfig,Eryph.GuestServices.CloudConfig.GrowpartConfig)">
            <summary>Source-generated deep merge for <see cref="T:Eryph.GuestServices.CloudConfig.GrowpartConfig"/>.</summary>
        </member>
        <member name="M:Eryph.GuestServices.CloudConfig.CloudConfigMerge.MergeKeyboardConfig(Eryph.GuestServices.CloudConfig.KeyboardConfig,Eryph.GuestServices.CloudConfig.KeyboardConfig)">
            <summary>Source-generated deep merge for <see cref="T:Eryph.GuestServices.CloudConfig.KeyboardConfig"/>.</summary>
        </member>
        <member name="M:Eryph.GuestServices.CloudConfig.CloudConfigMerge.MergeLicenseConfig(Eryph.GuestServices.CloudConfig.LicenseConfig,Eryph.GuestServices.CloudConfig.LicenseConfig)">
            <summary>Source-generated deep merge for <see cref="T:Eryph.GuestServices.CloudConfig.LicenseConfig"/>.</summary>
        </member>
        <member name="M:Eryph.GuestServices.CloudConfig.CloudConfigMerge.MergeAnsibleConfig(Eryph.GuestServices.CloudConfig.Linux.AnsibleConfig,Eryph.GuestServices.CloudConfig.Linux.AnsibleConfig)">
            <summary>Source-generated deep merge for <see cref="T:Eryph.GuestServices.CloudConfig.Linux.AnsibleConfig"/>.</summary>
        </member>
        <member name="M:Eryph.GuestServices.CloudConfig.CloudConfigMerge.MergeAnsibleSetupController(Eryph.GuestServices.CloudConfig.Linux.AnsibleSetupController,Eryph.GuestServices.CloudConfig.Linux.AnsibleSetupController)">
            <summary>Source-generated deep merge for <see cref="T:Eryph.GuestServices.CloudConfig.Linux.AnsibleSetupController"/>.</summary>
        </member>
        <member name="M:Eryph.GuestServices.CloudConfig.CloudConfigMerge.MergeAnsibleGalaxy(Eryph.GuestServices.CloudConfig.Linux.AnsibleGalaxy,Eryph.GuestServices.CloudConfig.Linux.AnsibleGalaxy)">
            <summary>Source-generated deep merge for <see cref="T:Eryph.GuestServices.CloudConfig.Linux.AnsibleGalaxy"/>.</summary>
        </member>
        <member name="M:Eryph.GuestServices.CloudConfig.CloudConfigMerge.MergeAnsiblePull(Eryph.GuestServices.CloudConfig.Linux.AnsiblePull,Eryph.GuestServices.CloudConfig.Linux.AnsiblePull)">
            <summary>Source-generated deep merge for <see cref="T:Eryph.GuestServices.CloudConfig.Linux.AnsiblePull"/>.</summary>
        </member>
        <member name="M:Eryph.GuestServices.CloudConfig.CloudConfigMerge.MergeAptConfig(Eryph.GuestServices.CloudConfig.Linux.AptConfig,Eryph.GuestServices.CloudConfig.Linux.AptConfig)">
            <summary>Source-generated deep merge for <see cref="T:Eryph.GuestServices.CloudConfig.Linux.AptConfig"/>.</summary>
        </member>
        <member name="M:Eryph.GuestServices.CloudConfig.CloudConfigMerge.MergeAptMirrorEntry(Eryph.GuestServices.CloudConfig.Linux.AptMirrorEntry,Eryph.GuestServices.CloudConfig.Linux.AptMirrorEntry)">
            <summary>Source-generated deep merge for <see cref="T:Eryph.GuestServices.CloudConfig.Linux.AptMirrorEntry"/>.</summary>
        </member>
        <member name="M:Eryph.GuestServices.CloudConfig.CloudConfigMerge.MergeAptSourceEntry(Eryph.GuestServices.CloudConfig.Linux.AptSourceEntry,Eryph.GuestServices.CloudConfig.Linux.AptSourceEntry)">
            <summary>Source-generated deep merge for <see cref="T:Eryph.GuestServices.CloudConfig.Linux.AptSourceEntry"/>.</summary>
        </member>
        <member name="M:Eryph.GuestServices.CloudConfig.CloudConfigMerge.MergeCaCertsConfig(Eryph.GuestServices.CloudConfig.Linux.CaCertsConfig,Eryph.GuestServices.CloudConfig.Linux.CaCertsConfig)">
            <summary>Source-generated deep merge for <see cref="T:Eryph.GuestServices.CloudConfig.Linux.CaCertsConfig"/>.</summary>
        </member>
        <member name="M:Eryph.GuestServices.CloudConfig.CloudConfigMerge.MergeChefConfig(Eryph.GuestServices.CloudConfig.Linux.ChefConfig,Eryph.GuestServices.CloudConfig.Linux.ChefConfig)">
            <summary>Source-generated deep merge for <see cref="T:Eryph.GuestServices.CloudConfig.Linux.ChefConfig"/>.</summary>
        </member>
        <member name="M:Eryph.GuestServices.CloudConfig.CloudConfigMerge.MergeDiskSetupEntry(Eryph.GuestServices.CloudConfig.Linux.DiskSetupEntry,Eryph.GuestServices.CloudConfig.Linux.DiskSetupEntry)">
            <summary>Source-generated deep merge for <see cref="T:Eryph.GuestServices.CloudConfig.Linux.DiskSetupEntry"/>.</summary>
        </member>
        <member name="M:Eryph.GuestServices.CloudConfig.CloudConfigMerge.MergeFsSetupEntry(Eryph.GuestServices.CloudConfig.Linux.FsSetupEntry,Eryph.GuestServices.CloudConfig.Linux.FsSetupEntry)">
            <summary>Source-generated deep merge for <see cref="T:Eryph.GuestServices.CloudConfig.Linux.FsSetupEntry"/>.</summary>
        </member>
        <member name="M:Eryph.GuestServices.CloudConfig.CloudConfigMerge.MergePhoneHomeConfig(Eryph.GuestServices.CloudConfig.Linux.PhoneHomeConfig,Eryph.GuestServices.CloudConfig.Linux.PhoneHomeConfig)">
            <summary>Source-generated deep merge for <see cref="T:Eryph.GuestServices.CloudConfig.Linux.PhoneHomeConfig"/>.</summary>
        </member>
        <member name="M:Eryph.GuestServices.CloudConfig.CloudConfigMerge.MergePuppetConfig(Eryph.GuestServices.CloudConfig.Linux.PuppetConfig,Eryph.GuestServices.CloudConfig.Linux.PuppetConfig)">
            <summary>Source-generated deep merge for <see cref="T:Eryph.GuestServices.CloudConfig.Linux.PuppetConfig"/>.</summary>
        </member>
        <member name="M:Eryph.GuestServices.CloudConfig.CloudConfigMerge.MergeRandomSeedConfig(Eryph.GuestServices.CloudConfig.Linux.RandomSeedConfig,Eryph.GuestServices.CloudConfig.Linux.RandomSeedConfig)">
            <summary>Source-generated deep merge for <see cref="T:Eryph.GuestServices.CloudConfig.Linux.RandomSeedConfig"/>.</summary>
        </member>
        <member name="M:Eryph.GuestServices.CloudConfig.CloudConfigMerge.MergeReportingHandlerConfig(Eryph.GuestServices.CloudConfig.Linux.ReportingHandlerConfig,Eryph.GuestServices.CloudConfig.Linux.ReportingHandlerConfig)">
            <summary>Source-generated deep merge for <see cref="T:Eryph.GuestServices.CloudConfig.Linux.ReportingHandlerConfig"/>.</summary>
        </member>
        <member name="M:Eryph.GuestServices.CloudConfig.CloudConfigMerge.MergeResolvConfConfig(Eryph.GuestServices.CloudConfig.Linux.ResolvConfConfig,Eryph.GuestServices.CloudConfig.Linux.ResolvConfConfig)">
            <summary>Source-generated deep merge for <see cref="T:Eryph.GuestServices.CloudConfig.Linux.ResolvConfConfig"/>.</summary>
        </member>
        <member name="M:Eryph.GuestServices.CloudConfig.CloudConfigMerge.MergeSaltMinionConfig(Eryph.GuestServices.CloudConfig.Linux.SaltMinionConfig,Eryph.GuestServices.CloudConfig.Linux.SaltMinionConfig)">
            <summary>Source-generated deep merge for <see cref="T:Eryph.GuestServices.CloudConfig.Linux.SaltMinionConfig"/>.</summary>
        </member>
        <member name="M:Eryph.GuestServices.CloudConfig.CloudConfigMerge.MergeSnapConfig(Eryph.GuestServices.CloudConfig.Linux.SnapConfig,Eryph.GuestServices.CloudConfig.Linux.SnapConfig)">
            <summary>Source-generated deep merge for <see cref="T:Eryph.GuestServices.CloudConfig.Linux.SnapConfig"/>.</summary>
        </member>
        <member name="M:Eryph.GuestServices.CloudConfig.CloudConfigMerge.MergeSshPublishHostKeysConfig(Eryph.GuestServices.CloudConfig.Linux.SshPublishHostKeysConfig,Eryph.GuestServices.CloudConfig.Linux.SshPublishHostKeysConfig)">
            <summary>Source-generated deep merge for <see cref="T:Eryph.GuestServices.CloudConfig.Linux.SshPublishHostKeysConfig"/>.</summary>
        </member>
        <member name="M:Eryph.GuestServices.CloudConfig.CloudConfigMerge.MergeSwapConfig(Eryph.GuestServices.CloudConfig.Linux.SwapConfig,Eryph.GuestServices.CloudConfig.Linux.SwapConfig)">
            <summary>Source-generated deep merge for <see cref="T:Eryph.GuestServices.CloudConfig.Linux.SwapConfig"/>.</summary>
        </member>
        <member name="M:Eryph.GuestServices.CloudConfig.CloudConfigMerge.MergeYumRepoConfig(Eryph.GuestServices.CloudConfig.Linux.YumRepoConfig,Eryph.GuestServices.CloudConfig.Linux.YumRepoConfig)">
            <summary>Source-generated deep merge for <see cref="T:Eryph.GuestServices.CloudConfig.Linux.YumRepoConfig"/>.</summary>
        </member>
        <member name="M:Eryph.GuestServices.CloudConfig.CloudConfigMerge.MergeNtpConfig(Eryph.GuestServices.CloudConfig.NtpConfig,Eryph.GuestServices.CloudConfig.NtpConfig)">
            <summary>Source-generated deep merge for <see cref="T:Eryph.GuestServices.CloudConfig.NtpConfig"/>.</summary>
        </member>
        <member name="M:Eryph.GuestServices.CloudConfig.CloudConfigMerge.MergePowerStateConfig(Eryph.GuestServices.CloudConfig.PowerStateConfig,Eryph.GuestServices.CloudConfig.PowerStateConfig)">
            <summary>Source-generated deep merge for <see cref="T:Eryph.GuestServices.CloudConfig.PowerStateConfig"/>.</summary>
        </member>
        <member name="M:Eryph.GuestServices.CloudConfig.CloudConfigMerge.MergeRuncmdEntry(Eryph.GuestServices.CloudConfig.RuncmdEntry,Eryph.GuestServices.CloudConfig.RuncmdEntry)">
            <summary>Source-generated deep merge for <see cref="T:Eryph.GuestServices.CloudConfig.RuncmdEntry"/>.</summary>
        </member>
        <member name="M:Eryph.GuestServices.CloudConfig.CloudConfigMerge.MergeSshConfig(Eryph.GuestServices.CloudConfig.SshConfig,Eryph.GuestServices.CloudConfig.SshConfig)">
            <summary>Source-generated deep merge for <see cref="T:Eryph.GuestServices.CloudConfig.SshConfig"/>.</summary>
        </member>
        <member name="M:Eryph.GuestServices.CloudConfig.CloudConfigMerge.MergeUserConfig(Eryph.GuestServices.CloudConfig.UserConfig,Eryph.GuestServices.CloudConfig.UserConfig)">
            <summary>Source-generated deep merge for <see cref="T:Eryph.GuestServices.CloudConfig.UserConfig"/>.</summary>
        </member>
        <member name="M:Eryph.GuestServices.CloudConfig.CloudConfigMerge.MergeWriteFileConfig(Eryph.GuestServices.CloudConfig.WriteFileConfig,Eryph.GuestServices.CloudConfig.WriteFileConfig)">
            <summary>Source-generated deep merge for <see cref="T:Eryph.GuestServices.CloudConfig.WriteFileConfig"/>.</summary>
        </member>
        <member name="P:Eryph.GuestServices.CloudConfig.ChpasswdConfig.List">
            <summary>
            Legacy newline-separated <c>user:password</c> list form. Cloud-init
            still supports it as of 24.x even though the per-user <c>users</c>
            form is preferred — keep accepting it so cross-cloud cloud-config
            authored against older docs round-trips cleanly.
            </summary>
        </member>
        <member name="P:Eryph.GuestServices.CloudConfig.ChpasswdListEntry.Password">
            <summary>
            Password value. Cloud-init's list-form treats the literal tokens
            <c>R</c> or <c>RANDOM</c> as the random-generation token; Phase 3
            wires the runtime semantics. <see cref="P:Eryph.GuestServices.CloudConfig.ChpasswdListEntry.Type"/> disambiguates plain
            text from a pre-hashed value.
            </summary>
        </member>
        <member name="P:Eryph.GuestServices.CloudConfig.ChpasswdListEntry.Type">
            <summary>
            Password type: <c>RANDOM</c> | <c>hash</c> | <c>text</c>. Cloud-init's
            chpasswd schema uses this to disambiguate how <see cref="P:Eryph.GuestServices.CloudConfig.ChpasswdListEntry.Password"/>
            should be applied.
            </summary>
        </member>
        <member name="P:Eryph.GuestServices.CloudConfig.CloudConfig.PreferFqdnOverHostname">
            <summary>
            Cloud-init <c>prefer_fqdn_over_hostname</c>. When true, hostname-
            applying modules use the FQDN form. Cross-platform: the runtime
            SetHostnameModule wires this up in Phase 3.
            </summary>
        </member>
        <member name="P:Eryph.GuestServices.CloudConfig.CloudConfig.SshPwauth">
            <summary>
            Cloud-init <c>ssh_pwauth</c>. Toggles OpenSSH
            <c>PasswordAuthentication</c>. On Windows the SshModule writes this to
            the drop-in <c>sshd_config.d\50-eryph.conf</c>. cloud-init's three-state
            (true / false / <c>"unchanged"</c>) is honoured: omit / "unchanged"
            leaves the directive alone.
            </summary>
        </member>
        <member name="P:Eryph.GuestServices.CloudConfig.CloudConfig.Ssh">
            <summary>
            Cloud-init <c>ssh:</c> block. Carries <c>emit_keys_to_console</c> plus
            the eryph <c>install_openssh</c> extension — see <see cref="T:Eryph.GuestServices.CloudConfig.SshConfig"/>
            and RFC 0018.
            </summary>
        </member>
        <member name="P:Eryph.GuestServices.CloudConfig.CloudConfig.License">
            <summary>
            Windows licensing / activation directives (AVMA, KMS, product key,
            rearm). Windows-only — there is no Linux equivalent. Surfaces under
            <c>egs-tool validate --target linux</c> as a portability warning.
            </summary>
        </member>
        <member name="P:Eryph.GuestServices.CloudConfig.CloudConfig.Apt">
            <summary>Linux APT package source configuration. Accepted; no-op on Windows.</summary>
        </member>
        <member name="P:Eryph.GuestServices.CloudConfig.CloudConfig.AptPipelining">
            <summary>
            Linux APT pipelining flag. Cloud-init's schema accepts a 3-way union
            of <c>bool</c>, the string <c>"none"</c>, and a positive integer —
            carved out from the <see cref="T:Eryph.GuestServices.CloudConfig.BoolOrString"/> migration (which
            covers documented bool|string unions only). Stays <c>object?</c>;
            the field is no-op on Windows so the runtime-type drift has no
            operator-visible effect today. If a future module needs to act on
            it, introduce a dedicated BoolOrIntOrString primitive.
            </summary>
        </member>
        <member name="P:Eryph.GuestServices.CloudConfig.CloudConfig.Packages">
            <summary>Linux package list. Future: may map to chocolatey / winget. Accepted; no-op today.</summary>
        </member>
        <member name="P:Eryph.GuestServices.CloudConfig.CloudConfig.Snap">
            <summary>Linux Snap configuration. Accepted; no-op on Windows.</summary>
        </member>
        <member name="P:Eryph.GuestServices.CloudConfig.CloudConfig.YumRepos">
            <summary>Linux YUM repos keyed by .repo file name. Accepted; no-op on Windows.</summary>
        </member>
        <member name="P:Eryph.GuestServices.CloudConfig.CloudConfig.DiskSetup">
            <summary>Linux disk/partition setup directives keyed by device path. Accepted; we have <c>growpart</c> for our use case.</summary>
        </member>
        <member name="P:Eryph.GuestServices.CloudConfig.CloudConfig.FsSetup">
            <summary>Linux filesystem setup directives. Accepted; no-op on Windows.</summary>
        </member>
        <member name="P:Eryph.GuestServices.CloudConfig.CloudConfig.Mounts">
            <summary>
            Linux mount points — list of 6-element fstab-shaped lists
            <c>[device, mountpoint, fstype, opts, freq, passno]</c>. Accepted;
            no-op on Windows.
            </summary>
        </member>
        <member name="P:Eryph.GuestServices.CloudConfig.CloudConfig.MountDefaultFields">
            <summary>
            Linux <c>mount_default_fields</c> — six-element default list used to
            fill omitted fstab columns. Accepted; no-op on Windows.
            </summary>
        </member>
        <member name="P:Eryph.GuestServices.CloudConfig.CloudConfig.Swap">
            <summary>
            Cloud-init swap-file block. Accepted; no-op on Windows where the
            page file is OS-managed.
            </summary>
        </member>
        <member name="P:Eryph.GuestServices.CloudConfig.CloudConfig.ManageEtcHosts">
            <summary>
            Cloud-init <c>manage_etc_hosts</c> — <c>bool</c> (true/false) or
            one of the string literals <c>"localhost"</c> / <c>"template"</c>.
            Accepted; no-op on Windows (Windows manages hosts differently).
            Modeled as <see cref="T:Eryph.GuestServices.CloudConfig.BoolOrString"/> so the operator's quoting
            intent decides — a plain YAML 1.1 bool token resolves to bool,
            a quoted bool token or the documented string enums stay as string.
            </summary>
        </member>
        <member name="P:Eryph.GuestServices.CloudConfig.CloudConfig.ResolvConf">
            <summary>Linux /etc/resolv.conf contents. Accepted; ApplyNetworkConfig handles DNS on Windows.</summary>
        </member>
        <member name="P:Eryph.GuestServices.CloudConfig.CloudConfig.Bootcmd">
            <summary>
            Runs on every boot, very early. Cloud-init has <c>bootcmd</c>; we
            don't yet — accepted as no-op. Same shape as <see cref="P:Eryph.GuestServices.CloudConfig.CloudConfig.Runcmd"/>:
            shell-string or argv-list per entry.
            </summary>
        </member>
        <member name="P:Eryph.GuestServices.CloudConfig.CloudConfig.PowerState">
            <summary>
            Cloud-init compatible end-of-provisioning reboot/poweroff directive.
            Handled by <c>PowerStateModule</c> (cf. RFC 0024). NOT an
            acknowledged-but-no-op key — actual semantics apply.
            </summary>
        </member>
        <member name="P:Eryph.GuestServices.CloudConfig.CloudConfig.PhoneHome">
            <summary>POST instance metadata to a URL at end of provisioning. Not yet implemented.</summary>
        </member>
        <member name="P:Eryph.GuestServices.CloudConfig.CloudConfig.FinalMessage">
            <summary>Custom message printed at end of provisioning. Not yet implemented.</summary>
        </member>
        <member name="P:Eryph.GuestServices.CloudConfig.CloudConfig.CaCerts">
            <summary>CA certificate installation directives. Not yet implemented (Windows cert store is different from Linux).</summary>
        </member>
        <member name="P:Eryph.GuestServices.CloudConfig.CloudConfig.DisableRoot">
            <summary>
            Cloud-init <c>disable_root</c>. On Windows the SshModule resolves the
            built-in Administrator account (RID 500, by well-known SID so it
            survives a rename) and writes a <c>DenyUsers &lt;name&gt;</c> directive
            to the sshd drop-in — the Windows analogue of cloud-init's
            <c>PermitRootLogin no</c>. This is the OS-level Administrator, separate
            from the configurable provisioning default user.
            </summary>
        </member>
        <member name="P:Eryph.GuestServices.CloudConfig.CloudConfig.Chef">
            <summary>Chef bootstrap configuration. Future module. Accepted; no-op today.</summary>
        </member>
        <member name="P:Eryph.GuestServices.CloudConfig.CloudConfig.Ansible">
            <summary>Ansible pull / push configuration. Future module. Accepted; no-op today.</summary>
        </member>
        <member name="P:Eryph.GuestServices.CloudConfig.CloudConfig.Puppet">
            <summary>Puppet agent configuration. Future module. Accepted; no-op today.</summary>
        </member>
        <member name="P:Eryph.GuestServices.CloudConfig.CloudConfig.SaltMinion">
            <summary>Salt minion configuration. Future module. Accepted; no-op today.</summary>
        </member>
        <member name="P:Eryph.GuestServices.CloudConfig.CloudConfig.DisableEc2Metadata">
            <summary>When true, cloud-init disables EC2 metadata polling.</summary>
        </member>
        <member name="P:Eryph.GuestServices.CloudConfig.CloudConfig.Migrate">
            <summary>
            When false, cloud-init does not migrate cached state across boots
            (used after first-boot AMI snapshots).
            </summary>
        </member>
        <member name="P:Eryph.GuestServices.CloudConfig.CloudConfig.SshDeleteKeys">
            <summary>
            Cloud-init <c>ssh_deletekeys</c>. When true the existing host keys are
            deleted before fresh ones are generated — the "stripped image, fresh
            identity per instance" path. On Windows the SshModule deletes
            <c>C:\ProgramData\ssh\ssh_host_*_key{,.pub}</c> before regeneration.
            YAML key is the literal <c>ssh_deletekeys</c> — one concatenated word
            per cloud-init's documented schema, not the snake-cased
            <c>ssh_delete_keys</c> the naming convention would produce.
            </summary>
        </member>
        <member name="P:Eryph.GuestServices.CloudConfig.CloudConfig.SshGenKeyTypes">
            <summary>
            Cloud-init <c>ssh_genkeytypes</c>: host-key types to generate. On
            Windows the SshModule validates against <c>{ed25519, ecdsa, rsa}</c>
            (DSA was removed in OpenSSH 9.8 and is rejected); the default set is
            <c>[ed25519, ecdsa, rsa]</c> with an RSA-3072 floor.
            </summary>
        </member>
        <member name="P:Eryph.GuestServices.CloudConfig.CloudConfig.SshImportId">
            <summary>
            Launchpad / GitHub <c>ssh-import-id</c> sources. Still Linux-only — there
            is no Windows fetch path yet (the import would require contacting
            Launchpad / GitHub at provisioning time). Accepted; no-op on Windows.
            </summary>
        </member>
        <member name="P:Eryph.GuestServices.CloudConfig.CloudConfig.SshKeys">
            <summary>
            Cloud-init <c>ssh_keys</c>: operator-supplied host keys keyed by
            <c>&lt;type&gt;_{private,public}</c> (e.g. <c>rsa_private</c>,
            <c>ed25519_public</c>). On Windows the SshModule writes each supplied
            keypair to <c>C:\ProgramData\ssh\ssh_host_&lt;type&gt;_key{,.pub}</c>
            and ACL-hardens it; supplying keys takes precedence over generation.
            </summary>
        </member>
        <member name="P:Eryph.GuestServices.CloudConfig.CloudConfig.SshPublishHostKeys">
            <summary>
            Cloud-init <c>ssh_publish_hostkeys</c>: publish per-instance host keys
            to the platform metadata service. On Windows the fingerprints are
            surfaced via the <c>SshHostKeysReported</c> reporting event (the
            host-side KVP / console channel) rather than a cloud metadata POST.
            </summary>
        </member>
        <member name="P:Eryph.GuestServices.CloudConfig.CloudConfig.ByobuByDefault">
            <summary>byobu auto-launch toggle (Ubuntu only).</summary>
        </member>
        <member name="P:Eryph.GuestServices.CloudConfig.CloudConfig.ResizeRootfs">
            <summary>
            Cloud-init <c>resize_rootfs</c> — <c>bool</c> (true/false) or the
            string literal <c>"noblock"</c>. Modeled as <see cref="T:Eryph.GuestServices.CloudConfig.BoolOrString"/>
            so a plain YAML 1.1 bool token resolves to bool while the documented
            string enum and quoted bool tokens stay as string. Linux-only at
            runtime; no-op on Windows.
            </summary>
        </member>
        <member name="P:Eryph.GuestServices.CloudConfig.CloudConfig.LocaleConfigFile">
            <summary>Path of the locale config file (e.g. <c>/etc/default/locale</c>).</summary>
        </member>
        <member name="P:Eryph.GuestServices.CloudConfig.CloudConfig.RandomSeed">
            <summary>Seed the kernel RNG from cloud-config.</summary>
        </member>
        <member name="P:Eryph.GuestServices.CloudConfig.CloudConfig.Output">
            <summary>
            Cloud-init stdout/stderr redirection configuration. Opaque pass-
            through — cloud-init's schema for this key is intricate (per-stage
            redirection with shell-pipe targets) and Windows-irrelevant.
            </summary>
        </member>
        <member name="P:Eryph.GuestServices.CloudConfig.CloudConfig.Reporting">
            <summary>Cloud-init reporting handlers (webhook / log / hyperv).</summary>
        </member>
        <member name="P:Eryph.GuestServices.CloudConfig.CloudConfig.UpdateEtcHosts">
            <summary>When true, cloud-init updates /etc/hosts with the current hostname.</summary>
        </member>
        <member name="P:Eryph.GuestServices.CloudConfig.CloudConfig.UpdateHostname">
            <summary>When true, cloud-init refreshes the running hostname on every boot.</summary>
        </member>
        <member name="P:Eryph.GuestServices.CloudConfig.GroupConfig.Gid">
            <summary>
            Numeric group ID. Cloud-init's groups schema accepts either
            <c>name: [members]</c> or <c>name: {members: [...], gid: int}</c> —
            the latter form lets the operator pin the gid. Linux-only — Windows
            local groups do not have a portable numeric identifier.
            </summary>
        </member>
        <member name="T:Eryph.GuestServices.CloudConfig.GrowpartConfig">
            <summary>
            Cloud-init compatible <c>growpart</c> directive. Mirrors cloud-init's
            schema (<c>mode</c>, <c>devices</c>) but is interpreted in Windows terms
            by the provisioning agent — see <c>GrowpartModule</c>.
            </summary>
        </member>
        <member name="P:Eryph.GuestServices.CloudConfig.GrowpartConfig.Mode">
            <summary>
            <c>auto</c> (default) extends every targeted volume that has free
            space behind it. <c>off</c> (or <c>false</c>) disables the module.
            </summary>
        </member>
        <member name="P:Eryph.GuestServices.CloudConfig.GrowpartConfig.Devices">
            <summary>
            Devices to target. Defaults to <c>['/']</c> (cloud-init parity) which
            resolves to the Windows system drive. Each entry is one of:
            <list type="bullet">
              <item><c>/</c> — the system drive (<c>%SystemDrive%</c>).</item>
              <item>A drive letter — <c>C</c>, <c>"C:"</c>, or <c>"D:\"</c>.
              When the colon is present the value MUST be quoted in YAML, otherwise
              <c>- C:</c> is parsed as an empty mapping, not the string <c>"C:"</c>.</item>
              <item><c>all</c> — every volume that can grow.</item>
            </list>
            </summary>
        </member>
        <member name="T:Eryph.GuestServices.CloudConfig.KeyboardConfig">
            <summary>
            Cloud-init compatible <c>keyboard</c> directive. <see cref="P:Eryph.GuestServices.CloudConfig.KeyboardConfig.Layout"/> is
            cross-platform — Linux consumes the X11 layout name; Windows accepts a
            BCP-47 tag or a <c>language:klid</c> KLID. The X11-only fields
            (<see cref="P:Eryph.GuestServices.CloudConfig.KeyboardConfig.Model"/>, <see cref="P:Eryph.GuestServices.CloudConfig.KeyboardConfig.Variant"/>, <see cref="P:Eryph.GuestServices.CloudConfig.KeyboardConfig.Options"/>) round-
            trip on Windows so cross-cloud cloud-config is preserved, but only Linux
            applies them.
            </summary>
        </member>
        <member name="P:Eryph.GuestServices.CloudConfig.KeyboardConfig.Layout">
            <summary>
            Keyboard layout. Accepts a BCP-47 language tag (e.g. <c>en-US</c>,
            <c>de-DE</c>) or a Windows KLID in the <c>language:klid</c> form
            (e.g. <c>0409:00000409</c>). When only a language tag is supplied
            the default keyboard layout for that language is used.
            </summary>
        </member>
        <member name="P:Eryph.GuestServices.CloudConfig.KeyboardConfig.Model">
            <summary>
            X11 keyboard model. Linux-only — Windows tzutil-style locale mapping
            does not use X11 model strings.
            </summary>
        </member>
        <member name="P:Eryph.GuestServices.CloudConfig.KeyboardConfig.Variant">
            <summary>
            X11 keyboard variant. Linux-only.
            </summary>
        </member>
        <member name="P:Eryph.GuestServices.CloudConfig.KeyboardConfig.Options">
            <summary>
            X11 keyboard options. Linux-only.
            </summary>
        </member>
        <member name="T:Eryph.GuestServices.CloudConfig.LicenseConfig">
            <summary>
            Windows licensing directive. There is no cloud-init module for this —
            it is Windows-specific (cloudbase-init's <c>WindowsLicensingPlugin</c>).
            The module surface is intentionally minimal: a product key, an optional
            KMS host, and an "activate now" toggle. Heavier flows (AVMA detection,
            automatic KMS key lookup per OS edition) belong in fodder/scripts.
            </summary>
        </member>
        <member name="P:Eryph.GuestServices.CloudConfig.LicenseConfig.ProductKey">
            <summary>
            Product key in the canonical <c>XXXXX-XXXXX-XXXXX-XXXXX-XXXXX</c>
            form. Applied via <c>slmgr.vbs /ipk</c>.
            </summary>
        </member>
        <member name="P:Eryph.GuestServices.CloudConfig.LicenseConfig.KmsHost">
            <summary>
            KMS host as <c>hostname</c> or <c>hostname:port</c>. Applied via
            <c>slmgr.vbs /skms</c>.
            </summary>
        </member>
        <member name="P:Eryph.GuestServices.CloudConfig.LicenseConfig.Activate">
            <summary>
            When true, run <c>slmgr.vbs /ato</c> after applying the key / KMS
            host. Off by default — KMS clients normally activate themselves on
            first network connectivity.
            </summary>
        </member>
        <member name="P:Eryph.GuestServices.CloudConfig.LicenseConfig.SetAvma">
            <summary>
            When true, the agent looks up the AVMA key for the guest's OS
            edition (Server 2012R2+) and installs it. Mirrors cloudbase-init's
            <c>set_avma_product_key</c>. Ignored if <see cref="P:Eryph.GuestServices.CloudConfig.LicenseConfig.ProductKey"/> is
            set — an explicit key always wins.
            </summary>
        </member>
        <member name="P:Eryph.GuestServices.CloudConfig.LicenseConfig.SetKms">
            <summary>
            When true, the agent looks up the generic KMS-client key for the
            guest's edition and installs it. Mirrors cloudbase-init's
            <c>set_kms_product_key</c>. <see cref="P:Eryph.GuestServices.CloudConfig.LicenseConfig.SetAvma"/> takes precedence
            when both are set. Ignored if <see cref="P:Eryph.GuestServices.CloudConfig.LicenseConfig.ProductKey"/> is set.
            </summary>
        </member>
        <member name="P:Eryph.GuestServices.CloudConfig.LicenseConfig.Rearm">
            <summary>
            When true, runs <c>slmgr.vbs /rearm</c> to extend an evaluation
            period. Rearm requires reboot to take effect; the module surfaces
            that as a RebootRequested outcome.
            </summary>
        </member>
        <member name="P:Eryph.GuestServices.CloudConfig.LicenseConfig.Force">
            <summary>
            By default the module skips itself when the active datasource is
            Azure — Windows on Azure activates automatically against
            <c>kms.core.windows.net</c> and our slmgr calls would only add
            noise. Set this to true to force the licensing module to run even
            on Azure (e.g. when applying a non-Azure KMS host).
            </summary>
        </member>
        <member name="T:Eryph.GuestServices.CloudConfig.Linux.AnsibleConfig">
            <summary>
            Cloud-init <c>cc_ansible</c> bootstrap configuration. Linux-only;
            no-op on Windows today.
            </summary>
        </member>
        <member name="P:Eryph.GuestServices.CloudConfig.Linux.AnsibleConfig.PackageName">
            <summary>Distro package name (defaults to <c>ansible</c>).</summary>
        </member>
        <member name="P:Eryph.GuestServices.CloudConfig.Linux.AnsibleConfig.InstallMethod">
            <summary>Install method — <c>distro</c> or <c>pip</c>.</summary>
        </member>
        <member name="P:Eryph.GuestServices.CloudConfig.Linux.AnsibleConfig.AnsibleConfigPath">
            <summary>
            Path to a custom <c>ansible.cfg</c>. The C# property is renamed
            because the YAML key (<c>ansible_config</c>) maps to a name that
            would clash with the enclosing record type. The YAML alias is wired
            externally via <c>WithAttributeOverride</c> so the model stays
            YamlDotNet-free.
            </summary>
        </member>
        <member name="P:Eryph.GuestServices.CloudConfig.Linux.AnsibleConfig.RunUser">
            <summary>Unix user account ansible runs as.</summary>
        </member>
        <member name="P:Eryph.GuestServices.CloudConfig.Linux.AnsibleConfig.SetupController">
            <summary>Optional controller-mode setup (repos / playbook orchestration).</summary>
        </member>
        <member name="P:Eryph.GuestServices.CloudConfig.Linux.AnsibleConfig.Galaxy">
            <summary>Optional <c>ansible-galaxy</c> orchestration.</summary>
        </member>
        <member name="P:Eryph.GuestServices.CloudConfig.Linux.AnsibleConfig.Pull">
            <summary>Optional <c>ansible-pull</c> orchestration.</summary>
        </member>
        <member name="T:Eryph.GuestServices.CloudConfig.Linux.AnsibleSetupController">
            <summary>
            Cloud-init <c>cc_ansible</c> controller-mode block. Linux-only.
            </summary>
        </member>
        <member name="P:Eryph.GuestServices.CloudConfig.Linux.AnsibleSetupController.Repositories">
            <summary>Git repositories to clone for controller orchestration. Opaque entries.</summary>
        </member>
        <member name="P:Eryph.GuestServices.CloudConfig.Linux.AnsibleSetupController.RunAnsible">
            <summary>Playbooks / commands the controller runs after setup. Opaque entries.</summary>
        </member>
        <member name="T:Eryph.GuestServices.CloudConfig.Linux.AnsibleGalaxy">
            <summary>
            Cloud-init <c>cc_ansible</c> <c>galaxy</c> orchestration block.
            </summary>
        </member>
        <member name="P:Eryph.GuestServices.CloudConfig.Linux.AnsibleGalaxy.Actions">
            <summary>
            Galaxy CLI invocations. Each entry is an argv-style command line
            passed to <c>ansible-galaxy</c>.
            </summary>
        </member>
        <member name="T:Eryph.GuestServices.CloudConfig.Linux.AnsiblePull">
            <summary>
            Cloud-init <c>cc_ansible</c> <c>pull</c> orchestration block.
            </summary>
        </member>
        <member name="P:Eryph.GuestServices.CloudConfig.Linux.AnsiblePull.Url">
            <summary>Git repo URL the playbook lives in.</summary>
        </member>
        <member name="P:Eryph.GuestServices.CloudConfig.Linux.AnsiblePull.PlaybookName">
            <summary>Playbook filename within the repo.</summary>
        </member>
        <member name="P:Eryph.GuestServices.CloudConfig.Linux.AnsiblePull.AcceptHostKey">
            <summary>When true, ssh host keys are auto-accepted on first connection.</summary>
        </member>
        <member name="P:Eryph.GuestServices.CloudConfig.Linux.AnsiblePull.Clean">
            <summary>When true, the local checkout is wiped before pulling.</summary>
        </member>
        <member name="P:Eryph.GuestServices.CloudConfig.Linux.AnsiblePull.Full">
            <summary>When true, ansible-pull is invoked with the <c>--full</c> flag.</summary>
        </member>
        <member name="P:Eryph.GuestServices.CloudConfig.Linux.AnsiblePull.ModulePath">
            <summary>Extra module search path.</summary>
        </member>
        <member name="P:Eryph.GuestServices.CloudConfig.Linux.AnsiblePull.PrivateKey">
            <summary>SSH private-key path for the git checkout.</summary>
        </member>
        <member name="P:Eryph.GuestServices.CloudConfig.Linux.AnsiblePull.Purge">
            <summary>When true, ansible-pull wipes intermediate state.</summary>
        </member>
        <member name="P:Eryph.GuestServices.CloudConfig.Linux.AnsiblePull.Sleep">
            <summary>Random pre-run sleep window (e.g. <c>"3600"</c>).</summary>
        </member>
        <member name="P:Eryph.GuestServices.CloudConfig.Linux.AnsiblePull.Tags">
            <summary>Tag filter passed to ansible-pull.</summary>
        </member>
        <member name="P:Eryph.GuestServices.CloudConfig.Linux.AnsiblePull.TrackSubs">
            <summary>When set, ansible-pull tracks subscriptions on this branch.</summary>
        </member>
        <member name="P:Eryph.GuestServices.CloudConfig.Linux.AnsiblePull.Checkout">
            <summary>Specific commit / branch to check out.</summary>
        </member>
        <member name="T:Eryph.GuestServices.CloudConfig.Linux.AptConfig">
            <summary>
            Cloud-init <c>cc_apt_configure</c> top-level <c>apt:</c> block. Mirrors
            the documented schema; Linux-only configuration, no-op on Windows.
            </summary>
        </member>
        <member name="P:Eryph.GuestServices.CloudConfig.Linux.AptConfig.PreserveSourcesList">
            <summary>When true, cloud-init preserves the existing /etc/apt/sources.list verbatim.</summary>
        </member>
        <member name="P:Eryph.GuestServices.CloudConfig.Linux.AptConfig.DisableSuites">
            <summary>Suites masked out of generated apt sources (e.g. <c>$RELEASE-security</c>).</summary>
        </member>
        <member name="P:Eryph.GuestServices.CloudConfig.Linux.AptConfig.Primary">
            <summary>Primary mirror entries; selects the URI in /etc/apt/sources.list per arch.</summary>
        </member>
        <member name="P:Eryph.GuestServices.CloudConfig.Linux.AptConfig.Security">
            <summary>Security mirror entries (Ubuntu-specific).</summary>
        </member>
        <member name="P:Eryph.GuestServices.CloudConfig.Linux.AptConfig.SourcesList">
            <summary>Verbatim /etc/apt/sources.list contents.</summary>
        </member>
        <member name="P:Eryph.GuestServices.CloudConfig.Linux.AptConfig.Conf">
            <summary>Verbatim /etc/apt/apt.conf.d/ snippet.</summary>
        </member>
        <member name="P:Eryph.GuestServices.CloudConfig.Linux.AptConfig.HttpProxy">
            <summary>HTTP proxy URL for apt.</summary>
        </member>
        <member name="P:Eryph.GuestServices.CloudConfig.Linux.AptConfig.HttpsProxy">
            <summary>HTTPS proxy URL for apt.</summary>
        </member>
        <member name="P:Eryph.GuestServices.CloudConfig.Linux.AptConfig.FtpProxy">
            <summary>FTP proxy URL for apt.</summary>
        </member>
        <member name="P:Eryph.GuestServices.CloudConfig.Linux.AptConfig.Proxy">
            <summary>Shorthand applied to all three protocols when the per-protocol forms are omitted.</summary>
        </member>
        <member name="P:Eryph.GuestServices.CloudConfig.Linux.AptConfig.AddAptRepoMatch">
            <summary>Regex used by cloud-init to decide whether a string is an apt repo line.</summary>
        </member>
        <member name="P:Eryph.GuestServices.CloudConfig.Linux.AptConfig.Sources">
            <summary>Named source entries dropped under /etc/apt/sources.list.d/.</summary>
        </member>
        <member name="T:Eryph.GuestServices.CloudConfig.Linux.AptMirrorEntry">
            <summary>
            Cloud-init <c>cc_apt_configure</c> primary/security mirror entry. One
            entry per arch-tagged mirror. Linux-only configuration; no-op on Windows.
            </summary>
        </member>
        <member name="P:Eryph.GuestServices.CloudConfig.Linux.AptMirrorEntry.Arches">
            <summary>Architectures the entry applies to (e.g. <c>amd64</c>, <c>arm64</c>, or <c>default</c>).</summary>
        </member>
        <member name="P:Eryph.GuestServices.CloudConfig.Linux.AptMirrorEntry.Uri">
            <summary>Explicit mirror URI; mutually exclusive with <see cref="P:Eryph.GuestServices.CloudConfig.Linux.AptMirrorEntry.Search"/>/<see cref="P:Eryph.GuestServices.CloudConfig.Linux.AptMirrorEntry.SearchDns"/>.</summary>
        </member>
        <member name="P:Eryph.GuestServices.CloudConfig.Linux.AptMirrorEntry.Search">
            <summary>Ordered candidate mirror URIs cloud-init probes for reachability.</summary>
        </member>
        <member name="P:Eryph.GuestServices.CloudConfig.Linux.AptMirrorEntry.SearchDns">
            <summary>When true, cloud-init derives candidate mirrors from DNS.</summary>
        </member>
        <member name="P:Eryph.GuestServices.CloudConfig.Linux.AptMirrorEntry.Keyid">
            <summary>GPG key id imported into apt's trust store for this mirror.</summary>
        </member>
        <member name="P:Eryph.GuestServices.CloudConfig.Linux.AptMirrorEntry.Key">
            <summary>Inline GPG key block imported into apt's trust store.</summary>
        </member>
        <member name="P:Eryph.GuestServices.CloudConfig.Linux.AptMirrorEntry.Prepend">
            <summary>When true, the entry is prepended (rather than appended) to apt's sources list.</summary>
        </member>
        <member name="T:Eryph.GuestServices.CloudConfig.Linux.AptSourceEntry">
            <summary>
            Cloud-init <c>cc_apt_configure</c> <c>sources</c> map entry — one .list
            file dropped under <c>/etc/apt/sources.list.d/</c>. Linux-only
            configuration; no-op on Windows.
            </summary>
        </member>
        <member name="P:Eryph.GuestServices.CloudConfig.Linux.AptSourceEntry.Source">
            <summary>The verbatim <c>deb ...</c> line (or <c>deb-src ...</c>).</summary>
        </member>
        <member name="P:Eryph.GuestServices.CloudConfig.Linux.AptSourceEntry.Keyid">
            <summary>GPG key id imported into apt's trust store.</summary>
        </member>
        <member name="P:Eryph.GuestServices.CloudConfig.Linux.AptSourceEntry.Keyserver">
            <summary>GPG key server (defaults to <c>keyserver.ubuntu.com</c>).</summary>
        </member>
        <member name="P:Eryph.GuestServices.CloudConfig.Linux.AptSourceEntry.Key">
            <summary>Inline GPG key block.</summary>
        </member>
        <member name="P:Eryph.GuestServices.CloudConfig.Linux.AptSourceEntry.Filename">
            <summary>Filename under <c>/etc/apt/sources.list.d/</c>; defaults to the dict key.</summary>
        </member>
        <member name="P:Eryph.GuestServices.CloudConfig.Linux.AptSourceEntry.Append">
            <summary>When true, the entry is appended to the existing file instead of overwriting it.</summary>
        </member>
        <member name="T:Eryph.GuestServices.CloudConfig.Linux.CaCertsConfig">
            <summary>
            Cloud-init <c>cc_ca_certs</c> — CA certificate installation. Linux-only;
            the Windows certificate store has different semantics and an EGS module
            for it is not yet implemented.
            </summary>
        </member>
        <member name="P:Eryph.GuestServices.CloudConfig.Linux.CaCertsConfig.RemoveDefaults">
            <summary>
            When true, the distribution's bundled CA certificates are removed
            before <see cref="P:Eryph.GuestServices.CloudConfig.Linux.CaCertsConfig.Trusted"/> is installed. Canonical snake-case form.
            </summary>
        </member>
        <member name="P:Eryph.GuestServices.CloudConfig.Linux.CaCertsConfig.RemoveDefaultsLegacy">
            <summary>
            Deprecated hyphenated spelling kept for cloud-init parity. Some older
            docs / examples use <c>remove-defaults</c>; we accept it so cross-
            cloud cloud-config round-trips cleanly. The YAML alias is wired up
            externally via <c>WithAttributeOverride</c> so the model stays
            YamlDotNet-free. Operators should prefer <see cref="P:Eryph.GuestServices.CloudConfig.Linux.CaCertsConfig.RemoveDefaults"/>.
            </summary>
        </member>
        <member name="P:Eryph.GuestServices.CloudConfig.Linux.CaCertsConfig.Trusted">
            <summary>PEM-encoded CA certificate blobs to install.</summary>
        </member>
        <member name="T:Eryph.GuestServices.CloudConfig.Linux.ChefConfig">
            <summary>
            Cloud-init <c>cc_chef</c> bootstrap configuration. Linux-only;
            no-op on Windows today.
            </summary>
        </member>
        <member name="P:Eryph.GuestServices.CloudConfig.Linux.ChefConfig.Directories">
            <summary>Chef directories that cloud-init pre-creates (e.g. <c>/etc/chef</c>).</summary>
        </member>
        <member name="P:Eryph.GuestServices.CloudConfig.Linux.ChefConfig.ValidationCert">
            <summary>Path or PEM body for the validation certificate.</summary>
        </member>
        <member name="P:Eryph.GuestServices.CloudConfig.Linux.ChefConfig.ValidationKey">
            <summary>Path for the validation key.</summary>
        </member>
        <member name="P:Eryph.GuestServices.CloudConfig.Linux.ChefConfig.ValidationName">
            <summary>Validator client name.</summary>
        </member>
        <member name="P:Eryph.GuestServices.CloudConfig.Linux.ChefConfig.ServerUrl">
            <summary>Chef server URL.</summary>
        </member>
        <member name="P:Eryph.GuestServices.CloudConfig.Linux.ChefConfig.NodeName">
            <summary>Node name; defaults to the instance hostname.</summary>
        </member>
        <member name="P:Eryph.GuestServices.CloudConfig.Linux.ChefConfig.Environment">
            <summary>Chef environment (e.g. <c>_default</c>).</summary>
        </member>
        <member name="P:Eryph.GuestServices.CloudConfig.Linux.ChefConfig.LogLevel">
            <summary>chef-client log level (e.g. <c>:info</c>).</summary>
        </member>
        <member name="P:Eryph.GuestServices.CloudConfig.Linux.ChefConfig.LogLocation">
            <summary>Path to the chef-client log file.</summary>
        </member>
        <member name="P:Eryph.GuestServices.CloudConfig.Linux.ChefConfig.PidFile">
            <summary>Path to the chef-client pid file.</summary>
        </member>
        <member name="P:Eryph.GuestServices.CloudConfig.Linux.ChefConfig.SslVerifyMode">
            <summary>SSL verification mode (e.g. <c>:verify_peer</c>).</summary>
        </member>
        <member name="P:Eryph.GuestServices.CloudConfig.Linux.ChefConfig.ForceInstall">
            <summary>When true, the omnibus installer runs even if chef-client is already present.</summary>
        </member>
        <member name="P:Eryph.GuestServices.CloudConfig.Linux.ChefConfig.OmnibusUrl">
            <summary>Omnibus installer URL.</summary>
        </member>
        <member name="P:Eryph.GuestServices.CloudConfig.Linux.ChefConfig.OmnibusUrlRetries">
            <summary>Omnibus installer download retry count.</summary>
        </member>
        <member name="P:Eryph.GuestServices.CloudConfig.Linux.ChefConfig.OmnibusVersion">
            <summary>Pinned omnibus version.</summary>
        </member>
        <member name="P:Eryph.GuestServices.CloudConfig.Linux.ChefConfig.InstallType">
            <summary>Install type — <c>omnibus</c>, <c>packages</c>, or <c>gems</c>.</summary>
        </member>
        <member name="P:Eryph.GuestServices.CloudConfig.Linux.ChefConfig.RunList">
            <summary>Initial chef-client run-list.</summary>
        </member>
        <member name="P:Eryph.GuestServices.CloudConfig.Linux.ChefConfig.InitialAttributes">
            <summary>
            Initial node attributes merged into the node JSON. Opaque pass-through
            — cloud-init treats this as an arbitrary nested mapping.
            </summary>
        </member>
        <member name="P:Eryph.GuestServices.CloudConfig.Linux.ChefConfig.Exec">
            <summary>When true, cloud-init runs <c>chef-client</c> after bootstrap.</summary>
        </member>
        <member name="P:Eryph.GuestServices.CloudConfig.Linux.ChefConfig.ChefLicense">
            <summary>Chef license acceptance flag (e.g. <c>accept</c>, <c>accept-no-persist</c>).</summary>
        </member>
        <member name="P:Eryph.GuestServices.CloudConfig.Linux.ChefConfig.EncryptedDataBagSecret">
            <summary>Encrypted data-bag secret (path or value).</summary>
        </member>
        <member name="P:Eryph.GuestServices.CloudConfig.Linux.ChefConfig.ShowTime">
            <summary>When true, the chef-client log timestamps each line.</summary>
        </member>
        <member name="T:Eryph.GuestServices.CloudConfig.Linux.DiskSetupEntry">
            <summary>
            Cloud-init <c>cc_disk_setup</c> per-disk entry. The dict key is the
            device path (e.g. <c>/dev/sdb</c>) and the value carries the partition
            table directives. Linux-only configuration; no-op on Windows.
            </summary>
        </member>
        <member name="P:Eryph.GuestServices.CloudConfig.Linux.DiskSetupEntry.TableType">
            <summary>Partition table type — <c>mbr</c> or <c>gpt</c>.</summary>
        </member>
        <member name="P:Eryph.GuestServices.CloudConfig.Linux.DiskSetupEntry.Layout">
            <summary>
            Partition layout directive. cloud-init accepts a bool (use the entire
            disk as one partition) or a list-of-sizes shape; modeled as
            <c>string?</c> here because typed-target deserialisation needs to
            tolerate the bool-or-list union without losing fidelity.
            </summary>
        </member>
        <member name="P:Eryph.GuestServices.CloudConfig.Linux.DiskSetupEntry.Overwrite">
            <summary>When true, cloud-init overwrites any existing partition table.</summary>
        </member>
        <member name="T:Eryph.GuestServices.CloudConfig.Linux.FsSetupEntry">
            <summary>
            Cloud-init <c>cc_disk_setup</c> <c>fs_setup</c> entry — describes how to
            format a partition. Linux-only configuration; no-op on Windows.
            </summary>
        </member>
        <member name="P:Eryph.GuestServices.CloudConfig.Linux.FsSetupEntry.Label">
            <summary>Filesystem label (passed via <c>mkfs.* -L</c>).</summary>
        </member>
        <member name="P:Eryph.GuestServices.CloudConfig.Linux.FsSetupEntry.Filesystem">
            <summary>Filesystem type (e.g. <c>ext4</c>, <c>xfs</c>, <c>swap</c>).</summary>
        </member>
        <member name="P:Eryph.GuestServices.CloudConfig.Linux.FsSetupEntry.Device">
            <summary>Target device (e.g. <c>/dev/sdb</c>).</summary>
        </member>
        <member name="P:Eryph.GuestServices.CloudConfig.Linux.FsSetupEntry.Partition">
            <summary>
            Partition selector. Cloud-init accepts <c>"auto"</c>, <c>"any"</c>,
            <c>"none"</c>, or a partition number — modeled as <c>string?</c> to
            cover all forms with one type.
            </summary>
        </member>
        <member name="P:Eryph.GuestServices.CloudConfig.Linux.FsSetupEntry.Overwrite">
            <summary>When true, cloud-init overwrites any existing filesystem.</summary>
        </member>
        <member name="P:Eryph.GuestServices.CloudConfig.Linux.FsSetupEntry.ReplaceFs">
            <summary>Existing filesystem types that should be reformatted.</summary>
        </member>
        <member name="P:Eryph.GuestServices.CloudConfig.Linux.FsSetupEntry.ExtraOpts">
            <summary>Extra options passed to mkfs (e.g. <c>-E lazy_itable_init=0</c>).</summary>
        </member>
        <member name="T:Eryph.GuestServices.CloudConfig.Linux.PhoneHomeConfig">
            <summary>
            Cloud-init <c>cc_phone_home</c> — POST selected instance metadata to a
            URL at the end of provisioning. Linux-only today; no Windows analogue.
            </summary>
        </member>
        <member name="P:Eryph.GuestServices.CloudConfig.Linux.PhoneHomeConfig.Url">
            <summary>Endpoint URL.</summary>
        </member>
        <member name="P:Eryph.GuestServices.CloudConfig.Linux.PhoneHomeConfig.Post">
            <summary>
            Fields to POST. Accepts the literal scalar <c>all</c> or a list of
            keys (e.g. <c>pub_key_dsa</c>, <c>pub_key_rsa</c>, <c>fqdn</c>). The
            scalar form is promoted to a single-element list via a YAML converter.
            </summary>
        </member>
        <member name="P:Eryph.GuestServices.CloudConfig.Linux.PhoneHomeConfig.Tries">
            <summary>Number of HTTP retries on failure.</summary>
        </member>
        <member name="T:Eryph.GuestServices.CloudConfig.Linux.PuppetConfig">
            <summary>
            Cloud-init <c>cc_puppet</c> agent configuration. Linux-only;
            no-op on Windows today.
            </summary>
        </member>
        <member name="P:Eryph.GuestServices.CloudConfig.Linux.PuppetConfig.Install">
            <summary>When true, cloud-init installs the puppet agent if absent.</summary>
        </member>
        <member name="P:Eryph.GuestServices.CloudConfig.Linux.PuppetConfig.Version">
            <summary>Pinned puppet version.</summary>
        </member>
        <member name="P:Eryph.GuestServices.CloudConfig.Linux.PuppetConfig.InstallType">
            <summary>Install method — <c>aio</c> or <c>packages</c>.</summary>
        </member>
        <member name="P:Eryph.GuestServices.CloudConfig.Linux.PuppetConfig.Collection">
            <summary>Puppet collection (e.g. <c>puppet7</c>).</summary>
        </member>
        <member name="P:Eryph.GuestServices.CloudConfig.Linux.PuppetConfig.AioInstallUrl">
            <summary>AIO installer URL.</summary>
        </member>
        <member name="P:Eryph.GuestServices.CloudConfig.Linux.PuppetConfig.Cleanup">
            <summary>When true, the AIO installer script is removed after install.</summary>
        </member>
        <member name="P:Eryph.GuestServices.CloudConfig.Linux.PuppetConfig.PackageName">
            <summary>Package name to install (alternative to AIO).</summary>
        </member>
        <member name="P:Eryph.GuestServices.CloudConfig.Linux.PuppetConfig.Exec">
            <summary>When true, cloud-init runs <c>puppet agent</c> after install.</summary>
        </member>
        <member name="P:Eryph.GuestServices.CloudConfig.Linux.PuppetConfig.ExecArgs">
            <summary>Extra arguments passed to <c>puppet agent</c>.</summary>
        </member>
        <member name="P:Eryph.GuestServices.CloudConfig.Linux.PuppetConfig.StartService">
            <summary>When true, cloud-init starts the puppet agent service.</summary>
        </member>
        <member name="P:Eryph.GuestServices.CloudConfig.Linux.PuppetConfig.Conf">
            <summary>
            puppet.conf overrides, keyed by section (e.g. <c>main</c>, <c>agent</c>);
            per-section value is another <c>key → value</c> map.
            </summary>
        </member>
        <member name="P:Eryph.GuestServices.CloudConfig.Linux.PuppetConfig.CsrAttributes">
            <summary>
            CSR attributes injected into <c>csr_attributes.yaml</c>, keyed by
            section (e.g. <c>custom_attributes</c>, <c>extension_requests</c>).
            </summary>
        </member>
        <member name="T:Eryph.GuestServices.CloudConfig.Linux.RandomSeedConfig">
            <summary>
            Cloud-init <c>cc_seed_random</c> — seed the kernel RNG from cloud-config.
            Linux-only; on Windows the OS handles entropy via boot-time providers.
            </summary>
        </member>
        <member name="P:Eryph.GuestServices.CloudConfig.Linux.RandomSeedConfig.File">
            <summary>Path of the device the seed is written to (default <c>/dev/urandom</c>).</summary>
        </member>
        <member name="P:Eryph.GuestServices.CloudConfig.Linux.RandomSeedConfig.Data">
            <summary>Seed payload (raw or encoded per <see cref="P:Eryph.GuestServices.CloudConfig.Linux.RandomSeedConfig.Encoding"/>).</summary>
        </member>
        <member name="P:Eryph.GuestServices.CloudConfig.Linux.RandomSeedConfig.Encoding">
            <summary>Encoding of <see cref="P:Eryph.GuestServices.CloudConfig.Linux.RandomSeedConfig.Data"/> — <c>raw</c>, <c>base64</c>, <c>b64</c>, or <c>gzip</c>.</summary>
        </member>
        <member name="P:Eryph.GuestServices.CloudConfig.Linux.RandomSeedConfig.Command">
            <summary>Command to run after seeding (e.g. <c>pollinate</c>).</summary>
        </member>
        <member name="P:Eryph.GuestServices.CloudConfig.Linux.RandomSeedConfig.CommandRequired">
            <summary>When true, cloud-init aborts if <see cref="P:Eryph.GuestServices.CloudConfig.Linux.RandomSeedConfig.Command"/> fails.</summary>
        </member>
        <member name="T:Eryph.GuestServices.CloudConfig.Linux.ReportingHandlerConfig">
            <summary>
            Cloud-init <c>reporting:</c> per-handler entry. The top-level
            <c>reporting</c> key carries a map of handler name → handler config.
            Linux-only configuration; no-op on Windows today.
            </summary>
        </member>
        <member name="P:Eryph.GuestServices.CloudConfig.Linux.ReportingHandlerConfig.Type">
            <summary>Handler type (e.g. <c>webhook</c>, <c>log</c>, <c>hyperv</c>).</summary>
        </member>
        <member name="P:Eryph.GuestServices.CloudConfig.Linux.ReportingHandlerConfig.Endpoint">
            <summary>Endpoint URL (webhook handler).</summary>
        </member>
        <member name="P:Eryph.GuestServices.CloudConfig.Linux.ReportingHandlerConfig.ConsumerKey">
            <summary>OAuth consumer key (webhook handler).</summary>
        </member>
        <member name="P:Eryph.GuestServices.CloudConfig.Linux.ReportingHandlerConfig.TokenKey">
            <summary>OAuth token key (webhook handler).</summary>
        </member>
        <member name="P:Eryph.GuestServices.CloudConfig.Linux.ReportingHandlerConfig.ConsumerSecret">
            <summary>OAuth consumer secret (webhook handler).</summary>
        </member>
        <member name="P:Eryph.GuestServices.CloudConfig.Linux.ReportingHandlerConfig.TokenSecret">
            <summary>OAuth token secret (webhook handler).</summary>
        </member>
        <member name="P:Eryph.GuestServices.CloudConfig.Linux.ReportingHandlerConfig.Level">
            <summary>Log level for the log handler.</summary>
        </member>
        <member name="P:Eryph.GuestServices.CloudConfig.Linux.ReportingHandlerConfig.Headers">
            <summary>HTTP headers (webhook handler).</summary>
        </member>
        <member name="P:Eryph.GuestServices.CloudConfig.Linux.ReportingHandlerConfig.Timeout">
            <summary>HTTP timeout in seconds (webhook handler).</summary>
        </member>
        <member name="P:Eryph.GuestServices.CloudConfig.Linux.ReportingHandlerConfig.Retries">
            <summary>HTTP retry count (webhook handler).</summary>
        </member>
        <member name="T:Eryph.GuestServices.CloudConfig.Linux.ResolvConfConfig">
            <summary>
            Cloud-init <c>cc_resolv_conf</c> — /etc/resolv.conf contents. Linux-only
            configuration; on Windows DNS is configured via the network-config layer.
            </summary>
        </member>
        <member name="P:Eryph.GuestServices.CloudConfig.Linux.ResolvConfConfig.Nameservers">
            <summary>Nameserver IPs.</summary>
        </member>
        <member name="P:Eryph.GuestServices.CloudConfig.Linux.ResolvConfConfig.Searchdomains">
            <summary>DNS search domains.</summary>
        </member>
        <member name="P:Eryph.GuestServices.CloudConfig.Linux.ResolvConfConfig.Domain">
            <summary>Single-label resolution domain.</summary>
        </member>
        <member name="P:Eryph.GuestServices.CloudConfig.Linux.ResolvConfConfig.Sortlist">
            <summary>Sort list applied to glibc resolution.</summary>
        </member>
        <member name="P:Eryph.GuestServices.CloudConfig.Linux.ResolvConfConfig.Options">
            <summary>
            Resolver options (e.g. <c>rotate</c>, <c>timeout: 2</c>). Cloud-init
            accepts arbitrary scalar values; modeled as <c>string?</c> values for
            simplicity — YamlDotNet stringifies bool/int through the dict path.
            </summary>
        </member>
        <member name="T:Eryph.GuestServices.CloudConfig.Linux.SaltMinionConfig">
            <summary>
            Cloud-init <c>cc_salt_minion</c> bootstrap configuration. Linux-only;
            no-op on Windows today.
            </summary>
        </member>
        <member name="P:Eryph.GuestServices.CloudConfig.Linux.SaltMinionConfig.PkgName">
            <summary>Package name to install (defaults to <c>salt-minion</c>).</summary>
        </member>
        <member name="P:Eryph.GuestServices.CloudConfig.Linux.SaltMinionConfig.ServiceName">
            <summary>systemd unit name to enable (defaults to <c>salt-minion</c>).</summary>
        </member>
        <member name="P:Eryph.GuestServices.CloudConfig.Linux.SaltMinionConfig.ConfigDir">
            <summary>Directory the minion config file is written to.</summary>
        </member>
        <member name="P:Eryph.GuestServices.CloudConfig.Linux.SaltMinionConfig.Conf">
            <summary>
            Verbatim minion config payload merged into <c>/etc/salt/minion</c>.
            Opaque pass-through — cloud-init treats this as arbitrary YAML.
            </summary>
        </member>
        <member name="P:Eryph.GuestServices.CloudConfig.Linux.SaltMinionConfig.Grains">
            <summary>
            Verbatim grains payload merged into <c>/etc/salt/grains</c>.
            Opaque pass-through.
            </summary>
        </member>
        <member name="P:Eryph.GuestServices.CloudConfig.Linux.SaltMinionConfig.PublicKey">
            <summary>Minion public key (PEM).</summary>
        </member>
        <member name="P:Eryph.GuestServices.CloudConfig.Linux.SaltMinionConfig.PrivateKey">
            <summary>Minion private key (PEM).</summary>
        </member>
        <member name="T:Eryph.GuestServices.CloudConfig.Linux.SnapConfig">
            <summary>
            Cloud-init <c>cc_snap</c> top-level <c>snap:</c> block. Linux-only
            configuration; no-op on Windows (snap has no Windows analogue).
            </summary>
        </member>
        <member name="P:Eryph.GuestServices.CloudConfig.Linux.SnapConfig.Commands">
            <summary>
            <c>snap</c> CLI invocations. Each entry is a flattened command line —
            same shape as <see cref="P:Eryph.GuestServices.CloudConfig.RuncmdEntry.Command"/>. Cloud-init accepts
            either a shell-string or an argv list; both flatten to a single string
            here via the runcmd-style YAML converter (when wired).
            </summary>
        </member>
        <member name="P:Eryph.GuestServices.CloudConfig.Linux.SnapConfig.Assertions">
            <summary>
            snap assertions injected via <c>snap ack</c>. cloud-init also accepts
            a deprecated dict form keyed by assertion name; we only model the
            supported list shape.
            </summary>
        </member>
        <member name="T:Eryph.GuestServices.CloudConfig.Linux.SshPublishHostKeysConfig">
            <summary>
            Cloud-init <c>cc_ssh</c> <c>ssh_publish_hostkeys:</c> block — publishes
            per-instance ssh host keys to the platform metadata service. Linux-only.
            </summary>
        </member>
        <member name="P:Eryph.GuestServices.CloudConfig.Linux.SshPublishHostKeysConfig.Enabled">
            <summary>Master enable flag.</summary>
        </member>
        <member name="P:Eryph.GuestServices.CloudConfig.Linux.SshPublishHostKeysConfig.Blacklist">
            <summary>Key types that are explicitly excluded from publication.</summary>
        </member>
        <member name="T:Eryph.GuestServices.CloudConfig.Linux.SwapConfig">
            <summary>
            Cloud-init <c>cc_mounts</c> swap-file block. Linux-only; on Windows the
            page file is OS-managed and there is no direct analogue.
            </summary>
        </member>
        <member name="P:Eryph.GuestServices.CloudConfig.Linux.SwapConfig.Filename">
            <summary>Path of the swap file (default <c>/swap.img</c>).</summary>
        </member>
        <member name="P:Eryph.GuestServices.CloudConfig.Linux.SwapConfig.Size">
            <summary>Initial size — bytes, suffixes (<c>1G</c>), or <c>auto</c>.</summary>
        </member>
        <member name="P:Eryph.GuestServices.CloudConfig.Linux.SwapConfig.Maxsize">
            <summary>Upper bound for auto sizing.</summary>
        </member>
        <member name="T:Eryph.GuestServices.CloudConfig.Linux.YumRepoConfig">
            <summary>
            Cloud-init <c>cc_yum_add_repo</c> per-repo entry. Mirrors the
            most-commonly-set yum.conf keys; cloud-init itself only validates that
            each value is a scalar (string / bool / int) and passes the dict through
            to <c>/etc/yum.repos.d/&lt;name&gt;.repo</c>. Linux-only configuration;
            no-op on Windows.
            </summary>
        </member>
        <member name="P:Eryph.GuestServices.CloudConfig.Linux.YumRepoConfig.Baseurl">
            <summary>Repository URL.</summary>
        </member>
        <member name="P:Eryph.GuestServices.CloudConfig.Linux.YumRepoConfig.Name">
            <summary>Human-readable repository name.</summary>
        </member>
        <member name="P:Eryph.GuestServices.CloudConfig.Linux.YumRepoConfig.Enabled">
            <summary>Whether the repository is enabled.</summary>
        </member>
        <member name="P:Eryph.GuestServices.CloudConfig.Linux.YumRepoConfig.Gpgkey">
            <summary>GPG public key URL.</summary>
        </member>
        <member name="P:Eryph.GuestServices.CloudConfig.Linux.YumRepoConfig.Gpgcheck">
            <summary>When true, yum verifies package signatures against the gpgkey.</summary>
        </member>
        <member name="P:Eryph.GuestServices.CloudConfig.Linux.YumRepoConfig.MetadataExpire">
            <summary>Cache expiry interval (e.g. <c>86400</c>).</summary>
        </member>
        <member name="P:Eryph.GuestServices.CloudConfig.Linux.YumRepoConfig.SkipIfUnavailable">
            <summary>When true, yum continues if the repo is unreachable.</summary>
        </member>
        <member name="P:Eryph.GuestServices.CloudConfig.Linux.YumRepoConfig.Priority">
            <summary>Repository priority (lower = higher priority).</summary>
        </member>
        <member name="P:Eryph.GuestServices.CloudConfig.Linux.YumRepoConfig.Mirrorlist">
            <summary>Mirror list URL (mutually exclusive with <see cref="P:Eryph.GuestServices.CloudConfig.Linux.YumRepoConfig.Baseurl"/>).</summary>
        </member>
        <member name="T:Eryph.GuestServices.CloudConfig.NtpConfig">
            <summary>
            Cloud-init compatible <c>ntp</c> directive. Mirrors the cross-platform
            subset of cloud-init's <c>cc_ntp</c> schema — Windows-irrelevant fields
            (<c>config</c>, <c>ntp_client</c>, <c>peers</c>, <c>allow</c>) are
            intentionally absent; only <c>enabled</c>, <c>servers</c> and
            <c>pools</c> have meaningful Windows analogues.
            </summary>
        </member>
        <member name="P:Eryph.GuestServices.CloudConfig.NtpConfig.Enabled">
            <summary>
            When false, the Windows Time service (<c>w32time</c>) is stopped and
            set to <c>Disabled</c>. Default is true.
            </summary>
        </member>
        <member name="P:Eryph.GuestServices.CloudConfig.NtpConfig.Servers">
            <summary>
            Explicit NTP server hostnames or IPs. Combined with <see cref="P:Eryph.GuestServices.CloudConfig.NtpConfig.Pools"/>
            into a single <c>w32tm /config /manualpeerlist:</c> argument.
            </summary>
        </member>
        <member name="P:Eryph.GuestServices.CloudConfig.NtpConfig.Pools">
            <summary>
            NTP pool entries (e.g. <c>pool.ntp.org</c>). On Windows there is no
            distinction between pools and servers — both end up in the
            <c>w32tm</c> manual peer list.
            </summary>
        </member>
        <member name="P:Eryph.GuestServices.CloudConfig.NtpConfig.RealTimeClockUtc">
            <summary>
            When set, writes
            <c>HKLM\SYSTEM\CurrentControlSet\Control\TimeZoneInformation\RealTimeIsUniversal</c>
            to instruct Windows whether to treat the RTC as UTC. Mirrors
            cloudbase-init's <c>real_time_clock_utc</c> option. Defaults to null
            — the registry is left alone, so existing Windows defaults apply.
            </summary>
        </member>
        <member name="T:Eryph.GuestServices.CloudConfig.PowerStateConfig">
            <summary>
            Cloud-init compatible <c>power_state</c> directive. Requests a controlled
            reboot / poweroff at the END of provisioning. Mid-stage reboot is the
            exit-1003 "reboot and continue" mechanism — see
            <c>scripts-per-frequency-edge-cases</c>.
            </summary>
        </member>
        <member name="P:Eryph.GuestServices.CloudConfig.PowerStateConfig.Mode">
            <summary>
            <c>reboot</c> | <c>poweroff</c> | <c>halt</c>. Defaults to
            <c>reboot</c> when omitted (matches the most common operator intent).
            <c>halt</c> has no clean Windows analogue and falls back to hibernate
            with a Warning log.
            </summary>
        </member>
        <member name="P:Eryph.GuestServices.CloudConfig.PowerStateConfig.Delay">
            <summary>
            When to fire. Accepts <c>now</c>, <c>+N</c> (N minutes from now),
            <c>HH:MM</c> (absolute time today, or tomorrow if already past),
            or a plain integer (seconds from now). Default <c>now</c>.
            </summary>
        </member>
        <member name="P:Eryph.GuestServices.CloudConfig.PowerStateConfig.Message">
            <summary>
            Operator-visible message shown via <c>shutdown.exe /c</c>. Truncated
            to the Windows 512-character limit.
            </summary>
        </member>
        <member name="P:Eryph.GuestServices.CloudConfig.PowerStateConfig.Timeout">
            <summary>
            Cloud-init reuses this as the SIGTERM-&gt;SIGKILL window for
            long-running processes. There is no direct Windows analogue;
            currently accepted for cloud-init parity but not applied.
            </summary>
        </member>
        <member name="P:Eryph.GuestServices.CloudConfig.PowerStateConfig.Condition">
            <summary>
            Cloud-init <c>power_state.condition</c> — a bool (literal
            <c>true</c>/<c>false</c>) or a shell command string.
            <list type="bullet">
              <item>bool <c>true</c> (or empty / omitted): proceed.</item>
              <item>bool <c>false</c>: skip.</item>
              <item>string: run as a shell command; exit code 0 proceeds, anything else skips.</item>
            </list>
            Modeled as <see cref="T:Eryph.GuestServices.CloudConfig.BoolOrString"/> so PyYAML's quoting
            distinction survives — plain <c>true</c> is bool, quoted
            <c>"true"</c> is a shell command (Linux's <c>true</c> exits 0).
            </summary>
        </member>
        <member name="T:Eryph.GuestServices.CloudConfig.SshConfig">
            <summary>
            Cloud-init <c>ssh:</c> block. Cloud-init only defines
            <c>emit_keys_to_console</c> here today; eryph extends the block with
            Windows-specific knobs (currently <c>install_openssh</c>). The broader
            host-key / pwauth / authorized-keys surface stays at the top level
            (<c>ssh_keys</c>, <c>ssh_pwauth</c>, <c>ssh_authorized_keys</c>, ...) to
            match cloud-init's <c>cc_ssh</c> schema — see RFC 0018.
            </summary>
        </member>
        <member name="P:Eryph.GuestServices.CloudConfig.SshConfig.EmitKeysToConsole">
            <summary>
            Cloud-init <c>ssh.emit_keys_to_console</c>. On Linux this controls
            whether the freshly generated host-key fingerprints are echoed to the
            system console. On Windows the SshModule maps it to the
            <c>SshHostKeysReported</c> reporting event: when false the host-key
            fingerprints are not surfaced to the operator console. Defaults to
            true (cloud-init's default) when omitted.
            </summary>
        </member>
        <member name="P:Eryph.GuestServices.CloudConfig.SshConfig.InstallOpenssh">
            <summary>
            eryph extension (not part of cloud-init's <c>cc_ssh</c> schema). When
            true the SshModule installs the Win32-OpenSSH server capability
            (<c>Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0</c>)
            and sets the <c>sshd</c> service to start Automatically. When omitted /
            false the module only configures an already-installed sshd
            (detect-don't-install). Windows-only.
            </summary>
        </member>
        <member name="P:Eryph.GuestServices.CloudConfig.UserConfig.HashedPasswd">
            <summary>
            Pre-hashed password (cloud-init explicit alias for <see cref="P:Eryph.GuestServices.CloudConfig.UserConfig.Passwd"/>
            when the value is known to be a crypt-format hash). Linux-only —
            Windows cannot apply a Linux crypt hash to a local account.
            </summary>
        </member>
        <member name="P:Eryph.GuestServices.CloudConfig.UserConfig.Inactive">
            <summary>
            Cloud-init's <c>inactive</c> accepts bool / int (days until lock) /
            string. We widen to <see cref="T:System.String"/> as the most-permissive form —
            the runtime application decides based on content. Linux-only; Windows
            has no direct analogue to <c>useradd --inactive</c>.
            </summary>
        </member>
        <member name="P:Eryph.GuestServices.CloudConfig.UserConfig.Sudo">
            <summary>
            Sudoers entry / entries. Cloud-init accepts either a single string or
            a list of strings — the latter produces one sudoers line per entry.
            On Windows this maps to "is the user a member of Administrators" — the
            list shape is honored at the schema level so cross-cloud cloud-config
            round-trips; Windows treats any non-"false" entry as the truthy signal.
            </summary>
        </member>
        <member name="P:Eryph.GuestServices.CloudConfig.UserConfig.Gecos">
            <summary>
            GECOS field (full name + comment). Cross-platform: on Linux this
            populates <c>/etc/passwd</c>'s GECOS column; on Windows the runtime
            (Phase 3) maps it to the NTUser <c>FullName</c> property.
            </summary>
        </member>
        <member name="P:Eryph.GuestServices.CloudConfig.WriteFileConfig.Defer">
            <summary>
            Postpone the write until the Final stage (after users are created).
            Cloud-init applies deferred entries last so they can reference users
            that earlier modules in the same run created. Phase 3 wires the
            runtime semantics.
            </summary>
        </member>
        <member name="T:Eryph.GuestServices.CloudConfig.Validation.GrowpartGrammar">
            <summary>
            Schema-level parsing + validation for <see cref="T:Eryph.GuestServices.CloudConfig.GrowpartConfig"/>.
            </summary>
        </member>
        <member name="T:Eryph.GuestServices.CloudConfig.Validation.GrowpartGrammar.DeviceKind">
            <summary>
            Possible runtime targets for a parsed <c>devices:</c> entry.
            </summary>
        </member>
        <member name="F:Eryph.GuestServices.CloudConfig.Validation.GrowpartGrammar.DeviceKind.SystemDrive">
            <summary>The cloud-init root device alias <c>/</c>.</summary>
        </member>
        <member name="F:Eryph.GuestServices.CloudConfig.Validation.GrowpartGrammar.DeviceKind.DriveLetter">
            <summary>An explicit drive letter (uppercase A–Z).</summary>
        </member>
        <member name="F:Eryph.GuestServices.CloudConfig.Validation.GrowpartGrammar.DeviceKind.All">
            <summary>The catch-all <c>all</c> sentinel.</summary>
        </member>
        <member name="M:Eryph.GuestServices.CloudConfig.Validation.GrowpartGrammar.ParseDevice(System.String)">
            <summary>
            Parse a single <c>devices:</c> entry. Empty / whitespace is treated
            as missing (callers may filter it out).
            </summary>
        </member>
        <member name="M:Eryph.GuestServices.CloudConfig.Validation.GrowpartGrammar.Validate(Eryph.GuestServices.CloudConfig.GrowpartConfig)">
            <summary>
            Cloud-config-shape validator. Returns Unit on success or accumulated
            errors. Wires into <c>CloudConfigValidations.ValidateCloudConfig</c>.
            </summary>
        </member>
        <member name="T:Eryph.GuestServices.CloudConfig.Validation.PowerStateGrammar">
            <summary>
            Schema-level parsing + validation for <see cref="T:Eryph.GuestServices.CloudConfig.PowerStateConfig"/>.
            Lives in the model library so <c>egs-service validate</c> can reject
            bad config BEFORE the agent runs — the alternative (parsing in
            <c>PowerStateModule</c>) defers errors to first boot.
            </summary>
        </member>
        <member name="M:Eryph.GuestServices.CloudConfig.Validation.PowerStateGrammar.ParseMode(System.String)">
            <summary>
            Resolve a raw <c>mode:</c> string to the canonical <see cref="T:Eryph.GuestServices.CloudConfig.Validation.PowerStateGrammar.PowerStateMode"/>.
            Accepts <c>reboot</c>, <c>poweroff</c>, <c>shutdown</c> (cbi-style
            alias), <c>halt</c>. Null / empty → <see cref="F:Eryph.GuestServices.CloudConfig.Validation.PowerStateGrammar.PowerStateMode.Reboot"/>
            (operators writing <c>power_state: {}</c> almost always want reboot).
            </summary>
        </member>
        <member name="M:Eryph.GuestServices.CloudConfig.Validation.PowerStateGrammar.ParseDelay(System.String,System.DateTimeOffset)">
            <summary>
            Parse a cloud-init style <c>delay:</c> string into seconds-from-now.
            Forms: <c>now</c> / empty / null → 0; <c>+N</c> → N minutes;
            <c>HH:MM</c> → seconds until that local-time today (tomorrow if past);
            plain integer → seconds.
            </summary>
        </member>
        <member name="M:Eryph.GuestServices.CloudConfig.Validation.PowerStateGrammar.Validate(Eryph.GuestServices.CloudConfig.PowerStateConfig)">
            <summary>
            Cloud-config-shape validator. Returns Unit on success or accumulated
            errors. Wires into <c>CloudConfigValidations.ValidateCloudConfig</c>.
            </summary>
        </member>
        <member name="T:Eryph.GuestServices.CloudConfig.CloudConfigPlatformInventory">
            <summary>
            Source-generated inventory of every <see cref="T:Eryph.GuestServices.CloudConfig.CloudInitFieldAttribute"/>
            declared on the root cloud-config record. Drives operator-visible logging
            (e.g. "acknowledged Linux-only key") from the model itself rather than a
            hand-curated parallel list.
            </summary>
        </member>
        <member name="T:Eryph.GuestServices.CloudConfig.CloudConfigPlatformInventory.FieldEntry">
            <summary>One entry per [CloudInitField]-annotated property on the root.</summary>
        </member>
        <member name="M:Eryph.GuestServices.CloudConfig.CloudConfigPlatformInventory.FieldEntry.#ctor(System.String,Eryph.GuestServices.CloudConfig.CloudInitPlatforms,System.String,System.Func{Eryph.GuestServices.CloudConfig.CloudConfig,System.Boolean})">
            <summary>One entry per [CloudInitField]-annotated property on the root.</summary>
        </member>
    </members>
</doc>
