Skip to content

Commit

Permalink
refactor and cleanup a bit
Browse files Browse the repository at this point in the history
  • Loading branch information
refs committed Apr 20, 2021
1 parent 7446c4d commit 60280a3
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 5 deletions.
3 changes: 3 additions & 0 deletions ocis-pkg/config/config.go
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand Down
17 changes: 12 additions & 5 deletions ocis/pkg/runtime/service/service.go
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand All @@ -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)
Expand Down Expand Up @@ -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))))
Expand Down

0 comments on commit 60280a3

Please sign in to comment.