in cli/main.go [33:213]
func main() {
app := cli.NewApp()
app.Name = "ozone"
app.Usage = "Ozone command line client"
app.Description = "Native Ozone command line client"
app.Version = fmt.Sprintf("%s (%s, %s)", version, commit, date)
app.Flags = []cli.Flag{
cli.StringFlag{
Name: "om",
Required: true,
Value: "localhost",
Usage: "Host (or host:port) address of the OzoneManager",
},
}
app.Commands = []cli.Command{
{
Name: "volume",
Aliases: []string{"v", "vol"},
Usage: "Ozone volume related operations",
Flags: []cli.Flag{},
Subcommands: []cli.Command{
{
Name: "list",
Aliases: []string{"ls"},
Usage: "List volumes.",
Action: func(c *cli.Context) error {
ozoneClient := api.CreateOzoneClient(c.GlobalString("om"))
volumes, err := ozoneClient.ListVolumes()
if err != nil {
return err
}
for _, volume := range volumes {
println(volume.Name)
}
return nil
},
},
{
Name: "create",
Aliases: []string{"mk"},
Usage: "Create volume.",
Action: func(c *cli.Context) error {
ozoneClient := api.CreateOzoneClient(c.GlobalString("om"))
address := OzoneObjectAddressFromString(c.Args().Get(0))
err := ozoneClient.CreateVolume(*address.Volume)
if err != nil {
return err
}
return nil
},
},
},
},
{
Name: "bucket",
Aliases: []string{"b"},
Usage: "Ozone bucket related operations",
Flags: []cli.Flag{},
Subcommands: []cli.Command{
{
Name: "create",
Aliases: []string{"mk"},
Usage: "Create bucket.",
Action: func(c *cli.Context) error {
ozoneClient := api.CreateOzoneClient(c.GlobalString("om"))
address := OzoneObjectAddressFromString(c.Args().Get(0))
err := ozoneClient.CreateBucket(*address.Volume, *address.Bucket)
if err != nil {
return err
}
return nil
},
},
{
Name: "list",
Aliases: []string{"ls"},
Usage: "List buckets",
Action: func(c *cli.Context) error {
ozoneClient := api.CreateOzoneClient(c.GlobalString("om"))
address := OzoneObjectAddressFromString(c.Args().Get(0))
buckets, err := ozoneClient.ListBucket(*address.Volume)
if err != nil {
return err
}
for _, bucket := range buckets {
println(bucket.Name)
}
return nil
},
},
},
},
{
Name: "key",
Aliases: []string{"k"},
Usage: "Ozone key related operations",
Flags: []cli.Flag{},
Subcommands: []cli.Command{
{
Name: "list",
Aliases: []string{"ls"},
Usage: "List keys.",
Action: func(c *cli.Context) error {
ozoneClient := api.CreateOzoneClient(c.GlobalString("om"))
address := OzoneObjectAddressFromString(c.Args().Get(0))
keys, err := ozoneClient.ListKeys(*address.Volume, *address.Bucket)
if err != nil {
return err
}
out, err := json.MarshalIndent(keys, "", " ")
if err != nil {
return err
}
println(string(out))
return nil
},
},
{
Name: "info",
Aliases: []string{"show"},
Usage: "Show information about one key",
Action: func(c *cli.Context) error {
ozoneClient := api.CreateOzoneClient(c.GlobalString("om"))
address := OzoneObjectAddressFromString(c.Args().Get(0))
key, err := ozoneClient.InfoKey(*address.Volume, *address.Bucket, *address.Key)
if err != nil {
return err
}
out, err := json.MarshalIndent(key, "", " ")
if err != nil {
return err
}
println(string(out))
return nil
},
},
{
Name: "cat",
Aliases: []string{"c"},
Usage: "Show content of a file",
Action: func(c *cli.Context) error {
ozoneClient := api.CreateOzoneClient(c.GlobalString("om"))
address := OzoneObjectAddressFromString(c.Args().Get(0))
_, err := ozoneClient.GetKey(*address.Volume, *address.Bucket, *address.Key, os.Stdout)
if err != nil {
return err
}
return nil
},
},
{
Name: "put",
Aliases: []string{"p"},
Usage: "Put file to Ozone",
Action: func(c *cli.Context) error {
ozoneClient := api.CreateOzoneClient(c.GlobalString("om"))
address := OzoneObjectAddressFromString(c.Args().Get(0))
f, err := os.Open(c.Args().Get(1))
if err != nil {
return err
}
_, err = ozoneClient.PutKey(*address.Volume, *address.Bucket, *address.Key, f)
if err != nil {
return err
}
return nil
},
},
},
},
}
err := app.Run(os.Args)
if err != nil {
panic(err)
}
}