def copy_envs(self, service_info, current_service): s = current_service baseService = BaseTenantService() envs = AppServiceEnv.objects.filter(service_key=service_info.service_key, app_version=service_info.version) outer_ports = AppServicePort.objects.filter(service_key=service_info.service_key, app_version=service_info.version, is_outer_service=True, protocol='http') for env in envs: if env.attr_name == 'SITE_URL': if self.region_name in RegionInfo.valid_regions(): port = RegionInfo.region_port(self.region_name) domain = RegionInfo.region_domain(self.region_name) env.options="direct_copy" if len(outer_ports)>0: env.attr_value = 'http://{}.{}.{}{}:{}'.format(outer_ports[0].container_port, current_service.serviceAlias,self.tenant_name, domain, port) logger.debug("SITE_URL = {} options = {}".format(env.attr_value, env.options)) elif env.attr_name == "TRUSTED_DOMAIN": if self.region_name in RegionInfo.valid_regions(): port = RegionInfo.region_port(self.region_name) domain = RegionInfo.region_domain(self.region_name) env.options = 'direct_copy' if len(outer_ports) > 0: env.attr_value = '{}.{}.{}{}:{}'.format(outer_ports[0].container_port, current_service.serviceAlias, self.tenant_name, domain, port) logger.debug("TRUSTED_DOMAIN = {} options = {}".format(env.attr_value, env.options)) baseService.saveServiceEnvVar(s.tenant_id, s.service_id, env.container_port, env.name, env.attr_name, env.attr_value, env.is_change, env.scope)
def copy_ports(self, source_service, current_service): AppPorts = AppServicePort.objects.filter(service_key=current_service.service_key, app_version=current_service.version) baseService = BaseTenantService() for port in AppPorts: baseService.addServicePort(current_service, source_service.is_init_accout, container_port=port.container_port, protocol=port.protocol, port_alias=port.port_alias, is_inner_service=port.is_inner_service, is_outer_service=port.is_outer_service)
def get_service_list(self): baseService = BaseTenantService() services = baseService.get_service_list(self.tenant.pk, self.user, self.tenant.tenant_id, region=self.response_region) services = list(services) for s in services: if s.service_alias == self.serviceAlias: s.is_selected = True services.insert(0, s) services.remove(s) break return services
def copy_port_and_env(self, service, new_service): ports = AppServicePort.objects.filter(service_key=service.service_key, app_version=service.version) envs = AppServiceEnv.objects.filter(service_key=service.service_key, app_version=service.version) volumes = AppServiceVolume.objects.filter( service_key=service.service_key, app_version=service.version) baseService = BaseTenantService() for port in ports: baseService.addServicePort(new_service, service.is_init_accout, container_port=port.container_port, protocol=port.protocol, port_alias=port.port_alias, is_inner_service=port.is_inner_service, is_outer_service=port.is_outer_service) for env in envs: baseService.saveServiceEnvVar(new_service.tenant_id, new_service.service_id, env.container_port, env.name, env.attr_name, env.attr_value, env.is_change, env.scope) for volume in volumes: baseService.add_volume_with_type(new_service, volume.volume_path, TenantServiceVolume.SHARE, make_uuid()[:7])
def copy_ports(self, source_service): AppPorts = AppServicePort.objects.filter( service_key=self.service.service_key, app_version=self.service.version) baseService = BaseTenantService() for port in AppPorts: if not port.port_alias: port_alias = self.service.service_alias.upper() + str( port.container_port) else: port_alias = port.port_alias baseService.addServicePort(self.service, source_service.is_init_accout, container_port=port.container_port, protocol=port.protocol, port_alias=port_alias, is_inner_service=port.is_inner_service, is_outer_service=port.is_outer_service)
def copy_envs(self, service_info, current_service, env_list): s = current_service baseService = BaseTenantService() has_env = [] for e in env_list: source_env = AppServiceEnv.objects.get(service_key=s.service_key, app_version=s.version, attr_name=e["attr_name"]) baseService.saveServiceEnvVar(s.tenant_id, s.service_id, source_env.container_port, source_env.name, e["attr_name"], e["attr_value"], source_env.is_change, source_env.scope) has_env.append(source_env.attr_name) envs = AppServiceEnv.objects.filter(service_key=service_info.service_key, app_version=service_info.version) for env in envs: if env.attr_name not in has_env: baseService.saveServiceEnvVar(s.tenant_id, s.service_id, env.container_port, env.name, env.attr_name, env.attr_value, env.is_change, env.scope)
def copy_envs(self, source_service, envs): s = self.service baseService = BaseTenantService() has_env = [] for env in envs: source_env = AppServiceEnv.objects.get(service_key=s.service_key, app_version=s.version, attr_name=env.attr_name) baseService.saveServiceEnvVar(s.tenant_id, s.service_id, source_env.container_port, source_env.name, env.attr_name, env.attr_value, source_env.is_change, source_env.scope) has_env.append(env.attr_name) for sys_env in AppServiceEnv.objects.filter(service_key=s.service_key, app_version=s.version): if sys_env.attr_name not in has_env: baseService.saveServiceEnvVar(s.tenant_id, s.service_id, sys_env.container_port, sys_env.name, sys_env.attr_name, sys_env.attr_value, sys_env.is_change, sys_env.scope)
from www.monitorservice.monitorhook import MonitorHook from www.region import RegionInfo from www.service_http import RegionServiceApi from www.tenantservice.baseservice import BaseTenantService, TenantUsedResource, TenantAccountService, \ CodeRepositoriesService from www.views import AuthedView from www.views.mixin import LeftSideBarMixin from www.decorator import perm_required from www.apiclient.marketclient import MarketOpenAPI from www.services import app_group_svc logger = logging.getLogger('default') regionClient = RegionServiceApi() appClient = AppServiceApi() baseService = BaseTenantService() tenantUsedResource = TenantUsedResource() monitorhook = MonitorHook() tenantAccountService = TenantAccountService() codeRepositoriesService = CodeRepositoriesService() market_api = MarketOpenAPI() class RemoteServiceMarketAjax(AuthedView): """远程的服务数据""" def post(self, request, *args, **kwargs): try: res, resp = appClient.getRemoteServices() if res.status == 200: # logger.debug(resp.data) return JsonResponse({
import logging import threading from django.db.models import Count from django.http import JsonResponse from www.apiclient.regionapi import RegionInvokeApi from www.models import TenantServiceMountRelation, TenantServiceVolume, TenantServiceInfo, Tenants from www.tenantservice.baseservice import BaseTenantService from www.views import AuthedView from www.utils.crypt import make_uuid logger = logging.getLogger('default') region_api = RegionInvokeApi() base_service = BaseTenantService() class DepVolSyncApiView(AuthedView): def _get_vol(self, service_id, path): try: return TenantServiceVolume.objects.get(service_id=service_id, volume_path=path) except TenantServiceVolume.DoesNotExist: return None def _get_tenant(self, tenant_id): try: return Tenants.objects.get(tenant_id=tenant_id) except Tenants.DoesNotExist: return None