| //Copyright 2017 Huawei Technologies Co., Ltd |
| // |
| //Licensed under the Apache License, Version 2.0 (the "License"); |
| //you may not use this file except in compliance with the License. |
| //You may obtain a copy of the License at |
| // |
| // http://www.apache.org/licenses/LICENSE-2.0 |
| // |
| //Unless required by applicable law or agreed to in writing, software |
| //distributed under the License is distributed on an "AS IS" BASIS, |
| //WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| //See the License for the specific language governing permissions and |
| //limitations under the License. |
| package core |
| |
| import ( |
| "github.com/ServiceComb/service-center/pkg/util" |
| pb "github.com/ServiceComb/service-center/server/core/proto" |
| "strings" |
| ) |
| |
| const ( |
| REGISTRY_ROOT_KEY = "cse-sr" |
| REGISTRY_SYS_KEY = "sys" |
| REGISTRY_SERVICE_KEY = "ms" |
| REGISTRY_INSTANCE_KEY = "inst" |
| REGISTRY_FILE = "files" |
| REGISTRY_INDEX = "indexes" |
| REGISTRY_RULE_KEY = "rules" |
| REGISTRY_RULE_INDEX_KEY = "rule-indexes" |
| REGISTRY_DOMAIN_KEY = "domains" |
| REGISTRY_PROJECT_KEY = "projects" |
| REGISTRY_ALIAS_KEY = "alias" |
| REGISTRY_TAG_KEY = "tags" |
| REGISTRY_SCHEMA_KEY = "schemas" |
| REGISTRY_SCHEMA_SUMMARY_KEY = "schema-sum" |
| REGISTRY_LEASE_KEY = "leases" |
| REGISTRY_DEPENDENCY_KEY = "deps" |
| REGISTRY_DEPS_RULE_KEY = "dep-rules" |
| REGISTRY_METRICS_KEY = "metrics" |
| ENDPOINTS_ROOT_KEY = "eps" |
| ) |
| |
| func GetRootKey() string { |
| return util.StringJoin([]string{ |
| "", |
| REGISTRY_ROOT_KEY, |
| }, "/") |
| } |
| |
| func GetServiceRootKey(domainProject string) string { |
| return util.StringJoin([]string{ |
| GetRootKey(), |
| REGISTRY_SERVICE_KEY, |
| REGISTRY_FILE, |
| domainProject, |
| }, "/") |
| } |
| |
| func GetServiceIndexRootKey(domainProject string) string { |
| return util.StringJoin([]string{ |
| GetRootKey(), |
| REGISTRY_SERVICE_KEY, |
| REGISTRY_INDEX, |
| domainProject, |
| }, "/") |
| } |
| |
| func GetServiceAliasRootKey(domainProject string) string { |
| return util.StringJoin([]string{ |
| GetRootKey(), |
| REGISTRY_SERVICE_KEY, |
| REGISTRY_ALIAS_KEY, |
| domainProject, |
| }, "/") |
| } |
| |
| func GetServiceRuleRootKey(domainProject string) string { |
| return util.StringJoin([]string{ |
| GetRootKey(), |
| REGISTRY_SERVICE_KEY, |
| REGISTRY_RULE_KEY, |
| domainProject, |
| }, "/") |
| } |
| |
| func GetServiceRuleIndexRootKey(domainProject string) string { |
| return util.StringJoin([]string{ |
| GetRootKey(), |
| REGISTRY_SERVICE_KEY, |
| REGISTRY_RULE_INDEX_KEY, |
| domainProject, |
| }, "/") |
| } |
| |
| func GetServiceTagRootKey(domainProject string) string { |
| return util.StringJoin([]string{ |
| GetRootKey(), |
| REGISTRY_SERVICE_KEY, |
| REGISTRY_TAG_KEY, |
| domainProject, |
| }, "/") |
| } |
| |
| func GetServiceSchemaRootKey(domainProject string) string { |
| return util.StringJoin([]string{ |
| GetRootKey(), |
| REGISTRY_SERVICE_KEY, |
| REGISTRY_SCHEMA_KEY, |
| domainProject, |
| }, "/") |
| } |
| |
| func GetInstanceIndexRootKey(domainProject string) string { |
| return util.StringJoin([]string{ |
| GetRootKey(), |
| REGISTRY_INSTANCE_KEY, |
| REGISTRY_INDEX, |
| domainProject, |
| }, "/") |
| } |
| |
| func GetInstanceRootKey(domainProject string) string { |
| return util.StringJoin([]string{ |
| GetRootKey(), |
| REGISTRY_INSTANCE_KEY, |
| REGISTRY_FILE, |
| domainProject, |
| }, "/") |
| } |
| |
| func GetInstanceLeaseRootKey(domainProject string) string { |
| return util.StringJoin([]string{ |
| GetRootKey(), |
| REGISTRY_INSTANCE_KEY, |
| REGISTRY_LEASE_KEY, |
| domainProject, |
| }, "/") |
| } |
| |
| func GenerateServiceKey(domainProject string, serviceId string) string { |
| return util.StringJoin([]string{ |
| GetServiceRootKey(domainProject), |
| serviceId, |
| }, "/") |
| } |
| |
| func GenerateRuleIndexKey(domainProject string, serviceId string, attr string, pattern string) string { |
| return util.StringJoin([]string{ |
| GetServiceRuleIndexRootKey(domainProject), |
| serviceId, |
| attr, |
| pattern, |
| }, "/") |
| } |
| |
| func GenerateServiceIndexKey(key *pb.MicroServiceKey) string { |
| appId := key.AppId |
| if len(strings.TrimSpace(appId)) == 0 { |
| key.AppId = REGISTRY_APP_ID |
| } |
| env := key.Environment |
| if len(strings.TrimSpace(env)) == 0 { |
| env = pb.ENV_DEV |
| } |
| return util.StringJoin([]string{ |
| GetServiceIndexRootKey(key.Tenant), |
| env, |
| key.AppId, |
| key.ServiceName, |
| key.Version, |
| }, "/") |
| } |
| |
| func GenerateServiceAliasKey(key *pb.MicroServiceKey) string { |
| appId := key.AppId |
| if len(strings.TrimSpace(appId)) == 0 { |
| key.AppId = REGISTRY_APP_ID |
| } |
| env := key.Environment |
| if len(strings.TrimSpace(env)) == 0 { |
| env = pb.ENV_DEV |
| } |
| return util.StringJoin([]string{ |
| GetServiceAliasRootKey(key.Tenant), |
| env, |
| key.AppId, |
| key.Alias, |
| key.Version, |
| }, "/") |
| } |
| |
| func GenerateServiceRuleKey(domainProject string, serviceId string, ruleId string) string { |
| return util.StringJoin([]string{ |
| GetServiceRuleRootKey(domainProject), |
| serviceId, |
| ruleId, |
| }, "/") |
| } |
| |
| func GenerateServiceTagKey(domainProject string, serviceId string) string { |
| return util.StringJoin([]string{ |
| GetServiceTagRootKey(domainProject), |
| serviceId, |
| }, "/") |
| } |
| |
| func GenerateServiceSchemaKey(domainProject string, serviceId string, schemaId string) string { |
| return util.StringJoin([]string{ |
| GetServiceSchemaRootKey(domainProject), |
| serviceId, |
| schemaId, |
| }, "/") |
| } |
| |
| func GenerateServiceSchemaSummaryKey(domainProject string, serviceId string, schemaId string) string { |
| return util.StringJoin([]string{ |
| GetServiceSchemaSummaryRootKey(domainProject), |
| serviceId, |
| schemaId, |
| }, "/") |
| } |
| |
| func GetServiceSchemaSummaryRootKey(domainProject string) string { |
| return util.StringJoin([]string{ |
| GetRootKey(), |
| REGISTRY_SERVICE_KEY, |
| REGISTRY_SCHEMA_SUMMARY_KEY, |
| domainProject, |
| }, "/") |
| } |
| |
| func GenerateInstanceIndexKey(domainProject string, instanceId string) string { |
| return util.StringJoin([]string{ |
| GetInstanceIndexRootKey(domainProject), |
| instanceId, |
| }, "/") |
| } |
| |
| func GenerateInstanceKey(domainProject string, serviceId string, instanceId string) string { |
| return util.StringJoin([]string{ |
| GetInstanceRootKey(domainProject), |
| serviceId, |
| instanceId, |
| }, "/") |
| } |
| |
| func GenerateInstanceLeaseKey(domainProject string, serviceId string, instanceId string) string { |
| return util.StringJoin([]string{ |
| GetInstanceLeaseRootKey(domainProject), |
| serviceId, |
| instanceId, |
| }, "/") |
| } |
| |
| func GenerateServiceDependencyRuleKey(serviceType string, domainProject string, in *pb.MicroServiceKey) string { |
| appId := in.AppId |
| if len(strings.TrimSpace(appId)) == 0 { |
| appId = REGISTRY_APP_ID |
| } |
| env := in.Environment |
| if len(strings.TrimSpace(env)) == 0 { |
| env = pb.ENV_DEV |
| } |
| if in.ServiceName == "*" { |
| return util.StringJoin([]string{ |
| GetServiceDependencyRuleRootKey(domainProject), |
| serviceType, |
| env, |
| in.ServiceName, |
| }, "/") |
| } |
| return util.StringJoin([]string{ |
| GetServiceDependencyRuleRootKey(domainProject), |
| serviceType, |
| env, |
| appId, |
| in.ServiceName, |
| in.Version, |
| }, "/") |
| } |
| |
| func GenerateConsumerDependencyRuleKey(domainProject string, in *pb.MicroServiceKey) string { |
| return GenerateServiceDependencyRuleKey("c", domainProject, in) |
| } |
| |
| func GenerateProviderDependencyRuleKey(domainProject string, in *pb.MicroServiceKey) string { |
| return GenerateServiceDependencyRuleKey("p", domainProject, in) |
| } |
| |
| func GetServiceDependencyRuleRootKey(domainProject string) string { |
| return util.StringJoin([]string{ |
| GetRootKey(), |
| REGISTRY_SERVICE_KEY, |
| REGISTRY_DEPS_RULE_KEY, |
| domainProject, |
| }, "/") |
| } |
| |
| func GenerateConsumerDependencyKey(domainProject string, consumerId string, providerId string) string { |
| return GenerateServiceDependencyKey("c", domainProject, consumerId, providerId) |
| } |
| |
| func GenerateServiceDependencyKey(serviceType string, domainProject string, serviceId1 string, serviceId2 string) string { |
| return util.StringJoin([]string{ |
| GetServiceDependencyRootKey(domainProject), |
| serviceType, |
| serviceId1, |
| serviceId2, |
| }, "/") |
| } |
| |
| func GenerateProviderDependencyKey(domainProject string, providerId string, consumerId string) string { |
| return GenerateServiceDependencyKey("p", domainProject, providerId, consumerId) |
| } |
| |
| func GetServiceDependencyRootKey(domainProject string) string { |
| return util.StringJoin([]string{ |
| GetRootKey(), |
| REGISTRY_SERVICE_KEY, |
| REGISTRY_DEPENDENCY_KEY, |
| domainProject, |
| }, "/") |
| } |
| |
| func GetDomainRootKey() string { |
| return util.StringJoin([]string{ |
| GetRootKey(), |
| REGISTRY_DOMAIN_KEY, |
| }, "/") |
| } |
| |
| func GenerateDomainKey(domain string) string { |
| return util.StringJoin([]string{ |
| GetDomainRootKey(), |
| domain, |
| }, "/") |
| } |
| |
| func GetSystemKey() string { |
| return util.StringJoin([]string{ |
| GetRootKey(), |
| REGISTRY_SYS_KEY, |
| }, "/") |
| } |
| |
| func GetMetricsRootKey() string { |
| return util.StringJoin([]string{ |
| GetRootKey(), |
| REGISTRY_METRICS_KEY, |
| }, "/") |
| } |
| |
| func GenerateMetricsKey(name, utc, domain string) string { |
| return util.StringJoin([]string{ |
| GetMetricsRootKey(), |
| name, |
| utc, |
| domain, |
| }, "/") |
| } |
| |
| func GetProjectRootKey(domain string) string { |
| return util.StringJoin([]string{ |
| GetRootKey(), |
| REGISTRY_PROJECT_KEY, |
| domain, |
| }, "/") |
| } |
| |
| func GenerateProjectKey(domain, project string) string { |
| return util.StringJoin([]string{ |
| GetProjectRootKey(domain), |
| project, |
| }, "/") |
| } |
| |
| func GetEndpointsRootKey(domainProject string) string { |
| return util.StringJoin([]string{ |
| GetRootKey(), |
| REGISTRY_INSTANCE_KEY, |
| ENDPOINTS_ROOT_KEY, |
| domainProject, |
| }, "/") |
| } |
| |
| func GenerateEndpointsIndexKey(domainProject, region, availableZone, nodeIP, endpoints string) string { |
| return util.StringJoin([]string{ |
| GetEndpointsRootKey(domainProject), |
| region, |
| availableZone, |
| nodeIP, |
| endpoints, |
| }, "/") |
| } |