serviceregistry

package
v0.4.2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 15, 2024 License: BSD-3-Clause-Clear Imports: 11 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func RegisterService

func RegisterService(r Registration) error

RegisterService is a function that registers a service with the service registry.

Types

type DBRegister added in v0.3.0

type DBRegister struct {
	// Required is a flag that indicates whether the service requires a database connection.
	Required bool
	// Migrations is an embedded filesystem that contains the Goose SQL migrations for the service.
	// This is required to support the `migrate` command or the `runMigrations` configuration option.
	// More information on Goose can be found at https://github.com/pressly/goose
	Migrations *embed.FS
}

DBRegister is a struct that holds the information needed to register a service with a database

type HandlerServer

type HandlerServer func(ctx context.Context, mux *runtime.ServeMux, server any) error

type NamespaceMap added in v0.3.0

type NamespaceMap map[string]ServiceMap
var RegisteredServices NamespaceMap

RegisteredServices is a map of namespaces to services TODO remove the global variable and move towards a more functional approach

type RegisterFunc

type RegisterFunc func(RegistrationParams) (Impl any, HandlerServer HandlerServer)

type Registration

type Registration struct {
	// Namespace is the namespace of the service. One or more gRPC services can be registered under
	// the same namespace.
	Namespace string
	// ServiceDesc is the gRPC service descriptor. For non-gRPC services, this can be mocked out,
	// but at minimum, the ServiceName field must be set
	ServiceDesc *grpc.ServiceDesc
	// RegisterFunc is the function that will be called to register the service
	RegisterFunc RegisterFunc

	// DB is optional and used to register the service with a database
	DB DBRegister
}

Registration is a struct that holds the information needed to register a service

type RegistrationParams

type RegistrationParams struct {
	// Config scoped to the service config. Since the main config contains all the service configs,
	// which could have need-to-know information we don't want to expose it to all services.
	Config ServiceConfig
	// OTDF is the OpenTDF server that can be used to interact with the OpenTDFServer instance.
	OTDF *server.OpenTDFServer
	// DBClient is the database client that can be used to interact with the database. This client
	// is scoped to the service namespace and will not be shared with other service namespaces.
	DBClient *db.Client
	// Engine is the OPA engine that can be used to interact with the OPA server. Generally, the
	// only service that needs to interact with OPA is the authorization service.
	Engine *opa.Engine
	// SDK is the OpenTDF SDK that can be used to interact with the OpenTDF SDK. This is useful for
	// gRPC Inter Process Communication (IPC) between services. This ensures the services are
	// communicating with each other by contract as well as supporting the various deployment models
	// that OpenTDF supports.
	SDK *sdk.SDK
	// Logger is the logger that can be used to log messages. This logger is scoped to the service
	Logger *logger.Logger

	// RegisterWellKnownConfig is a function that can be used to register a well-known configuration
	WellKnownConfig func(namespace string, config any) error
	// RegisterReadinessCheck is a function that can be used to register a readiness check for the
	// service. This is useful for services that need to perform some initialization before they are
	// ready to serve requests. This function should be called in the RegisterFunc function.
	RegisterReadinessCheck func(namespace string, check func(context.Context) error) error
}

RegistrationParams is a struct that holds the parameters needed to register a service with the service registry. These parameters are passed to the RegisterFunc function defined in the Registration struct.

type RemoteServiceConfig

type RemoteServiceConfig struct {
	Endpoint string `yaml:"endpoint"`
}

type Service

type Service struct {
	Registration
	// Started is a flag that indicates whether the service has been started
	Started bool
	// Close is a function that can be called to close the service
	Close func()
}

Service is a struct that holds the registration information for a service as well as the state of the service within the instance of the platform.

type ServiceConfig

type ServiceConfig struct {
	Enabled    bool                   `yaml:"enabled"`
	Remote     RemoteServiceConfig    `yaml:"remote"`
	ExtraProps map[string]interface{} `json:"-" mapstructure:",remain"`
}

ServiceConfig is a struct that holds the configuration for a service and used for the global config rollup powered by Viper (https://github.com/spf13/viper)

type ServiceMap added in v0.3.0

type ServiceMap map[string]Service

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL