codosdk 1.0.55__tar.gz → 1.0.56__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.55 → codosdk-1.0.56}/PKG-INFO +1 -1
- codosdk-1.0.56/README.md +215 -0
- {codosdk-1.0.55 → codosdk-1.0.56}/codosdk.egg-info/PKG-INFO +1 -1
- {codosdk-1.0.55 → codosdk-1.0.56}/setup.py +1 -1
- {codosdk-1.0.55 → codosdk-1.0.56}/websdk2/sqlalchemy_pagination.py +2 -1
- codosdk-1.0.55/README.md +0 -58
- {codosdk-1.0.55 → codosdk-1.0.56}/LICENSE +0 -0
- {codosdk-1.0.55 → codosdk-1.0.56}/codosdk.egg-info/SOURCES.txt +0 -0
- {codosdk-1.0.55 → codosdk-1.0.56}/codosdk.egg-info/dependency_links.txt +0 -0
- {codosdk-1.0.55 → codosdk-1.0.56}/codosdk.egg-info/requires.txt +0 -0
- {codosdk-1.0.55 → codosdk-1.0.56}/codosdk.egg-info/top_level.txt +0 -0
- {codosdk-1.0.55 → codosdk-1.0.56}/opssdk/__init__.py +0 -0
- {codosdk-1.0.55 → codosdk-1.0.56}/opssdk/utils/__init__.py +0 -0
- {codosdk-1.0.55 → codosdk-1.0.56}/pyproject.toml +0 -0
- {codosdk-1.0.55 → codosdk-1.0.56}/setup.cfg +0 -0
- {codosdk-1.0.55 → codosdk-1.0.56}/websdk2/__init__.py +0 -0
- {codosdk-1.0.55 → codosdk-1.0.56}/websdk2/api_set.py +0 -0
- {codosdk-1.0.55 → codosdk-1.0.56}/websdk2/apis/__init__.py +0 -0
- {codosdk-1.0.55 → codosdk-1.0.56}/websdk2/apis/admin_apis.py +0 -0
- {codosdk-1.0.55 → codosdk-1.0.56}/websdk2/apis/agent_apis.py +0 -0
- {codosdk-1.0.55 → codosdk-1.0.56}/websdk2/apis/cmdb_apis.py +0 -0
- {codosdk-1.0.55 → codosdk-1.0.56}/websdk2/apis/kerrigan_apis.py +0 -0
- {codosdk-1.0.55 → codosdk-1.0.56}/websdk2/apis/mgv4_apis.py +0 -0
- {codosdk-1.0.55 → codosdk-1.0.56}/websdk2/apis/notice_apis.py +0 -0
- {codosdk-1.0.55 → codosdk-1.0.56}/websdk2/apis/task_apis.py +0 -0
- {codosdk-1.0.55 → codosdk-1.0.56}/websdk2/application.py +0 -0
- {codosdk-1.0.55 → codosdk-1.0.56}/websdk2/base_handler.py +0 -0
- {codosdk-1.0.55 → codosdk-1.0.56}/websdk2/cache.py +0 -0
- {codosdk-1.0.55 → codosdk-1.0.56}/websdk2/cache_context.py +0 -0
- {codosdk-1.0.55 → codosdk-1.0.56}/websdk2/client.py +0 -0
- {codosdk-1.0.55 → codosdk-1.0.56}/websdk2/cloud/__init__.py +0 -0
- {codosdk-1.0.55 → codosdk-1.0.56}/websdk2/cloud/qcloud_api.py +0 -0
- {codosdk-1.0.55 → codosdk-1.0.56}/websdk2/cloud/ucloud_api.py +0 -0
- {codosdk-1.0.55 → codosdk-1.0.56}/websdk2/cloud_utils.py +0 -0
- {codosdk-1.0.55 → codosdk-1.0.56}/websdk2/configs.py +0 -0
- {codosdk-1.0.55 → codosdk-1.0.56}/websdk2/consts.py +0 -0
- {codosdk-1.0.55 → codosdk-1.0.56}/websdk2/crud_utils.py +0 -0
- {codosdk-1.0.55 → codosdk-1.0.56}/websdk2/db_context.py +0 -0
- {codosdk-1.0.55 → codosdk-1.0.56}/websdk2/error.py +0 -0
- {codosdk-1.0.55 → codosdk-1.0.56}/websdk2/fetch_coroutine.py +0 -0
- {codosdk-1.0.55 → codosdk-1.0.56}/websdk2/jwt_token.py +0 -0
- {codosdk-1.0.55 → codosdk-1.0.56}/websdk2/ldap.py +0 -0
- {codosdk-1.0.55 → codosdk-1.0.56}/websdk2/logger.py +0 -0
- {codosdk-1.0.55 → codosdk-1.0.56}/websdk2/model_utils.py +0 -0
- {codosdk-1.0.55 → codosdk-1.0.56}/websdk2/mqhelper.py +0 -0
- {codosdk-1.0.55 → codosdk-1.0.56}/websdk2/program.py +0 -0
- {codosdk-1.0.55 → codosdk-1.0.56}/websdk2/salt_api.py +0 -0
- {codosdk-1.0.55 → codosdk-1.0.56}/websdk2/tools.py +0 -0
- {codosdk-1.0.55 → codosdk-1.0.56}/websdk2/utils/__init__.py +0 -0
- {codosdk-1.0.55 → codosdk-1.0.56}/websdk2/utils/cc_crypto.py +0 -0
- {codosdk-1.0.55 → codosdk-1.0.56}/websdk2/utils/date_format.py +0 -0
- {codosdk-1.0.55 → codosdk-1.0.56}/websdk2/utils/pydantic_utils.py +0 -0
- {codosdk-1.0.55 → codosdk-1.0.56}/websdk2/utils/pydantic_utils_v2.py +0 -0
- {codosdk-1.0.55 → codosdk-1.0.56}/websdk2/web_logs.py +0 -0
codosdk-1.0.56/README.md
ADDED
|
@@ -0,0 +1,215 @@
|
|
|
1
|
+
# CODO SDK
|
|
2
|
+
|
|
3
|
+
[](https://www.python.org/)
|
|
4
|
+
[](https://www.gnu.org/licenses/gpl-3.0.html)
|
|
5
|
+
[](https://pypi.org/project/codosdk/)
|
|
6
|
+
|
|
7
|
+
CODO项目的官方Python SDK,提供企业级Web应用开发框架和运维工具集成。基于Tornado,集成数据库、缓存、消息队列、认证等核心组件。
|
|
8
|
+
|
|
9
|
+
## 核心特性
|
|
10
|
+
|
|
11
|
+
- **Tornado Web框架** - 异步请求处理,内置认证和权限管理
|
|
12
|
+
- **数据库支持** - SQLAlchemy ORM,支持主从库配置
|
|
13
|
+
- **Redis缓存** - 多连接池管理
|
|
14
|
+
- **消息队列** - RabbitMQ集成
|
|
15
|
+
- **多种认证** - JWT、LDAP、Session
|
|
16
|
+
- **API集成** - 预定义CODO各平台API接口
|
|
17
|
+
- **数据验证** - Pydantic模型验证
|
|
18
|
+
- **工具支持** - 各类常用工具封装
|
|
19
|
+
|
|
20
|
+
## 安装
|
|
21
|
+
|
|
22
|
+
```bash
|
|
23
|
+
# 从PyPI安装
|
|
24
|
+
pip install codosdk
|
|
25
|
+
|
|
26
|
+
# 从GitHub安装最新版
|
|
27
|
+
pip install -U git+https://github.com/ss1917/ops_sdk.git
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
## 快速开始
|
|
31
|
+
|
|
32
|
+
### 创建Web应用
|
|
33
|
+
|
|
34
|
+
```python
|
|
35
|
+
from websdk2.application import Application
|
|
36
|
+
from websdk2.base_handler import BaseHandler
|
|
37
|
+
|
|
38
|
+
class HelloHandler(BaseHandler):
|
|
39
|
+
def get(self):
|
|
40
|
+
self.write({'code': 0, 'msg': 'Hello CODO!'})
|
|
41
|
+
|
|
42
|
+
handlers = [
|
|
43
|
+
(r'/api/hello/', HelloHandler, {'handle_name': '问候接口', 'method': ['GET']}),
|
|
44
|
+
]
|
|
45
|
+
|
|
46
|
+
app = Application(handlers)
|
|
47
|
+
app.start_server()
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
### 使用数据库
|
|
51
|
+
|
|
52
|
+
```python
|
|
53
|
+
from websdk2.db_context import DBContextV2 as DBContext
|
|
54
|
+
from sqlalchemy import Column, Integer, String
|
|
55
|
+
from sqlalchemy.ext.declarative import declarative_base
|
|
56
|
+
|
|
57
|
+
Base = declarative_base()
|
|
58
|
+
|
|
59
|
+
class User(Base):
|
|
60
|
+
__tablename__ = 'users'
|
|
61
|
+
id = Column(Integer, primary_key=True)
|
|
62
|
+
username = Column(String(50), unique=True)
|
|
63
|
+
|
|
64
|
+
# 查询
|
|
65
|
+
with DBContext('r') as session:
|
|
66
|
+
user = session.query(User).filter(User.username == 'admin').first()
|
|
67
|
+
|
|
68
|
+
# 创建/更新
|
|
69
|
+
with DBContext('w') as session:
|
|
70
|
+
user = User(username='new_user')
|
|
71
|
+
session.add(user)
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
### 使用缓存
|
|
75
|
+
|
|
76
|
+
```python
|
|
77
|
+
from websdk2.cache_context import cache_conn
|
|
78
|
+
|
|
79
|
+
redis_conn = cache_conn()
|
|
80
|
+
redis_conn.set('key', 'value', ex=3600)
|
|
81
|
+
value = redis_conn.get('key')
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
### JWT认证
|
|
85
|
+
|
|
86
|
+
```python
|
|
87
|
+
from websdk2.jwt_token import AuthToken
|
|
88
|
+
|
|
89
|
+
auth = AuthToken()
|
|
90
|
+
|
|
91
|
+
# 生成Token
|
|
92
|
+
token = auth.encode_auth_token(
|
|
93
|
+
user_id='123',
|
|
94
|
+
username='admin',
|
|
95
|
+
exp_time=7 # 7天过期
|
|
96
|
+
)
|
|
97
|
+
|
|
98
|
+
# 验证Token
|
|
99
|
+
user_info = auth.decode_auth_token(token)
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
### 消息队列
|
|
103
|
+
|
|
104
|
+
```python
|
|
105
|
+
from websdk2.mqhelper import MessageQueueBase
|
|
106
|
+
import json
|
|
107
|
+
|
|
108
|
+
# 发送消息(with语句自动管理连接)
|
|
109
|
+
msg = json.dumps({'task_id': '123', 'status': 'running'})
|
|
110
|
+
with MessageQueueBase('bpm_task_log', 'direct', 'the_log') as mq:
|
|
111
|
+
mq.publish_message(msg)
|
|
112
|
+
|
|
113
|
+
# 消费消息(继承MessageQueueBase)
|
|
114
|
+
class TaskConsumer(MessageQueueBase):
|
|
115
|
+
def __init__(self):
|
|
116
|
+
super().__init__(
|
|
117
|
+
exchange='bpm_task_log',
|
|
118
|
+
exchange_type='direct',
|
|
119
|
+
routing_key='the_log',
|
|
120
|
+
queue_name='task_queue'
|
|
121
|
+
)
|
|
122
|
+
|
|
123
|
+
def on_message(self, body):
|
|
124
|
+
"""处理接收到的消息"""
|
|
125
|
+
print(f"收到消息: {body}")
|
|
126
|
+
|
|
127
|
+
# 启动消费
|
|
128
|
+
consumer = TaskConsumer()
|
|
129
|
+
consumer.start_consuming()
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
## 配置示例
|
|
133
|
+
|
|
134
|
+
### 数据库配置
|
|
135
|
+
|
|
136
|
+
```python
|
|
137
|
+
from websdk2.consts import const
|
|
138
|
+
|
|
139
|
+
db_config = {
|
|
140
|
+
const.DB_CONFIG_ITEM: {
|
|
141
|
+
const.DEFAULT_DB_KEY: {
|
|
142
|
+
const.DBHOST_KEY: 'localhost',
|
|
143
|
+
const.DBPORT_KEY: 3306,
|
|
144
|
+
const.DBUSER_KEY: 'root',
|
|
145
|
+
const.DBPWD_KEY: 'password',
|
|
146
|
+
const.DBNAME_KEY: 'codo_db',
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
### Redis配置
|
|
153
|
+
|
|
154
|
+
```python
|
|
155
|
+
from websdk2.consts import const
|
|
156
|
+
redis_config = {
|
|
157
|
+
const.REDIS_CONFIG_ITEM: {
|
|
158
|
+
const.DEFAULT_RD_KEY: {
|
|
159
|
+
const.RD_HOST_KEY: 'localhost',
|
|
160
|
+
const.RD_PORT_KEY: 6379,
|
|
161
|
+
const.RD_DB_KEY: 0,
|
|
162
|
+
const.RD_PASSWORD_KEY: 'password',
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
## 项目结构
|
|
169
|
+
|
|
170
|
+
```
|
|
171
|
+
ops_sdk/
|
|
172
|
+
├── websdk2/ # Web开发SDK(主模块)
|
|
173
|
+
│ ├── apis/ # CODO平台API集合
|
|
174
|
+
│ │ ├── admin_apis.py # 用户管理API
|
|
175
|
+
│ │ ├── mgv4_apis.py # 后台管理API
|
|
176
|
+
│ │ ├── cmdb_apis.py # CMDB配置API
|
|
177
|
+
│ │ ├── agent_apis.py # Agent代理API
|
|
178
|
+
│ │ ├── task_apis.py # 任务调度API
|
|
179
|
+
│ │ ├── kerrigan_apis.py # 配置文件管理API
|
|
180
|
+
│ │ └── notice_apis.py # 通知告警API
|
|
181
|
+
│ │
|
|
182
|
+
│ ├── cloud/ # 云厂商SDK
|
|
183
|
+
│ │
|
|
184
|
+
│ ├── utils/ # 工具集
|
|
185
|
+
│ │ ├── pydantic_utils.py # Pydantic数据验证
|
|
186
|
+
│ │ ├── date_format.py # 日期格式化
|
|
187
|
+
│ │ └── cc_crypto.py # 加密解密
|
|
188
|
+
│ │
|
|
189
|
+
│ ├── application.py # Tornado应用定制
|
|
190
|
+
│ ├── base_handler.py # 请求处理基类(认证、授权)
|
|
191
|
+
│ ├── db_context.py # 数据库连接管理
|
|
192
|
+
│ ├── cache.py / cache_context.py # Redis缓存管理
|
|
193
|
+
│ ├── crud_utils.py # CRUD工具(分页、验证)
|
|
194
|
+
│ ├── sqlalchemy_pagination.py # ORM分页组件
|
|
195
|
+
│ ├── model_utils.py # 模型转换工具
|
|
196
|
+
│ ├── jwt_token.py # JWT认证
|
|
197
|
+
│ ├── mqhelper.py # RabbitMQ消息队列
|
|
198
|
+
│ ├── client.py # API调用客户端
|
|
199
|
+
│ ├── ldap.py # LDAP认证
|
|
200
|
+
│ ├── configs.py # 配置管理
|
|
201
|
+
│ ├── consts.py # 常量定义
|
|
202
|
+
│ ├── error.py # 自定义异常
|
|
203
|
+
│ ├── logger.py # 日志配置
|
|
204
|
+
│ └── ... # 其他工具模块
|
|
205
|
+
│
|
|
206
|
+
├── opssdk/ # 运维SDK(原始模块)
|
|
207
|
+
│ └── utils/ # 运维工具集
|
|
208
|
+
│
|
|
209
|
+
├── setup.py # 包配置
|
|
210
|
+
└── pyproject.toml # 项目配置
|
|
211
|
+
```
|
|
212
|
+
|
|
213
|
+
## License
|
|
214
|
+
|
|
215
|
+
Everything is [GPL v3.0](https://www.gnu.org/licenses/gpl-3.0.html).
|
|
@@ -9,7 +9,7 @@ desc : CODO SDK
|
|
|
9
9
|
import sys
|
|
10
10
|
from setuptools import setup, find_packages
|
|
11
11
|
|
|
12
|
-
VERSION = '1.0.
|
|
12
|
+
VERSION = '1.0.56'
|
|
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.')
|
|
@@ -48,6 +48,7 @@ def paginate(query, order_by: str = None, **query_params):
|
|
|
48
48
|
else:
|
|
49
49
|
items = query.all() if page_size >= 200 else query.limit(page_size).offset((page - 1) * page_size).all()
|
|
50
50
|
|
|
51
|
-
|
|
51
|
+
# 计算总数:去掉排序避免 filesort
|
|
52
|
+
total = query.order_by(None).count()
|
|
52
53
|
if not items_not_to_list: items = queryset_to_list(items)
|
|
53
54
|
return Page(items, page, page_size, total)
|
codosdk-1.0.55/README.md
DELETED
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
## 安装
|
|
2
|
-
|
|
3
|
-
### python3安装
|
|
4
|
-
|
|
5
|
-
[python链接](https://www.python.org/)
|
|
6
|
-
|
|
7
|
-
##### python3.9以上
|
|
8
|
-
|
|
9
|
-
##### SDK 安装
|
|
10
|
-
|
|
11
|
-
```bash
|
|
12
|
-
$ pip3 install -U git+https://github.com/ss1917/ops_sdk.git
|
|
13
|
-
```
|
|
14
|
-
|
|
15
|
-
## 结构
|
|
16
|
-
|
|
17
|
-
```
|
|
18
|
-
├── README.md 项目readme
|
|
19
|
-
└── opssdk
|
|
20
|
-
├── logs 日志模块
|
|
21
|
-
├── install 安装模块
|
|
22
|
-
├── get_info 配置获取
|
|
23
|
-
└── operate 运维操作
|
|
24
|
-
├── check 系统参数检查和获取
|
|
25
|
-
├── mysql mysql 操作
|
|
26
|
-
├── mail 发送邮件
|
|
27
|
-
└── centralization 集中化管理工具 salt
|
|
28
|
-
├── websdk2 web开发使用
|
|
29
|
-
├── application.py tornado application
|
|
30
|
-
├── base_handler.py tornado 基类
|
|
31
|
-
├── cache.py 处理redis缓存
|
|
32
|
-
├── configs.py 配置文件管理
|
|
33
|
-
├── consts.py 常量
|
|
34
|
-
├── db_context.py MySQL 处理类
|
|
35
|
-
├── error.py 异常
|
|
36
|
-
├── crud_utils.py API CRUD类
|
|
37
|
-
├── model_utils.py 数据库模型处理类 sqlalchemy_pagination
|
|
38
|
-
├── sqlalchemy_pagination.py 分页
|
|
39
|
-
├── fetch_coroutine.py
|
|
40
|
-
├── jwt_token.py JWT处理
|
|
41
|
-
├── mqhelper.py MQ 处理类
|
|
42
|
-
├── program.py
|
|
43
|
-
├── salt_api.py salt 处理类 可以移到工具类
|
|
44
|
-
├── ldap.py LDAP 处理
|
|
45
|
-
├── sms.py 发送短信 可以移到工具类
|
|
46
|
-
├── tools.py 工具类
|
|
47
|
-
├── clent.py API调用客户端封装
|
|
48
|
-
└── apis API集合
|
|
49
|
-
├── mgv4_apis 后台API集合
|
|
50
|
-
├── cmdb_apis 配置平台API
|
|
51
|
-
├── agent_apis Agent
|
|
52
|
-
├── kerrigan_apis 配置文件管理
|
|
53
|
-
└── notice_apis 待补充
|
|
54
|
-
```
|
|
55
|
-
|
|
56
|
-
## License
|
|
57
|
-
|
|
58
|
-
Everything is [GPL v3.0](https://www.gnu.org/licenses/gpl-3.0.html).
|
|
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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|