Skip to content

Commit

Permalink
Merge pull request #613 from xxwjj/config
Browse files Browse the repository at this point in the history
optimize configuration feature and remove some un-used code
  • Loading branch information
leonwanghui authored Feb 14, 2019
2 parents 0c6954e + 0cf6eef commit 21d324f
Show file tree
Hide file tree
Showing 14 changed files with 52 additions and 278 deletions.
20 changes: 9 additions & 11 deletions cmd/osdsapiserver/osdsapiserver.go
Original file line number Diff line number Diff line change
Expand Up @@ -20,26 +20,24 @@ This module implements a entry into the OpenSDS REST service.
package main

import (
"flag"

"github.com/opensds/opensds/pkg/api"
"github.com/opensds/opensds/pkg/db"
. "github.com/opensds/opensds/pkg/utils/config"
"github.com/opensds/opensds/pkg/utils/constants"
"github.com/opensds/opensds/pkg/utils/daemon"
"github.com/opensds/opensds/pkg/utils/logs"
)

func init() {
// Get the default global configuration.
def := GetDefaultConfig()

// Parse some configuration fields from command line.
flag := &CONF.Flag
flag.StringVar(&CONF.OsdsApiServer.ApiEndpoint, "api-endpoint", def.OsdsApiServer.ApiEndpoint, "Listen endpoint of api-server service")
flag.DurationVar(&CONF.OsdsApiServer.LogFlushFrequency, "log-flush-frequency", def.OsdsApiServer.LogFlushFrequency, "Maximum number of seconds between log flushes")
flag.BoolVar(&CONF.OsdsApiServer.Daemon, "daemon", def.OsdsApiServer.Daemon, "Run app as a daemon with -daemon=true")

// Load global configuration from specified config file.
CONF.Load(constants.OpensdsConfigPath)
CONF.Load()

// Parse some configuration fields from command line. and it will override the value which is got from config file.
flag.StringVar(&CONF.OsdsApiServer.ApiEndpoint, "api-endpoint", CONF.OsdsApiServer.ApiEndpoint, "Listen endpoint of api-server service")
flag.DurationVar(&CONF.OsdsApiServer.LogFlushFrequency, "log-flush-frequency", CONF.OsdsApiServer.LogFlushFrequency, "Maximum number of seconds between log flushes")
flag.BoolVar(&CONF.OsdsApiServer.Daemon, "daemon", CONF.OsdsApiServer.Daemon, "Run app as a daemon with -daemon=true")
flag.Parse()

daemon.CheckAndRunDaemon(CONF.OsdsApiServer.Daemon)
}
Expand Down
22 changes: 10 additions & 12 deletions cmd/osdsdock/osdsdock.go
Original file line number Diff line number Diff line change
Expand Up @@ -20,27 +20,25 @@ This module implements a entry into the OpenSDS REST service.
package main

import (
"flag"

"github.com/opensds/opensds/pkg/db"
"github.com/opensds/opensds/pkg/dock"
. "github.com/opensds/opensds/pkg/utils/config"
"github.com/opensds/opensds/pkg/utils/constants"
"github.com/opensds/opensds/pkg/utils/daemon"
"github.com/opensds/opensds/pkg/utils/logs"
)

func init() {
// Get the default global configuration.
def := GetDefaultConfig()

// Parse some configuration fields from command line.
flag := &CONF.Flag
flag.StringVar(&CONF.OsdsDock.ApiEndpoint, "api-endpoint", def.OsdsDock.ApiEndpoint, "Listen endpoint of dock service")
flag.StringVar(&CONF.OsdsDock.DockType, "dock-type", def.OsdsDock.DockType, "Type of dock service")
flag.BoolVar(&CONF.OsdsDock.Daemon, "daemon", def.OsdsDock.Daemon, "Run app as a daemon with -daemon=true")
flag.DurationVar(&CONF.OsdsDock.LogFlushFrequency, "log-flush-frequency", def.OsdsLet.LogFlushFrequency, "Maximum number of seconds between log flushes")

// Load global configuration from specified config file.
CONF.Load(constants.OpensdsConfigPath)
CONF.Load()

// Parse some configuration fields from command line. and it will override the value which is got from config file.
flag.StringVar(&CONF.OsdsDock.ApiEndpoint, "api-endpoint", CONF.OsdsDock.ApiEndpoint, "Listen endpoint of dock service")
flag.StringVar(&CONF.OsdsDock.DockType, "dock-type", CONF.OsdsDock.DockType, "Type of dock service")
flag.BoolVar(&CONF.OsdsDock.Daemon, "daemon", CONF.OsdsDock.Daemon, "Run app as a daemon with -daemon=true")
flag.DurationVar(&CONF.OsdsDock.LogFlushFrequency, "log-flush-frequency", CONF.OsdsDock.LogFlushFrequency, "Maximum number of seconds between log flushes")
flag.Parse()

daemon.CheckAndRunDaemon(CONF.OsdsDock.Daemon)
}
Expand Down
20 changes: 9 additions & 11 deletions cmd/osdslet/osdslet.go
Original file line number Diff line number Diff line change
Expand Up @@ -20,26 +20,24 @@ This module implements a entry into the OpenSDS REST service.
package main

import (
"flag"

c "github.com/opensds/opensds/pkg/controller"
"github.com/opensds/opensds/pkg/db"
. "github.com/opensds/opensds/pkg/utils/config"
"github.com/opensds/opensds/pkg/utils/constants"
"github.com/opensds/opensds/pkg/utils/daemon"
"github.com/opensds/opensds/pkg/utils/logs"
)

func init() {
// Get the default global configuration.
def := GetDefaultConfig()

// Parse some configuration fields from command line.
flag := &CONF.Flag
flag.StringVar(&CONF.OsdsLet.ApiEndpoint, "api-endpoint", def.OsdsLet.ApiEndpoint, "Listen endpoint of controller service")
flag.BoolVar(&CONF.OsdsLet.Daemon, "daemon", def.OsdsLet.Daemon, "Run app as a daemon with -daemon=true")
flag.DurationVar(&CONF.OsdsLet.LogFlushFrequency, "log-flush-frequency", def.OsdsLet.LogFlushFrequency, "Maximum number of seconds between log flushes")

// Load global configuration from specified config file.
CONF.Load(constants.OpensdsConfigPath)
CONF.Load()

// Parse some configuration fields from command line. and it will override the value which is got from config file.
flag.StringVar(&CONF.OsdsLet.ApiEndpoint, "api-endpoint", CONF.OsdsLet.ApiEndpoint, "Listen endpoint of controller service")
flag.BoolVar(&CONF.OsdsLet.Daemon, "daemon", CONF.OsdsLet.Daemon, "Run app as a daemon with -daemon=true")
flag.DurationVar(&CONF.OsdsLet.LogFlushFrequency, "log-flush-frequency", CONF.OsdsLet.LogFlushFrequency, "Maximum number of seconds between log flushes")
flag.Parse()

daemon.CheckAndRunDaemon(CONF.OsdsLet.Daemon)
}
Expand Down
3 changes: 0 additions & 3 deletions examples/opensds.conf
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,6 @@

[osdsapiserver]
api_endpoint = 0.0.0.0:50040
log_file = /var/log/opensds/osdsapiserver.log
auth_strategy = keystone
# If https is enabled, the default value of cert file
# is /opt/opensds-security/opensds/opensds-cert.pem,
Expand All @@ -27,11 +26,9 @@ password_decrypt_tool = aes

[osdslet]
api_endpoint = 0.0.0.0:50049
log_file = /var/log/opensds/osdslet.log

[osdsdock]
api_endpoint = 0.0.0.0:50050
log_file = /var/log/opensds/osdsdock.log
# Choose the type of dock resource, only support 'provisioner' and 'attacher'.
dock_type = provisioner
# Specify which backends should be enabled, sample,ceph,cinder,lvm and so on.
Expand Down
30 changes: 21 additions & 9 deletions pkg/utils/config/config.go
Original file line number Diff line number Diff line change
Expand Up @@ -15,15 +15,18 @@
package config

import (
gflag "flag"
"flag"
"fmt"
"log"
"os"
"reflect"
"regexp"
"strconv"
"strings"
"time"

"github.com/go-ini/ini"
"github.com/opensds/opensds/pkg/utils/constants"
)

const (
Expand Down Expand Up @@ -225,9 +228,6 @@ func parseSections(cfg *ini.File, t reflect.Type, v reflect.Value) error {
for i := 0; i < t.NumField(); i++ {
field := v.Field(i)
section := t.Field(i).Tag.Get("conf")
if "FlagSet" == field.Type().Name() {
continue
}
if "" == section {
if err := parseSections(cfg, field.Type(), field); err != nil {
return err
Expand Down Expand Up @@ -262,11 +262,23 @@ func GetDefaultConfig() *Config {
return conf
}

func (c *Config) Load(confFile string) {
gflag.StringVar(&confFile, "config-file", confFile, "The configuration file of OpenSDS")
c.Flag.Parse()
initConf(confFile, CONF)
c.Flag.AssignValue()
func GetConfigPath() string {
path := constants.OpensdsConfigPath
for i := 1; i < len(os.Args)-1; i++ {
if m, _ := regexp.MatchString(`^-{1,2}config-file$`, os.Args[i]); m {
if !strings.HasSuffix(os.Args[i+1], "-") {
path = os.Args[i+1]
}
}
}
return path
}

func (c *Config) Load() {
var dummyConfigPath string
// Flag 'config-file' is set here for usage show and parameter check, the config path will be parsed by GetConfigPath
flag.StringVar(&dummyConfigPath, "config-file", constants.OpensdsConfigPath, "OpenSDS config file path")
initConf(GetConfigPath(), CONF)
}

func GetBackendsMap() map[string]BackendProperties {
Expand Down
1 change: 0 additions & 1 deletion pkg/utils/config/config_define.go
Original file line number Diff line number Diff line change
Expand Up @@ -94,5 +94,4 @@ type Config struct {
OsdsDock `conf:"osdsdock"`
Database `conf:"database"`
KeystoneAuthToken `conf:"keystone_authtoken"`
Flag FlagSet
}
2 changes: 1 addition & 1 deletion pkg/utils/config/config_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -261,7 +261,7 @@ func TestFunctionDefaultValue(t *testing.T) {
}

func TestOpensdsConfig(t *testing.T) {
CONF.Load("testdata/opensds.conf")
initConf("testdata/opensds.conf", CONF)

if CONF.OsdsApiServer.ApiEndpoint != "localhost:50040" {
t.Error("Test OsdsApiServer.ApiEndpoint error")
Expand Down
116 changes: 0 additions & 116 deletions pkg/utils/config/flag.go

This file was deleted.

Loading

0 comments on commit 21d324f

Please sign in to comment.