11package block
22
33import (
4+ "sort"
45 "strconv"
56
67 "github.com/spf13/cobra"
@@ -16,6 +17,7 @@ type ReplicaPartnersCommand struct {
1617 * metadata.SoftlayerStorageCommand
1718 Command * cobra.Command
1819 StorageManager managers.StorageManager
20+ Sortby string
1921}
2022
2123func NewReplicaPartnersCommand (sl * metadata.SoftlayerStorageCommand ) * ReplicaPartnersCommand {
@@ -37,6 +39,7 @@ EXAMPLE:
3739 },
3840 }
3941
42+ cobraCmd .Flags ().StringVar (& thisCmd .Sortby , "sortby" , "username" , T ("Column to sort by. Options are: id, username, accountId, capacityGb, hardwareId, guestId, hostId" ))
4043 thisCmd .Command = cobraCmd
4144 return thisCmd
4245}
@@ -47,6 +50,8 @@ func (cmd *ReplicaPartnersCommand) Run(args []string) error {
4750 if err != nil {
4851 return slErr .NewInvalidSoftlayerIdInputError ("Volume ID" )
4952 }
53+ sortby := cmd .Sortby
54+
5055 outputFormat := cmd .GetOutputFlag ()
5156
5257 partners , err := cmd .StorageManager .GetReplicationPartners (volumeID )
@@ -55,14 +60,32 @@ func (cmd *ReplicaPartnersCommand) Run(args []string) error {
5560 return slErr .NewAPIError (T ("Failed to get replication partners for volume {{.VolumeID}}.\n " , subs ), err .Error (), 2 )
5661 }
5762
63+ if sortby == "id" {
64+ sort .Sort (utils .VolumeById (partners ))
65+ } else if sortby == "username" {
66+ sort .Sort (utils .VolumeByUsername (partners ))
67+ } else if sortby == "accountId" {
68+ sort .Sort (utils .VolumeByAccountId (partners ))
69+ } else if sortby == "capacityGb" {
70+ sort .Sort (utils .VolumeByCapacity (partners ))
71+ } else if sortby == "hardwareId" {
72+ sort .Sort (utils .VolumeByHardwareById (partners ))
73+ } else if sortby == "guestId" {
74+ sort .Sort (utils .VolumeByGuestId (partners ))
75+ } else if sortby == "hostId" {
76+ sort .Sort (utils .VolumeByHostId (partners ))
77+ } else {
78+ return slErr .NewInvalidUsageError (T ("--sortby '{{.Column}}' is not supported." , map [string ]interface {}{"Column" : sortby }))
79+ }
80+
5881 if outputFormat == "JSON" {
5982 return utils .PrintPrettyJSON (cmd .UI , partners )
6083 }
6184
6285 if len (partners ) == 0 {
6386 cmd .UI .Print (T ("There are no replication partners for volume {{.VolumeID}}.\n " , subs ))
6487 } else {
65- table := cmd .UI .Table ([]string {T ("ID " ), T ("User name " ), T ("Account ID " ), T ("Capacity (GB) " ), T ("Hardware ID " ), T ("Guest ID " ), T ("Host ID " )})
88+ table := cmd .UI .Table ([]string {T ("id " ), T ("username " ), T ("accountId " ), T ("capacityGb " ), T ("hardwareId " ), T ("guestId " ), T ("hostId " )})
6689 for _ , p := range partners {
6790 table .Add (
6891 utils .FormatIntPointer (p .Id ),
0 commit comments