Files
2025-11-27 11:01:26 +08:00

269 lines
13 KiB
Python

import json
import threading
import redo
from volcengine.ApiInfo import ApiInfo
from volcengine.Credentials import Credentials
from volcengine.base.Service import Service
from volcengine.ServiceInfo import ServiceInfo
from requests import exceptions
class CodePipelineService(Service):
_instance_lock = threading.Lock()
def __new__(cls, *args, **kwargs):
if not hasattr(CodePipelineService, "_instance"):
with CodePipelineService._instance_lock:
if not hasattr(CodePipelineService, "_instance"):
CodePipelineService._instance = object.__new__(cls)
return CodePipelineService._instance
def __init__(self):
self.service_info = CodePipelineService.get_service_info()
self.api_info = CodePipelineService.get_api_info()
super(CodePipelineService, self).__init__(
self.service_info, self.api_info)
@staticmethod
def get_service_info():
service_info = ServiceInfo("open.volcengineapi.com", {'Accept': 'application/json'},
Credentials('', '', 'cp', 'cn-north-1'), 5, 5)
return service_info
@staticmethod
def get_api_info():
api_info = {
"UpdateWorkspace": ApiInfo(
"POST", "/", {"Action": "UpdateWorkspace", "Version": "2021-03-03"}, {}, {}),
"DeleteWorkspace": ApiInfo(
"POST", "/", {"Action": "DeleteWorkspace", "Version": "2021-03-03"}, {}, {}),
"GetWorkspace": ApiInfo(
"POST", "/", {"Action": "GetWorkspace", "Version": "2021-03-03"}, {}, {}),
"CreateWorkspace": ApiInfo(
"POST", "/", {"Action": "CreateWorkspace", "Version": "2021-03-03"}, {}, {}),
"ListWorkspaces": ApiInfo(
"POST", "/", {"Action": "ListWorkspaces", "Version": "2021-03-03"}, {}, {}),
"CopyWorkspace": ApiInfo(
"POST", "/", {"Action": "CopyWorkspace", "Version": "2021-03-03"}, {}, {}),
"CreatePipeline": ApiInfo(
"POST", "/", {"Action": "CreatePipeline", "Version": "2021-03-03"}, {}, {}),
"ListPipelines": ApiInfo(
"POST", "/", {"Action": "ListPipelines", "Version": "2021-03-03"}, {}, {}),
"DeletePipeline": ApiInfo(
"POST", "/", {"Action": "DeletePipeline", "Version": "2021-03-03"}, {}, {}),
"UpdatePipeline": ApiInfo(
"POST", "/", {"Action": "UpdatePipeline", "Version": "2021-03-03"}, {}, {}),
"GetPipeline": ApiInfo(
"POST", "/", {"Action": "GetPipeline", "Version": "2021-03-03"}, {}, {}),
"UpdatePipelineProperties": ApiInfo(
"POST", "/", {"Action": "UpdatePipelineProperties", "Version": "2021-03-03"}, {}, {}),
"GetPipelineHookUrl": ApiInfo(
"POST", "/", {"Action": "GetPipelineHookUrl", "Version": "2021-03-03"}, {}, {}),
"RunPipeline": ApiInfo(
"POST", "/", {"Action": "RunPipeline", "Version": "2021-03-03"}, {}, {}),
"RunRollingUpdate": ApiInfo(
"POST", "/", {"Action": "RunRollingUpdate", "Version": "2021-03-03"}, {}, {}),
"DeletePipelineCache": ApiInfo(
"POST", "/", {"Action": "DeletePipelineCache", "Version": "2021-03-03"}, {}, {}),
"ListPipelineRecords": ApiInfo(
"POST", "/", {"Action": "ListPipelineRecords", "Version": "2021-03-03"}, {}, {}),
"GetPipelineRecord": ApiInfo(
"POST", "/", {"Action": "GetPipelineRecord", "Version": "2021-03-03"}, {}, {}),
"StopPipelineRecord": ApiInfo(
"POST", "/", {"Action": "StopPipelineRecord", "Version": "2021-03-03"}, {}, {}),
"RetryPipelineRecord": ApiInfo(
"POST", "/", {"Action": "RetryPipelineRecord", "Version": "2021-03-03"}, {}, {}),
"DeletePipelineRecord": ApiInfo(
"POST", "/", {"Action": "DeletePipelineRecord", "Version": "2021-03-03"}, {}, {}),
"ListPipelineTemplates": ApiInfo(
"POST", "/", {"Action": "ListPipelineTemplates", "Version": "2021-03-03"}, {}, {}),
"GetPipelineTemplate": ApiInfo(
"POST", "/", {"Action": "GetPipelineTemplate", "Version": "2021-03-03"}, {}, {})}
return api_info
@ redo.retriable(sleeptime=0.1, jitter=0.01, attempts=2, retry_exceptions=(exceptions.ConnectionError, exceptions.ConnectTimeout))
def update_workspace(self, params, body):
res = self.json("UpdateWorkspace", params, json.dumps(body))
if res == '':
raise Exception("empty response")
res_json = json.loads(res)
return res_json
@ redo.retriable(sleeptime=0.1, jitter=0.01, attempts=2, retry_exceptions=(exceptions.ConnectionError, exceptions.ConnectTimeout))
def delete_workspace(self, params, body):
res = self.json("DeleteWorkspace", params, json.dumps(body))
if res == '':
raise Exception("empty response")
res_json = json.loads(res)
return res_json
@ redo.retriable(sleeptime=0.1, jitter=0.01, attempts=2, retry_exceptions=(exceptions.ConnectionError, exceptions.ConnectTimeout))
def get_workspace(self, params, body):
res = self.json("GetWorkspace", params, json.dumps(body))
if res == '':
raise Exception("empty response")
res_json = json.loads(res)
return res_json
@ redo.retriable(sleeptime=0.1, jitter=0.01, attempts=2, retry_exceptions=(exceptions.ConnectionError, exceptions.ConnectTimeout))
def create_workspace(self, params, body):
res = self.json("CreateWorkspace", params, json.dumps(body))
if res == '':
raise Exception("empty response")
res_json = json.loads(res)
return res_json
@ redo.retriable(sleeptime=0.1, jitter=0.01, attempts=2, retry_exceptions=(exceptions.ConnectionError, exceptions.ConnectTimeout))
def list_workspaces(self, params, body):
res = self.json("ListWorkspaces", params, json.dumps(body))
if res == '':
raise Exception("empty response")
res_json = json.loads(res)
return res_json
@ redo.retriable(sleeptime=0.1, jitter=0.01, attempts=2, retry_exceptions=(exceptions.ConnectionError, exceptions.ConnectTimeout))
def copy_workspace(self, params, body):
res = self.json("CopyWorkspace", params, json.dumps(body))
if res == '':
raise Exception("empty response")
res_json = json.loads(res)
return res_json
@ redo.retriable(sleeptime=0.1, jitter=0.01, attempts=2, retry_exceptions=(exceptions.ConnectionError, exceptions.ConnectTimeout))
def create_pipeline(self, params, body):
res = self.json("CreatePipeline", params, json.dumps(body))
if res == '':
raise Exception("empty response")
res_json = json.loads(res)
return res_json
@ redo.retriable(sleeptime=0.1, jitter=0.01, attempts=2, retry_exceptions=(exceptions.ConnectionError, exceptions.ConnectTimeout))
def list_pipelines(self, params, body):
res = self.json("ListPipelines", params, json.dumps(body))
if res == '':
raise Exception("empty response")
res_json = json.loads(res)
return res_json
@ redo.retriable(sleeptime=0.1, jitter=0.01, attempts=2, retry_exceptions=(exceptions.ConnectionError, exceptions.ConnectTimeout))
def delete_pipeline(self, params, body):
res = self.json("DeletePipeline", params, json.dumps(body))
if res == '':
raise Exception("empty response")
res_json = json.loads(res)
return res_json
@ redo.retriable(sleeptime=0.1, jitter=0.01, attempts=2, retry_exceptions=(exceptions.ConnectionError, exceptions.ConnectTimeout))
def update_pipeline(self, params, body):
res = self.json("UpdatePipeline", params, json.dumps(body))
if res == '':
raise Exception("empty response")
res_json = json.loads(res)
return res_json
@ redo.retriable(sleeptime=0.1, jitter=0.01, attempts=2, retry_exceptions=(exceptions.ConnectionError, exceptions.ConnectTimeout))
def get_pipeline(self, params, body):
res = self.json("GetPipeline", params, json.dumps(body))
if res == '':
raise Exception("empty response")
res_json = json.loads(res)
return res_json
@ redo.retriable(sleeptime=0.1, jitter=0.01, attempts=2, retry_exceptions=(exceptions.ConnectionError, exceptions.ConnectTimeout))
def update_pipeline_properties(self, params, body):
res = self.json("UpdatePipelineProperties", params, json.dumps(body))
if res == '':
raise Exception("empty response")
res_json = json.loads(res)
return res_json
@ redo.retriable(sleeptime=0.1, jitter=0.01, attempts=2, retry_exceptions=(exceptions.ConnectionError, exceptions.ConnectTimeout))
def get_pipeline_hook_url(self, params, body):
res = self.json("GetPipelineHookUrl", params, json.dumps(body))
if res == '':
raise Exception("empty response")
res_json = json.loads(res)
return res_json
@ redo.retriable(sleeptime=0.1, jitter=0.01, attempts=2, retry_exceptions=(exceptions.ConnectionError, exceptions.ConnectTimeout))
def run_pipeline(self, params, body):
res = self.json("RunPipeline", params, json.dumps(body))
if res == '':
raise Exception("empty response")
res_json = json.loads(res)
return res_json
@ redo.retriable(sleeptime=0.1, jitter=0.01, attempts=2, retry_exceptions=(exceptions.ConnectionError, exceptions.ConnectTimeout))
def run_rolling_update(self, params, body):
res = self.json("RunRollingUpdate", params, json.dumps(body))
if res == '':
raise Exception("empty response")
res_json = json.loads(res)
return res_json
@ redo.retriable(sleeptime=0.1, jitter=0.01, attempts=2, retry_exceptions=(exceptions.ConnectionError, exceptions.ConnectTimeout))
def delete_pipeline_cache(self, params, body):
res = self.json("DeletePipelineCache", params, json.dumps(body))
if res == '':
raise Exception("empty response")
res_json = json.loads(res)
return res_json
@ redo.retriable(sleeptime=0.1, jitter=0.01, attempts=2, retry_exceptions=(exceptions.ConnectionError, exceptions.ConnectTimeout))
def list_pipeline_records(self, params, body):
res = self.json("ListPipelineRecords", params, json.dumps(body))
if res == '':
raise Exception("empty response")
res_json = json.loads(res)
return res_json
@ redo.retriable(sleeptime=0.1, jitter=0.01, attempts=2, retry_exceptions=(exceptions.ConnectionError, exceptions.ConnectTimeout))
def get_pipeline_record(self, params, body):
res = self.json("GetPipelineRecord", params, json.dumps(body))
if res == '':
raise Exception("empty response")
res_json = json.loads(res)
return res_json
@ redo.retriable(sleeptime=0.1, jitter=0.01, attempts=2, retry_exceptions=(exceptions.ConnectionError, exceptions.ConnectTimeout))
def stop_pipeline_record(self, params, body):
res = self.json("StopPipelineRecord", params, json.dumps(body))
if res == '':
raise Exception("empty response")
res_json = json.loads(res)
return res_json
@ redo.retriable(sleeptime=0.1, jitter=0.01, attempts=2, retry_exceptions=(exceptions.ConnectionError, exceptions.ConnectTimeout))
def retry_pipeline_record(self, params, body):
res = self.json("RetryPipelineRecord", params, json.dumps(body))
if res == '':
raise Exception("empty response")
res_json = json.loads(res)
return res_json
@ redo.retriable(sleeptime=0.1, jitter=0.01, attempts=2, retry_exceptions=(exceptions.ConnectionError, exceptions.ConnectTimeout))
def delete_pipeline_record(self, params, body):
res = self.json("DeletePipelineRecord", params, json.dumps(body))
if res == '':
raise Exception("empty response")
res_json = json.loads(res)
return res_json
@ redo.retriable(sleeptime=0.1, jitter=0.01, attempts=2, retry_exceptions=(exceptions.ConnectionError, exceptions.ConnectTimeout))
def list_pipeline_templates(self, params, body):
res = self.json("ListPipelineTemplates", params, json.dumps(body))
if res == '':
raise Exception("empty response")
res_json = json.loads(res)
return res_json
@ redo.retriable(sleeptime=0.1, jitter=0.01, attempts=2, retry_exceptions=(exceptions.ConnectionError, exceptions.ConnectTimeout))
def get_pipeline_template(self, params, body):
res = self.json("GetPipelineTemplate", params, json.dumps(body))
if res == '':
raise Exception("empty response")
res_json = json.loads(res)
return res_json