rkt: Bump rkt required version. Get options from api service.

This commit is contained in:
Yifan Gu
2016-03-18 17:22:11 -07:00
parent b65a2ceb87
commit d814d973ff
8 changed files with 92 additions and 25 deletions

View File

@@ -16,7 +16,12 @@ limitations under the License.
package rkt
import "fmt"
import (
"fmt"
rktapi "github.com/coreos/rkt/api/v1alpha"
"golang.org/x/net/context"
)
// Config stores the global configuration for the rkt runtime.
// Detailed documents can be found at:
@@ -24,17 +29,21 @@ import "fmt"
type Config struct {
// The absolute path to the binary, or leave empty to find it in $PATH.
Path string
// The rkt data directory.
Dir string
// The image to use as stage1.
Stage1Image string
// The debug flag for rkt.
Debug bool
// The rkt data directory.
Dir string
// Comma-separated list of security features to disable.
// Allowed values: "none", "image", "tls", "ondisk", "http", "all".
InsecureOptions string
// The local config directory.
LocalConfigDir string
// The user config directory.
UserConfigDir string
// The system config directory.
SystemConfigDir string
}
// buildGlobalOptions returns an array of global command line options.
@@ -44,13 +53,54 @@ func (c *Config) buildGlobalOptions() []string {
return result
}
result = append(result, fmt.Sprintf("--debug=%v", c.Debug))
result = append(result, fmt.Sprintf("--insecure-options=%s", c.InsecureOptions))
if c.Debug {
result = append(result, "--debug=true")
}
if c.InsecureOptions != "" {
result = append(result, fmt.Sprintf("--insecure-options=%s", c.InsecureOptions))
}
if c.LocalConfigDir != "" {
result = append(result, fmt.Sprintf("--local-config=%s", c.LocalConfigDir))
}
if c.UserConfigDir != "" {
result = append(result, fmt.Sprintf("--user-config=%s", c.UserConfigDir))
}
if c.SystemConfigDir != "" {
result = append(result, fmt.Sprintf("--system-config=%s", c.SystemConfigDir))
}
if c.Dir != "" {
result = append(result, fmt.Sprintf("--dir=%s", c.Dir))
}
return result
}
// getConfig gets configurations from the rkt API service
// and merge it with the existing config. The merge rule is
// that the fields in the provided config will override the
// result that get from the rkt api service.
func (r *Runtime) getConfig(cfg *Config) (*Config, error) {
resp, err := r.apisvc.GetInfo(context.Background(), &rktapi.GetInfoRequest{})
if err != nil {
return nil, err
}
flags := resp.Info.GlobalFlags
if cfg.Dir == "" {
cfg.Dir = flags.Dir
}
if cfg.InsecureOptions == "" {
cfg.InsecureOptions = flags.InsecureFlags
}
if cfg.LocalConfigDir == "" {
cfg.LocalConfigDir = flags.LocalConfigDir
}
if cfg.UserConfigDir == "" {
cfg.UserConfigDir = flags.UserConfigDir
}
if cfg.SystemConfigDir == "" {
cfg.SystemConfigDir = flags.SystemConfigDir
}
return cfg, nil
}