1
0
mirror of https://github.com/rancher/os.git synced 2025-08-11 11:32:28 +00:00

Support switching to the default console

This commit is contained in:
Josh Curl 2016-06-12 12:02:07 -07:00
parent 7f7d8765ca
commit 3153c28e86
No known key found for this signature in database
GPG Key ID: 82B504B9BCCFA677
8 changed files with 30 additions and 39 deletions

View File

@ -13,8 +13,6 @@ import (
"github.com/docker/libcompose/project/options" "github.com/docker/libcompose/project/options"
"github.com/rancher/os/compose" "github.com/rancher/os/compose"
"github.com/rancher/os/config" "github.com/rancher/os/config"
"github.com/rancher/os/docker"
"github.com/rancher/os/util"
"github.com/rancher/os/util/network" "github.com/rancher/os/util/network"
) )
@ -56,23 +54,10 @@ func consoleSwitch(c *cli.Context) error {
cfg := config.LoadConfig() cfg := config.LoadConfig()
if err := compose.StageServices(cfg, newConsole); err != nil { if newConsole != "default" {
return err if err := compose.StageServices(cfg, newConsole); err != nil {
} return err
}
client, err := docker.NewSystemClient()
if err != nil {
return err
}
currentContainerId, err := util.GetCurrentContainerId()
if err != nil {
return err
}
currentContainer, err := client.ContainerInspect(context.Background(), currentContainerId)
if err != nil {
return err
} }
service, err := compose.CreateService(nil, "switch-console", &composeConfig.ServiceConfigV1{ service, err := compose.CreateService(nil, "switch-console", &composeConfig.ServiceConfigV1{
@ -80,7 +65,7 @@ func consoleSwitch(c *cli.Context) error {
Privileged: true, Privileged: true,
Net: "host", Net: "host",
Pid: "host", Pid: "host",
Image: currentContainer.Config.Image, Image: fmt.Sprintf("rancher/os-base:%s", config.VERSION),
Labels: map[string]string{ Labels: map[string]string{
config.SCOPE: config.SYSTEM, config.SCOPE: config.SYSTEM,
}, },
@ -94,9 +79,10 @@ func consoleSwitch(c *cli.Context) error {
if err = service.Delete(context.Background(), options.Delete{}); err != nil { if err = service.Delete(context.Background(), options.Delete{}); err != nil {
return err return err
} }
return service.Up(context.Background(), options.Up{ if err = service.Up(context.Background(), options.Up{}); err != nil {
Log: true, return err
}) }
return service.Log(context.Background(), true)
} }
func consoleList(c *cli.Context) error { func consoleList(c *cli.Context) error {
@ -107,6 +93,7 @@ func consoleList(c *cli.Context) error {
return err return err
} }
fmt.Println("default")
for _, console := range consoles { for _, console := range consoles {
fmt.Println(console) fmt.Println(console)
} }

View File

@ -19,7 +19,7 @@ type projectFactory struct {
func (p *projectFactory) Create(c *cli.Context) (project.APIProject, error) { func (p *projectFactory) Create(c *cli.Context) (project.APIProject, error) {
cfg := config.LoadConfig() cfg := config.LoadConfig()
return compose.GetProject(cfg, true) return compose.GetProject(cfg, true, false)
} }
func beforeApp(c *cli.Context) error { func beforeApp(c *cli.Context) error {

View File

@ -18,13 +18,15 @@ func Main() {
cfg := config.LoadConfig() cfg := config.LoadConfig()
project, err := compose.GetProject(cfg, true) project, err := compose.GetProject(cfg, true, false)
if err != nil { if err != nil {
log.Fatal(err) log.Fatal(err)
} }
if err = compose.LoadService(project, cfg, true, newConsole); err != nil { if newConsole != "default" {
log.Fatal(err) if err = compose.LoadService(project, cfg, true, newConsole); err != nil {
log.Fatal(err)
}
} }
if err = project.Up(context.Background(), options.Up{ if err = project.Up(context.Background(), options.Up{

View File

@ -102,7 +102,7 @@ func startDocker(cfg *config.CloudConfig) (string, types.HijackedResponse, error
log.Infof("Starting Docker in context: %s", storageContext) log.Infof("Starting Docker in context: %s", storageContext)
p, err := compose.GetProject(cfg, true) p, err := compose.GetProject(cfg, true, false)
if err != nil { if err != nil {
return "", types.HijackedResponse{}, err return "", types.HijackedResponse{}, err
} }

View File

@ -56,8 +56,8 @@ func RunServiceSet(name string, cfg *config.CloudConfig, configs map[string]*com
}) })
} }
func GetProject(cfg *config.CloudConfig, networkingAvailable bool) (*project.Project, error) { func GetProject(cfg *config.CloudConfig, networkingAvailable, loadConsole bool) (*project.Project, error) {
return newCoreServiceProject(cfg, networkingAvailable) return newCoreServiceProject(cfg, networkingAvailable, loadConsole)
} }
func newProject(name string, cfg *config.CloudConfig, environmentLookup composeConfig.EnvironmentLookup, authLookup *rosDocker.ConfigAuthLookup) (*project.Project, error) { func newProject(name string, cfg *config.CloudConfig, environmentLookup composeConfig.EnvironmentLookup, authLookup *rosDocker.ConfigAuthLookup) (*project.Project, error) {
@ -184,7 +184,7 @@ func adjustContainerNames(m map[interface{}]interface{}) map[interface{}]interfa
return m return m
} }
func newCoreServiceProject(cfg *config.CloudConfig, useNetwork bool) (*project.Project, error) { func newCoreServiceProject(cfg *config.CloudConfig, useNetwork, loadConsole bool) (*project.Project, error) {
environmentLookup := rosDocker.NewConfigEnvironment(cfg) environmentLookup := rosDocker.NewConfigEnvironment(cfg)
authLookup := rosDocker.NewConfigAuthLookup(cfg) authLookup := rosDocker.NewConfigAuthLookup(cfg)
@ -197,7 +197,7 @@ func newCoreServiceProject(cfg *config.CloudConfig, useNetwork bool) (*project.P
p.AddListener(project.NewDefaultListener(p)) p.AddListener(project.NewDefaultListener(p))
p.AddListener(projectEvents) p.AddListener(projectEvents)
p.ReloadCallback = projectReload(p, &useNetwork, environmentLookup, authLookup) p.ReloadCallback = projectReload(p, &useNetwork, loadConsole, environmentLookup, authLookup)
go func() { go func() {
for event := range projectEvents { for event := range projectEvents {

View File

@ -36,7 +36,7 @@ func LoadService(p *project.Project, cfg *config.CloudConfig, useNetwork bool, s
return nil return nil
} }
func projectReload(p *project.Project, useNetwork *bool, environmentLookup *docker.ConfigEnvironment, authLookup *docker.ConfigAuthLookup) func() error { func projectReload(p *project.Project, useNetwork *bool, loadConsole bool, environmentLookup *docker.ConfigEnvironment, authLookup *docker.ConfigAuthLookup) func() error {
enabled := map[interface{}]interface{}{} enabled := map[interface{}]interface{}{}
return func() error { return func() error {
cfg := config.LoadConfig() cfg := config.LoadConfig()
@ -61,11 +61,12 @@ func projectReload(p *project.Project, useNetwork *bool, environmentLookup *dock
enabled[service] = service enabled[service] = service
} }
if cfg.Rancher.Console != "" { if !loadConsole || cfg.Rancher.Console == "" || cfg.Rancher.Console == "default" {
err := LoadService(p, cfg, *useNetwork, cfg.Rancher.Console) return nil
if err != nil && err != network.ErrNoNetwork { }
log.Error(err)
} if err := LoadService(p, cfg, *useNetwork, cfg.Rancher.Console); err != nil && err != network.ErrNoNetwork {
log.Error(err)
} }
return nil return nil

View File

@ -94,7 +94,7 @@ func SysInit() error {
_, err := config.ChainCfgFuncs(cfg, _, err := config.ChainCfgFuncs(cfg,
loadImages, loadImages,
func(cfg *config.CloudConfig) (*config.CloudConfig, error) { func(cfg *config.CloudConfig) (*config.CloudConfig, error) {
p, err := compose.GetProject(cfg, false) p, err := compose.GetProject(cfg, false, true)
if err != nil { if err != nil {
return cfg, err return cfg, err
} }

View File

@ -62,6 +62,7 @@ rancher:
bootstrap_docker: bootstrap_docker:
args: [daemon, -s, overlay, -b, none, --restart=false, -g, /var/lib/system-docker, args: [daemon, -s, overlay, -b, none, --restart=false, -g, /var/lib/system-docker,
-G, root, -H, 'unix:///var/run/system-docker.sock', --userland-proxy=false] -G, root, -H, 'unix:///var/run/system-docker.sock', --userland-proxy=false]
console: default
cloud_init: cloud_init:
datasources: datasources:
- configdrive:/media/config-2 - configdrive:/media/config-2