Как СОЗДАТЬ параметр хоста с помощью The Foreman API v2? - PullRequest
0 голосов
/ 01 марта 2019

Я могу запросить хост и получить список параметров, но не могу создать параметр хоста.Я использую Foreman API v2 docs в качестве ссылки, но параметр не создается.

Код:

def addParameter(u,i,s,k,v):                            # url,hostid,section,key,value
    a = "/api/v2/hosts/{0}/parameters".format(i)        #<<---host parameters endpoint
    headers = {'Accept': 'application/json,version=2'}
    data = {
            'parameter': {
                'name': '{key}'.format(key=k),
                'value': '{value}'.format(value=v),
                'nested': 'true'
                }
            }
    try:
        print "Sending a POSTing of {data} to {url}{apipath}".format(data=json.dumps(data), url=u, apipath=a)
        r = requests.post("{url}{apipath}".format(url=u, apipath=a), headers=headers, data=json.dumps(data), verify=False, auth=('opsuser', 'mypassword'))
        r.raise_for_status()                            # ensure we notice bad responses
        p = json.loads(r.content)
        print r.status_code, p
        return getParameter(u,i,s,k)                    # try to find the parameter we just added
    except requests.exceptions.HTTPError as e:
        printError(e,u,a)
        sys.exit(1)

Я распечатываю информацию об отладке повсюдупроцесс (я также могу подтвердить это с помощью веб-интерфейса мастера):

Из функции «addParameter»:

Sending a POSTing of {"parameter": {"name": "PRODUCTV", "value": "1.1.4.56", "nested": "true"}} to http://foreman.example.com/api/v2/hosts/222/parameters

200       <<---This is the return code after the POST

{u'sort': {u'by': None, u'order': None}, u'search': None, u'results': [{u'name': u'IDisk', u'created_at': u'2019-02-25 17:33:26 UTC', u'updated_at': u'2019-02-25 18:09:48 UTC', u'value': u'sda', u'priority': 70, u'id': 8642}, {u'name': u'MG', u'created_at': u'2019-02-25 17:33:26 UTC', u'updated_at': u'2019-02-25 17:33:26 UTC', u'value': u'0', u'priority': 70, u'id': 8643}, {u'name': u'OGRUB', u'created_at': u'2019-02-25 18:09:48 UTC', u'updated_at': u'2019-02-25 18:09:48 UTC', u'value': u'true', u'priority': 70, u'id': 8646}, {u'name': u'PBUILD', u'created_at': u'2019-02-25 18:09:48 UTC', u'updated_at': u'2019-02-25 18:09:48 UTC', u'value': u'true', u'priority': 70, u'id': 8645}], u'per_page': 10, u'total': 4, u'subtotal': 4, u'page': 1}

Из функции «getParameter»:

Sending a GET PRODUCTV to http://foreman.example.com/api/v2/hosts/222/parameters

Found these parameters:  (u'IDisk', u'MG', u'OGRUB', u'PBUILD')

key PRODUCTV not found 

Логический тест, чтобы увидеть, был ли найден параметр:

Parameter NOT added!  Fail!

Версия Python: 2.7.5

Версия Foreman: 1.16

Версия API Foreman:v2

...