|
10 | 10 | from system.user import update_user_privilege, update_user_product |
11 | 11 | from common.const import role_dict |
12 | 12 | from fileserver.rsync_fs import rsync_config |
| 13 | +from common.saltstack_api import SaltAPI |
| 14 | +import gitlab |
13 | 15 |
|
14 | 16 | logger = loggers() |
15 | 17 |
|
@@ -179,4 +181,46 @@ def post(self): |
179 | 181 | return {"status": False, "message": result}, 500 |
180 | 182 |
|
181 | 183 |
|
| 184 | +class ProductCheck(Resource): |
| 185 | + @access_required(role_dict["common_user"]) |
| 186 | + def post(self, name): |
| 187 | + args = parser.parse_args() |
| 188 | + if name == "salt_api": |
| 189 | + if args["salt_master_url"] is "": |
| 190 | + return {"status": False, "message": "Salt API address is empty"}, 200 |
| 191 | + salt_api = SaltAPI( |
| 192 | + url=args["salt_master_url"], |
| 193 | + user=args["salt_master_user"], |
| 194 | + passwd=args["salt_master_password"] |
| 195 | + ) |
| 196 | + if isinstance(salt_api, dict): |
| 197 | + return {"status": False, "message": salt_api}, 200 |
| 198 | + else: |
| 199 | + result = salt_api.shell_remote_execution(args["salt_master_id"], "echo true") |
| 200 | + if result: |
| 201 | + try: |
| 202 | + if result['status'] is False: |
| 203 | + return {"status": False, "message": result['message']}, 200 |
| 204 | + except KeyError: |
| 205 | + return {"data": "", "status": True, "message": ""}, 200 |
| 206 | + else: |
| 207 | + return {"data": "", "status": False, |
| 208 | + "message": "Execute echo command on Master ID is not returned"}, 200 |
| 209 | + else: |
| 210 | + if args["gitlab_url"] is "": |
| 211 | + return {"status": False, "message": "GitLab API address is empty"}, 200 |
| 212 | + if args["api_version"] is "": |
| 213 | + return {"status": False, "message": "GitLab API version is empty"}, 200 |
| 214 | + if args["state_project"] is "": |
| 215 | + return {"status": False, "message": "GitLab State is empty"}, 200 |
| 216 | + try: |
| 217 | + gl = gitlab.Gitlab(url=args["gitlab_url"], |
| 218 | + private_token=args["private_token"], |
| 219 | + timeout=120, |
| 220 | + api_version=args["api_version"], |
| 221 | + ) |
182 | 222 |
|
| 223 | + gl.projects.get(args["state_project"]) |
| 224 | + return {"data": "", "status": True, "message": ""}, 200 |
| 225 | + except Exception as e: |
| 226 | + return {"data": "", "status": False, "message": str(e)}, 200 |
0 commit comments