2015-11-27 3 views
1

Я ищу способ запланировать простоя в icinga2 с оригинальным скриптом.Как запланировать простоя в icinga2, используя icinga-api с groovy?

Я уже пробовал создать небольшой отличный скрипт. Пробовал использовать примеры из документации icinga:

 
curl -u root:icinga -k -s 'https://localhost:5665/v1/actions/schedule-downtime?type=Host&filter=host.vars.os==%22Linux%22' -d '{ "author" : "michi", "comment": "Maintenance.", "start_time": 1441136260, "end_time": 1441137260, "duration": 1000 }' -X POST | python -m json.tool 

, но адаптация этого к моему сценарию не помогла. Очень важными являются "вокруг каждого имени атрибута, я отметил

ответ

2

Решение было так:...

Использование wslite как WebService клиента Это минимальный пример

Теперь я подключиться к серверу с API включено. сертификат самозаверенный, почему был необходим «sslTrustAllCerts».

Я выбираю все услуги от моего хозяина «TestServer» и установите время простоя (длительность в секундах).

@Grab('com.github.groovy-wslite:groovy-wslite:1.1.2') 
import wslite.rest.* 
import wslite.http.auth.* 

def client = new RESTClient("https://myicinga2server:5665/") 
client.authorization = new HTTPBasicAuthorization("root", "secret") 

def timeFrom = System.currentTimeMillis()/1000L 
def timeDurationSec = 600 
def timeTo = timeFrom + timeDurationSec 

try 
{  
    def response = client.post(
     path: '/v1/actions/schedule-downtime?type=Service&filter=host.name==%22testserver%22', 
     headers: ["Accept": "application/json"], 
     sslTrustAllCerts: true) 
     { 
      json "author":"mstein", "comment":"Test-Downtime", "start_time": timeFrom, "end_time": timeTo, "duration": timeDurationSec, "fixed": true 
     } 

     assert 200 == response.statusCode 
     print response.text  
} 
catch (Exception exc) 
{ 
    println "Error: " + exc.getClass().toString() 
    println "Message: " + exc.getMessage() 
    println "Response: " + exc.getResponse() 
    System.exit(1) 
} 

Это сработало для меня!

+1

Также разумно передать атрибут «фильтр» внутри тела запроса POST, а также использовать «filter_vars» для указания, например. имя хоста по требованию. Некоторые примеры можно найти в программных примерах в документах, которые используют GET с X-HTTP-методом-переопределением, но принцип прохождения фильтров внутри тела запроса одинаковый. – dnsmichi

Смежные вопросы