forked from TrueCloudLab/frostfs-node
[#95] Support --json
flag in container.get command
Signed-off-by: Alex Vanin <alexey@nspcc.ru>
This commit is contained in:
parent
e40dc0412d
commit
c28641d290
1 changed files with 32 additions and 7 deletions
|
@ -299,12 +299,24 @@ var getContainerInfoCmd = &cobra.Command{
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
prettyPrintContainer(cnr)
|
prettyPrintContainer(cnr, containerJSON)
|
||||||
|
|
||||||
if containerPathTo != "" {
|
if containerPathTo != "" {
|
||||||
data, err := cnr.ToV2().StableMarshal(nil)
|
var (
|
||||||
if err != nil {
|
data []byte
|
||||||
return errors.New("can't marshal container")
|
err error
|
||||||
|
)
|
||||||
|
|
||||||
|
if containerJSON {
|
||||||
|
data = v2container.ContainerToJSON(cnr.ToV2())
|
||||||
|
if len(data) == 0 {
|
||||||
|
return errors.New("can't JSON encode container")
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
data, err = cnr.ToV2().StableMarshal(nil)
|
||||||
|
if err != nil {
|
||||||
|
return errors.New("can't binary encode container")
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
err = ioutil.WriteFile(containerPathTo, data, 0644)
|
err = ioutil.WriteFile(containerPathTo, data, 0644)
|
||||||
|
@ -475,8 +487,9 @@ func init() {
|
||||||
|
|
||||||
// container get
|
// container get
|
||||||
getContainerInfoCmd.Flags().StringVar(&containerID, "cid", "", "container ID")
|
getContainerInfoCmd.Flags().StringVar(&containerID, "cid", "", "container ID")
|
||||||
getContainerInfoCmd.Flags().StringVar(&containerPathTo, "to", "", "path to dump binary encoded container")
|
getContainerInfoCmd.Flags().StringVar(&containerPathTo, "to", "", "path to dump encoded container")
|
||||||
getContainerInfoCmd.Flags().StringVar(&containerPathFrom, "from", "", "path to file with binary encoded container")
|
getContainerInfoCmd.Flags().StringVar(&containerPathFrom, "from", "", "path to file with encoded container")
|
||||||
|
getContainerInfoCmd.Flags().BoolVar(&containerJSON, "json", false, "print or dump container in JSON format")
|
||||||
|
|
||||||
// container get-eacl
|
// container get-eacl
|
||||||
getExtendedACLCmd.Flags().StringVar(&containerID, "cid", "", "container ID")
|
getExtendedACLCmd.Flags().StringVar(&containerID, "cid", "", "container ID")
|
||||||
|
@ -588,11 +601,23 @@ func parseContainerID(cid string) (*container.ID, error) {
|
||||||
return id, nil
|
return id, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func prettyPrintContainer(cnr *container.Container) {
|
func prettyPrintContainer(cnr *container.Container, jsonEncoding bool) {
|
||||||
if cnr == nil {
|
if cnr == nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if jsonEncoding {
|
||||||
|
data := v2container.ContainerToJSON(cnr.ToV2())
|
||||||
|
buf := new(bytes.Buffer)
|
||||||
|
if err := json.Indent(buf, data, "", " "); err != nil {
|
||||||
|
printVerbose("Can't pretty print json: %w", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
fmt.Println(buf)
|
||||||
|
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
id := container.CalculateID(cnr)
|
id := container.CalculateID(cnr)
|
||||||
fmt.Println("container ID:", id)
|
fmt.Println("container ID:", id)
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue