DSCResources/Cisco_UcsSyncFromBackup/Cisco_UcsSyncFromBackup.psm1

# DSC uses the Get-TargetResource function to fetch the status of the resource instance specified in the parameters for the target machine
function Get-TargetResource 
{
    [CmdletBinding()]
    [OutputType([System.Collections.Hashtable])]
    param 
    (       
        [parameter(Mandatory = $true)]
        [System.String]
        $UcsConnectionString,

        [parameter(Mandatory = $true)]
        [System.Management.Automation.PSCredential]
        $UcsCredentials,

        [System.Management.Automation.PSCredential]
        $WebProxyCredentials,

        [ValidateSet("Present", "Absent")]
        [string]$Ensure = "Absent",
        
        [parameter(Mandatory = $true)]
        [System.String]$Identifier,
      
        [Parameter(Mandatory)]
        [string]$LiteralPath,

        [bool]$Merge
              
    )
       $result = @{     UcsConnectionString = $UcsConnectionString;
                        UcsCredentials = $null;
                        WebProxyCredentials=$null;
                        Ensure=$Ensure;
                        Identifier = $Identifier; 
                        LiteralPath = $LiteralPath;
                        Merge= $Merge;

                  }

        Write-Verbose("Completed execution of Get() method")
        $result;
} 


# The Set-TargetResource function.
function Set-TargetResource 
{
    [CmdletBinding(SupportsShouldProcess=$true)]
  param 
    (       
        [parameter(Mandatory = $true)]
        [System.String]
        $UcsConnectionString,

        [parameter(Mandatory = $true)]
        [System.Management.Automation.PSCredential]
        $UcsCredentials,

        [System.Management.Automation.PSCredential]
        $WebProxyCredentials,

        [ValidateSet("Present", "Absent")]
        [string]$Ensure = "Absent",
        
        [parameter(Mandatory = $true)]
        [System.String] $Identifier,

        [Parameter(Mandatory)]
        [string]$LiteralPath,

        [bool]$Merge
              
    )

    Write-Verbose("Started execution of Set() method")
    try
    {
        <# #>
        if($Ensure -eq "Present" )
        {
            Write-Verbose("Connection to target UCS...")
            $handle=  Get-UcsConnection -UcsConnectionString $UcsConnectionString -UcsCredentials $UcsCredentials -WebProxyCredentials $WebProxyCredentials

            if($Merge)
            {
                Write-Verbose("Executing cmdlet: Import-UcsBackup -LiteralPath $LiteralPath -Merge")
                Import-UcsBackup -LiteralPath $LiteralPath -Merge -Ucs $handle
            }
            else
            {
                Write-Verbose("Executing cmdlet: Import-UcsBackup -LiteralPath $LiteralPath")
                Import-UcsBackup -LiteralPath $LiteralPath -Ucs $handle
            }



         }
         elseif($Ensure -eq "Absent" )
        {
            Write-Verbose("Ensure ='Absent'. No further processing required.")
        }
    }
    catch
    {
        Write-Verbose("Error occurred in Set-TargetResoucrce. Disconnecting UCS(s)...")
        if($handle -ne $null)
            {$temp = Disconnect-Ucs -Ucs $handle}

        throw
    }     
    Write-Verbose("Completed execution of Set() method")
} 

function Test-TargetResource
{
[CmdletBinding()]
[OutputType([System.Boolean])]
param 
    (       
        [parameter(Mandatory = $true)]
        [System.String]
        $UcsConnectionString,

        [parameter(Mandatory = $true)]
        [System.Management.Automation.PSCredential]
        $UcsCredentials,

        [System.Management.Automation.PSCredential]
        $WebProxyCredentials,

        [ValidateSet("Present", "Absent")]
        [string]$Ensure = "Absent",
        
        [parameter(Mandatory = $true)]
        [System.String] $Identifier,

        [Parameter(Mandatory)]
        [string]$LiteralPath,

        [bool]$Merge
              
    )
       Write-Verbose("Started execution of Test-TargetResource method")

        $result = $false
         
        Write-Verbose("Completed execution of Test-TargetResource method")

        return $result 
} 

# SIG # Begin signature block
# MIIYyQYJKoZIhvcNAQcCoIIYujCCGLYCAQExDzANBglghkgBZQMEAgEFADB5Bgor
# BgEEAYI3AgEEoGswaTA0BgorBgEEAYI3AgEeMCYCAwEAAAQQH8w7YFlLCE63JNLG
# KX7zUQIBAAIBAAIBAAIBAAIBADAxMA0GCWCGSAFlAwQCAQUABCBiQuwdSctlvXp1
# T9xZ7MjwpbI4p6vcOEjnwMMpTidKYaCCExAwggQVMIIC/aADAgECAgsEAAAAAAEx
# icZQBDANBgkqhkiG9w0BAQsFADBMMSAwHgYDVQQLExdHbG9iYWxTaWduIFJvb3Qg
# Q0EgLSBSMzETMBEGA1UEChMKR2xvYmFsU2lnbjETMBEGA1UEAxMKR2xvYmFsU2ln
# bjAeFw0xMTA4MDIxMDAwMDBaFw0yOTAzMjkxMDAwMDBaMFsxCzAJBgNVBAYTAkJF
# MRkwFwYDVQQKExBHbG9iYWxTaWduIG52LXNhMTEwLwYDVQQDEyhHbG9iYWxTaWdu
# IFRpbWVzdGFtcGluZyBDQSAtIFNIQTI1NiAtIEcyMIIBIjANBgkqhkiG9w0BAQEF
# AAOCAQ8AMIIBCgKCAQEAqpuOw6sRUSUBtpaU4k/YwQj2RiPZRcWVl1urGr/SbFfJ
# MwYfoA/GPH5TSHq/nYeer+7DjEfhQuzj46FKbAwXxKbBuc1b8R5EiY7+C94hWBPu
# TcjFZwscsrPxNHaRossHbTfFoEcmAhWkkJGpeZ7X61edK3wi2BTX8QceeCI2a3d5
# r6/5f45O4bUIMf3q7UtxYowj8QM5j0R5tnYDV56tLwhG3NKMvPSOdM7IaGlRdhGL
# D10kWxlUPSbMQI2CJxtZIH1Z9pOAjvgqOP1roEBlH1d2zFuOBE8sqNuEUBNPxtyL
# ufjdaUyI65x7MCb8eli7WbwUcpKBV7d2ydiACoBuCQIDAQABo4HoMIHlMA4GA1Ud
# DwEB/wQEAwIBBjASBgNVHRMBAf8ECDAGAQH/AgEAMB0GA1UdDgQWBBSSIadKlV1k
# sJu0HuYAN0fmnUErTDBHBgNVHSAEQDA+MDwGBFUdIAAwNDAyBggrBgEFBQcCARYm
# aHR0cHM6Ly93d3cuZ2xvYmFsc2lnbi5jb20vcmVwb3NpdG9yeS8wNgYDVR0fBC8w
# LTAroCmgJ4YlaHR0cDovL2NybC5nbG9iYWxzaWduLm5ldC9yb290LXIzLmNybDAf
# BgNVHSMEGDAWgBSP8Et/qC5FJK5NUPpjmove4t0bvDANBgkqhkiG9w0BAQsFAAOC
# AQEABFaCSnzQzsm/NmbRvjWek2yX6AbOMRhZ+WxBX4AuwEIluBjH/NSxN8RooM8o
# agN0S2OXhXdhO9cv4/W9M6KSfREfnops7yyw9GKNNnPRFjbxvF7stICYePzSdnno
# 4SGU4B/EouGqZ9uznHPlQCLPOc7b5neVp7uyy/YZhp2fyNSYBbJxb051rvE9ZGo7
# Xk5GpipdCJLxo/MddL9iDSOMXCo4ldLA1c3PiNofKLW6gWlkKrWmotVzr9xG2wSu
# kdduxZi61EfEVnSAR3hYjL7vK/3sbL/RlPe/UOB74JD9IBh4GCJdCC6MHKCX8x2Z
# faOdkdMGRE4EbnocIOM28LZQuTCCBLkwggOhoAMCAQICEhEh7ZAYyqknt2JsUmuQ
# bZP1ZzANBgkqhkiG9w0BAQsFADBbMQswCQYDVQQGEwJCRTEZMBcGA1UEChMQR2xv
# YmFsU2lnbiBudi1zYTExMC8GA1UEAxMoR2xvYmFsU2lnbiBUaW1lc3RhbXBpbmcg
# Q0EgLSBTSEEyNTYgLSBHMjAeFw0xNjA1MjQwMDAwMDBaFw0yNzA2MjQwMDAwMDBa
# MGkxCzAJBgNVBAYTAlNHMR8wHQYDVQQKExZHTU8gR2xvYmFsU2lnbiBQdGUgTHRk
# MTkwNwYDVQQDEzBHbG9iYWxTaWduIFRTQSBmb3IgTVMgQXV0aGVudGljb2RlIGFk
# dmFuY2VkIC0gRzIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDZeGGh
# lq4S/6P/J/ZEYHtqVi1n41+fMZIqSO35BYQObU4iVsrYmZeOacqfew8IyCoraNEo
# YSuf5Cbuurj3sOxeahviWLW0vR0J7c3oPdRm/74iIm02Js8ReJfpVQAow+k3Tr0Z
# 5ReESLIcIa3sc9LzqKfpX+g1zoUTpyKbrILp/vFfxBJasfcMQObSoOBNaNDtDAwQ
# HY8FX2RV+bsoRwYM2AY/N8MmNiWMew8niFw4MaUB9l5k3oPAFFzg59JezI3qI4AZ
# KrNiLmDHqmfWs0DuUn9WDO/ZBdeVIF2FFUDPXpGVUZ5GGheRvsHAB3WyS/c2usVU
# bF+KG/sNKGHIifAVAgMBAAGjggFnMIIBYzAOBgNVHQ8BAf8EBAMCB4AwTAYDVR0g
# BEUwQzBBBgkrBgEEAaAyAR4wNDAyBggrBgEFBQcCARYmaHR0cHM6Ly93d3cuZ2xv
# YmFsc2lnbi5jb20vcmVwb3NpdG9yeS8wCQYDVR0TBAIwADAWBgNVHSUBAf8EDDAK
# BggrBgEFBQcDCDBGBgNVHR8EPzA9MDugOaA3hjVodHRwOi8vY3JsLmdsb2JhbHNp
# Z24uY29tL2dzL2dzdGltZXN0YW1waW5nc2hhMmcyLmNybDBYBggrBgEFBQcBAQRM
# MEowSAYIKwYBBQUHMAKGPGh0dHA6Ly9zZWN1cmUuZ2xvYmFsc2lnbi5jb20vY2Fj
# ZXJ0L2dzdGltZXN0YW1waW5nc2hhMmcyLmNydDAdBgNVHQ4EFgQU1Ie4jeblQDyd
# WgZjxkWE2d27HMMwHwYDVR0jBBgwFoAUkiGnSpVdZLCbtB7mADdH5p1BK0wwDQYJ
# KoZIhvcNAQELBQADggEBABoNyP1vM0bImb43n4V/cnSxcc06JzuIVi37tGenLYff
# KO1667xpZdausb09yZuHFFrHHYfznXWCVD+Vd3XztEpqa5bvGaLH9y7tkBvUEY3K
# So2uf3J3uV/eUfQhPuWkZzteLiDC8ZeeeurddHqy+0MEr/rotNESYXqW6WWOT20i
# pdcM56kNGJ+29yN/LRgAntrES7Pn4QJwQPw9RSrLhph3XeDyLHewBRqkAkZruhsR
# C+rn5sHU7jMjMgCappWM+ioqyY2tZC+Lvtf/OvNDj84v1ky7ta8SgXko9x+7hRCK
# P8nTyPi0c2TE5yBMWRvKiTTR7MKKCtZ51dovtPZ1554wggTZMIIDwaADAgECAhAg
# dYM+s4RF6K1Qb3IlJSFAMA0GCSqGSIb3DQEBCwUAMH8xCzAJBgNVBAYTAlVTMR0w
# GwYDVQQKExRTeW1hbnRlYyBDb3Jwb3JhdGlvbjEfMB0GA1UECxMWU3ltYW50ZWMg
# VHJ1c3QgTmV0d29yazEwMC4GA1UEAxMnU3ltYW50ZWMgQ2xhc3MgMyBTSEEyNTYg
# Q29kZSBTaWduaW5nIENBMB4XDTE2MTEwOTAwMDAwMFoXDTE5MTEyNjIzNTk1OVow
# cTELMAkGA1UEBhMCVVMxEzARBgNVBAgMCkNhbGlmb3JuaWExETAPBgNVBAcMCFNh
# biBKb3NlMRwwGgYDVQQKDBNDaXNjbyBTeXN0ZW1zLCBJbmMuMRwwGgYDVQQDDBND
# aXNjbyBTeXN0ZW1zLCBJbmMuMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC
# AQEAsuVUjhvmUZmLRkdteMgyU8Mu8XoLvGMcle2lHnNO9rGdA2+Oz7nviMATnvJG
# MXHCYqpaqjIcqhI07dieXGNST9u4OTjeb9AjWq2uz7XiLgqKneWYzYg4l4Wx0vGm
# w9ZIN1qS8WrLP4fVbXbrpfjYTku1ST0ouq38I/X21sDiRvISxJGMl9D5m+6BTKTY
# 1hNnwZqKsk+veV33GWzsY4jgm0Ix+q/Z6WFRHnS8z1h5zrqKXgY2BLgB/fdLPY7Z
# cDc5zPTaSbtd1LmxMisdlKOkClASa66AkGbbBhDSXA6V01sxbrVUD+8yw5HxjSkB
# dvaGiv163Z50O9jbUZhAKjeTBQIDAQABo4IBXTCCAVkwCQYDVR0TBAIwADAOBgNV
# HQ8BAf8EBAMCB4AwKwYDVR0fBCQwIjAgoB6gHIYaaHR0cDovL3N2LnN5bWNiLmNv
# bS9zdi5jcmwwYQYDVR0gBFowWDBWBgZngQwBBAEwTDAjBggrBgEFBQcCARYXaHR0
# cHM6Ly9kLnN5bWNiLmNvbS9jcHMwJQYIKwYBBQUHAgIwGQwXaHR0cHM6Ly9kLnN5
# bWNiLmNvbS9ycGEwEwYDVR0lBAwwCgYIKwYBBQUHAwMwVwYIKwYBBQUHAQEESzBJ
# MB8GCCsGAQUFBzABhhNodHRwOi8vc3Yuc3ltY2QuY29tMCYGCCsGAQUFBzAChhpo
# dHRwOi8vc3Yuc3ltY2IuY29tL3N2LmNydDAfBgNVHSMEGDAWgBSWO1PweTOXr32D
# 7y4rzMq3hh5yZjAdBgNVHQ4EFgQUwmh+ziCvAomdQWbz+MKGFJTJWoAwDQYJKoZI
# hvcNAQELBQADggEBACgChN6Dp2LOyxEkn3a3TpgUR0j47OO/XZHDxjVD9Int6bCI
# WoXKlD1j+U9L0uSBfHMgVYFeYLEWw8+kZCHRIb7nqib7ahmSPboTami7bfzaYFJF
# b8ZttE+gYYM9Dgfa5/keTiu7gCr9EZqQliTcHXS7S8xkBgqijmoc8MgN1M9Npg6U
# /PKH7tMdIlYI6qUK9JCx3hsADBqsk791vtC8gNUS3e0CyWX/M4BZNBUW7ys2Ohpd
# YcWjwnYm4Wu9wCDOgDP02yXx/9f9midjg7UVV4D5Ngh1+kg8mWRHW2wmLW0knvi6
# wpPlXhnR1fwlWAniCdO2MKfxgL3FaKFQ8NqlyNAwggVZMIIEQaADAgECAhA9eNf5
# dklgsmF99PAeyoYqMA0GCSqGSIb3DQEBCwUAMIHKMQswCQYDVQQGEwJVUzEXMBUG
# A1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRydXN0IE5l
# dHdvcmsxOjA4BgNVBAsTMShjKSAyMDA2IFZlcmlTaWduLCBJbmMuIC0gRm9yIGF1
# dGhvcml6ZWQgdXNlIG9ubHkxRTBDBgNVBAMTPFZlcmlTaWduIENsYXNzIDMgUHVi
# bGljIFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBHNTAeFw0xMzEy
# MTAwMDAwMDBaFw0yMzEyMDkyMzU5NTlaMH8xCzAJBgNVBAYTAlVTMR0wGwYDVQQK
# ExRTeW1hbnRlYyBDb3Jwb3JhdGlvbjEfMB0GA1UECxMWU3ltYW50ZWMgVHJ1c3Qg
# TmV0d29yazEwMC4GA1UEAxMnU3ltYW50ZWMgQ2xhc3MgMyBTSEEyNTYgQ29kZSBT
# aWduaW5nIENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAl4MeABav
# LLHSCMTXaJNRYB5x9uJHtNtYTSNiarS/WhtR96MNGHdou9g2qy8hUNqe8+dfJ04L
# wpfICXCTqdpcDU6kDZGgtOwUzpFyVC7Oo9tE6VIbP0E8ykrkqsDoOatTzCHQzM9/
# m+bCzFhqghXuPTbPHMWXBySO8Xu+MS09bty1mUKfS2GVXxxw7hd924vlYYl4x2gb
# rxF4GpiuxFVHU9mzMtahDkZAxZeSitFTp5lbhTVX0+qTYmEgCscwdyQRTWKDtrp7
# aIIx7mXK3/nVjbI13Iwrb2pyXGCEnPIMlF7AVlIASMzT+KV93i/XE+Q4qITVRrgT
# hsIbnepaON2b2wIDAQABo4IBgzCCAX8wLwYIKwYBBQUHAQEEIzAhMB8GCCsGAQUF
# BzABhhNodHRwOi8vczIuc3ltY2IuY29tMBIGA1UdEwEB/wQIMAYBAf8CAQAwbAYD
# VR0gBGUwYzBhBgtghkgBhvhFAQcXAzBSMCYGCCsGAQUFBwIBFhpodHRwOi8vd3d3
# LnN5bWF1dGguY29tL2NwczAoBggrBgEFBQcCAjAcGhpodHRwOi8vd3d3LnN5bWF1
# dGguY29tL3JwYTAwBgNVHR8EKTAnMCWgI6Ahhh9odHRwOi8vczEuc3ltY2IuY29t
# L3BjYTMtZzUuY3JsMB0GA1UdJQQWMBQGCCsGAQUFBwMCBggrBgEFBQcDAzAOBgNV
# HQ8BAf8EBAMCAQYwKQYDVR0RBCIwIKQeMBwxGjAYBgNVBAMTEVN5bWFudGVjUEtJ
# LTEtNTY3MB0GA1UdDgQWBBSWO1PweTOXr32D7y4rzMq3hh5yZjAfBgNVHSMEGDAW
# gBR/02Wnwt3su/AwCfNDOfoCrzMxMzANBgkqhkiG9w0BAQsFAAOCAQEAE4UaHmmp
# N/egvaSvfh1hU/6djF4MpnUeeBcj3f3sGgNVOftxlcdlWqeOMNJEWmHbcG/aIQXC
# LnO6SfHRk/5dyc1eA+CJnj90Htf3OIup1s+7NS8zWKiSVtHITTuC5nmEFvwosLFH
# 8x2iPu6H2aZ/pFalP62ELinefLyoqqM9BAHqupOiDlAiKRdMh+Q6EV/WpCWJmwVr
# L7TJAUwnewusGQUioGAVP9rJ+01Mj/tyZ3f9J5THujUOiEn+jf0or0oSvQ2zlwXe
# RAwV+jYrA9zBUAHxoRFdFOXivSdLVL4rhF4PpsN0BQrvl8OJIrEfd/O9zUPU8Uyp
# P7WLhK9k8tAUITGCBQ8wggULAgEBMIGTMH8xCzAJBgNVBAYTAlVTMR0wGwYDVQQK
# ExRTeW1hbnRlYyBDb3Jwb3JhdGlvbjEfMB0GA1UECxMWU3ltYW50ZWMgVHJ1c3Qg
# TmV0d29yazEwMC4GA1UEAxMnU3ltYW50ZWMgQ2xhc3MgMyBTSEEyNTYgQ29kZSBT
# aWduaW5nIENBAhAgdYM+s4RF6K1Qb3IlJSFAMA0GCWCGSAFlAwQCAQUAoIGEMBgG
# CisGAQQBgjcCAQwxCjAIoAKAAKECgAAwGQYJKoZIhvcNAQkDMQwGCisGAQQBgjcC
# AQQwHAYKKwYBBAGCNwIBCzEOMAwGCisGAQQBgjcCARUwLwYJKoZIhvcNAQkEMSIE
# IF53O5coo9tD3kpJaJ1l3SBHjpr5HU3srC0yeP+JfR74MA0GCSqGSIb3DQEBAQUA
# BIIBAGrg3R0ohcBmVMCT0tbUoWIoJwxUULhK3B+NHwikUNPls3wqjfaNCDzq3d57
# KFzX+XYF1MpQPynVzh2HU9VJLtLWT1t/DiEZlIs+GlJOibvkdPbV3NTrmqgkp0Ah
# sp6sBVpRDMi65Fpo+b3nKd/bBOCvuNeYphsqOuFsAevc6Y9D+SyNK5O0PYESJ6fq
# H2BEIIykD76MP7E/gZTvMTxbmnsoo3PQn2uhWTLbBbMZRE3vfvh47EBOsWgeosAW
# vxNTF66GR/jQzMBizh1m/fnFhTYT9cOI1tMEXOFai8UbkYm0cjsXS4q31M23kNa3
# Pkj8q27sB/Du45OfU2mBDvwYi0+hggLFMIICwQYJKoZIhvcNAQkGMYICsjCCAq4C
# AQEwcTBbMQswCQYDVQQGEwJCRTEZMBcGA1UEChMQR2xvYmFsU2lnbiBudi1zYTEx
# MC8GA1UEAxMoR2xvYmFsU2lnbiBUaW1lc3RhbXBpbmcgQ0EgLSBTSEEyNTYgLSBH
# MgISESHtkBjKqSe3YmxSa5Btk/VnMA0GCWCGSAFlAwQCAQUAoIIBEjAYBgkqhkiG
# 9w0BCQMxCwYJKoZIhvcNAQcBMBwGCSqGSIb3DQEJBTEPFw0xNzExMTQxNzE4MzJa
# MC8GCSqGSIb3DQEJBDEiBCAUWqJevEw4HNtLKirj9wd3p5N1g4NUKGUl/HwpSSDl
# 4DCBpgYLKoZIhvcNAQkQAgwxgZYwgZMwgZAwgY0EFDfAQYyoSAu6zgLgAOyIRq09
# tpHsMHUwX6RdMFsxCzAJBgNVBAYTAkJFMRkwFwYDVQQKExBHbG9iYWxTaWduIG52
# LXNhMTEwLwYDVQQDEyhHbG9iYWxTaWduIFRpbWVzdGFtcGluZyBDQSAtIFNIQTI1
# NiAtIEcyAhIRIe2QGMqpJ7dibFJrkG2T9WcwDQYJKoZIhvcNAQEBBQAEggEAY+8/
# GNmVg+qoC093tHSVFGUZs5fTA9eRm4WV1XNV+SYmgg3jomzSvZ+1YDWbxalLq+CQ
# eVDDIGP9n+KxFPyUPTYIoDl7sdimBarCvxoJCyKF1S6E3svuUZQSNXjHGkjoZU63
# Ru69njWHbSsJiDWcd3grA+TkQHRIIQ5m5UiagtO2eAKReYjoVNFkFL/wv4guUnbR
# RK89X1vezsORONUQWJp4yi5HuRSHDj7uTVF/j+Ov/k5JGRoP25Pb6SoK5MaQI2Bs
# NkAg4gHBnM2GdV4lbTSADO5Ea02q903euyCPmJ0TP5ClP0n1Oy1DtFanvBr+WjMJ
# lvt6wBCr/FjzgqF1Yg==
# SIG # End signature block