mirror of
https://github.com/opencloud-eu/opencloud.git
synced 2025-12-31 01:10:20 -06:00
refactor and cleanup a bit
This commit is contained in:
@@ -76,6 +76,9 @@ type Runtime struct {
|
||||
|
||||
// Config combines all available configuration parts.
|
||||
type Config struct {
|
||||
// Mode is mostly used whenever we need to run an extension. The technical debt this introduces is in regards of
|
||||
// what it does. Supervised (0) loads configuration from a unified config file because of known limitations of Viper; whereas
|
||||
// Unsupervised (1) MUST parse config from all known sources.
|
||||
Mode Mode
|
||||
File string
|
||||
|
||||
|
||||
@@ -114,12 +114,18 @@ func NewService(options ...Option) (*Service, error) {
|
||||
// Start an rpc service. By default the package scope Start will run all default extensions to provide with a working
|
||||
// oCIS instance.
|
||||
func Start(o ...Option) error {
|
||||
// Start the runtime. Most likely this was called ONLY by the `ocis server` subcommand, but since we cannot protect
|
||||
// from the caller, the previous statement holds truth.
|
||||
|
||||
// prepare a new rpc Service struct.
|
||||
s, err := NewService(o...)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
// notify goroutines that they are running on supervised mode
|
||||
s.cfg.Mode = ociscfg.SUPERVISED
|
||||
|
||||
setMicroLogger()
|
||||
|
||||
// Start creates its own supervisor. Running services under `ocis server` will create its own supervision tree.
|
||||
@@ -129,15 +135,12 @@ func Start(o ...Option) error {
|
||||
},
|
||||
})
|
||||
|
||||
// reva storages have their own logging. For consistency sake the top level logging will be cascade to reva.
|
||||
// reva storages have their own logging. For consistency sake the top level logging will cascade to reva.
|
||||
s.cfg.Storage.Log.Color = s.cfg.Log.Color
|
||||
s.cfg.Storage.Log.Level = s.cfg.Log.Level
|
||||
s.cfg.Storage.Log.Pretty = s.cfg.Log.Pretty
|
||||
s.cfg.Storage.Log.File = s.cfg.Log.File
|
||||
|
||||
// notify goroutines that they are running on supervised mode
|
||||
s.cfg.Mode = ociscfg.SUPERVISED
|
||||
|
||||
if err := rpc.Register(s); err != nil {
|
||||
if s != nil {
|
||||
s.Log.Fatal().Err(err)
|
||||
@@ -193,8 +196,12 @@ func Start(o ...Option) error {
|
||||
|
||||
// Start indicates the Service Controller to start a new supervised service as an OS thread.
|
||||
func (s *Service) Start(name string, reply *int) error {
|
||||
// RPC calls to a Service object will allow for parsing config. Mind that since the runtime is running on a different
|
||||
// machine, the configuration needs to be present in the given machine. RPC does not yet allow providing a config
|
||||
// during transport.
|
||||
s.cfg.Mode = ociscfg.UNSUPERVISED
|
||||
|
||||
swap := deepcopy.Copy(s.cfg)
|
||||
swap.(*ociscfg.Config).Mode = ociscfg.UNSUPERVISED
|
||||
if _, ok := s.ServicesRegistry[name]; ok {
|
||||
*reply = 0
|
||||
s.serviceToken[name] = append(s.serviceToken[name], s.Supervisor.Add(s.ServicesRegistry[name](swap.(*ociscfg.Config))))
|
||||
|
||||
Reference in New Issue
Block a user