|
|
|
|
|
import logging |
|
import os |
|
|
|
import json |
|
import requests |
|
|
|
from swift.version import __version__ |
|
|
|
|
|
|
|
class ModelTag(object): |
|
_URL = os.environ.get('MODEL_TAG_URL', None) |
|
|
|
|
|
BATCH_COMMIT_RESULT_URL = f'{_URL}/batchCommitResult' |
|
|
|
BATCH_REFRESH_STAGE_URL = f'{_URL}/batchRefreshStage' |
|
|
|
QUERY_MODEL_STAGE_URL = f'{_URL}/queryModelStage' |
|
|
|
HEADER = {'Content-Type': 'application/json'} |
|
|
|
|
|
MODEL_SKIP = 0 |
|
MODEL_FAIL = 1 |
|
MODEL_PASS = 2 |
|
|
|
class ItemResult(object): |
|
|
|
def __init__(self): |
|
self.result = 0 |
|
self.name = '' |
|
self.info = '' |
|
|
|
def to_json(self): |
|
return {'name': self.name, 'result': self.result, 'info': self.info} |
|
|
|
def __init__(self): |
|
self.job_name = '' |
|
self.job_id = '' |
|
self.model = '' |
|
self.sdk_version = '' |
|
self.image_version = '' |
|
self.domain = '' |
|
self.task = '' |
|
self.source = '' |
|
self.stage = '' |
|
|
|
self.item_result = [] |
|
|
|
|
|
def _post_request(self, url, param): |
|
try: |
|
logging.info(url + ' query: ' + str(json.dumps(param, ensure_ascii=False))) |
|
res = requests.post(url=url, headers=self.HEADER, data=json.dumps(param, ensure_ascii=False).encode('utf8')) |
|
if res.status_code == 200: |
|
logging.info(f'{url} post结果: ' + res.text) |
|
res_json = json.loads(res.text) |
|
if int(res_json['errorCode']) == 200: |
|
return res_json['content'] |
|
else: |
|
logging.error(res.text) |
|
else: |
|
logging.error(res.text) |
|
except Exception as e: |
|
logging.error(e) |
|
|
|
return None |
|
|
|
|
|
def batch_commit_result(self): |
|
try: |
|
param = { |
|
'sdkVersion': |
|
self.sdk_version, |
|
'imageVersion': |
|
self.image_version, |
|
'source': |
|
self.source, |
|
'jobName': |
|
self.job_name, |
|
'jobId': |
|
self.job_id, |
|
'modelList': [{ |
|
'model': self.model, |
|
'domain': self.domain, |
|
'task': self.task, |
|
'itemResult': self.item_result |
|
}] |
|
} |
|
return self._post_request(self.BATCH_COMMIT_RESULT_URL, param) |
|
|
|
except Exception as e: |
|
logging.error(e) |
|
|
|
return |
|
|
|
|
|
def batch_refresh_stage(self): |
|
try: |
|
param = { |
|
'sdkVersion': self.sdk_version, |
|
'imageVersion': self.image_version, |
|
'source': self.source, |
|
'stage': self.stage, |
|
'modelList': [{ |
|
'model': self.model, |
|
'domain': self.domain, |
|
'task': self.task |
|
}] |
|
} |
|
return self._post_request(self.BATCH_REFRESH_STAGE_URL, param) |
|
|
|
except Exception as e: |
|
logging.error(e) |
|
|
|
return |
|
|
|
|
|
def query_model_stage(self): |
|
try: |
|
param = { |
|
'sdkVersion': self.sdk_version, |
|
'model': self.model, |
|
'stage': self.stage, |
|
'imageVersion': self.image_version |
|
} |
|
return self._post_request(self.QUERY_MODEL_STAGE_URL, param) |
|
|
|
except Exception as e: |
|
logging.error(e) |
|
|
|
return None |
|
|
|
|
|
""" |
|
model_tag = ModelTag() |
|
model_tag.model = "XXX" |
|
model_tag.sdk_version = "0.3.7" |
|
model_tag.domain = "nlp" |
|
model_tag.task = "word-segmentation" |
|
item = model_tag.ItemResult() |
|
item.result = model_tag.MODEL_PASS |
|
item.name = "ALL" |
|
item.info = "" |
|
model_tag.item_result.append(item.to_json()) |
|
""" |
|
|
|
def commit_ut_result(self): |
|
if self._URL is not None and self._URL != '': |
|
self.job_name = 'UT' |
|
self.source = 'dev' |
|
self.stage = 'integration' |
|
|
|
self.batch_commit_result() |
|
self.batch_refresh_stage() |
|
|
|
|
|
def commit_model_ut_result(model_name, ut_result): |
|
model_tag = ModelTag() |
|
model_tag.model = model_name.replace('damo/', '') |
|
model_tag.sdk_version = __version__ |
|
|
|
|
|
item = model_tag.ItemResult() |
|
item.result = ut_result |
|
item.name = 'ALL' |
|
item.info = '' |
|
model_tag.item_result.append(item.to_json()) |
|
model_tag.commit_ut_result() |
|
|