Private/Resolve-CloudInstanceInput.ps1
|
function Resolve-CloudInstanceInput { [CmdletBinding()] param( [psobject]$InputObject, [string]$Provider, [string]$Name, [string]$ResourceGroup, [string]$InstanceId, [string]$Region, [string]$Project, [string]$Zone ) if ($InputObject) { if ([string]::IsNullOrWhiteSpace($Provider) -and $InputObject.PSObject.Properties['Provider']) { $Provider = $InputObject.Provider } $metadata = $null if ($InputObject.PSObject.Properties['Metadata']) { $metadata = $InputObject.Metadata } switch ($Provider) { 'Azure' { if ([string]::IsNullOrWhiteSpace($Name) -and $InputObject.PSObject.Properties['Name']) { $Name = $InputObject.Name } if ([string]::IsNullOrWhiteSpace($ResourceGroup) -and $metadata -and $metadata.ResourceGroup) { $ResourceGroup = $metadata.ResourceGroup } } 'AWS' { if ([string]::IsNullOrWhiteSpace($InstanceId) -and $metadata -and $metadata.InstanceId) { $InstanceId = $metadata.InstanceId } if ([string]::IsNullOrWhiteSpace($InstanceId) -and $metadata -and $metadata.Id) { $InstanceId = $metadata.Id } if ([string]::IsNullOrWhiteSpace($Name) -and $InputObject.PSObject.Properties['Name']) { $Name = $InputObject.Name } } 'GCP' { if ([string]::IsNullOrWhiteSpace($Name) -and $InputObject.PSObject.Properties['Name']) { $Name = $InputObject.Name } if ([string]::IsNullOrWhiteSpace($Project) -and $metadata -and $metadata.Project) { $Project = $metadata.Project } if ([string]::IsNullOrWhiteSpace($Zone) -and $metadata -and $metadata.Zone) { $Zone = $metadata.Zone } } default { if ([string]::IsNullOrWhiteSpace($Name) -and $InputObject.PSObject.Properties['Name']) { $Name = $InputObject.Name } } } } [pscustomobject]@{ Provider = $Provider Name = $Name ResourceGroup = $ResourceGroup InstanceId = $InstanceId Region = $Region Project = $Project Zone = $Zone } } |