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 downloadImage(self, base_info): try: download_task = {} if base_info.is_slug(): download_task = { "action": "download_and_deploy", "app_key": base_info.service_key, "app_version": base_info.version, "namespace": base_info.namespace, "dep_sids": json.dumps([]) } for region in RegionInfo.valid_regions(): logger.info(region) # TODO v2 api修改 regionClient.send_task(region, 'app_slug', json.dumps(download_task)) else: download_task = { "action": "download_and_deploy", "image": base_info.image, "namespace": base_info.namespace, "dep_sids": json.dumps([]) } for region in RegionInfo.valid_regions(): # TODO v2 api修改 regionClient.send_task(region, 'app_image', json.dumps(download_task)) except Exception as e: logger.exception(e)
def __init__(self, request, *args, **kwargs): self.tenantName = kwargs.get('tenantName', None) self.serviceAlias = kwargs.get('serviceAlias', None) if self.tenantName is not None: try: self.tenant = Tenants.objects.get(tenant_name=self.tenantName) except Tenants.DoesNotExist: logger.error("Tenant {0} is not exists".format( self.tenantName)) raise http.Http404 if self.serviceAlias is not None: try: self.service = TenantServiceInfo.objects.get( tenant_id=self.tenant.tenant_id, service_alias=self.serviceAlias) if self.service.service_region not in RegionInfo.valid_regions( ): raise PermissionDenied except TenantServiceInfo.DoesNotExist: logger.debug( "Tenant {0} ServiceAlias {1} is not exists".format( self.tenantName, self.serviceAlias)) raise http.Http404 BaseView.__init__(self, request, *args, **kwargs)
def set_tenant_default_env(self, envs, outer_ports): for env in envs: if env.attr_name == 'SITE_URL': if self.cookie_region in RegionInfo.valid_regions(): port = RegionInfo.region_port(self.cookie_region) domain = RegionInfo.region_domain(self.cookie_region) env.options = 'direct_copy' if len(outer_ports) > 0: env.attr_value = 'http://{}.{}.{}{}:{}'.format(outer_ports[0].container_port, self.serviceAlias, self.tenantName, domain, port) logger.debug("SITE_URL = {} options = {}".format(env.attr_value, env.options)) elif env.attr_name == 'TRUSTED_DOMAIN': if self.cookie_region in RegionInfo.valid_regions(): port = RegionInfo.region_port(self.cookie_region) domain = RegionInfo.region_domain(self.cookie_region) env.options = 'direct_copy' if len(outer_ports) > 0: env.attr_value = '{}.{}.{}{}:{}'.format(outer_ports[0].container_port, self.serviceAlias, self.tenantName, domain, port) logger.debug("TRUSTED_DOMAIN = {} options = {}".format(env.attr_value, env.options))
def calculate_real_used_resource(self, tenant): totalMemory = 0 tenant_region_list = TenantRegionInfo.objects.filter( tenant_id=tenant.tenant_id, is_active=True, is_init=True) for tenant_region in tenant_region_list: logger.debug(tenant_region.region_name) if tenant_region.region_name in RegionInfo.valid_regions(): res = region_api.get_tenant_resources( tenant_region.region_name, tenant.tenant_name, tenant.enterprise_id) bean = res["bean"] memory = int(bean["memory"]) totalMemory += memory return totalMemory
def set_direct_copy_options(self, envs, service_id, service_key, version): outer_ports = AppServicePort.objects.filter(service_key=service_key, app_version=version, is_outer_service=True, protocol='http') service_alias = "gr" + service_id[-6:] for env in envs: if env.attr_name == 'SITE_URL' or env.attr_name == 'TRUSTED_DOMAIN': if self.cookie_region in RegionInfo.valid_regions(): env.options = 'direct_copy' if len(outer_ports) > 0: port = RegionInfo.region_port(self.response_region) domain = RegionInfo.region_domain(self.response_region) if env.attr_name == 'SITE_URL': env.attr_value = 'http://{}.{}.{}{}:{}'.format(outer_ports[0].container_port, service_alias, self.tenantName, domain, port) else: env.attr_value = '{}.{}.{}{}:{}'.format(outer_ports[0].container_port, service_alias, self.tenantName, domain, port)
def calculate_real_used_resource(self, tenant): totalMemory = 0 totalDisk = 0 tenant_region_list = TenantRegionInfo.objects.filter( tenant_id=tenant.tenant_id, is_active=True, is_init=True) for tenant_region in tenant_region_list: logger.debug(tenant_region.region_name) if tenant_region.region_name in RegionInfo.valid_regions(): data = {"tenant_name": [tenant.tenant_name]} res = region_api.get_region_tenants_resources( tenant_region.region_name, data, tenant.enterprise_id) d_list = res["list"] memory = 0 disk = 0 if d_list: resource = d_list[0] memory = int(resource["memory"]) disk = int(resource["disk"]) totalMemory += memory totalDisk += disk return totalMemory, totalDisk