Public/Update-EdgeKvmEntry.ps1

Function Update-EdgeKvmEntry {
    <#
    .SYNOPSIS
        Update a named entry in a key-value map in Apigee Edge.

    .DESCRIPTION
        Update a named entry in a key-value map in Apigee Edge.
        The KVM must exist, and the entry must exist. This works only on CPS-enabled organizations.

    .PARAMETER Name
        The name of the key-value map, in which the entry exists.

    .PARAMETER Entry
        Required. The name (or key) of the value to update.

    .PARAMETER NewValue
        Required. A string value to use for the entry.
          
    .PARAMETER Env
        Optional. A string, the name of the environment for this key-value map.
        The default behavior is to create an organization-wide KVM.

    .PARAMETER Org
        Optional. The Apigee Edge organization. The default is to use the value from Set-EdgeConnection.

    .EXAMPLE
        Update-EdgeKvmEntry -Name kvm101 -Env test -Entry key1 -NewValue 'updated value'

    .FUNCTIONALITY
        ApigeeEdge
    #>


    [cmdletbinding()]
    PARAM(
        [Parameter(Mandatory=$True)][string]$Name,
        [Parameter(Mandatory=$True)][string]$Entry,
        [Parameter(Mandatory=$True)][string]$NewValue,
        [string]$Env,
        [string]$Org
    )
    
    $Options = @{ }
    
    if ($PSBoundParameters['Debug']) {
        $DebugPreference = 'Continue'
        $Options.Add( 'Debug', $Debug )
    }
    if ($PSBoundParameters['Org']) {
        $Options.Add( 'Org', $Org )
    }

    if (!$PSBoundParameters['Name']) {
      throw [System.ArgumentNullException] "Name", "You must specify the -Name option."
    }
    if (!$PSBoundParameters['Entry']) {
      throw [System.ArgumentNullException] "Entry", "You must specify the -Entry option."
    }
    if (!$PSBoundParameters['NewValue']) {
      throw [System.ArgumentNullException] "NewValue", "You must specify the -NewValue option."
    }
    
    $basepath = if ($PSBoundParameters['Env']) {
        $( Join-Parts -Separator '/' -Parts 'e', $Env, 'keyvaluemaps' )
    }
    else {
        'keyvaluemaps'
    }
    
    $Options.Add( 'Collection', $( Join-Parts -Separator '/' -Parts $basepath, $Name, 'entries', $Entry ) )
    $Options.Add( 'Payload', @{ name = $Entry; value = $NewValue } )

    Write-Debug ([string]::Format("Options {0}`n", $( ConvertTo-Json $Options -Compress ) ) )
    
    Send-EdgeRequest @Options
}