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)
Beispiel #2
0
 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)
Beispiel #3
0
 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
Beispiel #4
0
    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])
Beispiel #5
0
 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)
Beispiel #6
0
 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)
Beispiel #7
0
    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)
Beispiel #8
0
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({
Beispiel #9
0
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