codosdk 1.0.7__tar.gz → 1.0.9__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {codosdk-1.0.7 → codosdk-1.0.9}/PKG-INFO +12 -2
- {codosdk-1.0.7 → codosdk-1.0.9}/codosdk.egg-info/PKG-INFO +12 -2
- {codosdk-1.0.7 → codosdk-1.0.9}/setup.py +2 -2
- codosdk-1.0.9/websdk2/apis/cmdb_apis.py +47 -0
- {codosdk-1.0.7 → codosdk-1.0.9}/websdk2/client.py +50 -18
- {codosdk-1.0.7 → codosdk-1.0.9}/websdk2/model_utils.py +1 -2
- codosdk-1.0.7/websdk2/apis/cmdb_apis.py +0 -22
- {codosdk-1.0.7 → codosdk-1.0.9}/LICENSE +0 -0
- {codosdk-1.0.7 → codosdk-1.0.9}/README.md +0 -0
- {codosdk-1.0.7 → codosdk-1.0.9}/codosdk.egg-info/SOURCES.txt +0 -0
- {codosdk-1.0.7 → codosdk-1.0.9}/codosdk.egg-info/dependency_links.txt +0 -0
- {codosdk-1.0.7 → codosdk-1.0.9}/codosdk.egg-info/requires.txt +0 -0
- {codosdk-1.0.7 → codosdk-1.0.9}/codosdk.egg-info/top_level.txt +0 -0
- {codosdk-1.0.7 → codosdk-1.0.9}/opssdk/__init__.py +0 -0
- {codosdk-1.0.7 → codosdk-1.0.9}/opssdk/utils/__init__.py +0 -0
- {codosdk-1.0.7 → codosdk-1.0.9}/pyproject.toml +0 -0
- {codosdk-1.0.7 → codosdk-1.0.9}/setup.cfg +0 -0
- {codosdk-1.0.7 → codosdk-1.0.9}/websdk2/__init__.py +0 -0
- {codosdk-1.0.7 → codosdk-1.0.9}/websdk2/api_set.py +0 -0
- {codosdk-1.0.7 → codosdk-1.0.9}/websdk2/apis/__init__.py +0 -0
- {codosdk-1.0.7 → codosdk-1.0.9}/websdk2/apis/admin_apis.py +0 -0
- {codosdk-1.0.7 → codosdk-1.0.9}/websdk2/apis/agent_apis.py +0 -0
- {codosdk-1.0.7 → codosdk-1.0.9}/websdk2/apis/kerrigan_apis.py +0 -0
- {codosdk-1.0.7 → codosdk-1.0.9}/websdk2/apis/mgv4_apis.py +0 -0
- {codosdk-1.0.7 → codosdk-1.0.9}/websdk2/apis/task_apis.py +0 -0
- {codosdk-1.0.7 → codosdk-1.0.9}/websdk2/application.py +0 -0
- {codosdk-1.0.7 → codosdk-1.0.9}/websdk2/base_handler.py +0 -0
- {codosdk-1.0.7 → codosdk-1.0.9}/websdk2/cache.py +0 -0
- {codosdk-1.0.7 → codosdk-1.0.9}/websdk2/cache_context.py +0 -0
- {codosdk-1.0.7 → codosdk-1.0.9}/websdk2/cloud/__init__.py +0 -0
- {codosdk-1.0.7 → codosdk-1.0.9}/websdk2/cloud/qcloud_api.py +0 -0
- {codosdk-1.0.7 → codosdk-1.0.9}/websdk2/cloud/ucloud_api.py +0 -0
- {codosdk-1.0.7 → codosdk-1.0.9}/websdk2/cloud_utils.py +0 -0
- {codosdk-1.0.7 → codosdk-1.0.9}/websdk2/configs.py +0 -0
- {codosdk-1.0.7 → codosdk-1.0.9}/websdk2/consts.py +0 -0
- {codosdk-1.0.7 → codosdk-1.0.9}/websdk2/db_context.py +0 -0
- {codosdk-1.0.7 → codosdk-1.0.9}/websdk2/error.py +0 -0
- {codosdk-1.0.7 → codosdk-1.0.9}/websdk2/fetch_coroutine.py +0 -0
- {codosdk-1.0.7 → codosdk-1.0.9}/websdk2/jwt_token.py +0 -0
- {codosdk-1.0.7 → codosdk-1.0.9}/websdk2/ldap.py +0 -0
- {codosdk-1.0.7 → codosdk-1.0.9}/websdk2/logger.py +0 -0
- {codosdk-1.0.7 → codosdk-1.0.9}/websdk2/mqhelper.py +0 -0
- {codosdk-1.0.7 → codosdk-1.0.9}/websdk2/program.py +0 -0
- {codosdk-1.0.7 → codosdk-1.0.9}/websdk2/salt_api.py +0 -0
- {codosdk-1.0.7 → codosdk-1.0.9}/websdk2/sqlalchemy_pagination.py +0 -0
- {codosdk-1.0.7 → codosdk-1.0.9}/websdk2/tools.py +0 -0
- {codosdk-1.0.7 → codosdk-1.0.9}/websdk2/utils/__init__.py +0 -0
- {codosdk-1.0.7 → codosdk-1.0.9}/websdk2/utils/cc_crypto.py +0 -0
- {codosdk-1.0.7 → codosdk-1.0.9}/websdk2/utils/date_format.py +0 -0
- {codosdk-1.0.7 → codosdk-1.0.9}/websdk2/utils/pydantic_utils.py +0 -0
- {codosdk-1.0.7 → codosdk-1.0.9}/websdk2/web_logs.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.2
|
|
2
2
|
Name: codosdk
|
|
3
|
-
Version: 1.0.
|
|
3
|
+
Version: 1.0.9
|
|
4
4
|
Summary: CODO项目的Python SDK
|
|
5
5
|
Home-page: https://github.com/ss1917/codo_sdk/
|
|
6
6
|
Author: shenshuo
|
|
@@ -31,5 +31,15 @@ Requires-Dist: loguru>=0.6.0
|
|
|
31
31
|
Requires-Dist: cryptography==42.0.4
|
|
32
32
|
Requires-Dist: ldap3==2.9
|
|
33
33
|
Requires-Dist: pydantic>=1.10.5
|
|
34
|
+
Dynamic: author
|
|
35
|
+
Dynamic: author-email
|
|
36
|
+
Dynamic: classifier
|
|
37
|
+
Dynamic: description
|
|
38
|
+
Dynamic: home-page
|
|
39
|
+
Dynamic: keywords
|
|
40
|
+
Dynamic: license
|
|
41
|
+
Dynamic: platform
|
|
42
|
+
Dynamic: requires-dist
|
|
43
|
+
Dynamic: summary
|
|
34
44
|
|
|
35
45
|
SDK of the operation and maintenance script logs operate
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.2
|
|
2
2
|
Name: codosdk
|
|
3
|
-
Version: 1.0.
|
|
3
|
+
Version: 1.0.9
|
|
4
4
|
Summary: CODO项目的Python SDK
|
|
5
5
|
Home-page: https://github.com/ss1917/codo_sdk/
|
|
6
6
|
Author: shenshuo
|
|
@@ -31,5 +31,15 @@ Requires-Dist: loguru>=0.6.0
|
|
|
31
31
|
Requires-Dist: cryptography==42.0.4
|
|
32
32
|
Requires-Dist: ldap3==2.9
|
|
33
33
|
Requires-Dist: pydantic>=1.10.5
|
|
34
|
+
Dynamic: author
|
|
35
|
+
Dynamic: author-email
|
|
36
|
+
Dynamic: classifier
|
|
37
|
+
Dynamic: description
|
|
38
|
+
Dynamic: home-page
|
|
39
|
+
Dynamic: keywords
|
|
40
|
+
Dynamic: license
|
|
41
|
+
Dynamic: platform
|
|
42
|
+
Dynamic: requires-dist
|
|
43
|
+
Dynamic: summary
|
|
34
44
|
|
|
35
45
|
SDK of the operation and maintenance script logs operate
|
|
@@ -2,14 +2,14 @@
|
|
|
2
2
|
# -*-coding:utf-8-*-
|
|
3
3
|
""""
|
|
4
4
|
author : shenshuo
|
|
5
|
-
date :
|
|
5
|
+
date : 2024年12月12日
|
|
6
6
|
desc : CODO SDK
|
|
7
7
|
"""
|
|
8
8
|
|
|
9
9
|
import sys
|
|
10
10
|
from distutils.core import setup
|
|
11
11
|
|
|
12
|
-
VERSION = '1.0.
|
|
12
|
+
VERSION = '1.0.9'
|
|
13
13
|
|
|
14
14
|
if sys.version_info < (2, 7) or (3, 0) <= sys.version_info < (3, 6):
|
|
15
15
|
print('This program requires at least Python 2.7 or 3.6 to run.')
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
#!/usr/bin/env python
|
|
2
|
+
# -*- coding: utf-8 -*-
|
|
3
|
+
"""
|
|
4
|
+
Contact : 191715030@qq.com
|
|
5
|
+
Author : shenshuo
|
|
6
|
+
Date : 2018年2月5日13:37:54
|
|
7
|
+
Desc :记录 CMDB API
|
|
8
|
+
"""
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
class CMDBAPIS:
|
|
12
|
+
cmdb_prefix = "/api/cmdb"
|
|
13
|
+
|
|
14
|
+
get_tag_list = dict(
|
|
15
|
+
method='GET',
|
|
16
|
+
url=f'{cmdb_prefix}/api/v2/cmdb/tag/list/',
|
|
17
|
+
params={
|
|
18
|
+
'page_number': '1', # 分页/第几页
|
|
19
|
+
'page_size': '200', # 分页/每页多少个
|
|
20
|
+
"tag_key": None
|
|
21
|
+
},
|
|
22
|
+
description='CMDB 获取标签key、value列表'
|
|
23
|
+
)
|
|
24
|
+
|
|
25
|
+
get_service_tree = dict(method='GET',
|
|
26
|
+
url=f'{cmdb_prefix}/api/v2/cmdb/tree/',
|
|
27
|
+
params={"biz_id": "0"},
|
|
28
|
+
description='获取当前业务服务树')
|
|
29
|
+
|
|
30
|
+
get_dynamic_groups = dict(method='GET',
|
|
31
|
+
url=f'{cmdb_prefix}/api/v2/cmdb/biz/dynamic_group/list/',
|
|
32
|
+
params={
|
|
33
|
+
"biz_id": ""
|
|
34
|
+
},
|
|
35
|
+
description='获取当前业务下动态分组')
|
|
36
|
+
|
|
37
|
+
get_dynamic_group_details = dict(method='GET',
|
|
38
|
+
url=f'{cmdb_prefix}/api/v2/cmdb/biz/dynamic_group/preview/',
|
|
39
|
+
params={
|
|
40
|
+
},
|
|
41
|
+
description='获取动态分组详细数据')
|
|
42
|
+
|
|
43
|
+
get_tree_asset_server = dict(method='GET',
|
|
44
|
+
url=f'{cmdb_prefix}/api/v2/cmdb/tree/asset/server',
|
|
45
|
+
params={
|
|
46
|
+
},
|
|
47
|
+
description='根据业务获取资源信息')
|
|
@@ -10,6 +10,7 @@ Desc : 处理API请求
|
|
|
10
10
|
import json
|
|
11
11
|
import requests
|
|
12
12
|
from urllib.parse import urlencode
|
|
13
|
+
from typing import Union, Optional
|
|
13
14
|
import logging
|
|
14
15
|
from .consts import const
|
|
15
16
|
from .configs import configs
|
|
@@ -98,32 +99,63 @@ class AcsClient:
|
|
|
98
99
|
# timeout=self.request_timeout) as response:
|
|
99
100
|
# return await response.read()
|
|
100
101
|
|
|
101
|
-
def with_params_data_url(self, **kwargs):
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
102
|
+
# def with_params_data_url(self, **kwargs):
|
|
103
|
+
# # 重新组装URL
|
|
104
|
+
# url = "{}{}".format(self.endpoint, kwargs['url'])
|
|
105
|
+
# kwargs['url'] = url
|
|
106
|
+
#
|
|
107
|
+
# if not kwargs['method']: kwargs['method'] = 'GET'
|
|
108
|
+
#
|
|
109
|
+
# # logging.debug(f"with_params_data_url {kwargs}")
|
|
110
|
+
# body = kwargs.get('body', {})
|
|
111
|
+
# req_json = kwargs.get('json')
|
|
112
|
+
#
|
|
113
|
+
# if kwargs['method'] in ['POST', 'post', 'PATCH', 'patch', 'PUT', 'put']:
|
|
114
|
+
# if not (body or req_json):
|
|
115
|
+
# raise TypeError('method {}, body can not be empty'.format(kwargs['method']))
|
|
116
|
+
# else:
|
|
117
|
+
# if not isinstance(body, dict):
|
|
118
|
+
# json.loads(body)
|
|
119
|
+
#
|
|
120
|
+
# if body and isinstance(body, dict): kwargs['body'] = json.dumps(body)
|
|
121
|
+
#
|
|
122
|
+
# params = kwargs.get('params')
|
|
123
|
+
# if params: kwargs['url'] = "{}?{}".format(url, urlencode(params))
|
|
124
|
+
#
|
|
125
|
+
# if not self.headers: self.headers = kwargs.get('headers', {})
|
|
126
|
+
#
|
|
127
|
+
# if kwargs['method'] not in ['GET', 'get']: self.headers['Content-Type'] = 'application/json'
|
|
128
|
+
#
|
|
129
|
+
# return kwargs
|
|
105
130
|
|
|
106
|
-
|
|
131
|
+
def with_params_data_url(self, **kwargs) -> dict:
|
|
132
|
+
endpoint = self.endpoint.strip("'").strip('"')
|
|
133
|
+
kwargs['url'] = f"{endpoint}{kwargs.get('url', '')}"
|
|
134
|
+
kwargs['method'] = kwargs.get('method', 'GET').upper()
|
|
107
135
|
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
req_json = kwargs.get('json')
|
|
136
|
+
body: Union[dict, str] = kwargs.get('body', {})
|
|
137
|
+
req_json: Optional[dict] = kwargs.get('json')
|
|
111
138
|
|
|
112
|
-
if kwargs['method'] in
|
|
139
|
+
if kwargs['method'] in {'POST', 'PATCH', 'PUT'}:
|
|
113
140
|
if not (body or req_json):
|
|
114
|
-
raise TypeError('method
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
json.loads(body)
|
|
141
|
+
raise TypeError(f"Method {kwargs['method']} requires a non-empty body or JSON payload.")
|
|
142
|
+
if body and not isinstance(body, dict):
|
|
143
|
+
try:
|
|
144
|
+
body = json.loads(body)
|
|
145
|
+
except json.JSONDecodeError as e:
|
|
146
|
+
raise TypeError(f"Invalid JSON body: {e}")
|
|
118
147
|
|
|
119
|
-
if body and isinstance(body, dict):
|
|
148
|
+
if body and isinstance(body, dict):
|
|
149
|
+
kwargs['body'] = json.dumps(body)
|
|
120
150
|
|
|
121
|
-
params = kwargs.get('params')
|
|
122
|
-
if params:
|
|
151
|
+
params: Optional[dict] = kwargs.get('params')
|
|
152
|
+
if params:
|
|
153
|
+
kwargs['url'] = f"{kwargs['url']}?{urlencode(params)}"
|
|
123
154
|
|
|
124
|
-
|
|
155
|
+
kwargs['headers'] = kwargs.get('headers', self.headers or {})
|
|
125
156
|
|
|
126
|
-
if kwargs['method']
|
|
157
|
+
if kwargs['method'] != 'GET':
|
|
158
|
+
kwargs['headers'].setdefault('Content-Type', 'application/json')
|
|
127
159
|
|
|
128
160
|
return kwargs
|
|
129
161
|
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env python
|
|
2
|
-
# -*- coding: utf-8 -*-
|
|
3
|
-
"""
|
|
4
|
-
Contact : 191715030@qq.com
|
|
5
|
-
Author : shenshuo
|
|
6
|
-
Date : 2018年2月5日13:37:54
|
|
7
|
-
Desc :记录API
|
|
8
|
-
"""
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
class CMDBAPIS:
|
|
12
|
-
cmdb_prefix = "/api/cmdb"
|
|
13
|
-
create_jobs = dict(method='GET',
|
|
14
|
-
url=f'{cmdb_prefix}/api/v2/cmdb/tag/list/',
|
|
15
|
-
params={
|
|
16
|
-
'page_number': '1', ### 分页/第几页
|
|
17
|
-
'page_size': '200', ### 分页/每页多少个
|
|
18
|
-
"tag_key": None
|
|
19
|
-
},
|
|
20
|
-
field_help={
|
|
21
|
-
},
|
|
22
|
-
description='CMDB 获取标签key、value列表')
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|