Public/Add-DDTag.ps1
function Add-DDTag { <# .SYNOPSIS Add tags to a host. .DESCRIPTION .PARAMETER Hostname A hostname as shown on Datadog's Infrastructure List page. .Parameter Tags String or array of strings representing the tags to apply to the host. .PARAMETER Source Specify a source for the tags. Valid sources are: nagios, hudson, jenkins, users, feed, chef, puppet, git, bitbucket, fabric, capistrano. .EXAMPLE # Add a tag 'role:frontend' coming from Nagios to host 'myhost' Add-DDTag -Hostname 'myhost' -Tags 'role:frontend' -Source 'nagios' .LINK http://docs.datadoghq.com/api/?lang=console#tags-add .FUNCTIONALITY #> [CmdletBinding()] param ( [Parameter( Position=0, Mandatory=$True, ValueFromPipeline=$True, ValueFromPipelineByPropertyName=$True, ValueFromRemainingArguments=$True )] [Alias('Computername')] [ValidateNotNullOrEmpty()] [string]$Hostname, [Parameter( Position=1, Mandatory=$True, ValueFromPipeline=$True, ValueFromPipelineByPropertyName=$True, ValueFromRemainingArguments=$True )] [ValidateNotNullOrEmpty()] [string[]]$Tags, [Parameter( Position=2, Mandatory=$False, ValueFromPipeline=$False, ValueFromRemainingArguments=$True )] [ValidateNotNullOrEmpty()] [ValidateSet('nagios', 'hudson', 'jenkins', 'users', 'feed', 'chef', 'puppet', 'git', 'bitbucket', 'fabric', 'capistrano' )] [string]$Source ) process { $Body = @{} $Body.Add('tags',$Tags) if ($Source) { $Body.Add('source',$Source) } $result = New-DDQuery -EndPoint "/tags/hosts/$Hostname" -Method 'Post' -Body ($Body | ConvertTo-Json) -RequiresApplicationKey -ErrorAction Stop $defaultDisplaySet = 'tags' $defaultDisplayPropertySet = New-Object System.Management.Automation.PSPropertySet('DefaultDisplayPropertySet',[string[]]$defaultDisplaySet) $PSStandardMembers = [System.Management.Automation.PSMemberInfo[]]@($defaultDisplayPropertySet) $result | Add-Member MemberSet PSStandardMembers $PSStandardMembers return $result } } |