Groups

Scheme: groups.

GET
/api/groups
Получение списка групп

Запрос

Параметры запроса:

Name

In

Type

Description

where (Optional)

url parameters

JSON object

Фильтр элементов. Используется синтаксис mongo запросов.

sort (Optional)

url parameters

string

Сортировка элементов.

projection (Optional)

url parameters

JSON object

Скрытие полей.

embedded (Optional)

url parameters

JSON object

Встраивание элементов в поля.

page (Optional)

url parameters

integer

Номер страницы элементов.

max_results (Optional)

url parameters

integer

Максимальное число элементов на одной странице.

Пример запроса:

curl -X GET http://tkcontrol/api/groups

Ответ

Пример ответа:

{
   "_items": [
        {
            "_id": "5ea2da1910b639cdfe83bb3f",
            "name": "medka",
            "subgroups": [
                "5eb52132f0e593e6ec94f3aa"
            ],
            "type": 0,
            "_updated": "Fri, 08 May 2020 09:07:54 GMT",
            "_created": "Fri, 24 Apr 2020 12:22:49 GMT",
            "_links": {
                "self": {
                    "title": "Group",
                    "href": "groups/5ea2da1910b639cdfe83bb3f"
                },
                "related": {
                    "subgroups": [
                        {
                            "title": "Group",
                            "href": "groups/5eb52132f0e593e6ec94f3aa"
                        }
                    ]
                }
            }
        },
        {
            "_id": "5eb51ee46b1229b259e8f399",
            "name": "medpc-img",
            "type": 1,
            "info": {
                "regex": "medpc-.*",
                "grain": {
                    "osfullname": "ALT",
                    "cpuarch": "x86_64"
                }
            },
            "_updated": "Fri, 08 May 2020 08:57:08 GMT",
            "_created": "Fri, 08 May 2020 08:57:08 GMT",
            "_links": {
                "self": {
                    "title": "Group",
                    "href": "groups/5eb51ee46b1229b259e8f399"
                }
            }
        },
        {
            "_id": "5eb51ee410703b151657d15d",
            "name": "skupov-img",
            "type": 1,
            "info": {
                "regex": "skupov.*"
             },
             "_updated": "Fri, 08 May 2020 08:57:08 GMT",
             "_created": "Fri, 08 May 2020 08:57:08 GMT",
             "_links": {
                 "self": {
                     "title": "Group",
                     "href": "groups/5eb51ee410703b151657d15d"
                 }
             }
         },
         {
             "_id": "5eb52132f0e593e6ec94f3aa",
             "name": "subgroup_med",
             "subgroups": [],
             "type": 0,
             "_updated": "Fri, 08 May 2020 09:08:32 GMT",
             "_created": "Fri, 08 May 2020 09:06:58 GMT",
             "_links": {
                "self": {
                   "title": "Group",
                    "href": "groups/5eb52132f0e593e6ec94f3aa"
                 },
                 "related": {
                     "subgroups": []
                 }
            }
         }
    ],
    "_links": {
        "parent": {
           "title": "home",
            "href": "/"
        },
            "self": {
            "title": "groups",
             "href": "groups"
        }
    },
    "_meta": {
        "page": 1,
        "max_results": 25,
        "total": 4
    }
}
GET
/api/groups/{id}
Получение группы по id

Запрос

Параметры запроса:

Name

In

Type

Description

projection (Optional)

url parameters

JSON object

Скрытие полей.

embedded (Optional)

url parameters

JSON object

Встраивание элементов в поля.

Пример запроса:

curl -X GET http://tkcontrol/api/groups/5ea2da1910b639cdfe83bb3f?embedded={"subgroups":1}

Ответ

Пример ответа:

{
    "_id": "5ea2da1910b639cdfe83bb3f",
    "name": "medka",
    "subgroups": [
        {
            "_id": "5eb52132f0e593e6ec94f3aa",
            "name": "subgroup_med",
            "subgroups": [],
            "type": 0,
            "_updated": "Fri, 08 May 2020 09:08:32 GMT",
            "_created": "Fri, 08 May 2020 09:06:58 GMT"
        }
    ],
    "type": 0,
    "_updated": "Fri, 08 May 2020 09:07:54 GMT",
    "_created": "Fri, 24 Apr 2020 12:22:49 GMT",
    "_links": {
        "self": {
            "title": "Group",
            "href": "groups/5ea2da1910b639cdfe83bb3f"
        },
        "related": {
            "subgroups": [
                {
                    "title": "Group",
                    "href": "groups/5eb52132f0e593e6ec94f3aa"
                }
           ]
        },
        "parent": {
            "title": "home",
            "href": "/"
        },
        "collection": {
           "title": "groups",
           "href": "groups"
        }
    }
}
GET
/api/groups/{id}/subgroups
Получение подгрупп группы по его id

Запрос

Пример запроса:

curl -X GET http://tkcontrol/api/groups/5ea2da1910b639cdfe83bb3f/subgroups

Ответ

Пример ответа:

[
    "5eb52132f0e593e6ec94f3aa"
]
GET
/api/groups/{id}/hostnames
Получение имен хостов, принадлежащих группе и всем вложенным подгруппам этой группы

Запрос

Пример запроса:

curl -X GET http://tkcontrol/api/groups/5ea2da1910b639cdfe83bb3f/hostnames

Ответ

Пример ответа:

[
    "skupov-salt-minion-dev2",
    "medpc-fe5f87.localdomain",
    "salt-master-staging",
    "salt-minion-staging-1",
    "skupov-salt-minion-3-no-resp",
    "skupov-salt-unaccepted"
]
POST
api/groups
Создание новой группы

Пример запроса:

curl -X POST http://tkcontrol/api/groups -H "Content-Type: application/json" -d '{ \
     { \
         "name": "web servers", \
         "subgroups": [ \
             "5eb51ee46b1229b259e8f39a" \
          ], \
          "hosts": [ \
             "salt-minion-staging-1", \
             "salt-master-staging" \
         ], \
         "type": 0 \
     }'

Ответ

Пример ответа:

{
    "_updated": "Thu, 17 Dec 2020 14:13:12 GMT",
    "_created": "Thu, 17 Dec 2020 14:13:12 GMT",
    "_id": "5fdb677898305492eb558ccf",
    "_links": {
        "self": {
            "title": "Group",
            "href": "groups/5fdb677898305492eb558ccf"
        },
        "related": {
            "subgroups": []
         }
     },
    "_status": "OK"
 }
POST
/api/groups/{id}
Выполнение действия над группой

Запрос

Параметры запроса:

Этот endpoint является прокси POST запроса к http://salt-api/. Но параметр "salt_client" заменяется на "client", "tgt" устанавливается в массив хостов, которые принадлежат этой группе, а "tgt_type" в "list". Ознакомиться со всеми возможными функциями можно на Salt Module Reference.

Пример запроса:

curl -X POST http://tkcontrol/api/groups/5eb51ee46b1229b259e8f399 -H "Content-Type: application/json" -d '{ \
     { \
         "salt_client": "local", \
         "fun": "cmd.run", \
         "kwarg": { \
             "cmd": "date" \
         } \
     }'

Ответ

Пример ответа:

{
    "task_id":"603e3c733f97526801fd3176",
    "status":"success",
    "return":{
        "return":[
            {
                "skupov-staging-tkcontrol-non-root-client1":"Tue Mar  2 13:24:04 UTC 2021"
            }
        ]
    }
}
PATCH
/api/groups/{id}
Изменение группы по id

Запрос

Пример запроса:

curl -X PATCH http://tkcontrol/api/groups/5ea2da1910b639cdfe83bb3f -H "Content-Type: application/json" -d '{ \
     { \
         "hosts": [ \
             "medpc-fe5f87.localdomain", \
             "salt-master-staging" \
         ] \
     }'

Ответ

Пример ответа:

{
    "_id": "5ea2da1910b639cdfe83bb3f",
    "_updated": "Thu, 17 Dec 2020 14:18:50 GMT",
    "_created": "Thu, 17 Dec 2020 14:12:57 GMT",
    "_links": {
        "self": {
            "title": "Group",
            "href": "groups/5ea2da1910b639cdfe83bb3f/5ea2da1910b639cdfe83bb3f"
        },
        "related": {
            "subgroups": [
                {
                    "title": "Group",
                    "href": "groups/5ea2da1910b639cdfe83bb3f/5f73088a7594a4ab6be8cef7"
                }
            ]
        }
    },
    "_status": "OK"
}
DELETE
/api/groups
Удаление групп определенного типа

Запрос

Параметры запроса:

Name

In

Type

Description

where (Optional)

url parameters

JSON object

Фильтр групп. Принимает агрумент 'type' типа 'array of integers' или 'integer'.

Пример запроса:

curl -X DELETE http://tkcontrol/api/groups?where={"type":[2,3,4]}
DELETE
/api/groups/{id}
Удаление группы по id

Запрос

Пример запроса:

curl -X DELETE http://tkcontrol/api/groups/5ea2da1910b639cdfe83bb3f