blob: b798ebe57e9fd7c0df379583490ebb23e1b9c42f [file] [log] [blame]
//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 (
pb "github.com/ServiceComb/service-center/server/core/proto"
"strings"
)
const (
REGISTRY_ROOT_KEY = "cse-sr"
REGISTRY_SERVICE_KEY = "ms"
REGISTRY_INSTANCE_KEY = "inst"
REGISTRY_FILE = "files"
REGISTRY_INDEX = "indexes"
REGISTRY_RULE_KEY = "rules"
REGISTRY_TENANT_KEY = "tenant"
REGISTRY_ALIAS_KEY = "alias"
REGISTRY_TAG_KEY = "tags"
REGISTRY_SCHEMA_KEY = "schemas"
REGISTRY_LEASE_KEY = "leases"
REGISTRY_DEPENDENCY_KEY = "deps"
REGISTRY_ENDPOINTS_INDEX = "epsindex"
)
func GetRootKey() string {
return strings.Join([]string{
"",
REGISTRY_ROOT_KEY,
}, "/")
}
func GetDomainProjectRootKey(tenant string) string {
return strings.Join([]string{
GetRootKey(),
tenant,
}, "/")
}
func GetServiceRootKey(tenant string) string {
return strings.Join([]string{
GetRootKey(),
REGISTRY_SERVICE_KEY,
REGISTRY_FILE,
tenant,
}, "/")
}
func GetServiceIndexRootKey(tenant string) string {
return strings.Join([]string{
GetRootKey(),
REGISTRY_SERVICE_KEY,
REGISTRY_INDEX,
tenant,
}, "/")
}
func GetServiceAliasRootKey(tenant string) string {
return strings.Join([]string{
GetRootKey(),
REGISTRY_SERVICE_KEY,
REGISTRY_ALIAS_KEY,
tenant,
}, "/")
}
func GetServiceRuleRootKey(tenant string) string {
return strings.Join([]string{
GetDomainProjectRootKey(tenant),
REGISTRY_SERVICE_KEY,
REGISTRY_RULE_KEY,
}, "/")
}
func GetServiceRuleIndexRootKey(tenant string) string {
return strings.Join([]string{
GetDomainProjectRootKey(tenant),
REGISTRY_RULE_KEY,
REGISTRY_INDEX,
}, "/")
}
func GetServiceTagRootKey(tenant string) string {
return strings.Join([]string{
GetDomainProjectRootKey(tenant),
REGISTRY_SERVICE_KEY,
REGISTRY_TAG_KEY,
}, "/")
}
func GetServiceSchemaRootKey(tenant string) string {
return strings.Join([]string{
GetDomainProjectRootKey(tenant),
REGISTRY_SERVICE_KEY,
REGISTRY_SCHEMA_KEY,
}, "/")
}
func GetInstanceIndexRootKey(tenant string) string {
return strings.Join([]string{
GetRootKey(),
REGISTRY_INSTANCE_KEY,
REGISTRY_INDEX,
tenant,
}, "/")
}
func GetInstanceRootKey(tenant string) string {
return strings.Join([]string{
GetRootKey(),
REGISTRY_INSTANCE_KEY,
REGISTRY_FILE,
tenant,
}, "/")
}
func GetInstanceLeaseRootKey(tenant string) string {
return strings.Join([]string{
GetRootKey(),
REGISTRY_INSTANCE_KEY,
REGISTRY_LEASE_KEY,
tenant,
}, "/")
}
func GetInstancesEndpointsIndexRootKey(tenant string) string {
return strings.Join([]string{
GetRootKey(),
REGISTRY_ENDPOINTS_INDEX,
tenant,
}, "/")
}
func GenerateServiceKey(tenant string, serviceId string) string {
return strings.Join([]string{
GetServiceRootKey(tenant),
serviceId,
}, "/")
}
func GenerateRuleIndexKey(tenant string, serviceId string, attr string, pattern string) string {
return strings.Join([]string{
GetServiceRuleIndexRootKey(tenant),
serviceId,
attr,
pattern,
}, "/")
}
func GenerateServiceIndexKey(key *pb.MicroServiceKey) string {
appId := key.AppId
if len(strings.TrimSpace(appId)) == 0 {
key.AppId = "default"
}
stage := key.Stage
if len(strings.TrimSpace(stage)) == 0 {
key.Stage = "dev"
}
return strings.Join([]string{
GetServiceIndexRootKey(key.Tenant),
key.AppId,
key.Stage,
key.ServiceName,
key.Version,
}, "/")
}
func GenerateServiceAliasKey(key *pb.MicroServiceKey) string {
appId := key.AppId
if len(strings.TrimSpace(appId)) == 0 {
key.AppId = "default"
}
stage := key.Stage
if len(strings.TrimSpace(stage)) == 0 {
key.Stage = "dev"
}
return strings.Join([]string{
GetServiceAliasRootKey(key.Tenant),
key.AppId,
key.Stage,
key.Alias,
key.Version,
}, "/")
}
func GenerateServiceRuleKey(tenant string, serviceId string, ruleId string) string {
return strings.Join([]string{
GetServiceRuleRootKey(tenant),
serviceId,
ruleId,
}, "/")
}
func GenerateServiceTagKey(tenant string, serviceId string) string {
return strings.Join([]string{
GetServiceTagRootKey(tenant),
serviceId,
}, "/")
}
func GenerateServiceSchemaKey(tenant string, serviceId string, schemaId string) string {
return strings.Join([]string{
GetServiceSchemaRootKey(tenant),
serviceId,
schemaId,
}, "/")
}
func GenerateInstanceIndexKey(tenant string, instanceId string) string {
return strings.Join([]string{
GetInstanceIndexRootKey(tenant),
instanceId,
}, "/")
}
func GenerateInstanceKey(tenant string, serviceId string, instanceId string) string {
return strings.Join([]string{
GetInstanceRootKey(tenant),
serviceId,
instanceId,
}, "/")
}
func GenerateInstanceLeaseKey(tenant string, serviceId string, instanceId string) string {
return strings.Join([]string{
GetInstanceLeaseRootKey(tenant),
serviceId,
instanceId,
}, "/")
}
func generateServiceDependencyRuleKey(serviceType string, tenant string, in *pb.MicroServiceKey) string {
if in.ServiceName == "*" {
return strings.Join([]string{
GenerateServiceDependencyRuleRootKey(tenant),
serviceType,
in.ServiceName,
}, "/")
}
appId := in.AppId
if len(strings.TrimSpace(appId)) == 0 {
appId = "default"
}
stage := in.Stage
if len(strings.TrimSpace(stage)) == 0 {
stage = "dev"
}
return strings.Join([]string{
GenerateServiceDependencyRuleRootKey(tenant),
serviceType,
appId,
stage,
in.ServiceName,
in.Version,
}, "/")
}
func GenerateConsumerDependencyRuleKey(tenant string, in *pb.MicroServiceKey) string {
return generateServiceDependencyRuleKey("c", tenant, in)
}
func GenerateProviderDependencyRuleKey(tenant string, in *pb.MicroServiceKey) string {
return generateServiceDependencyRuleKey("p", tenant, in)
}
func GenerateServiceDependencyRuleRootKey(tenant string) string {
return strings.Join([]string{
GetDomainProjectRootKey(tenant),
REGISTRY_SERVICE_KEY,
REGISTRY_DEPENDENCY_KEY,
"rule",
}, "/")
}
func GenerateConsumerDependencyKey(tenant string, consumerId string, providerId string) string {
return GenerateServiceDependencyKey("c", tenant, consumerId, providerId)
}
func GenerateServiceDependencyKey(serviceType string, tenant string, serviceId1 string, serviceId2 string) string {
return strings.Join([]string{
GetServiceDependencyRootKey(tenant),
serviceType,
serviceId1,
serviceId2,
}, "/")
}
func GenerateProviderDependencyKey(tenant string, providerId string, consumerId string) string {
return GenerateServiceDependencyKey("p", tenant, providerId, consumerId)
}
func GetServiceDependencyRootKey(tenant string) string {
return strings.Join([]string{
GetDomainProjectRootKey(tenant),
REGISTRY_SERVICE_KEY,
REGISTRY_DEPENDENCY_KEY,
}, "/")
}
func GetDomainRootKey() string {
return strings.Join([]string{
GetRootKey(),
REGISTRY_TENANT_KEY,
}, "/")
}
func GenerateDomainKey(tenant string) string {
return strings.Join([]string{
GetDomainRootKey(),
tenant,
}, "/")
}
func GenerateInsEpsIndex(tenant string, serviceId string, inEpsIndex string) string {
return strings.Join([]string{
GetInstancesEndpointsIndexRootKey(tenant),
serviceId,
inEpsIndex,
}, "/")
}