def _get_resources(self, request, project_id, namespace_id): access_token = request.user.token.access_token # 查询namespace ns_info = get_namespace_by_id(access_token, project_id, namespace_id) client = MesosClient(access_token, project_id, ns_info["cluster_id"], env=None) # 根据类型查询资源,如果有接口调用失败,先忽略 res_names = {} ns_name = ns_info["name"] # 请求bcs api,获取数据 deployment_resp = client.get_deployment(namespace=ns_name) application_resp = client.get_mesos_app_instances(namespace=ns_name) configmap_resp = client.get_configmaps(params={"namespace": ns_name}) service_resp = client.get_services(params={"namespace": ns_name}) secret_resp = client.get_secrets(params={"namespace": ns_name}) res_data = { MesosResourceName.deployment.value: deployment_resp["data"], MesosResourceName.application.value: application_resp["data"], MesosResourceName.configmap.value: configmap_resp["data"], MesosResourceName.service.value: service_resp["data"], MesosResourceName.secret.value: secret_resp["data"], } res_names = self._compose_res_names(res_data) return res_names
def update_release(self, release_data): project_id = release_data["project_id"] namespace_id = release_data["namespace_id"] namespace_info = get_namespace_by_id(self.access_token, project_id, namespace_id) release_id = release_data["release_id"] log_params = { "project_id": project_id, "user": self.username, "resource_type": "instance", "resource": release_data["name"], "resource_id": release_id, "extra": json.dumps({ "namespace": namespace_info["name"], "variable_info": release_data["variable_info"] }), } try: update_resources(self.access_token, self.username, release_data, namespace_info) except Exception as e: log_params["description"] = f"rollupdate failed: {e}" client.ContextActivityLogClient(**log_params).log_modify( activity_status="failed") update_inst_params = {"ins_state": InsState.UPDATE_FAILED.value} else: log_params["description"] = f"rollupdate success" client.ContextActivityLogClient(**log_params).log_modify( activity_status="succeed") update_inst_params = {"ins_state": InsState.UPDATE_SUCCESS.value} update_inst_params.update({ "oper_type": ROLLING_UPDATE_INSTANCE, "variables": release_data["variable_info"].get(namespace_id) or {} }) InstanceConfig.objects.filter( instance_id=release_id, category=release_data["resource_name"], name=release_data["name"], namespace=namespace_id, ).update(**update_inst_params) return release_id
def update_release(self, release_data): project_id = release_data["project_id"] namespace_id = release_data["namespace_id"] namespace_info = get_namespace_by_id(self.access_token, project_id, namespace_id) release_id = release_data["release_id"] log_params = { "project_id": project_id, "user": self.username, "resource": release_data["name"], "resource_id": release_id, "extra": { "namespace": namespace_info["name"], "variable_info": release_data["variable_info"] }, 'activity_type': ActivityType.Modify, } try: update_resources(self.access_token, self.username, release_data, namespace_info) except Exception as e: log_params["description"] = f"rollupdate failed: {e}" log_params['activity_status'] = ActivityStatus.Failed InstanceAuditor(AuditContext(**log_params)).log_raw() update_inst_params = {"ins_state": InsState.UPDATE_FAILED.value} else: log_params["description"] = f"rollupdate success" log_params['activity_status'] = ActivityStatus.Succeed InstanceAuditor(AuditContext(**log_params)).log_raw() update_inst_params = {"ins_state": InsState.UPDATE_SUCCESS.value} update_inst_params.update({ "oper_type": ROLLING_UPDATE_INSTANCE, "variables": release_data["variable_info"].get(namespace_id) or {} }) InstanceConfig.objects.filter( instance_id=release_id, category=release_data["resource_name"], name=release_data["name"], namespace=namespace_id, ).update(**update_inst_params) return release_id
def get_ns(self, request, project_id, namespace_id): """获取单个命名空间的信息""" access_token = request.user.token.access_token ns_info = get_namespace_by_id(access_token, project_id, namespace_id) return response.Response(ns_info)