Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
🎲🎲🎲 EXIT CODE: 0 🎲🎲🎲
🟥🟥🟥 STDERR️️ 🟥🟥🟥️
Get the ping status of the server associated with the ID.

USAGE:
scw baremetal server get-metrics [arg=value ...]

ARGS:
server-id Server ID to get the metrics
[zone=fr-par-1] Zone to target. If none is passed will use default zone from the config (fr-par-1 | fr-par-2 | nl-ams-1)

FLAGS:
-h, --help help for get-metrics

GLOBAL FLAGS:
-c, --config string The path to the config file
-D, --debug Enable debug mode
-o, --output string Output format: json or human, see 'scw help output' for more info (default "human")
-p, --profile string The config profile to use
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
🎲🎲🎲 EXIT CODE: 0 🎲🎲🎲
🟥🟥🟥 STDERR️️ 🟥🟥🟥️
List event (i.e. start/stop/reboot) associated to the server ID.

USAGE:
scw baremetal server list-events [arg=value ...]

ARGS:
server-id ID of the server events searched
[order-by] Order of the server events (created_at_asc | created_at_desc)
[zone=fr-par-1] Zone to target. If none is passed will use default zone from the config (fr-par-1 | fr-par-2 | nl-ams-1 | all)

FLAGS:
-h, --help help for list-events

GLOBAL FLAGS:
-c, --config string The path to the config file
-D, --debug Enable debug mode
-o, --output string Output format: json or human, see 'scw help output' for more info (default "human")
-p, --profile string The config profile to use
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,10 @@ AVAILABLE COMMANDS:
create Create an Elastic Metal server
delete Delete an Elastic Metal server
get Get a specific Elastic Metal server
get-metrics Return server metrics
install Install an Elastic Metal server
list List Elastic Metal servers for an organization
list-events List server events
reboot Reboot an Elastic Metal server
start Start an Elastic Metal server
stop Stop an Elastic Metal server
Expand Down
43 changes: 43 additions & 0 deletions docs/commands/baremetal.md
Original file line number Diff line number Diff line change
Expand Up @@ -26,8 +26,10 @@ Elastic Metal API.
- [Create an Elastic Metal server](#create-an-elastic-metal-server)
- [Delete an Elastic Metal server](#delete-an-elastic-metal-server)
- [Get a specific Elastic Metal server](#get-a-specific-elastic-metal-server)
- [Return server metrics](#return-server-metrics)
- [Install an Elastic Metal server](#install-an-elastic-metal-server)
- [List Elastic Metal servers for an organization](#list-elastic-metal-servers-for-an-organization)
- [List server events](#list-server-events)
- [Reboot an Elastic Metal server](#reboot-an-elastic-metal-server)
- [Start an Elastic Metal server](#start-an-elastic-metal-server)
- [Stop an Elastic Metal server](#stop-an-elastic-metal-server)
Expand Down Expand Up @@ -582,6 +584,26 @@ scw baremetal server get 11111111-1111-1111-1111-111111111111



### Return server metrics

Get the ping status of the server associated with the ID.

**Usage:**

```
scw baremetal server get-metrics [arg=value ...]
```


**Args:**

| Name | | Description |
|------|---|-------------|
| server-id | Required | Server ID to get the metrics |
| zone | Default: `fr-par-1`<br />One of: `fr-par-1`, `fr-par-2`, `nl-ams-1` | Zone to target. If none is passed will use default zone from the config |



### Install an Elastic Metal server

Install an Operating System (OS) on the Elastic Metal server with a specific ID.
Expand Down Expand Up @@ -656,6 +678,27 @@ scw baremetal server list



### List server events

List event (i.e. start/stop/reboot) associated to the server ID.

**Usage:**

```
scw baremetal server list-events [arg=value ...]
```


**Args:**

| Name | | Description |
|------|---|-------------|
| server-id | Required | ID of the server events searched |
| order-by | One of: `created_at_asc`, `created_at_desc` | Order of the server events |
| zone | Default: `fr-par-1`<br />One of: `fr-par-1`, `fr-par-2`, `nl-ams-1`, `all` | Zone to target. If none is passed will use default zone from the config |



### Reboot an Elastic Metal server

Reboot the Elastic Metal server associated with the ID, use the `boot_type` `rescue` to reboot the server in rescue mode.
Expand Down
79 changes: 79 additions & 0 deletions internal/namespaces/baremetal/v1/baremetal_cli.go
Original file line number Diff line number Diff line change
Expand Up @@ -32,10 +32,12 @@ func GetGeneratedCommands() *core.Commands {
baremetalServerCreate(),
baremetalServerUpdate(),
baremetalServerInstall(),
baremetalServerGetMetrics(),
baremetalServerDelete(),
baremetalServerReboot(),
baremetalServerStart(),
baremetalServerStop(),
baremetalServerListEvents(),
baremetalBmcStart(),
baremetalBmcGet(),
baremetalBmcStop(),
Expand Down Expand Up @@ -532,6 +534,36 @@ func baremetalServerInstall() *core.Command {
}
}

func baremetalServerGetMetrics() *core.Command {
return &core.Command{
Short: `Return server metrics`,
Long: `Get the ping status of the server associated with the ID.`,
Namespace: "baremetal",
Resource: "server",
Verb: "get-metrics",
// Deprecated: false,
ArgsType: reflect.TypeOf(baremetal.GetServerMetricsRequest{}),
ArgSpecs: core.ArgSpecs{
{
Name: "server-id",
Short: `Server ID to get the metrics`,
Required: true,
Deprecated: false,
Positional: false,
},
core.ZoneArgSpec(scw.ZoneFrPar1, scw.ZoneFrPar2, scw.ZoneNlAms1),
},
Run: func(ctx context.Context, args interface{}) (i interface{}, e error) {
request := args.(*baremetal.GetServerMetricsRequest)

client := core.ExtractClient(ctx)
api := baremetal.NewAPI(client)
return api.GetServerMetrics(request)

},
}
}

func baremetalServerDelete() *core.Command {
return &core.Command{
Short: `Delete an Elastic Metal server`,
Expand Down Expand Up @@ -700,6 +732,53 @@ func baremetalServerStop() *core.Command {
}
}

func baremetalServerListEvents() *core.Command {
return &core.Command{
Short: `List server events`,
Long: `List event (i.e. start/stop/reboot) associated to the server ID.`,
Namespace: "baremetal",
Resource: "server",
Verb: "list-events",
// Deprecated: false,
ArgsType: reflect.TypeOf(baremetal.ListServerEventsRequest{}),
ArgSpecs: core.ArgSpecs{
{
Name: "server-id",
Short: `ID of the server events searched`,
Required: true,
Deprecated: false,
Positional: false,
},
{
Name: "order-by",
Short: `Order of the server events`,
Required: false,
Deprecated: false,
Positional: false,
EnumValues: []string{"created_at_asc", "created_at_desc"},
},
core.ZoneArgSpec(scw.ZoneFrPar1, scw.ZoneFrPar2, scw.ZoneNlAms1, scw.Zone(core.AllLocalities)),
},
Run: func(ctx context.Context, args interface{}) (i interface{}, e error) {
request := args.(*baremetal.ListServerEventsRequest)

client := core.ExtractClient(ctx)
api := baremetal.NewAPI(client)
opts := []scw.RequestOption{scw.WithAllPages()}
if request.Zone == scw.Zone(core.AllLocalities) {
opts = append(opts, scw.WithZones(api.Zones()...))
request.Zone = ""
}
resp, err := api.ListServerEvents(request, opts...)
if err != nil {
return nil, err
}
return resp.Events, nil

},
}
}

func baremetalBmcStart() *core.Command {
return &core.Command{
Short: `Start BMC access`,
Expand Down