Private/Deploy-EdgeAsset.ps1
# Copyright 2017 Google Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # https://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. Function Deploy-EdgeAsset { <# .SYNOPSIS Deploy an apiproxy or sharedflow in Apigee Edge. #> [cmdletbinding()] param( [Parameter(Mandatory=$True)][string]$AssetType, [Parameter(Mandatory=$True)][string]$Name, [Parameter(Mandatory=$True)][string]$Environment, [Parameter(Mandatory=$True)][string]$Revision, [string]$Org, [string]$Basepath, [Hashtable]$Params ) if (!$PSBoundParameters['AssetType']) { throw [System.ArgumentNullException] "AssetType", "You must specify the -AssetType option." } if ($PSBoundParameters['Debug']) { $DebugPreference = 'Continue' } if (!$PSBoundParameters['Name']) { throw [System.ArgumentNullException] "Name", "You must specify the -Name option." } if (!$PSBoundParameters['Environment']) { throw [System.ArgumentNullException] "Environment", "You must specify the -Environment option." } if (!$PSBoundParameters['Revision']) { throw [System.ArgumentNullException] "Revision", "You must specify the -Revision option." } if( ! $PSBoundParameters['Org']) { if( ! $MyInvocation.MyCommand.Module.PrivateData.Connection['Org']) { throw [System.ArgumentNullException] "Org", "use the -Org parameter to specify the organization." } else { $Org = $MyInvocation.MyCommand.Module.PrivateData.Connection['Org'] } } if( ! $MyInvocation.MyCommand.Module.PrivateData.Connection['MgmtUri']) { throw [System.ArgumentNullException] 'MgmtUri', 'use Set-EdgeConnection to specify the Edge connection information.' } $MgmtUri = $MyInvocation.MyCommand.Module.PrivateData.Connection['MgmtUri'] $BaseUri = Join-Parts -Separator '/' -Parts $MgmtUri, '/v1/o', $Org, 'e', $Environment, $AssetType, $Name, 'revisions', $Revision, 'deployments' # These parameters go into the form body payload. $RequestBody = @{ action = 'deploy' override = if (($Params -ne $Null) -and ($Params['override'] -ne "") -and ($Params['override'] -ne $Null)) { $Params['override'] } else { 'true' } } if (($Params -ne $Null) -and ($Params['delay'] -ne "") -and ($Params['delay'] -ne $Null)) { $RequestBody['delay'] = $Params['delay'] } if ($AssetType -eq "apis") { if ($PSBoundParameters['Basepath']) { $RequestBody['basepath'] = $Basepath } } $IRMParams = @{ Uri = $BaseUri Method = 'POST' Headers = @{ Accept = 'application/json' 'content-type' = 'application/x-www-form-urlencoded' } # this hash will transform into postbody Body = $RequestBody } Apply-EdgeAuthorization -MgmtUri $MgmtUri -IRMParams $IRMParams Try { Write-Debug ( "Deploy-EdgeAsset Uri $BaseUri`n" ) $TempResult = Invoke-RestMethod @IRMParams Write-Debug "Raw:`n$($TempResult | Out-String)" } Catch { Throw $_ } Finally { Remove-Variable IRMParams } $TempResult } |