s# CMDBAPI
## Краткое описание
Python библиотека для взаимодействия с CMDB API
# Инициализация
```
cmdb=CMDBAPI(api_host='https://cmdapi.example.com:5000', api_user='secretuser',api_password='secretpassword',debug_mode=False,api_timeout=10)
```
* api_host - точка подключения к API (Обязательный параметр)
* api_user,api_password - имя пользователя и пароль для авторизации (Необязательный параметр.). Если их не указать работа возможна только с анонимными методами.
* debug_mode = Режим отладки (Если True), то будут делаться выводы отправки API запросов.
* api_timeout - таймаут ожидания ответа от API. Задается в секундах.
# Основные методы
Существует два свособа обращения к API.
## Магические методы (Простые GET запросы)
Пример 1, GET API метод /v1/host можно вызвать так:
```
syscatalogs=cmdb.get.host()
```
Пример 2, GET API метод /v1/hostgroup можно вызвать так:
```
syscatalogs=cmdb.get.host()
```
## api_request
```
cmdb.api_request(api_type='post',api_method='agent/roles',**params)
```
* api_type - тип запроса (Прддерживаются: get,post,put,delete). По умолчанию - get
* api_method - метод вызова (Например для API /v1/agent/roles - метод agent/roles)
* params - словарь аргументов запрашиваемого метода.
# Возможные ошибки
* api_host can not have value 'None' - при инициализации класса не передана точка подключения (api_host)
* Can not connect to API. ErrorCode: XXX. Response: ... - Ошибка подключения к API при авторизации и (или) вернулся код ответа отличный от 2XX.
* API request failed with error. ErrorCode: XXX. Response: ... - При запросе к API вернулся код ответа отличный от 2XX
* Failed to parse JSON response - пришел от API ответ, который нельзя распарсить для обработки
# Пример использования
```
with open('config.yaml', 'r') as file:
config = yaml.safe_load(file)
cmdb=CMDBAPI(config['cmdbapi']['host'],config['cmdbapi']['login'],config['cmdbapi']['pass'],config['cmdbapi']['timeout'])
syscatalogs=cmdb.get.host()
hstsnames_ = cmdb.get.hoststate()
isnames_ = cmdb.get.informsystem()
for syscatalog in syscatalogs:
host_data=cmdb.api_request(api_method="host/"+str(syscatalog['code']))
....
....
```
Raw data
{
"_id": null,
"home_page": "https://github.com/laspavel/cmdbapi",
"name": "cmdbapi",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.6",
"maintainer_email": null,
"keywords": "api cmdb",
"author": "Pavlo Lashkevych",
"author_email": "laspavel@gmail.com",
"download_url": "https://files.pythonhosted.org/packages/50/bb/9d1e76fbce87117e5c7c15e1b68a4fca086cfd441daa13db609693366306/cmdbapi-1.0.5.tar.gz",
"platform": null,
"description": "s# CMDBAPI\n\n## \u041a\u0440\u0430\u0442\u043a\u043e\u0435 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435\nPython \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 \u0434\u043b\u044f \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u0441 CMDB API\n\n# \u0418\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f\n\n```\ncmdb=CMDBAPI(api_host='https://cmdapi.example.com:5000', api_user='secretuser',api_password='secretpassword',debug_mode=False,api_timeout=10)\n```\n\n* api_host - \u0442\u043e\u0447\u043a\u0430 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043a API (\u041e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440)\n\n* api_user,api_password - \u0438\u043c\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0438 \u043f\u0430\u0440\u043e\u043b\u044c \u0434\u043b\u044f \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u0438 (\u041d\u0435\u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440.). \u0415\u0441\u043b\u0438 \u0438\u0445 \u043d\u0435 \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u0430 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u0430 \u0442\u043e\u043b\u044c\u043a\u043e \u0441 \u0430\u043d\u043e\u043d\u0438\u043c\u043d\u044b\u043c\u0438 \u043c\u0435\u0442\u043e\u0434\u0430\u043c\u0438.\n\n* debug_mode = \u0420\u0435\u0436\u0438\u043c \u043e\u0442\u043b\u0430\u0434\u043a\u0438 (\u0415\u0441\u043b\u0438 True), \u0442\u043e \u0431\u0443\u0434\u0443\u0442 \u0434\u0435\u043b\u0430\u0442\u044c\u0441\u044f \u0432\u044b\u0432\u043e\u0434\u044b \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438 API \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432.\n\n* api_timeout - \u0442\u0430\u0439\u043c\u0430\u0443\u0442 \u043e\u0436\u0438\u0434\u0430\u043d\u0438\u044f \u043e\u0442\u0432\u0435\u0442\u0430 \u043e\u0442 API. \u0417\u0430\u0434\u0430\u0435\u0442\u0441\u044f \u0432 \u0441\u0435\u043a\u0443\u043d\u0434\u0430\u0445.\n\n# \u041e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u043c\u0435\u0442\u043e\u0434\u044b\n\u0421\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u0434\u0432\u0430 \u0441\u0432\u043e\u0441\u043e\u0431\u0430 \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u044f \u043a API. \n\n## \u041c\u0430\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u043c\u0435\u0442\u043e\u0434\u044b (\u041f\u0440\u043e\u0441\u0442\u044b\u0435 GET \u0437\u0430\u043f\u0440\u043e\u0441\u044b)\n\u041f\u0440\u0438\u043c\u0435\u0440 1, GET API \u043c\u0435\u0442\u043e\u0434 /v1/host \u043c\u043e\u0436\u043d\u043e \u0432\u044b\u0437\u0432\u0430\u0442\u044c \u0442\u0430\u043a:\n```\nsyscatalogs=cmdb.get.host()\n```\n\n\u041f\u0440\u0438\u043c\u0435\u0440 2, GET API \u043c\u0435\u0442\u043e\u0434 /v1/hostgroup \u043c\u043e\u0436\u043d\u043e \u0432\u044b\u0437\u0432\u0430\u0442\u044c \u0442\u0430\u043a:\n```\nsyscatalogs=cmdb.get.host()\n```\n\n## api_request\n\n```\ncmdb.api_request(api_type='post',api_method='agent/roles',**params)\n```\n\n* api_type - \u0442\u0438\u043f \u0437\u0430\u043f\u0440\u043e\u0441\u0430 (\u041f\u0440\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044e\u0442\u0441\u044f: get,post,put,delete). \u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e - get\n\n* api_method - \u043c\u0435\u0442\u043e\u0434 \u0432\u044b\u0437\u043e\u0432\u0430 (\u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u0434\u043b\u044f API /v1/agent/roles - \u043c\u0435\u0442\u043e\u0434 agent/roles) \n\n* params - \u0441\u043b\u043e\u0432\u0430\u0440\u044c \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u0437\u0430\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0435\u043c\u043e\u0433\u043e \u043c\u0435\u0442\u043e\u0434\u0430.\n\n# \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0435 \u043e\u0448\u0438\u0431\u043a\u0438\n\n* api_host can not have value 'None' - \u043f\u0440\u0438 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043a\u043b\u0430\u0441\u0441\u0430 \u043d\u0435 \u043f\u0435\u0440\u0435\u0434\u0430\u043d\u0430 \u0442\u043e\u0447\u043a\u0430 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f (api_host)\n\n* Can not connect to API. ErrorCode: XXX. Response: ... - \u041e\u0448\u0438\u0431\u043a\u0430 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043a API \u043f\u0440\u0438 \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u0438 \u0438 (\u0438\u043b\u0438) \u0432\u0435\u0440\u043d\u0443\u043b\u0441\u044f \u043a\u043e\u0434 \u043e\u0442\u0432\u0435\u0442\u0430 \u043e\u0442\u043b\u0438\u0447\u043d\u044b\u0439 \u043e\u0442 2XX.\n\n* API request failed with error. ErrorCode: XXX. Response: ... - \u041f\u0440\u0438 \u0437\u0430\u043f\u0440\u043e\u0441\u0435 \u043a API \u0432\u0435\u0440\u043d\u0443\u043b\u0441\u044f \u043a\u043e\u0434 \u043e\u0442\u0432\u0435\u0442\u0430 \u043e\u0442\u043b\u0438\u0447\u043d\u044b\u0439 \u043e\u0442 2XX\n\n* Failed to parse JSON response - \u043f\u0440\u0438\u0448\u0435\u043b \u043e\u0442 API \u043e\u0442\u0432\u0435\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0435\u043b\u044c\u0437\u044f \u0440\u0430\u0441\u043f\u0430\u0440\u0441\u0438\u0442\u044c \u0434\u043b\u044f \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438\n\n\n# \u041f\u0440\u0438\u043c\u0435\u0440 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f\n```\nwith open('config.yaml', 'r') as file:\n config = yaml.safe_load(file)\n\ncmdb=CMDBAPI(config['cmdbapi']['host'],config['cmdbapi']['login'],config['cmdbapi']['pass'],config['cmdbapi']['timeout'])\nsyscatalogs=cmdb.get.host()\nhstsnames_ = cmdb.get.hoststate()\nisnames_ = cmdb.get.informsystem()\nfor syscatalog in syscatalogs:\n host_data=cmdb.api_request(api_method=\"host/\"+str(syscatalog['code']))\n\n.... \n....\n\n```\n\n\n",
"bugtrack_url": null,
"license": null,
"summary": "A short library for working CMDB API",
"version": "1.0.5",
"project_urls": {
"Documentation": "https://github.com/laspavel/cmdbapi/blob/master/README.md",
"Homepage": "https://github.com/laspavel/cmdbapi"
},
"split_keywords": [
"api",
"cmdb"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "1ce81c9bcad30ce62802bb47040f025cdb1217ae14b85db3d89f7f89d5ebfdd9",
"md5": "9f7a53e63e2bc9e5825d96e1348fe27b",
"sha256": "4bfbaac19bf47e9bba40357df25fe41a8d2197e5daaf2b256aabf8126690643b"
},
"downloads": -1,
"filename": "cmdbapi-1.0.5-py3-none-any.whl",
"has_sig": false,
"md5_digest": "9f7a53e63e2bc9e5825d96e1348fe27b",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.6",
"size": 5078,
"upload_time": "2024-06-19T12:43:22",
"upload_time_iso_8601": "2024-06-19T12:43:22.377629Z",
"url": "https://files.pythonhosted.org/packages/1c/e8/1c9bcad30ce62802bb47040f025cdb1217ae14b85db3d89f7f89d5ebfdd9/cmdbapi-1.0.5-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "50bb9d1e76fbce87117e5c7c15e1b68a4fca086cfd441daa13db609693366306",
"md5": "f62ecbf1886a2a3fc66bd4a6a0cd98a3",
"sha256": "912d77746be9769d453f780197d65d8d20b61836c226049f3c5a07ac587ba2de"
},
"downloads": -1,
"filename": "cmdbapi-1.0.5.tar.gz",
"has_sig": false,
"md5_digest": "f62ecbf1886a2a3fc66bd4a6a0cd98a3",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.6",
"size": 4661,
"upload_time": "2024-06-19T12:43:23",
"upload_time_iso_8601": "2024-06-19T12:43:23.667900Z",
"url": "https://files.pythonhosted.org/packages/50/bb/9d1e76fbce87117e5c7c15e1b68a4fca086cfd441daa13db609693366306/cmdbapi-1.0.5.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-06-19 12:43:23",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "laspavel",
"github_project": "cmdbapi",
"github_not_found": true,
"lcname": "cmdbapi"
}