Merge pull request #373 from mikebrow/bundle-dir-310
adding support for --bundle
This commit is contained in:
commit
b28ec60b0e
18
main.go
18
main.go
|
@ -9,9 +9,11 @@ import (
|
|||
)
|
||||
|
||||
const (
|
||||
version = "0.3"
|
||||
usage = `Open Container Initiative runtime
|
||||
|
||||
version = "0.3"
|
||||
specConfig = "config.json"
|
||||
runtimeConfig = "runtime.json"
|
||||
usage = `Open Container Initiative runtime
|
||||
|
||||
runc is a command line client for running applications packaged according to
|
||||
the Open Container Format (OCF) and is a compliant implementation of the
|
||||
Open Container Initiative specification.
|
||||
|
@ -21,14 +23,14 @@ container runtime environment for applications. It can be used with your
|
|||
existing process monitoring tools and the container will be spawned as a
|
||||
direct child of the process supervisor.
|
||||
|
||||
After creating config files for your root filesystem with runc, you can execute a
|
||||
container in your shell by running:
|
||||
After creating config files for your root filesystem with runc, you can execute
|
||||
a container in your shell by running:
|
||||
|
||||
# cd /mycontainer
|
||||
# runc start [ -c spec-config-file ] [ -r runtime-config-file ]
|
||||
# runc start [ -b bundle ]
|
||||
|
||||
If not specified, the default value for the 'spec-config-file' is 'config.json',
|
||||
and the default value for the 'runtime-config-file' is 'runtime.json'.`
|
||||
If not specified, the default value for the 'bundle' is the current directory.
|
||||
'Bundle' is the directory where '` + specConfig + `' and '` + runtimeConfig + `' must be located.`
|
||||
)
|
||||
|
||||
func main() {
|
||||
|
|
19
restore.go
19
restore.go
|
@ -50,14 +50,9 @@ var restoreCommand = cli.Command{
|
|||
Usage: "cgroups mode: 'soft' (default), 'full' and 'strict'.",
|
||||
},
|
||||
cli.StringFlag{
|
||||
Name: "config-file, c",
|
||||
Value: "config.json",
|
||||
Usage: "path to spec file for writing",
|
||||
},
|
||||
cli.StringFlag{
|
||||
Name: "runtime-file, r",
|
||||
Value: "runtime.json",
|
||||
Usage: "path for runtime file for writing",
|
||||
Name: "bundle, b",
|
||||
Value: "",
|
||||
Usage: "path to the root of the bundle directory",
|
||||
},
|
||||
},
|
||||
Action: func(context *cli.Context) {
|
||||
|
@ -65,7 +60,13 @@ var restoreCommand = cli.Command{
|
|||
if imagePath == "" {
|
||||
imagePath = getDefaultImagePath(context)
|
||||
}
|
||||
spec, rspec, err := loadSpec(context.String("config-file"), context.String("runtime-file"))
|
||||
bundle := context.String("bundle")
|
||||
if bundle != "" {
|
||||
if err := os.Chdir(bundle); err != nil {
|
||||
fatal(err)
|
||||
}
|
||||
}
|
||||
spec, rspec, err := loadSpec(specConfig, runtimeConfig)
|
||||
if err != nil {
|
||||
fatal(err)
|
||||
}
|
||||
|
|
31
spec.go
31
spec.go
|
@ -26,14 +26,9 @@ var specCommand = cli.Command{
|
|||
Usage: "create a new specification file",
|
||||
Flags: []cli.Flag{
|
||||
cli.StringFlag{
|
||||
Name: "config-file, c",
|
||||
Value: "config.json",
|
||||
Usage: "path to spec config file for writing",
|
||||
},
|
||||
cli.StringFlag{
|
||||
Name: "runtime-file, r",
|
||||
Value: "runtime.json",
|
||||
Usage: "path to runtime config file for writing",
|
||||
Name: "bundle, b",
|
||||
Value: "",
|
||||
Usage: "path to the root of the bundle directory",
|
||||
},
|
||||
},
|
||||
Action: func(context *cli.Context) {
|
||||
|
@ -247,26 +242,30 @@ var specCommand = cli.Command{
|
|||
}
|
||||
return nil
|
||||
}
|
||||
cName := context.String("config-file")
|
||||
rName := context.String("runtime-file")
|
||||
if err := checkNoFile(cName); err != nil {
|
||||
bundle := context.String("bundle")
|
||||
if bundle != "" {
|
||||
if err := os.Chdir(bundle); err != nil {
|
||||
fatal(err)
|
||||
}
|
||||
}
|
||||
if err := checkNoFile(specConfig); err != nil {
|
||||
logrus.Fatal(err)
|
||||
}
|
||||
if err := checkNoFile(rName); err != nil {
|
||||
if err := checkNoFile(runtimeConfig); err != nil {
|
||||
logrus.Fatal(err)
|
||||
}
|
||||
data, err := json.MarshalIndent(&spec, "", "\t")
|
||||
if err != nil {
|
||||
logrus.Fatal(err)
|
||||
}
|
||||
if err := ioutil.WriteFile(cName, data, 0666); err != nil {
|
||||
if err := ioutil.WriteFile(specConfig, data, 0666); err != nil {
|
||||
logrus.Fatal(err)
|
||||
}
|
||||
rdata, err := json.MarshalIndent(&rspec, "", "\t")
|
||||
if err != nil {
|
||||
logrus.Fatal(err)
|
||||
}
|
||||
if err := ioutil.WriteFile(rName, rdata, 0666); err != nil {
|
||||
if err := ioutil.WriteFile(runtimeConfig, rdata, 0666); err != nil {
|
||||
logrus.Fatal(err)
|
||||
}
|
||||
},
|
||||
|
@ -297,7 +296,7 @@ func loadSpec(cPath, rPath string) (spec *specs.LinuxSpec, rspec *specs.LinuxRun
|
|||
cf, err := os.Open(cPath)
|
||||
if err != nil {
|
||||
if os.IsNotExist(err) {
|
||||
return nil, nil, fmt.Errorf("JSON specification file at %s not found", cPath)
|
||||
return nil, nil, fmt.Errorf("JSON specification file %s not found", cPath)
|
||||
}
|
||||
return spec, rspec, err
|
||||
}
|
||||
|
@ -306,7 +305,7 @@ func loadSpec(cPath, rPath string) (spec *specs.LinuxSpec, rspec *specs.LinuxRun
|
|||
rf, err := os.Open(rPath)
|
||||
if err != nil {
|
||||
if os.IsNotExist(err) {
|
||||
return nil, nil, fmt.Errorf("JSON runtime config file at %s not found", rPath)
|
||||
return nil, nil, fmt.Errorf("JSON runtime config file %s not found", rPath)
|
||||
}
|
||||
return spec, rspec, err
|
||||
}
|
||||
|
|
19
start.go
19
start.go
|
@ -22,18 +22,19 @@ var startCommand = cli.Command{
|
|||
Usage: "create and run a container",
|
||||
Flags: []cli.Flag{
|
||||
cli.StringFlag{
|
||||
Name: "config-file, c",
|
||||
Value: "config.json",
|
||||
Usage: "path to spec config file",
|
||||
},
|
||||
cli.StringFlag{
|
||||
Name: "runtime-file, r",
|
||||
Value: "runtime.json",
|
||||
Usage: "path to runtime config file",
|
||||
Name: "bundle, b",
|
||||
Value: "",
|
||||
Usage: "path to the root of the bundle directory",
|
||||
},
|
||||
},
|
||||
Action: func(context *cli.Context) {
|
||||
spec, rspec, err := loadSpec(context.String("config-file"), context.String("runtime-file"))
|
||||
bundle := context.String("bundle")
|
||||
if bundle != "" {
|
||||
if err := os.Chdir(bundle); err != nil {
|
||||
fatal(err)
|
||||
}
|
||||
}
|
||||
spec, rspec, err := loadSpec(specConfig, runtimeConfig)
|
||||
if err != nil {
|
||||
fatal(err)
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue