mirror of
https://github.com/opencloud-eu/opencloud.git
synced 2026-01-04 03:09:33 -06:00
Merge pull request #1931 from owncloud/parse-config-when-run
This commit is contained in:
5
changelog/unreleased/config-parsing-run-subcommand.md
Normal file
5
changelog/unreleased/config-parsing-run-subcommand.md
Normal file
@@ -0,0 +1,5 @@
|
||||
Enhancement: Parse config on supervised mode with run subcommand
|
||||
|
||||
Currenntly it is not possible to parse a single config file from an extension when running on supervised mode.
|
||||
|
||||
https://github.com/owncloud/ocis/pull/1931
|
||||
@@ -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,6 +196,11 @@ 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)
|
||||
if _, ok := s.ServicesRegistry[name]; ok {
|
||||
*reply = 0
|
||||
|
||||
Reference in New Issue
Block a user