Skip to content

Commit

Permalink
Add usage command for database (#378)
Browse files Browse the repository at this point in the history
  • Loading branch information
christhemorse committed Nov 28, 2023
1 parent 0147b7d commit be210b7
Show file tree
Hide file tree
Showing 2 changed files with 52 additions and 0 deletions.
30 changes: 30 additions & 0 deletions cmd/database.go
Original file line number Diff line number Diff line change
Expand Up @@ -155,6 +155,15 @@ func Database() *cobra.Command { //nolint:funlen
databaseDBCreate.Flags().StringP("name", "n", "", "name of the new logical database within the manaaged database")
databaseCmd.AddCommand(dbCmd)

// Database usage info
usageCmd := &cobra.Command{
Use: "usage",
Short: "commands to display managed database usage information",
Long: ``,
}
usageCmd.AddCommand(databaseUsageInfo)
databaseCmd.AddCommand(usageCmd)

// Database maintenance update commands
maintenanceCmd := &cobra.Command{
Use: "maintenance",
Expand Down Expand Up @@ -805,6 +814,27 @@ var databaseDBDelete = &cobra.Command{
},
}

var databaseUsageInfo = &cobra.Command{
Use: "get <databaseID>",
Short: "Retrieve the current disk, memory, and CPU usage for a managed database",
Long: "",
Args: func(cmd *cobra.Command, args []string) error {
if len(args) < 1 {
return errors.New("please provide a databaseID")
}
return nil
},
Run: func(cmd *cobra.Command, args []string) {
databaseUsage, _, err := client.Database.GetUsage(context.TODO(), args[0])
if err != nil {
fmt.Printf("error retrieving usage information : %v\n", err)
os.Exit(1)
}

printer.DatabaseUsageInfo(databaseUsage)
},
}

var databaseMaintenanceUpdatesList = &cobra.Command{
Use: "list <databaseID>",
Short: "list all available maintenance updates for a managed database",
Expand Down
22 changes: 22 additions & 0 deletions cmd/printer/database.go
Original file line number Diff line number Diff line change
Expand Up @@ -409,6 +409,28 @@ func Database(database *govultr.Database) { //nolint: funlen,gocyclo
}
}

// DatabaseUsageInfo will generate a printer display of disk, memory, and CPU usage for a Managed Database
func DatabaseUsageInfo(databaseUsage *govultr.DatabaseUsage) {
defer flush()

display(columns{"DISK USAGE"})
display(columns{"CURRENT (GB)", databaseUsage.Disk.CurrentGB})
display(columns{"MAXIMUM (GB)", databaseUsage.Disk.MaxGB})
display(columns{"PERCENTAGE", databaseUsage.Disk.Percentage})

display(columns{" "})

display(columns{"MEMORY USAGE"})
display(columns{"CURRENT (MB)", databaseUsage.Memory.CurrentMB})
display(columns{"MAXIMUM (MB)", databaseUsage.Memory.MaxMB})
display(columns{"PERCENTAGE", databaseUsage.Memory.Percentage})

display(columns{" "})

display(columns{"CPU USAGE"})
display(columns{"PERCENTAGE", databaseUsage.CPU.Percentage})
}

// DatabaseUserList will generate a printer display of users within a Managed Database
func DatabaseUserList(databaseUsers []govultr.DatabaseUser, meta *govultr.Meta) {
defer flush()
Expand Down

0 comments on commit be210b7

Please sign in to comment.