blob: 371759c0eff9e92802cc399efca498a16e858440 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You 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 datasource
import (
"context"
"errors"
pb "github.com/go-chassis/cari/discovery"
)
const (
ExistTypeMicroservice = "microservice"
ExistTypeSchema = "schema"
DefaultLeaseRenewalInterval int32 = 30
DefaultLeaseRetryTimes int32 = 3
)
var (
ErrServiceNotExists = errors.New("service does not exist")
ErrInstanceNotExists = errors.New("instance does not exist")
ErrUndefinedSchemaID = errors.New("non-existent schemaID can't be added request")
ErrModifySchemaNotAllow = errors.New("schema already exist, can not be changed request")
)
type MatchPolicy struct {
Properties map[string]string `json:"properties,omitempty"`
}
// Attention: request validation must be finished before the following interface being invoked!!!
// MetadataManager contains the CRUD of cache metadata
type MetadataManager interface {
// Microservice management
RegisterService(ctx context.Context, request *pb.CreateServiceRequest) (*pb.CreateServiceResponse, error)
ListService(ctx context.Context, request *pb.GetServicesRequest) (*pb.GetServicesResponse, error)
GetService(ctx context.Context, request *pb.GetServiceRequest) (*pb.MicroService, error)
GetOverview(ctx context.Context, request *pb.GetServicesRequest) (*pb.Statistics, error)
ListApp(ctx context.Context, request *pb.GetAppsRequest) (*pb.GetAppsResponse, error)
ExistServiceByID(ctx context.Context, request *pb.GetExistenceByIDRequest) (*pb.GetExistenceByIDResponse, error)
ExistService(ctx context.Context, request *pb.GetExistenceRequest) (string, error)
PutServiceProperties(ctx context.Context, request *pb.UpdateServicePropsRequest) error
UnregisterService(ctx context.Context, request *pb.DeleteServiceRequest) error
CountService(ctx context.Context, request *pb.GetServiceCountRequest) (*pb.GetServiceCountResponse, error)
FindService(ctx context.Context, request *pb.MicroServiceKey) (*pb.GetServicesResponse, error)
// Instance management
RegisterInstance(ctx context.Context, request *pb.RegisterInstanceRequest) (*pb.RegisterInstanceResponse, error)
ExistInstance(ctx context.Context, request *pb.MicroServiceInstanceKey) (*pb.GetExistenceByIDResponse, error)
// GetInstance returns instances under the specified service
GetInstance(ctx context.Context, request *pb.GetOneInstanceRequest) (*pb.GetOneInstanceResponse, error)
ListInstance(ctx context.Context, request *pb.GetInstancesRequest) (*pb.GetInstancesResponse, error)
// FindInstances returns instances under the specified domain
FindInstances(ctx context.Context, request *pb.FindInstancesRequest) (*pb.FindInstancesResponse, error)
PutInstance(ctx context.Context, request *pb.RegisterInstanceRequest) error
PutInstanceStatus(ctx context.Context, request *pb.UpdateInstanceStatusRequest) error
PutInstanceProperties(ctx context.Context, request *pb.UpdateInstancePropsRequest) error
UnregisterInstance(ctx context.Context, request *pb.UnregisterInstanceRequest) error
SendHeartbeat(ctx context.Context, request *pb.HeartbeatRequest) error
SendManyHeartbeat(ctx context.Context, request *pb.HeartbeatSetRequest) (*pb.HeartbeatSetResponse, error)
// ListManyInstances returns instances under the specified domain
ListManyInstances(ctx context.Context, request *pb.GetAllInstancesRequest) (*pb.GetAllInstancesResponse, error)
CountInstance(ctx context.Context, request *pb.GetServiceCountRequest) (*pb.GetServiceCountResponse, error)
// Schema management
ModifySchemas(ctx context.Context, request *pb.ModifySchemasRequest) (*pb.ModifySchemasResponse, error)
ModifySchema(ctx context.Context, request *pb.ModifySchemaRequest) (*pb.ModifySchemaResponse, error)
ExistSchema(ctx context.Context, request *pb.GetExistenceRequest) (*pb.GetExistenceResponse, error)
GetSchema(ctx context.Context, request *pb.GetSchemaRequest) (*pb.GetSchemaResponse, error)
GetAllSchemas(ctx context.Context, request *pb.GetAllSchemaRequest) (*pb.GetAllSchemaResponse, error)
DeleteSchema(ctx context.Context, request *pb.DeleteSchemaRequest) error
// Tag management
PutManyTags(ctx context.Context, request *pb.AddServiceTagsRequest) error
ListTag(ctx context.Context, request *pb.GetServiceTagsRequest) (*pb.GetServiceTagsResponse, error)
PutTag(ctx context.Context, request *pb.UpdateServiceTagRequest) error
DeleteManyTags(ctx context.Context, request *pb.DeleteServiceTagsRequest) error
// RetireService retire the 'RetirePlan.Reserve' latest versions for each of service,
// delete other versions which doesn't register any instances.
RetireService(ctx context.Context, plan *RetirePlan) error
Statistics(ctx context.Context, withShared bool) (*pb.Statistics, error)
UpdateManyInstanceStatus(ctx context.Context, match *MatchPolicy, status string) error
}