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.
Files changed (51) hide show
  1. {codosdk-1.0.7 → codosdk-1.0.9}/PKG-INFO +12 -2
  2. {codosdk-1.0.7 → codosdk-1.0.9}/codosdk.egg-info/PKG-INFO +12 -2
  3. {codosdk-1.0.7 → codosdk-1.0.9}/setup.py +2 -2
  4. codosdk-1.0.9/websdk2/apis/cmdb_apis.py +47 -0
  5. {codosdk-1.0.7 → codosdk-1.0.9}/websdk2/client.py +50 -18
  6. {codosdk-1.0.7 → codosdk-1.0.9}/websdk2/model_utils.py +1 -2
  7. codosdk-1.0.7/websdk2/apis/cmdb_apis.py +0 -22
  8. {codosdk-1.0.7 → codosdk-1.0.9}/LICENSE +0 -0
  9. {codosdk-1.0.7 → codosdk-1.0.9}/README.md +0 -0
  10. {codosdk-1.0.7 → codosdk-1.0.9}/codosdk.egg-info/SOURCES.txt +0 -0
  11. {codosdk-1.0.7 → codosdk-1.0.9}/codosdk.egg-info/dependency_links.txt +0 -0
  12. {codosdk-1.0.7 → codosdk-1.0.9}/codosdk.egg-info/requires.txt +0 -0
  13. {codosdk-1.0.7 → codosdk-1.0.9}/codosdk.egg-info/top_level.txt +0 -0
  14. {codosdk-1.0.7 → codosdk-1.0.9}/opssdk/__init__.py +0 -0
  15. {codosdk-1.0.7 → codosdk-1.0.9}/opssdk/utils/__init__.py +0 -0
  16. {codosdk-1.0.7 → codosdk-1.0.9}/pyproject.toml +0 -0
  17. {codosdk-1.0.7 → codosdk-1.0.9}/setup.cfg +0 -0
  18. {codosdk-1.0.7 → codosdk-1.0.9}/websdk2/__init__.py +0 -0
  19. {codosdk-1.0.7 → codosdk-1.0.9}/websdk2/api_set.py +0 -0
  20. {codosdk-1.0.7 → codosdk-1.0.9}/websdk2/apis/__init__.py +0 -0
  21. {codosdk-1.0.7 → codosdk-1.0.9}/websdk2/apis/admin_apis.py +0 -0
  22. {codosdk-1.0.7 → codosdk-1.0.9}/websdk2/apis/agent_apis.py +0 -0
  23. {codosdk-1.0.7 → codosdk-1.0.9}/websdk2/apis/kerrigan_apis.py +0 -0
  24. {codosdk-1.0.7 → codosdk-1.0.9}/websdk2/apis/mgv4_apis.py +0 -0
  25. {codosdk-1.0.7 → codosdk-1.0.9}/websdk2/apis/task_apis.py +0 -0
  26. {codosdk-1.0.7 → codosdk-1.0.9}/websdk2/application.py +0 -0
  27. {codosdk-1.0.7 → codosdk-1.0.9}/websdk2/base_handler.py +0 -0
  28. {codosdk-1.0.7 → codosdk-1.0.9}/websdk2/cache.py +0 -0
  29. {codosdk-1.0.7 → codosdk-1.0.9}/websdk2/cache_context.py +0 -0
  30. {codosdk-1.0.7 → codosdk-1.0.9}/websdk2/cloud/__init__.py +0 -0
  31. {codosdk-1.0.7 → codosdk-1.0.9}/websdk2/cloud/qcloud_api.py +0 -0
  32. {codosdk-1.0.7 → codosdk-1.0.9}/websdk2/cloud/ucloud_api.py +0 -0
  33. {codosdk-1.0.7 → codosdk-1.0.9}/websdk2/cloud_utils.py +0 -0
  34. {codosdk-1.0.7 → codosdk-1.0.9}/websdk2/configs.py +0 -0
  35. {codosdk-1.0.7 → codosdk-1.0.9}/websdk2/consts.py +0 -0
  36. {codosdk-1.0.7 → codosdk-1.0.9}/websdk2/db_context.py +0 -0
  37. {codosdk-1.0.7 → codosdk-1.0.9}/websdk2/error.py +0 -0
  38. {codosdk-1.0.7 → codosdk-1.0.9}/websdk2/fetch_coroutine.py +0 -0
  39. {codosdk-1.0.7 → codosdk-1.0.9}/websdk2/jwt_token.py +0 -0
  40. {codosdk-1.0.7 → codosdk-1.0.9}/websdk2/ldap.py +0 -0
  41. {codosdk-1.0.7 → codosdk-1.0.9}/websdk2/logger.py +0 -0
  42. {codosdk-1.0.7 → codosdk-1.0.9}/websdk2/mqhelper.py +0 -0
  43. {codosdk-1.0.7 → codosdk-1.0.9}/websdk2/program.py +0 -0
  44. {codosdk-1.0.7 → codosdk-1.0.9}/websdk2/salt_api.py +0 -0
  45. {codosdk-1.0.7 → codosdk-1.0.9}/websdk2/sqlalchemy_pagination.py +0 -0
  46. {codosdk-1.0.7 → codosdk-1.0.9}/websdk2/tools.py +0 -0
  47. {codosdk-1.0.7 → codosdk-1.0.9}/websdk2/utils/__init__.py +0 -0
  48. {codosdk-1.0.7 → codosdk-1.0.9}/websdk2/utils/cc_crypto.py +0 -0
  49. {codosdk-1.0.7 → codosdk-1.0.9}/websdk2/utils/date_format.py +0 -0
  50. {codosdk-1.0.7 → codosdk-1.0.9}/websdk2/utils/pydantic_utils.py +0 -0
  51. {codosdk-1.0.7 → codosdk-1.0.9}/websdk2/web_logs.py +0 -0
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.1
1
+ Metadata-Version: 2.2
2
2
  Name: codosdk
3
- Version: 1.0.7
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
1
+ Metadata-Version: 2.2
2
2
  Name: codosdk
3
- Version: 1.0.7
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 : 202338
5
+ date : 20241212
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.7'
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
- # 重新组装URL
103
- url = "{}{}".format(self.endpoint, kwargs['url'])
104
- kwargs['url'] = url
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
- if not kwargs['method']: kwargs['method'] = 'GET'
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
- # logging.debug(f"with_params_data_url {kwargs}")
109
- body = kwargs.get('body', {})
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 ['POST', 'post', 'PATCH', 'patch', 'PUT', 'put']:
139
+ if kwargs['method'] in {'POST', 'PATCH', 'PUT'}:
113
140
  if not (body or req_json):
114
- raise TypeError('method {}, body can not be empty'.format(kwargs['method']))
115
- else:
116
- if not isinstance(body, dict):
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): kwargs['body'] = json.dumps(body)
148
+ if body and isinstance(body, dict):
149
+ kwargs['body'] = json.dumps(body)
120
150
 
121
- params = kwargs.get('params')
122
- if params: kwargs['url'] = "{}?{}".format(url, urlencode(params))
151
+ params: Optional[dict] = kwargs.get('params')
152
+ if params:
153
+ kwargs['url'] = f"{kwargs['url']}?{urlencode(params)}"
123
154
 
124
- if not self.headers: self.headers = kwargs.get('headers', {})
155
+ kwargs['headers'] = kwargs.get('headers', self.headers or {})
125
156
 
126
- if kwargs['method'] not in ['GET', 'get']: self.headers['Content-Type'] = 'application/json'
157
+ if kwargs['method'] != 'GET':
158
+ kwargs['headers'].setdefault('Content-Type', 'application/json')
127
159
 
128
160
  return kwargs
129
161
 
@@ -99,8 +99,7 @@ class CommonOptView:
99
99
 
100
100
  @staticmethod
101
101
  def del_data(data) -> dict:
102
- keys_to_remove = ['_index', '_rowKey']
103
- for key in keys_to_remove:
102
+ for key in ['_index', '_rowKey', 'update_time']:
104
103
  data.pop(key, None)
105
104
  return data
106
105
 
@@ -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