// ===============================================================
//  MetaConfiguration
// ===============================================================
[ClassVersion("1.0.0"),Description("Local Configuration Manager settings.")] 
class MSFT_DSCMetaConfiguration
{
   [Description ("The time interval between consecutive runs for reapplying the configuration to get to the desired state." )]
   uint32 ConfigurationModeFrequencyMins;

   [Description ("Reboot node if needed.")] 
   boolean RebootNodeIfNeeded;

   [Description ("The configuration apply mode for the server."),
   ValueMap {"ApplyOnly","ApplyAndMonitor","ApplyAndAutoCorrect"},
   Values {"ApplyOnly","ApplyAndMonitor","ApplyAndAutoCorrect"}]
   string ConfigurationMode;

   [EmbeddedInstance("MSFT_Credential"),
   Description ("Default credential to access resources." )]
   string Credential;

   [Description ("The refresh mode for the server. Valid values are Pull and Push." ),
   ValueMap {"Push","Pull"},
   Values {"Push","Pull"}]
   string  RefreshMode;  

   [Description ("The certificate ID used to locate the certificate." )]
   string  CertificateID;

   [Description ("The configuration ID used to get the configuration from the pull server." )]
   string  ConfigurationID;       

   [Description ("Name of the configuration and module Download Manager." )]
   string  DownloadManagerName;    

   [Description ("Custom data that is specific to Download Manager." ),
   EmbeddedInstance("MSFT_KeyValuePair")]
   string  DownloadManagerCustomData[];    

   [Description ("The time interval between consecutive runs to get the action from the server." )]
   uint32  RefreshFrequencyMins;    

   [Description ("Overwrite modules when downloading from Pull Server." )]
   boolean AllowModuleOverwrite;

   [Read, Description("Current state of local configuration manager."),
   ValueMap{"Ready","Busy","PendingReboot"},
   Values{"Ready","Busy","PendingReboot"}] 
   string LocalConfigurationManagerState;
  
     [Description ("Array of configuration download manager objects that contain location information to download configurations" ) ,
   EmbeddedInstance("OMI_ConfigurationDownloadManager")]
   string  ConfigurationDownloadManagers[];    

   [Description ("Array of resource module managers pointing to a location to download missing DSCResources" ) ,
   EmbeddedInstance("OMI_ResourceModuleManager")]
   string  ResourceModuleManagers[];    

   [Description ("Array of report managers pointing to a location that would help generate reports for DSC" ) ,
   EmbeddedInstance("OMI_ReportManager")]
   string  ReportManagers[];  

  [EmbeddedInstance("MSFT_PartialConfiguration")] string PartialConfigurations[];
  
  
   [Description ("The action after reboot the server."),
   ValueMap {"ContinueConfiguration","StopConfiguration"},
   Values {"ContinueConfiguration","StopConfiguration"}]
   string ActionAfterReboot;
  
     [Description ("The enumeration for DebugMode."),
   ValueMap {"None","ForceModuleImport", "All", "ResourceScriptBreakAll"},
   Values {"None","ForceModuleImport", "All", "ResourceScriptBreakAll"}]
   string DebugMode[];
   
     [Read, Description("Current version of local configuration manager.")]
   string LCMVersion;

   [Read, Description("Compatible versions of current local configuration manager.")]
   string LCMCompatibleVersions[];

   [Read, Description("Current state of local configuration manager."),
   ValueMap{"Idle","Busy","PendingReboot","PendingConfiguration"},
   Values{"Idle","Busy","PendingReboot","PendingConfiguration"}] 
   string LCMState;

   [Read, Description("State detail of local configuration manager.")]
   string LCMStateDetail;

   [Description ("Number of days to retain configuration status history.")]
   uint32 StatusRetentionTimeInDays;
  
   [Read, Description("AgentId of the current Dsc Agent.")]
   string AgentId;   
   
   
   boolean EnableSignatureValidation;
   boolean DisableModuleSignatureValidation;

};
