Hosts

Scheme: hosts.

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

Запрос

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

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

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

show_soft_deleted (Optional)

url parameters

bool

Показать soft deleted.

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

curl -X GET http://tkcontrol/api/hosts?where={"key":"accepted","status":"up"}&projection={"grain":0}

Ответ

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

{
    "_items": [
        {
            "_id": "medpc-271e56.localdomain",
            "version": "28",
            "ip": "10.10.19.248",
            "nodegroups": [
                "medpc-img",
                "linux"
            ],
            "last_distupgrade": "Thu, 26 Mar 2020 15:22:16 GMT",
            "last_stateapply": "Wed, 11 Nov 2020 10:09:22 GMT",
            "_soft_deleted": false,
            "status": "up",
            "_updated": "Wed, 16 Dec 2020 09:23:26 GMT",
            "_created": "Fri, 25 Sep 2020 12:26:25 GMT",
            "heartbeat": "Wed, 11 Nov 2020 12:08:15 GMT",
            "key": "accepted",
            "last_action": "20201111130724122307medpc-271e56.localdomain",
            "groups": [
                "5f8da6501eb86343459e26ce"
            ],
            "nat": false,
            "fingerprint": "66:52:5d:4f:8d:d0:a3:4a:e0:25:50:a3:d3:f1:b7:49:de:d2:fe:5d:36:16:50:cd:5b:29:bd:a2:91:bd:5f:0a",
            "fingerprint_history": [
                {
                   "added": "Tue, 03 Nov 2020 07:40:58 GMT",
                   "fingerprint": "66:52:5d:4f:8d:d0:a3:4a:e0:25:50:a3:d3:f1:b7:49:de:d2:fe:5d:36:16:50:cd:5b:29:bd:a2:91:bd:5f:0a"
                }
            ],
            "pritunl_representation": {
                "auth_type": "local",
                "yubico_id": null,
                "client_to_client": false,
                "otp_secret": "Q6SQ6Q72XKLD7GMI",
                "name": "medpc-271e56.localdomain",
                "pin": false,
                "dns_suffix": null,
                "disabled": false,
                "mac_addresses": null,
                "email": "",
                "organization_name": "rsa-org-test",
                "bypass_secondary": false,
                "groups": [],
                "organization": "5fa001d043e2108e8ffb7a6d",
                "port_forwarding": [],
                "dns_servers": null,
                "type": "client",
                "id": "5fa001d143e2108e8ffb7a74"
            },
            "vpn_organization": "5fa10a25ccb8d1bdb79feeeb",
            "identification_number": "fdf",
            "_links": {
                "self": {
                    "title": "Host",
                    "href": "hosts/medpc-271e56.localdomain"
                },
                "related": {
                    "last_action": {
                        "title": "Action",
                        "href": "actions/20201111130724122307medpc-271e56.localdomain"
                    },
                    "groups": [
                        {
                            "title": "Group",
                            "href": "groups/5f8da6501eb86343459e26ce"
                        }
                    ],
                    "nodegroups": [
                        {
                            "title": "Nodegroup",
                            "href": "nodegroups/medpc-img"
                        },
                        {
                            "title": "Nodegroup",
                            "href": "nodegroups/linux"
                        }
                   ],
                   "vpn_organization": {
                        "title": "Vpn_organization",
                        "href": "vpn_organizations/5fa10a25ccb8d1bdb79feeeb"
                    }
                }
            }
        }
    ],
    "_links": {
        "parent": {
            "title": "home",
            "href": "/"
        },
        "self": {
            "title": "hosts",
            "href": "hosts?where={\"key\":\"accepted\",\"status\":\"up\"}"
        }
    },
    "_meta": {
        "page": 1,
        "max_results": 25,
        "total": 1
    }
}
GET
/api/hosts/{id}
Получение хоста по id

Запрос

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

Name

In

Type

Description

projection (Optional)

url parameters

JSON object

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

embedded (Optional)

url parameters

JSON object

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

show_soft_deleted (Optional)

url parameters

bool

Показать soft deleted.

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

curl -X GET http://tkcontrol/api/hosts/medpc-271e56.localdomain

Ответ

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

{
    "_id": "medpc-271e56.localdomain",
    "version": "28",
    "ip": "10.10.19.248",
    "nodegroups": [
        "medpc-img",
        "linux"
    ],
    "grain": {
        "cpu_model": "Intel Xeon E312xx (Sandy Bridge)",
        "cpuarch": "x86_64",
        "mem_total": 1987,
        "num_cpus": 2,
        "num_gpus": 1,
        "virtual": "kvm",
        "gpus": [
           {
                "model": "Device 1111",
                "vendor": "unknown"
            }
       ],
        "serialnumber": null,
        "biosversion": null,
        "saltversion": "2017.7.0",
        "tk-version": 28,
        "tkcontrol": {
           "last_distupgrade": "2020-03-26 15:22:16+00:00",
           "last_stateapply": "2020-11-10 09:47:01+00:00"
        },
        "kernel": "Linux",
        "kernelrelease": "4.19.59-un-def-alt0.M80C.1",
        "lsb_distrib_id": "ALT",
        "osfullname": "ALT",
        "lsb_distrib_description": null,
        "host": "localhost",
        "domain": "localdomain",
        "localhost": "medpc-271e56.localdomain",
        "ip_interfaces": {
           "lo": [
                "127.0.0.1",
                "::1"
            ],
            "ens3": [
                "10.10.19.29",
                "fe80::dd9d:6e76:e4a9:48c2"
            ],
            "ens18": [
                "10.10.19.248",
                "fe80::ba9d:5fb:9f5f:86fa"
            ]
        },
        "ip": "10.10.19.248",
    },
    "last_distupgrade": "Thu, 26 Mar 2020 15:22:16 GMT",
    "last_stateapply": "Wed, 11 Nov 2020 10:09:22 GMT",
    "_soft_deleted": false,
    "status": "up",
    "_updated": "Wed, 16 Dec 2020 09:23:26 GMT",
    "_created": "Fri, 25 Sep 2020 12:26:25 GMT",
    "heartbeat": "Wed, 11 Nov 2020 12:08:15 GMT",
    "key": "accepted",
    "last_action": "20201111130724122307medpc-271e56.localdomain",
    "groups": [
        "5f8da6501eb86343459e26ce"
    ],
    "nat": false,
    "fingerprint": "66:52:5d:4f:8d:d0:a3:4a:e0:25:50:a3:d3:f1:b7:49:de:d2:fe:5d:36:16:50:cd:5b:29:bd:a2:91:bd:5f:0a",
    "fingerprint_history": [
       {
            "added": "Tue, 03 Nov 2020 07:40:58 GMT",
            "fingerprint": "66:52:5d:4f:8d:d0:a3:4a:e0:25:50:a3:d3:f1:b7:49:de:d2:fe:5d:36:16:50:cd:5b:29:bd:a2:91:bd:5f:0a"
       }
    ],
    "pritunl_representation": {
        "auth_type": "local",
        "yubico_id": null,
        "client_to_client": false,
        "otp_secret": "Q6SQ6Q72XKLD7GMI",
        "name": "medpc-271e56.localdomain",
        "pin": false,
        "dns_suffix": null,
        "disabled": false,
        "mac_addresses": null,
        "email": "",
        "organization_name": "rsa-org-test",
        "bypass_secondary": false,
        "groups": [],
        "organization": "5fa001d043e2108e8ffb7a6d",
        "port_forwarding": [],
        "dns_servers": null,
        "type": "client",
        "id": "5fa001d143e2108e8ffb7a74"
    },
    "vpn_organization": "5fa10a25ccb8d1bdb79feeeb",
    "identification_number": "fdf",
    "_links": {
        "self": {
            "title": "Host",
            "href": "hosts/medpc-271e56.localdomain"
        },
        "related": {
            "last_action": {
                "title": "Action",
                "href": "actions/20201111130724122307medpc-271e56.localdomain"
            },
             "groups": [
                {
                   "title": "Group",
                   "href": "groups/5f8da6501eb86343459e26ce"
                 }
            ],
            "nodegroups": [
                {
                    "title": "Nodegroup",
                    "href": "nodegroups/medpc-img"
                },
                {
                    "title": "Nodegroup",
                    "href": "nodegroups/linux"
                }
            ],
            "vpn_organization": {
                "title": "Vpn_organization",
                "href": "vpn_organizations/5fa10a25ccb8d1bdb79feeeb"
            }
        },
        "parent": {
            "title": "home",
            "href": "/"
        },
        "collection": {
            "title": "hosts",
            "href": "hosts"
        }
    }
}
POST
/api/hosts/{id}
Выполнение действия над хостом

Запрос

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

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

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

curl -X POST http://tkcontrol/api/hosts/skupov-staging-tkcontrol-non-root-client1 -H "Content-Type: application/json" -d '{ \
     { \
         "salt_client": "local", \
         "fun": "cmd.run", \
         "kwarg": { \
             "cmd": "ip a" \
         } \
     }'

Ответ

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

{
    "task_id":"603e3a423f97526801fd3175",
    "status":"success",
    "return":{
        "return":[
            {
                "skupov-staging-tkcontrol-non-root-client1":"1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000\n    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00\n    inet 127.0.0.1/8 scope host lo\n       valid_lft forever preferred_lft forever\n    inet6 ::1/128 scope host \n       valid_lft forever preferred_lft forever\n2: ens3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000\n    link/ether fa:16:3e:b1:9d:9a brd ff:ff:ff:ff:ff:ff\n    inet 10.40.129.70/24 brd 10.40.129.255 scope global dynamic ens3\n       valid_lft 82940sec preferred_lft 82940sec\n    inet6 fe80::f816:3eff:feb1:9d9a/64 scope link \n       valid_lft forever preferred_lft forever"
            }
        ]
    }
}
POST
/api/hosts/{id}/all_status
Получение мониторинговых данных о хосте

Запрос

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

Name

In

Type

Description

action (Optional)

body

string

Действие, которое необходимо выполнить над мониторинговыми данными. Возможные действия: 'start', 'stop', 'stop_all'.

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

curl -X POST http://tkcontrol/api/hosts/skupov-salt-minion-dev5/all_status -H "Content-Type: application/json" -d '{ \
     { \
         "action":"start" \
     }'
PATCH
/api/hosts/{id}
Изменение хоста по id

Запрос

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

curl -X PATCH http://tkcontrol/api/hosts/skupov-salt-minion-dev5 -H "Content-Type: application/json" -d '{ \
     { \
         "identification_number":"123456789abc" \
     }'
DELETE
/api/hosts/{id}
Скрытие хоста по id

Запрос

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

curl -X DELETE http://tkcontrol/api/hosts/win7-lexa.center.cg