REST API Host anlegen mit Label (Powershell)

Hallo zusammen,

ich habe folgendes Powershell Script geschrieben um einen Host anzulegen:

$HOST_NAME= “name”
$SITE_NAME= “site”
$API_URL= “https://$HOST_NAME/$SITE_NAME/check_mk/api/1.0/domain-types/host_config/collections/all”

$USERNAME= “automation”
$PASSWORD= "secret

$Headers = @{
‘Accept’ = ‘application/json’
‘Authorization’ = “Bearer $USERNAME $PASSWORD”
‘Content-Type’ = ‘application/json’
}

$body = "
{
"folder“:"~test”,
"host_name“:"myserver1234”,
"attributes":{
"ipaddress“:"192.168.0.42”,
"labels":{
"agent": "snmp_v3"
}
}
}
"

Invoke-RestMethod -Method Post -Uri $API_URL -Headers $Headers -Body $body

Das Problem ist, dass er es nicht schafft das Label anzulegen. Dort kommt die Fehlermeldung:
Invoke-RestMethod : {“title”: “Bad Request”, “status”: 400, “detail”: “These fields have problems: attributes”, “fields”: {“attributes”: {“labels”: [“Not a valid string.”]}}}

Führe ich das Script ohne die Zeilen des Label hinzufügen aus, wird der Host fehlerfrei angelegt.

Hi,

hast du es mal mit einem anderen Label, z.B. { “test”: “test1” } versucht? Vielleicht kann die API nicht mit “_” umgehen. Bei mir funktioniert es, mit :

"labels": {"test": "true", "app/test": "cmk"}

Viele Grüße,
Christian

Hi,

danke für deine Antwort.
ich habe es mit hiermit ausprobiert und es kommt immer noch die selbe Fehlermeldung.

$body = "
{
"folder“:"~test”,
"host_name“:"myserver1234”,
"attributes":{
"ipaddress“:"192.168.0.42”,
"labels":{
"test“:"true
}
}
}
"

Hast du mal das probiert:

$body = @"
{
    "folder“:"~test”,
    "host_name“:"myserver1234”,
    "attributes":{
        "ipaddress“:"192.168.0.42”,
        "labels":{
        "test“:"true” 
        }
    }
}
"@

$body = @"
{
"folder“:"~test”,
"host_name“:"myserver1234”,
"attributes":{
"ipaddress“:"192.168.0.42”,
"labels":{
"test“:"true
}
}
}
"@

Leider keine Veränderung. (Invoke-RestMethod : {“title”: “Bad Request”, “status”: 400, “detail”: “These fields have problems: attributes”, “fields”: {“attributes”: {“labels”: [“Not a valid string.”]}}})

Hallo Lars,
Labels funktionieren auch mit “_”. Ich habe mir Deinen Code aus dem Forum kopiert - musste dann ein paar " Zeichen ändern und dann konnte ich die Aktion in der interaktiven REST-API GUI problemlos ausführen. Das hat funktioniert:

{
"folder":"~test",
"host_name":"myserver1234",
"attributes":{
"ipaddress":"192.168.0.42",
"labels":{
"agent":"snmp_v3"
}
}
}

D.h. der Inhalt stimmt - möglicherweise ist in der Formatierung mit " ein Fehler.

Karl