mcsmapi 0.1.6__py3-none-any.whl → 0.1.8b1__py3-none-any.whl
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.
- mcsmapi/__init__.py +3 -4
- mcsmapi/apis/daemon.py +33 -38
- mcsmapi/apis/file.py +122 -135
- mcsmapi/apis/image.py +28 -29
- mcsmapi/apis/instance.py +107 -126
- mcsmapi/apis/overview.py +12 -8
- mcsmapi/apis/user.py +37 -37
- mcsmapi/models/common.py +30 -0
- mcsmapi/models/daemon.py +60 -96
- mcsmapi/models/file.py +89 -78
- mcsmapi/models/image.py +93 -85
- mcsmapi/models/instance.py +155 -133
- mcsmapi/models/overview.py +148 -57
- mcsmapi/models/user.py +80 -57
- mcsmapi/pool.py +1 -0
- mcsmapi/request.py +20 -14
- {mcsmapi-0.1.6.dist-info → mcsmapi-0.1.8b1.dist-info}/METADATA +6 -3
- mcsmapi-0.1.8b1.dist-info/RECORD +24 -0
- mcsmapi-0.1.6.dist-info/RECORD +0 -23
- {mcsmapi-0.1.6.dist-info → mcsmapi-0.1.8b1.dist-info}/WHEEL +0 -0
- {mcsmapi-0.1.6.dist-info → mcsmapi-0.1.8b1.dist-info}/licenses/LICENSE +0 -0
- {mcsmapi-0.1.6.dist-info → mcsmapi-0.1.8b1.dist-info}/top_level.txt +0 -0
mcsmapi/models/overview.py
CHANGED
@@ -1,112 +1,203 @@
|
|
1
|
-
from
|
1
|
+
from enum import Enum
|
2
|
+
from typing import Literal
|
2
3
|
from pydantic import BaseModel
|
4
|
+
from mcsmapi.models.common import CpuMemChart, ProcessInfo
|
3
5
|
from mcsmapi.models.daemon import DaemonModel
|
4
6
|
|
5
7
|
|
6
8
|
class SystemUser(BaseModel):
|
7
9
|
"""系统用户信息"""
|
8
10
|
|
11
|
+
uid: int
|
9
12
|
"""用户 ID (UID)"""
|
10
|
-
|
13
|
+
gid: int
|
11
14
|
"""用户组 ID (GID)"""
|
12
|
-
|
15
|
+
username: str
|
13
16
|
"""用户名"""
|
14
|
-
|
17
|
+
homedir: str
|
15
18
|
"""用户主目录"""
|
16
|
-
|
17
|
-
"""默认 Shell 解释器
|
18
|
-
shell: Optional[str] = None
|
19
|
+
shell: str | None
|
20
|
+
"""默认 Shell 解释器"""
|
19
21
|
|
20
22
|
|
21
23
|
class SystemInfo(BaseModel):
|
22
24
|
"""系统信息"""
|
23
25
|
|
26
|
+
user: SystemUser
|
24
27
|
"""当前登录用户信息"""
|
25
|
-
|
28
|
+
time: int
|
26
29
|
"""系统当前时间 (Unix 时间戳)"""
|
27
|
-
|
30
|
+
totalmem: int
|
28
31
|
"""系统总内存大小 (单位: 字节)"""
|
29
|
-
|
32
|
+
freemem: int
|
30
33
|
"""系统空闲内存大小 (单位: 字节)"""
|
31
|
-
|
34
|
+
type: str
|
32
35
|
"""操作系统类型"""
|
33
|
-
|
36
|
+
version: str
|
34
37
|
"""操作系统版本"""
|
35
|
-
|
36
|
-
"""
|
37
|
-
|
38
|
+
node: str
|
39
|
+
"""系统NodeJS版本"""
|
40
|
+
hostname: str
|
38
41
|
"""主机名"""
|
39
|
-
|
42
|
+
loadavg: tuple[float, float, float]
|
40
43
|
"""系统负载平均值 (过去 1、5、15 分钟)"""
|
41
|
-
|
44
|
+
platform: str
|
42
45
|
"""操作系统平台"""
|
43
|
-
|
46
|
+
release: str
|
44
47
|
"""系统发行版本信息"""
|
45
|
-
|
48
|
+
uptime: float
|
46
49
|
"""系统运行时间 (单位: 秒)"""
|
47
|
-
|
50
|
+
cpu: float
|
48
51
|
"""CPU 当前使用率 (单位: %)"""
|
49
|
-
cpu: float = 0
|
50
52
|
|
51
53
|
|
52
54
|
class RecordInfo(BaseModel):
|
53
55
|
"""安全记录信息"""
|
54
56
|
|
55
|
-
|
56
|
-
|
57
|
+
logined: int
|
58
|
+
"""登录成功次数"""
|
59
|
+
illegalAccess: int
|
57
60
|
"""非法访问次数"""
|
58
|
-
|
61
|
+
banips: int
|
59
62
|
"""被封禁的 IP 数量"""
|
60
|
-
|
63
|
+
loginFailed: int
|
61
64
|
"""登录失败次数"""
|
62
|
-
loginFailed: int = 0
|
63
65
|
|
64
66
|
|
65
|
-
class
|
66
|
-
"""
|
67
|
+
class RequestChart(BaseModel):
|
68
|
+
"""应用实例运行和接口请求量趋势"""
|
67
69
|
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
70
|
+
value: int
|
71
|
+
"""接口请求量"""
|
72
|
+
totalInstance: int
|
73
|
+
"""总实例数量"""
|
74
|
+
runningInstance: int
|
75
|
+
"""运行中实例数量"""
|
72
76
|
|
73
77
|
|
74
|
-
class
|
75
|
-
"""
|
78
|
+
class ChartInfo(BaseModel):
|
79
|
+
"""图表数据信息"""
|
76
80
|
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
"""进程当前工作目录"""
|
82
|
-
cwd: str = ""
|
81
|
+
system: list[CpuMemChart]
|
82
|
+
"""系统资源使用趋势"""
|
83
|
+
request: list[RequestChart]
|
84
|
+
"""应用实例运行和接口请求量趋势"""
|
83
85
|
|
84
86
|
|
85
87
|
class RemoteCountInfo(BaseModel):
|
86
|
-
"""
|
88
|
+
"""远程节点统计信息"""
|
87
89
|
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
90
|
+
total: int
|
91
|
+
"""远程节点总数"""
|
92
|
+
available: int
|
93
|
+
"""可用的远程节点数量"""
|
92
94
|
|
93
95
|
|
94
96
|
class OverviewModel(BaseModel):
|
95
97
|
"""系统概览信息"""
|
96
98
|
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
99
|
+
version: str
|
100
|
+
"""面板当前版本"""
|
101
|
+
specifiedDaemonVersion: str
|
102
|
+
"""指定的远程节点版本"""
|
103
|
+
system: SystemInfo
|
101
104
|
"""系统信息"""
|
102
|
-
|
105
|
+
record: RecordInfo
|
103
106
|
"""安全访问记录"""
|
104
|
-
|
107
|
+
process: ProcessInfo
|
105
108
|
"""进程状态信息"""
|
106
|
-
|
109
|
+
chart: ChartInfo
|
107
110
|
"""系统与请求统计图表数据"""
|
108
|
-
|
109
|
-
"""
|
110
|
-
|
111
|
-
"""
|
112
|
-
|
111
|
+
remoteCount: RemoteCountInfo
|
112
|
+
"""远程节点统计信息"""
|
113
|
+
remote: list[DaemonModel]
|
114
|
+
"""远程节点详细信息"""
|
115
|
+
|
116
|
+
|
117
|
+
class LogType(Enum):
|
118
|
+
"""操作类型"""
|
119
|
+
|
120
|
+
# 系统相关
|
121
|
+
SYSTEM_CONFIG_CHANGE = "system_config_change"
|
122
|
+
"""系统配置修改"""
|
123
|
+
|
124
|
+
# 用户相关
|
125
|
+
USER_LOGIN = "user_login"
|
126
|
+
"""用户登录"""
|
127
|
+
USER_CONFIG_CHANGE = "user_config_change"
|
128
|
+
"""修改用户配置"""
|
129
|
+
USER_DELETE = "user_delete"
|
130
|
+
"""删除用户"""
|
131
|
+
USER_CREATE = "user_create"
|
132
|
+
"""创建用户"""
|
133
|
+
|
134
|
+
# 节点相关
|
135
|
+
DAEMON_CONFIG_CHANGE = "daemon_config_change"
|
136
|
+
"""修改节点配置"""
|
137
|
+
DAEMON_REMOVE = "daemon_remove"
|
138
|
+
"""删除节点"""
|
139
|
+
DAEMON_CREATE = "daemon_create"
|
140
|
+
"""创建节点"""
|
141
|
+
|
142
|
+
# 实例任务相关
|
143
|
+
INSTANCE_TASK_DELETE = "instance_task_delete"
|
144
|
+
"""删除实例计划任务"""
|
145
|
+
INSTANCE_TASK_CREATE = "instance_task_create"
|
146
|
+
"""创建实例计划任务"""
|
147
|
+
|
148
|
+
# 实例文件相关
|
149
|
+
INSTANCE_FILE_DELETE = "instance_file_delete"
|
150
|
+
"""删除实例文件"""
|
151
|
+
INSTANCE_FILE_DOWNLOAD = "instance_file_download"
|
152
|
+
"""下载实例文件"""
|
153
|
+
INSTANCE_FILE_UPDATE = "instance_file_update"
|
154
|
+
"""更新实例文件"""
|
155
|
+
INSTANCE_FILE_UPLOAD = "instance_file_upload"
|
156
|
+
"""上传实例文件"""
|
157
|
+
|
158
|
+
# 实例操作相关
|
159
|
+
INSTANCE_DELETE = "instance_delete"
|
160
|
+
"""删除实例"""
|
161
|
+
INSTANCE_CREATE = "instance_create"
|
162
|
+
"""创建实例"""
|
163
|
+
INSTANCE_CONFIG_CHANGE = "instance_config_change"
|
164
|
+
"""修改实例配置"""
|
165
|
+
INSTANCE_KILL = "instance_kill"
|
166
|
+
"""强制停止实例"""
|
167
|
+
INSTANCE_UPDATE = "instance_update"
|
168
|
+
"""更新实例"""
|
169
|
+
INSTANCE_RESTART = "instance_restart"
|
170
|
+
"""重启实例"""
|
171
|
+
INSTANCE_STOP = "instance_stop"
|
172
|
+
"""停止实例"""
|
173
|
+
INSTANCE_START = "instance_start"
|
174
|
+
"""启动实例"""
|
175
|
+
|
176
|
+
|
177
|
+
class LogDetail(BaseModel):
|
178
|
+
"""操作日志详情"""
|
179
|
+
|
180
|
+
operation_id: str
|
181
|
+
"""操作者uuid"""
|
182
|
+
operator_name: str | None = None
|
183
|
+
"""操作者用户名"""
|
184
|
+
operation_time: str
|
185
|
+
"""操作时间戳"""
|
186
|
+
operator_ip: str
|
187
|
+
"""操作者ip"""
|
188
|
+
operation_level: Literal["info", "warning", "error", "unknown"]
|
189
|
+
"""日志等级"""
|
190
|
+
type: LogType
|
191
|
+
"""操作类型"""
|
192
|
+
instance_name: str | None = None
|
193
|
+
"""实例名称(仅实例事件存在)"""
|
194
|
+
instance_id: str | None = None
|
195
|
+
"""实例ID(仅实例事件存在)"""
|
196
|
+
daemon_id: str | None = None
|
197
|
+
"""节点ID(仅实例事件和节点事件存在)"""
|
198
|
+
login_result: bool | None = None
|
199
|
+
"""登录结果(仅登录事件存在)"""
|
200
|
+
file: list[str] | str | None = None
|
201
|
+
"""被操作的文件(仅文件操作事件存在)"""
|
202
|
+
task_name: str | None = None
|
203
|
+
"""任务名称(仅任务操作事件存在)"""
|
mcsmapi/models/user.py
CHANGED
@@ -1,71 +1,88 @@
|
|
1
|
-
from
|
1
|
+
from enum import IntEnum
|
2
|
+
from typing import Any
|
2
3
|
from pydantic import BaseModel
|
3
4
|
from mcsmapi.models.instance import InstanceDetail, UserInstancesList
|
4
5
|
|
5
6
|
|
7
|
+
class UserPermission(IntEnum):
|
8
|
+
"""用户权限级别"""
|
9
|
+
|
10
|
+
BANNED = -1
|
11
|
+
USER = 1
|
12
|
+
ADMIN = 10
|
13
|
+
|
14
|
+
|
15
|
+
class UserCreateResult(BaseModel):
|
16
|
+
"""用户创建结果"""
|
17
|
+
|
18
|
+
uuid: str
|
19
|
+
"""用户UUID"""
|
20
|
+
userName: str
|
21
|
+
"""用户名"""
|
22
|
+
permission: UserPermission
|
23
|
+
"""用户权限级别"""
|
24
|
+
|
25
|
+
|
6
26
|
class UserModel(BaseModel):
|
7
27
|
"""用户信息模型"""
|
8
28
|
|
9
|
-
|
10
|
-
|
29
|
+
uuid: str
|
30
|
+
"""用户UUID"""
|
31
|
+
userName: str
|
11
32
|
"""用户名"""
|
12
|
-
|
13
|
-
"""
|
14
|
-
|
15
|
-
"""
|
16
|
-
|
17
|
-
"""
|
18
|
-
|
19
|
-
"""用户权限级别 (1=用户, 10=管理员, -1=被封禁的用户)"""
|
20
|
-
permission: int = 1
|
21
|
-
"""用户注册时间 (时间字符串格式)"""
|
22
|
-
registerTime: str = ""
|
23
|
-
"""用户最后登录时间 (时间字符串格式)"""
|
24
|
-
loginTime: str = ""
|
33
|
+
permission: UserPermission
|
34
|
+
"""用户权限级别"""
|
35
|
+
registerTime: str
|
36
|
+
"""用户注册时间 (YYYY/M/D hh:mm:ss)"""
|
37
|
+
loginTime: str
|
38
|
+
"""用户最后登录时间 (YYYY/M/D hh:mm:ss)"""
|
39
|
+
apiKey: str
|
25
40
|
"""用户 API 密钥"""
|
26
|
-
|
27
|
-
"""是否为初始化用户 (系统内置用户)"""
|
28
|
-
isInit: bool = False
|
29
|
-
"""用户安全密钥 (可能用于额外的身份验证)"""
|
30
|
-
secret: str = ""
|
41
|
+
open2FA: bool
|
31
42
|
"""是否启用双因素认证 (2FA)"""
|
32
|
-
|
43
|
+
instances: list[UserInstancesList]
|
33
44
|
"""用户关联的实例列表"""
|
34
|
-
|
35
|
-
|
36
|
-
|
45
|
+
isInit: bool
|
46
|
+
"""是否为初始化用户 (已弃用)"""
|
47
|
+
secret: str
|
48
|
+
"""用户安全密钥 (已弃用)"""
|
49
|
+
passWord: str
|
50
|
+
"""用户密码 (已弃用)"""
|
51
|
+
passWordType: int
|
52
|
+
"""密码类型 (已弃用)"""
|
53
|
+
salt: str
|
54
|
+
"""密码盐值 (已弃用)"""
|
55
|
+
|
56
|
+
def delete(self):
|
37
57
|
"""
|
38
|
-
|
58
|
+
删除该用户
|
39
59
|
|
40
|
-
|
41
|
-
- bool: 删除成功后返回True。
|
60
|
+
:returns: 删除成功后返回True
|
42
61
|
"""
|
43
62
|
from mcsmapi.apis.user import User
|
44
63
|
|
45
64
|
return User().delete([self.uuid])
|
46
65
|
|
47
|
-
def update(self, config: dict[str, Any])
|
66
|
+
def update(self, config: dict[str, Any]):
|
48
67
|
"""
|
49
|
-
|
68
|
+
更新该用户的信息
|
50
69
|
|
51
|
-
|
52
|
-
- config (dict[str, Any]): 用户的新信息,以字典形式提供,缺失内容使用原用户信息填充。
|
70
|
+
:params config: 用户的新信息,以字典形式提供,缺失内容使用原用户信息填充
|
53
71
|
|
54
|
-
|
55
|
-
- bool: 更新成功后返回True。
|
72
|
+
:returns: 更新成功后返回True
|
56
73
|
"""
|
57
74
|
from mcsmapi.apis.user import User
|
58
75
|
|
59
|
-
updated_config = self.
|
76
|
+
updated_config = self.model_dump()
|
60
77
|
updated_config.update(config)
|
61
78
|
# 过滤用户信息中不需要的字段
|
62
79
|
user_config_dict = {
|
63
80
|
key: updated_config[key]
|
64
|
-
for key in UserConfig.
|
81
|
+
for key in UserConfig.model_fields.keys()
|
65
82
|
if key in updated_config
|
66
83
|
}
|
67
84
|
|
68
|
-
user_config = UserConfig(**user_config_dict).
|
85
|
+
user_config = UserConfig(**user_config_dict).model_dump()
|
69
86
|
|
70
87
|
return User().update(self.uuid, user_config)
|
71
88
|
|
@@ -73,38 +90,44 @@ class UserModel(BaseModel):
|
|
73
90
|
class SearchUserModel(BaseModel):
|
74
91
|
"""用户搜索结果"""
|
75
92
|
|
93
|
+
total: int
|
76
94
|
"""匹配的用户总数"""
|
77
|
-
|
95
|
+
page: int
|
78
96
|
"""当前页码"""
|
79
|
-
|
97
|
+
page_size: int
|
80
98
|
"""每页返回的用户数量"""
|
81
|
-
|
99
|
+
max_page: int
|
82
100
|
"""最大可用页数"""
|
83
|
-
|
101
|
+
data: list[UserModel]
|
84
102
|
"""用户信息列表"""
|
85
|
-
data: List[UserModel] = []
|
86
103
|
|
87
104
|
|
88
105
|
class UserConfig(BaseModel):
|
89
106
|
"""用户配置信息"""
|
90
107
|
|
91
|
-
|
92
|
-
|
108
|
+
uuid: str = ""
|
109
|
+
"""用户UUID"""
|
110
|
+
userName: str = ""
|
93
111
|
"""用户名"""
|
94
|
-
|
112
|
+
loginTime: str = ""
|
95
113
|
"""最后登录时间"""
|
96
|
-
|
114
|
+
registerTime: str = ""
|
97
115
|
"""注册时间"""
|
98
|
-
|
116
|
+
instances: list[InstanceDetail] = []
|
99
117
|
"""用户拥有的实例列表"""
|
100
|
-
|
101
|
-
"""用户权限级别
|
102
|
-
|
103
|
-
"""
|
104
|
-
|
105
|
-
"""是否为初始化用户 (系统内置用户)"""
|
106
|
-
isInit: bool
|
107
|
-
"""用户安全密钥 (可能用于额外的身份验证)"""
|
108
|
-
secret: str
|
118
|
+
permission: UserPermission = UserPermission.USER
|
119
|
+
"""用户权限级别"""
|
120
|
+
passWord: str = ""
|
121
|
+
"""用户密码"""
|
122
|
+
open2FA: bool = False
|
109
123
|
"""是否启用双因素认证 (2FA)"""
|
110
|
-
|
124
|
+
apiKey: str = ""
|
125
|
+
"""用户 API 密钥"""
|
126
|
+
passWordType: int = 1
|
127
|
+
"""密码类型 (已弃用)"""
|
128
|
+
isInit: bool = False
|
129
|
+
"""是否为初始化用户 (已弃用)"""
|
130
|
+
secret: str = ""
|
131
|
+
"""用户安全密钥 (已弃用)"""
|
132
|
+
salt: str = ""
|
133
|
+
"""用户密码盐值 (已弃用)"""
|
mcsmapi/pool.py
CHANGED
mcsmapi/request.py
CHANGED
@@ -1,59 +1,65 @@
|
|
1
1
|
from typing import Any
|
2
2
|
import requests
|
3
3
|
import urllib.parse
|
4
|
+
|
5
|
+
from mcsmapi.pool import ApiPool
|
4
6
|
from .exceptions import MCSMError
|
5
7
|
|
6
8
|
|
7
9
|
class Request:
|
8
|
-
mcsm_url = ""
|
9
|
-
timeout = 5
|
10
|
+
mcsm_url: str = ""
|
11
|
+
timeout: int = 5
|
10
12
|
session = requests.Session()
|
11
|
-
apikey = None
|
12
|
-
token = None
|
13
|
+
apikey: str | None = None
|
14
|
+
token: str | None = None
|
13
15
|
|
14
16
|
@classmethod
|
15
|
-
def set_mcsm_url(cls, url):
|
17
|
+
def set_mcsm_url(cls, url: str):
|
16
18
|
"""设置类级别的 mcsm_url"""
|
17
19
|
cls.mcsm_url = url
|
18
20
|
|
19
21
|
@classmethod
|
20
|
-
def set_timeout(cls, timeout):
|
22
|
+
def set_timeout(cls, timeout: int):
|
21
23
|
"""设置类级别的 timeout"""
|
22
24
|
cls.timeout = timeout
|
23
25
|
|
24
26
|
@classmethod
|
25
|
-
def set_apikey(cls, apikey):
|
27
|
+
def set_apikey(cls, apikey: str):
|
26
28
|
"""设置类级别的 apikey"""
|
27
29
|
cls.apikey = apikey
|
28
30
|
|
29
31
|
@classmethod
|
30
|
-
def set_token(cls, token):
|
32
|
+
def set_token(cls, token: str):
|
31
33
|
"""设置类级别的 token"""
|
32
34
|
cls.token = token
|
33
35
|
|
34
36
|
@classmethod
|
35
|
-
def __init__(cls, mcsm_url=None, timeout=None):
|
37
|
+
def __init__(cls, mcsm_url: str | None = None, timeout: int | None = None):
|
36
38
|
"""初始化时使用类变量,或者使用传入的参数覆盖默认值"""
|
37
39
|
cls.mcsm_url = mcsm_url or cls.mcsm_url
|
38
40
|
cls.timeout = timeout or cls.timeout
|
39
41
|
|
40
42
|
@classmethod
|
41
|
-
def send(
|
43
|
+
def send(
|
44
|
+
cls,
|
45
|
+
method: str,
|
46
|
+
endpoint: str | ApiPool,
|
47
|
+
params: dict | None = None,
|
48
|
+
data: Any | None = None,
|
49
|
+
) -> Any:
|
42
50
|
"""发送 HTTP 请求"""
|
43
51
|
if params is None:
|
44
52
|
params = {}
|
45
53
|
if data is None:
|
46
54
|
data = {}
|
47
|
-
if
|
48
|
-
endpoint =
|
55
|
+
if isinstance(endpoint, ApiPool):
|
56
|
+
endpoint = endpoint.value
|
49
57
|
|
50
58
|
url = urllib.parse.urljoin(cls.mcsm_url, endpoint)
|
51
59
|
if cls.apikey is not None:
|
52
60
|
params["apikey"] = cls.apikey
|
53
|
-
data["apikey"] = cls.apikey
|
54
61
|
if cls.token is not None:
|
55
62
|
params["token"] = cls.token
|
56
|
-
data["token"] = cls.token
|
57
63
|
|
58
64
|
response = cls.session.request(
|
59
65
|
method.upper(),
|
@@ -1,15 +1,17 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: mcsmapi
|
3
|
-
Version: 0.1.
|
3
|
+
Version: 0.1.8b1
|
4
4
|
Summary: Shortcut the pypi package of MCSM./快捷操作MCSM的pypi包
|
5
5
|
Author-email: molanp <molanpp@outlook.com>
|
6
6
|
License-Expression: MIT
|
7
7
|
Project-URL: Source, https://github.com/molanp/mcsmapi
|
8
8
|
Classifier: Programming Language :: Python :: 3
|
9
|
+
Classifier: Programming Language :: Python :: 3.10
|
10
|
+
Requires-Python: >=3.10
|
9
11
|
Description-Content-Type: text/markdown
|
10
12
|
License-File: LICENSE
|
11
13
|
Requires-Dist: requests
|
12
|
-
Requires-Dist: pydantic
|
14
|
+
Requires-Dist: pydantic<3.0.0,>=2.0.0
|
13
15
|
Dynamic: license-file
|
14
16
|
|
15
17
|
# MCSM API
|
@@ -82,9 +84,10 @@ mcsm.login_with_apikey("apikey")
|
|
82
84
|
|
83
85
|
# Get dashboard data
|
84
86
|
overview = mcsm.overview()
|
87
|
+
overview_data = overview.overview()
|
85
88
|
|
86
89
|
# Get MCSM version
|
87
|
-
mcsm_version =
|
90
|
+
mcsm_version = overview_data.version
|
88
91
|
```
|
89
92
|
|
90
93
|
## Contributing
|
@@ -0,0 +1,24 @@
|
|
1
|
+
mcsmapi/__init__.py,sha256=TxBjQPMtwR_Eh0N7nZAoKinONAgnDsSbt47-cLvbeLk,1418
|
2
|
+
mcsmapi/exceptions.py,sha256=mHsAHyoX9SiFDGBMEhesA_ao9hhZZ38EGTp97K7VDp8,184
|
3
|
+
mcsmapi/pool.py,sha256=Xa1DvBdfn5zTZ-eB50BFbYxhKX8j-4vfus9QOGO_FQE,348
|
4
|
+
mcsmapi/request.py,sha256=G6O4Q3oXidmauyraUgoMTkms5XFlY-iHPhZ3s0k9TmM,2743
|
5
|
+
mcsmapi/apis/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
6
|
+
mcsmapi/apis/daemon.py,sha256=0ng7Twv04gs4y09AYFIH2o5YPoxGV3c3TwsUkqxpgTI,2555
|
7
|
+
mcsmapi/apis/file.py,sha256=1SYNw-6Qaiq5knS0Pu1_7-y82WtcB6EOHPGakYvvqjQ,9630
|
8
|
+
mcsmapi/apis/image.py,sha256=ajTiZXSj0o5aMEDcPe6JkFI5JJcYZhQXszmNqnbSJxA,2656
|
9
|
+
mcsmapi/apis/instance.py,sha256=h2y3gTLINvDZq7vOzBhQ3X02f3mmg5ZlPunMDkTahgo,8318
|
10
|
+
mcsmapi/apis/overview.py,sha256=7wRAdhFzbtLq6Oknj4_ncO5fETZuZCGtliErA0NNju0,514
|
11
|
+
mcsmapi/apis/user.py,sha256=KXd8OPjyQBprPTlJD-wLGE-BtaOsM_0WF1yqRlGgTfg,2414
|
12
|
+
mcsmapi/models/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
13
|
+
mcsmapi/models/common.py,sha256=HNvYJnbxrtkJ7-H2zCXSuB-J-YXBXCcfyK0TzQprsKI,531
|
14
|
+
mcsmapi/models/daemon.py,sha256=It7kPyxogqY6oBdyXYNi4EmyqlGwizu7j-N37snko8k,4093
|
15
|
+
mcsmapi/models/file.py,sha256=vk9rQp3Yw_aK7F8ghi5eiBYuwcjK1m-2IQ0YbUWoj3A,5933
|
16
|
+
mcsmapi/models/image.py,sha256=mpyS7KTVoOwH2opB-fQC2GD3An_bXcERLmLPDBuoYUA,5643
|
17
|
+
mcsmapi/models/instance.py,sha256=FTFLkwi3r9OUQnusIQ1JI1f7dX4QIbH1Q5BxfUWIqxM,8362
|
18
|
+
mcsmapi/models/overview.py,sha256=Q_MG04iCkQ7KdBZnji3xA9XzwM3JZ6fZe3NWap8lMdU,5284
|
19
|
+
mcsmapi/models/user.py,sha256=f2fZS1EQFwqOJM7fKu91dcvHHAdRjhAhwY8XfwXhRvk,3318
|
20
|
+
mcsmapi-0.1.8b1.dist-info/licenses/LICENSE,sha256=bMKDPsvaybvY-4TTlSZtCXPPtxb7KPpDVqXgDA8Ogo0,1068
|
21
|
+
mcsmapi-0.1.8b1.dist-info/METADATA,sha256=FyYvDSMJwqwYImKbLTXSSNx4f7mI_LFb9EqxOITuWVs,3032
|
22
|
+
mcsmapi-0.1.8b1.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
23
|
+
mcsmapi-0.1.8b1.dist-info/top_level.txt,sha256=8MUYHd1Or4cbSCd93IaqLA72w0weEuKieopVwIfVlWo,8
|
24
|
+
mcsmapi-0.1.8b1.dist-info/RECORD,,
|
mcsmapi-0.1.6.dist-info/RECORD
DELETED
@@ -1,23 +0,0 @@
|
|
1
|
-
mcsmapi/__init__.py,sha256=Xm0gsQMecMZwD1of9UGOkTan25l_jqrWkG-7mg0YgF4,1514
|
2
|
-
mcsmapi/exceptions.py,sha256=mHsAHyoX9SiFDGBMEhesA_ao9hhZZ38EGTp97K7VDp8,184
|
3
|
-
mcsmapi/pool.py,sha256=CoOYbyECp4FoXkzwFN7WgtS3vgZtvWO8e93i18vhOEI,308
|
4
|
-
mcsmapi/request.py,sha256=5mCzKgrh4OPFKvBo22kIDpX_D1zqCza1nglYUeGWveg,2618
|
5
|
-
mcsmapi/apis/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
6
|
-
mcsmapi/apis/daemon.py,sha256=9jWoygFuACVJVn6fdt42tMWB3Nca2mZuoKcMs-p4_ic,2768
|
7
|
-
mcsmapi/apis/file.py,sha256=Qh3kOtU2mj9PS2nN4s6WufZ149pM0sbkM37aG-LlY5A,10778
|
8
|
-
mcsmapi/apis/image.py,sha256=UwVH2LPfPBEADZuoSyyiMrlEc9LL858Z3oidRPaKrvs,2908
|
9
|
-
mcsmapi/apis/instance.py,sha256=tucZTLuad8EF4I7GQHUjuLXWyW56ab8EGNh0_ntnwio,10987
|
10
|
-
mcsmapi/apis/overview.py,sha256=4bS3RGSykdQ1JyBTM-I9na6v0SCijEG1CN-WxqabfUo,625
|
11
|
-
mcsmapi/apis/user.py,sha256=CBLNWxxNfvnmzoMa1YV3Q33POitYDGyN-hRORoe2JEc,2968
|
12
|
-
mcsmapi/models/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
13
|
-
mcsmapi/models/daemon.py,sha256=EV0nlUe6pUETbLIoUGn2HPWoNYClIyS2ABrRA70IjQk,5079
|
14
|
-
mcsmapi/models/file.py,sha256=m75zhMkBA7KQm-870Ph3DfE9unSlOLWgMmwdl8H-vSc,6097
|
15
|
-
mcsmapi/models/image.py,sha256=pjwSJ79rYMuDTLlazevpjqdnnc0Mqvea9bp-BepUhio,5484
|
16
|
-
mcsmapi/models/instance.py,sha256=oNXw0q3FDTu2bG_crWPgUtLXxM2yL7eRwo9H2RFzmDA,8850
|
17
|
-
mcsmapi/models/overview.py,sha256=yRERCPRA3vBceKjISBClngvmKaQlo0HowC859nm15Nc,2859
|
18
|
-
mcsmapi/models/user.py,sha256=sduOS8MWoxUfvTseK7nShuBOYzei3dEM8eP45PuIZ3g,3130
|
19
|
-
mcsmapi-0.1.6.dist-info/licenses/LICENSE,sha256=bMKDPsvaybvY-4TTlSZtCXPPtxb7KPpDVqXgDA8Ogo0,1068
|
20
|
-
mcsmapi-0.1.6.dist-info/METADATA,sha256=38r0EmlPzaYNExFWAyCkr4f_NIE-wjANeVwjBUT1vNY,2907
|
21
|
-
mcsmapi-0.1.6.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
22
|
-
mcsmapi-0.1.6.dist-info/top_level.txt,sha256=8MUYHd1Or4cbSCd93IaqLA72w0weEuKieopVwIfVlWo,8
|
23
|
-
mcsmapi-0.1.6.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|