generated/api/Models/VMGroupSettings.json.cs

// Code generated by Microsoft (R) AutoRest Code Generator (autorest: 3.9.4, generator: @autorest/powershell@3.0.415)
// Changes may cause incorrect behavior and will be lost if the code is regenerated.

namespace Commvault.Powershell.Models
{
    using static Commvault.Powershell.Runtime.Extensions;

    public partial class VMGroupSettings
    {

        /// <summary>
        /// <c>AfterFromJson</c> will be called after the json deserialization has finished, allowing customization of the object
        /// before it is returned. Implement this method in a partial class to enable this behavior
        /// </summary>
        /// <param name="json">The JsonNode that should be deserialized into this object.</param>

        partial void AfterFromJson(Commvault.Powershell.Runtime.Json.JsonObject json);

        /// <summary>
        /// <c>AfterToJson</c> will be called after the json erialization has finished, allowing customization of the <see cref="Commvault.Powershell.Runtime.Json.JsonObject"
        /// /> before it is returned. Implement this method in a partial class to enable this behavior
        /// </summary>
        /// <param name="container">The JSON container that the serialization result will be placed in.</param>

        partial void AfterToJson(ref Commvault.Powershell.Runtime.Json.JsonObject container);

        /// <summary>
        /// <c>BeforeFromJson</c> will be called before the json deserialization has commenced, allowing complete customization of
        /// the object before it is deserialized.
        /// If you wish to disable the default deserialization entirely, return <c>true</c> in the <see "returnNow" /> output parameter.
        /// Implement this method in a partial class to enable this behavior.
        /// </summary>
        /// <param name="json">The JsonNode that should be deserialized into this object.</param>
        /// <param name="returnNow">Determines if the rest of the deserialization should be processed, or if the method should return
        /// instantly.</param>

        partial void BeforeFromJson(Commvault.Powershell.Runtime.Json.JsonObject json, ref bool returnNow);

        /// <summary>
        /// <c>BeforeToJson</c> will be called before the json serialization has commenced, allowing complete customization of the
        /// object before it is serialized.
        /// If you wish to disable the default serialization entirely, return <c>true</c> in the <see "returnNow" /> output parameter.
        /// Implement this method in a partial class to enable this behavior.
        /// </summary>
        /// <param name="container">The JSON container that the serialization result will be placed in.</param>
        /// <param name="returnNow">Determines if the rest of the serialization should be processed, or if the method should return
        /// instantly.</param>

        partial void BeforeToJson(ref Commvault.Powershell.Runtime.Json.JsonObject container, ref bool returnNow);

        /// <summary>
        /// Deserializes a <see cref="Commvault.Powershell.Runtime.Json.JsonNode"/> into an instance of Commvault.Powershell.Models.IVMGroupSettings.
        /// </summary>
        /// <param name="node">a <see cref="Commvault.Powershell.Runtime.Json.JsonNode" /> to deserialize from.</param>
        /// <returns>an instance of Commvault.Powershell.Models.IVMGroupSettings.</returns>
        public static Commvault.Powershell.Models.IVMGroupSettings FromJson(Commvault.Powershell.Runtime.Json.JsonNode node)
        {
            return node is Commvault.Powershell.Runtime.Json.JsonObject json ? new VMGroupSettings(json) : null;
        }

        /// <summary>
        /// Serializes this instance of <see cref="VMGroupSettings" /> into a <see cref="Commvault.Powershell.Runtime.Json.JsonNode" />.
        /// </summary>
        /// <param name="container">The <see cref="Commvault.Powershell.Runtime.Json.JsonObject"/> container to serialize this object into. If the caller
        /// passes in <c>null</c>, a new instance will be created and returned to the caller.</param>
        /// <param name="serializationMode">Allows the caller to choose the depth of the serialization. See <see cref="Commvault.Powershell.Runtime.SerializationMode"/>.</param>
        /// <returns>
        /// a serialized instance of <see cref="VMGroupSettings" /> as a <see cref="Commvault.Powershell.Runtime.Json.JsonNode" />.
        /// </returns>
        public Commvault.Powershell.Runtime.Json.JsonNode ToJson(Commvault.Powershell.Runtime.Json.JsonObject container, Commvault.Powershell.Runtime.SerializationMode serializationMode)
        {
            container = container ?? new Commvault.Powershell.Runtime.Json.JsonObject();

            bool returnNow = false;
            BeforeToJson(ref container, ref returnNow);
            if (returnNow)
            {
                return container;
            }
            AddIf( null != this._guestCredentials ? (Commvault.Powershell.Runtime.Json.JsonNode) this._guestCredentials.ToJson(null,serializationMode) : null, "guestCredentials" ,container.Add );
            AddIf( null != this._crossAccount ? (Commvault.Powershell.Runtime.Json.JsonNode) this._crossAccount.ToJson(null,serializationMode) : null, "crossAccount" ,container.Add );
            AddIf( null != this._useChangedBlockTrackingOnVM ? (Commvault.Powershell.Runtime.Json.JsonNode)new Commvault.Powershell.Runtime.Json.JsonBoolean((bool)this._useChangedBlockTrackingOnVM) : null, "useChangedBlockTrackingOnVM" ,container.Add );
            AddIf( null != (((object)this._customSnapshotResourceGroup)?.ToString()) ? (Commvault.Powershell.Runtime.Json.JsonNode) new Commvault.Powershell.Runtime.Json.JsonString(this._customSnapshotResourceGroup.ToString()) : null, "customSnapshotResourceGroup" ,container.Add );
            if (null != this._customSnapshotTags)
            {
                var __w = new Commvault.Powershell.Runtime.Json.XNodeArray();
                foreach( var __x in this._customSnapshotTags )
                {
                    AddIf(__x?.ToJson(null, serializationMode) ,__w.Add);
                }
                container.Add("customSnapshotTags",__w);
            }
            AddIf( null != this._regionalSnapshot ? (Commvault.Powershell.Runtime.Json.JsonNode)new Commvault.Powershell.Runtime.Json.JsonBoolean((bool)this._regionalSnapshot) : null, "regionalSnapshot" ,container.Add );
            AddIf( null != this._autoDetectVMOwner ? (Commvault.Powershell.Runtime.Json.JsonNode)new Commvault.Powershell.Runtime.Json.JsonBoolean((bool)this._autoDetectVMOwner) : null, "autoDetectVMOwner" ,container.Add );
            AddIf( null != this._allowEmptySubclient ? (Commvault.Powershell.Runtime.Json.JsonNode)new Commvault.Powershell.Runtime.Json.JsonBoolean((bool)this._allowEmptySubclient) : null, "allowEmptySubclient" ,container.Add );
            AddIf( null != this._noOfReaders ? (Commvault.Powershell.Runtime.Json.JsonNode)new Commvault.Powershell.Runtime.Json.JsonNumber((long)this._noOfReaders) : null, "noOfReaders" ,container.Add );
            AddIf( null != this._isVMGroupDiskFiltersIncluded ? (Commvault.Powershell.Runtime.Json.JsonNode)new Commvault.Powershell.Runtime.Json.JsonBoolean((bool)this._isVMGroupDiskFiltersIncluded) : null, "isVMGroupDiskFiltersIncluded" ,container.Add );
            AddIf( null != (((object)this._vMBackupType)?.ToString()) ? (Commvault.Powershell.Runtime.Json.JsonNode) new Commvault.Powershell.Runtime.Json.JsonString(this._vMBackupType.ToString()) : null, "vmBackupType" ,container.Add );
            AddIf( null != this._isApplicationAware ? (Commvault.Powershell.Runtime.Json.JsonNode)new Commvault.Powershell.Runtime.Json.JsonBoolean((bool)this._isApplicationAware) : null, "isApplicationAware" ,container.Add );
            AddIf( null != this._useVMCheckpointSetting ? (Commvault.Powershell.Runtime.Json.JsonNode)new Commvault.Powershell.Runtime.Json.JsonBoolean((bool)this._useVMCheckpointSetting) : null, "useVMCheckpointSetting" ,container.Add );
            AddIf( null != (((object)this._transportMode)?.ToString()) ? (Commvault.Powershell.Runtime.Json.JsonNode) new Commvault.Powershell.Runtime.Json.JsonString(this._transportMode.ToString()) : null, "transportMode" ,container.Add );
            AddIf( null != this._datastoreFreespaceCheck ? (Commvault.Powershell.Runtime.Json.JsonNode)new Commvault.Powershell.Runtime.Json.JsonBoolean((bool)this._datastoreFreespaceCheck) : null, "datastoreFreespaceCheck" ,container.Add );
            AddIf( null != this._datastoreFreespaceRequired ? (Commvault.Powershell.Runtime.Json.JsonNode)new Commvault.Powershell.Runtime.Json.JsonNumber((long)this._datastoreFreespaceRequired) : null, "datastoreFreespaceRequired" ,container.Add );
            AddIf( null != this._collectFileDetailsforGranularRecovery ? (Commvault.Powershell.Runtime.Json.JsonNode)new Commvault.Powershell.Runtime.Json.JsonBoolean((bool)this._collectFileDetailsforGranularRecovery) : null, "collectFileDetailsforGranularRecovery" ,container.Add );
            AddIf( null != this._collectFileDetailsFromSnapshotCopy ? (Commvault.Powershell.Runtime.Json.JsonNode)new Commvault.Powershell.Runtime.Json.JsonBoolean((bool)this._collectFileDetailsFromSnapshotCopy) : null, "collectFileDetailsFromSnapshotCopy" ,container.Add );
            AddIf( null != this._jobStartTime ? (Commvault.Powershell.Runtime.Json.JsonNode)new Commvault.Powershell.Runtime.Json.JsonNumber((long)this._jobStartTime) : null, "jobStartTime" ,container.Add );
            AfterToJson(ref container);
            return container;
        }

        /// <summary>
        /// Deserializes a Commvault.Powershell.Runtime.Json.JsonObject into a new instance of <see cref="VMGroupSettings" />.
        /// </summary>
        /// <param name="json">A Commvault.Powershell.Runtime.Json.JsonObject instance to deserialize from.</param>
        internal VMGroupSettings(Commvault.Powershell.Runtime.Json.JsonObject json)
        {
            bool returnNow = false;
            BeforeFromJson(json, ref returnNow);
            if (returnNow)
            {
                return;
            }
            {_guestCredentials = If( json?.PropertyT<Commvault.Powershell.Runtime.Json.JsonObject>("guestCredentials"), out var __jsonGuestCredentials) ? Commvault.Powershell.Models.GuestCredentialInfo.FromJson(__jsonGuestCredentials) : GuestCredentials;}
            {_crossAccount = If( json?.PropertyT<Commvault.Powershell.Runtime.Json.JsonObject>("crossAccount"), out var __jsonCrossAccount) ? Commvault.Powershell.Models.AmazonCrossAccount.FromJson(__jsonCrossAccount) : CrossAccount;}
            {_useChangedBlockTrackingOnVM = If( json?.PropertyT<Commvault.Powershell.Runtime.Json.JsonBoolean>("useChangedBlockTrackingOnVM"), out var __jsonUseChangedBlockTrackingOnVM) ? (bool?)__jsonUseChangedBlockTrackingOnVM : UseChangedBlockTrackingOnVM;}
            {_customSnapshotResourceGroup = If( json?.PropertyT<Commvault.Powershell.Runtime.Json.JsonString>("customSnapshotResourceGroup"), out var __jsonCustomSnapshotResourceGroup) ? (string)__jsonCustomSnapshotResourceGroup : (string)CustomSnapshotResourceGroup;}
            {_customSnapshotTags = If( json?.PropertyT<Commvault.Powershell.Runtime.Json.JsonArray>("customSnapshotTags"), out var __jsonCustomSnapshotTags) ? If( __jsonCustomSnapshotTags as Commvault.Powershell.Runtime.Json.JsonArray, out var __v) ? new global::System.Func<Commvault.Powershell.Models.IResourceTag[]>(()=> global::System.Linq.Enumerable.ToArray(global::System.Linq.Enumerable.Select(__v, (__u)=>(Commvault.Powershell.Models.IResourceTag) (Commvault.Powershell.Models.ResourceTag.FromJson(__u) )) ))() : null : CustomSnapshotTags;}
            {_regionalSnapshot = If( json?.PropertyT<Commvault.Powershell.Runtime.Json.JsonBoolean>("regionalSnapshot"), out var __jsonRegionalSnapshot) ? (bool?)__jsonRegionalSnapshot : RegionalSnapshot;}
            {_autoDetectVMOwner = If( json?.PropertyT<Commvault.Powershell.Runtime.Json.JsonBoolean>("autoDetectVMOwner"), out var __jsonAutoDetectVMOwner) ? (bool?)__jsonAutoDetectVMOwner : AutoDetectVMOwner;}
            {_allowEmptySubclient = If( json?.PropertyT<Commvault.Powershell.Runtime.Json.JsonBoolean>("allowEmptySubclient"), out var __jsonAllowEmptySubclient) ? (bool?)__jsonAllowEmptySubclient : AllowEmptySubclient;}
            {_noOfReaders = If( json?.PropertyT<Commvault.Powershell.Runtime.Json.JsonNumber>("noOfReaders"), out var __jsonNoOfReaders) ? (long?)__jsonNoOfReaders : NoOfReaders;}
            {_isVMGroupDiskFiltersIncluded = If( json?.PropertyT<Commvault.Powershell.Runtime.Json.JsonBoolean>("isVMGroupDiskFiltersIncluded"), out var __jsonIsVMGroupDiskFiltersIncluded) ? (bool?)__jsonIsVMGroupDiskFiltersIncluded : IsVMGroupDiskFiltersIncluded;}
            {_vMBackupType = If( json?.PropertyT<Commvault.Powershell.Runtime.Json.JsonString>("vmBackupType"), out var __jsonVMBackupType) ? (string)__jsonVMBackupType : (string)VMBackupType;}
            {_isApplicationAware = If( json?.PropertyT<Commvault.Powershell.Runtime.Json.JsonBoolean>("isApplicationAware"), out var __jsonIsApplicationAware) ? (bool?)__jsonIsApplicationAware : IsApplicationAware;}
            {_useVMCheckpointSetting = If( json?.PropertyT<Commvault.Powershell.Runtime.Json.JsonBoolean>("useVMCheckpointSetting"), out var __jsonUseVMCheckpointSetting) ? (bool?)__jsonUseVMCheckpointSetting : UseVMCheckpointSetting;}
            {_transportMode = If( json?.PropertyT<Commvault.Powershell.Runtime.Json.JsonString>("transportMode"), out var __jsonTransportMode) ? (string)__jsonTransportMode : (string)TransportMode;}
            {_datastoreFreespaceCheck = If( json?.PropertyT<Commvault.Powershell.Runtime.Json.JsonBoolean>("datastoreFreespaceCheck"), out var __jsonDatastoreFreespaceCheck) ? (bool?)__jsonDatastoreFreespaceCheck : DatastoreFreespaceCheck;}
            {_datastoreFreespaceRequired = If( json?.PropertyT<Commvault.Powershell.Runtime.Json.JsonNumber>("datastoreFreespaceRequired"), out var __jsonDatastoreFreespaceRequired) ? (long?)__jsonDatastoreFreespaceRequired : DatastoreFreespaceRequired;}
            {_collectFileDetailsforGranularRecovery = If( json?.PropertyT<Commvault.Powershell.Runtime.Json.JsonBoolean>("collectFileDetailsforGranularRecovery"), out var __jsonCollectFileDetailsforGranularRecovery) ? (bool?)__jsonCollectFileDetailsforGranularRecovery : CollectFileDetailsforGranularRecovery;}
            {_collectFileDetailsFromSnapshotCopy = If( json?.PropertyT<Commvault.Powershell.Runtime.Json.JsonBoolean>("collectFileDetailsFromSnapshotCopy"), out var __jsonCollectFileDetailsFromSnapshotCopy) ? (bool?)__jsonCollectFileDetailsFromSnapshotCopy : CollectFileDetailsFromSnapshotCopy;}
            {_jobStartTime = If( json?.PropertyT<Commvault.Powershell.Runtime.Json.JsonNumber>("jobStartTime"), out var __jsonJobStartTime) ? (long?)__jsonJobStartTime : JobStartTime;}
            AfterFromJson(json);
        }
    }
}