def wait_operator_ready():
csv = "kubernetes/{}/apis/operators.coreos.com/v1alpha1/namespaces/{}/clusterserviceversions".format(
settings.REGION_NAME, cluster_info['namespace'])
params = {"fieldSelector": "metadata.name={}".format(cluster_info['version'])}
status = prepare.get_status(csv, 'items.0.status.phase', 'Succeeded', params=params)
assert status, "devops tools operator 安装失败"
如果assert是一个方法的最后一步 此时assert完 就等于退出
如果assert 不在最后一个步骤 又希望assert成功后 退出 需要加上return
def wait_tool_integrated(tool_type, tool_name):
# tool-type 工具链的工具类型
# jenkins=jenkinses
# sonarqube=codequalitytool
# harbor=imageregistry
# gitlab=codereposervice
# 等待工具集成完成
for i in range(100):
tool_url = "devops/api/v1/{}/{}".format(tool_type, tool_name)
tool = prepare.send(method='get', path=tool_url)
if tool.status_code == 200: # 说明已经集成
installed = prepare.get_status(tool_url, 'status.phase', 'Ready', expect_cnt=100)
assert installed, "{}没有自动集成到平台上".format(tool_name)
return # 如果不加这个 会发现已经处于ready还在不停的循环
else:
sleep(10)
# 如果超时仍然没有集成,就没有必要继续往下继续了
assert False, "{}没有自动集成到平台上".format(tool_name)