mirror of https://github.com/docker/docs.git
79 lines
2.4 KiB
Go
79 lines
2.4 KiB
Go
package host
|
|
|
|
import (
|
|
"path/filepath"
|
|
|
|
"github.com/docker/machine/libmachine/auth"
|
|
"github.com/docker/machine/libmachine/drivers"
|
|
"github.com/docker/machine/libmachine/engine"
|
|
"github.com/docker/machine/libmachine/swarm"
|
|
)
|
|
|
|
type AuthOptionsV1 struct {
|
|
StorePath string
|
|
CaCertPath string
|
|
CaCertRemotePath string
|
|
ServerCertPath string
|
|
ServerKeyPath string
|
|
ClientKeyPath string
|
|
ServerCertRemotePath string
|
|
ServerKeyRemotePath string
|
|
PrivateKeyPath string
|
|
ClientCertPath string
|
|
}
|
|
|
|
type OptionsV1 struct {
|
|
Driver string
|
|
Memory int
|
|
Disk int
|
|
EngineOptions *engine.Options
|
|
SwarmOptions *swarm.Options
|
|
AuthOptions *AuthOptionsV1
|
|
}
|
|
|
|
type V1 struct {
|
|
ConfigVersion int
|
|
Driver drivers.Driver
|
|
DriverName string
|
|
HostOptions *OptionsV1
|
|
Name string `json:"-"`
|
|
StorePath string
|
|
}
|
|
|
|
func MigrateHostV1ToHostV2(hostV1 *V1) *V2 {
|
|
// Changed: Put StorePath directly in AuthOptions (for provisioning),
|
|
// and AuthOptions.PrivateKeyPath => AuthOptions.CaPrivateKeyPath
|
|
// Also, CertDir has been added.
|
|
|
|
globalStorePath := filepath.Dir(filepath.Dir(hostV1.StorePath))
|
|
|
|
h := &V2{
|
|
ConfigVersion: hostV1.ConfigVersion,
|
|
Driver: hostV1.Driver,
|
|
Name: hostV1.Driver.GetMachineName(),
|
|
DriverName: hostV1.DriverName,
|
|
HostOptions: &Options{
|
|
Driver: hostV1.HostOptions.Driver,
|
|
Memory: hostV1.HostOptions.Memory,
|
|
Disk: hostV1.HostOptions.Disk,
|
|
EngineOptions: hostV1.HostOptions.EngineOptions,
|
|
SwarmOptions: hostV1.HostOptions.SwarmOptions,
|
|
AuthOptions: &auth.Options{
|
|
CertDir: filepath.Join(globalStorePath, "certs"),
|
|
CaCertPath: hostV1.HostOptions.AuthOptions.CaCertPath,
|
|
CaPrivateKeyPath: hostV1.HostOptions.AuthOptions.PrivateKeyPath,
|
|
CaCertRemotePath: hostV1.HostOptions.AuthOptions.CaCertRemotePath,
|
|
ServerCertPath: hostV1.HostOptions.AuthOptions.ServerCertPath,
|
|
ServerKeyPath: hostV1.HostOptions.AuthOptions.ServerKeyPath,
|
|
ClientKeyPath: hostV1.HostOptions.AuthOptions.ClientKeyPath,
|
|
ServerCertRemotePath: hostV1.HostOptions.AuthOptions.ServerCertRemotePath,
|
|
ServerKeyRemotePath: hostV1.HostOptions.AuthOptions.ServerKeyRemotePath,
|
|
ClientCertPath: hostV1.HostOptions.AuthOptions.ClientCertPath,
|
|
StorePath: globalStorePath,
|
|
},
|
|
},
|
|
}
|
|
|
|
return h
|
|
}
|