InternalFunctions/Add-RelatedObject.ps1
function Add-RelatedObject { param( $InputObject, $ItemType, $RelatedType, $RelationProperty, $RelationCommand, [Hashtable]$Cache = @{}, [Switch]$PassThru ) $Relations = Invoke-GetAnsibleInternalJsonResult -ItemType $ItemType -Id $InputObject.Id -ItemSubItem $RelatedType -AnsibleTower $InputObject.AnsibleTower foreach($Relation in $Relations) { Write-Debug "Adding $RelatedType $($Relation.Id) to $ItemType $($InputObject.Id)" $RelationKey = "$RelatedType/$($Relation.Id)" $RelatedObject = $InputObject.AnsibleTower.Cache.Get($RelationKey) if(!$RelatedObject) { $RelatedObject = &$RelationCommand -Id $Relation.Id -AnsibleTower $InputObject.AnsibleTower $InputObject.AnsibleTower.Cache.Add($RelationKey, $RelatedObject, $Script:CachePolicy) } if(!$InputObject."$RelationProperty") { $InputObject."$RelationProperty" = $RelatedObject } else { $InputObject."$RelationProperty".Add($RelatedObject) } } if($PassThru) { $InputObject } } |