containers-storage: support layer bigdata
Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
This commit is contained in:
parent
13260d4bc2
commit
9cefbaec5f
|
|
@ -3,12 +3,85 @@ package main
|
|||
import (
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"io"
|
||||
"os"
|
||||
|
||||
"github.com/containers/storage"
|
||||
"github.com/containers/storage/pkg/mflag"
|
||||
)
|
||||
|
||||
var (
|
||||
paramLayerDataFile = ""
|
||||
)
|
||||
|
||||
func listLayerBigData(flags *mflag.FlagSet, action string, m storage.Store, args []string) int {
|
||||
layer, err := m.Layer(args[0])
|
||||
if err != nil {
|
||||
fmt.Fprintf(os.Stderr, "%+v\n", err)
|
||||
return 1
|
||||
}
|
||||
d, err := m.ListLayerBigData(layer.ID)
|
||||
if jsonOutput {
|
||||
json.NewEncoder(os.Stdout).Encode(d)
|
||||
} else {
|
||||
for _, name := range d {
|
||||
fmt.Printf("%s\n", name)
|
||||
}
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
func getLayerBigData(flags *mflag.FlagSet, action string, m storage.Store, args []string) int {
|
||||
layer, err := m.Layer(args[0])
|
||||
if err != nil {
|
||||
fmt.Fprintf(os.Stderr, "%+v\n", err)
|
||||
return 1
|
||||
}
|
||||
output := os.Stdout
|
||||
if paramLayerDataFile != "" {
|
||||
f, err := os.Create(paramLayerDataFile)
|
||||
if err != nil {
|
||||
fmt.Fprintf(os.Stderr, "%v\n", err)
|
||||
return 1
|
||||
}
|
||||
output = f
|
||||
}
|
||||
b, err := m.LayerBigData(layer.ID, args[1])
|
||||
if err != nil {
|
||||
fmt.Fprintf(os.Stderr, "%+v\n", err)
|
||||
return 1
|
||||
}
|
||||
if _, err := io.Copy(output, b); err != nil {
|
||||
fmt.Fprintf(os.Stderr, "%+v\n", err)
|
||||
return 1
|
||||
}
|
||||
output.Close()
|
||||
return 0
|
||||
}
|
||||
|
||||
func setLayerBigData(flags *mflag.FlagSet, action string, m storage.Store, args []string) int {
|
||||
layer, err := m.Layer(args[0])
|
||||
if err != nil {
|
||||
fmt.Fprintf(os.Stderr, "%+v\n", err)
|
||||
return 1
|
||||
}
|
||||
input := os.Stdin
|
||||
if paramLayerDataFile != "" {
|
||||
f, err := os.Open(paramLayerDataFile)
|
||||
if err != nil {
|
||||
fmt.Fprintf(os.Stderr, "%v\n", err)
|
||||
return 1
|
||||
}
|
||||
input = f
|
||||
}
|
||||
err = m.SetLayerBigData(layer.ID, args[1], input)
|
||||
if err != nil {
|
||||
fmt.Fprintf(os.Stderr, "%+v\n", err)
|
||||
return 1
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
func layer(flags *mflag.FlagSet, action string, m storage.Store, args []string) int {
|
||||
matched := []*storage.Layer{}
|
||||
for _, arg := range args {
|
||||
|
|
@ -106,5 +179,36 @@ func init() {
|
|||
flags.BoolVar(&jsonOutput, []string{"-json", "j"}, jsonOutput, "Prefer JSON output")
|
||||
},
|
||||
},
|
||||
command{
|
||||
names: []string{"list-layer-data", "listlayerdata"},
|
||||
optionsHelp: "[options [...]] layerNameOrID",
|
||||
usage: "List data items that are attached to a layer",
|
||||
action: listLayerBigData,
|
||||
minArgs: 1,
|
||||
maxArgs: 1,
|
||||
addFlags: func(flags *mflag.FlagSet, cmd *command) {
|
||||
flags.BoolVar(&jsonOutput, []string{"-json", "j"}, jsonOutput, "Prefer JSON output")
|
||||
},
|
||||
},
|
||||
command{
|
||||
names: []string{"get-layer-data", "getlayerdata"},
|
||||
optionsHelp: "[options [...]] layerID dataName",
|
||||
usage: "Get data that is attached to a layer",
|
||||
action: getLayerBigData,
|
||||
minArgs: 2,
|
||||
addFlags: func(flags *mflag.FlagSet, cmd *command) {
|
||||
flags.StringVar(¶mLayerDataFile, []string{"-file", "f"}, paramLayerDataFile, "Write data to file")
|
||||
},
|
||||
},
|
||||
command{
|
||||
names: []string{"set-layer-data", "setlayerdata"},
|
||||
optionsHelp: "[options [...]] layerID dataName",
|
||||
usage: "Set data that is attached to a layer",
|
||||
action: setLayerBigData,
|
||||
minArgs: 2,
|
||||
addFlags: func(flags *mflag.FlagSet, cmd *command) {
|
||||
flags.StringVar(¶mLayerDataFile, []string{"-file", "f"}, paramLayerDataFile, "Read data from file")
|
||||
},
|
||||
},
|
||||
)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,21 @@
|
|||
## containers-storage-get-layer-data 1 "December 2020"
|
||||
|
||||
## NAME
|
||||
containers-storage get-layer-data - Retrieve lookaside data for a layer
|
||||
|
||||
## SYNOPSIS
|
||||
**containers-storage** **get-layer-data** [*options* [...]] *layerID* *dataName*
|
||||
|
||||
## DESCRIPTION
|
||||
Retrieves a piece of named data which is associated with a layer.
|
||||
|
||||
## OPTIONS
|
||||
**-f | --file** *file*
|
||||
|
||||
Write the data to a file instead of stdout.
|
||||
|
||||
## EXAMPLE
|
||||
**containers-storage get-layer-data -f config.json 2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824 configuration**
|
||||
|
||||
## SEE ALSO
|
||||
containers-storage-set-layer-data(1)
|
||||
|
|
@ -0,0 +1,18 @@
|
|||
## containers-storage-list-layer-data 1 "December 2020"
|
||||
|
||||
## NAME
|
||||
containers-storage list-layer-data - List lookaside data for an layer
|
||||
|
||||
## SYNOPSIS
|
||||
**containers-storage** **list-layer-data** *layerID*
|
||||
|
||||
## DESCRIPTION
|
||||
List the pieces of named data which are associated with an layer.
|
||||
|
||||
## EXAMPLE
|
||||
**containers-storage list-layer-data 2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824**
|
||||
|
||||
## SEE ALSO
|
||||
containers-storage-get-layer-data(1)
|
||||
containers-storage-get-layer-data-digest(1)
|
||||
containers-storage-set-layer-data(1)
|
||||
|
|
@ -0,0 +1,21 @@
|
|||
## containers-storage-set-layer-data 1 "December 2020"
|
||||
|
||||
## NAME
|
||||
containers-storage set-layer-data - Set lookaside data for a layer
|
||||
|
||||
## SYNOPSIS
|
||||
**containers-storage** **set-layer-data** [*options* [...]] *layerID* *dataName*
|
||||
|
||||
## DESCRIPTION
|
||||
Sets a piece of named data which is associated with a layer.
|
||||
|
||||
## OPTIONS
|
||||
**-f | --file** *filename*
|
||||
|
||||
Read the data contents from a file instead of stdin.
|
||||
|
||||
## EXAMPLE
|
||||
**containers-storage set-layer-data -f ./config.json 2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824 configuration**
|
||||
|
||||
## SEE ALSO
|
||||
containers-storage-get-layer-data(1)
|
||||
Loading…
Reference in New Issue