Skip to content
This repository was archived by the owner on Oct 6, 2024. It is now read-only.

Commit cdd0ff8

Browse files
committed
feat: Add power and usb data source
1 parent 5cd9842 commit cdd0ff8

18 files changed

+500
-8
lines changed

.golangci.yml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,3 +31,8 @@ linters-settings:
3131
allow-trailing-comment: true
3232
lll:
3333
line-length: 128
34+
issues:
35+
exclude-rules:
36+
- path: 'internal/provider'
37+
linters:
38+
- dupl

Taskfile.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -184,6 +184,7 @@ tasks:
184184
go-generate:
185185
desc: Generate GO docs and stuff
186186
cmds:
187+
- go get github.com/hashicorp/terraform-plugin-docs/cmd/tfplugindocs
187188
- go generate ./...
188189

189190
#############################################################################

docs/data-sources/nodeinfo.md

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
---
2+
# generated by https://github.com/hashicorp/terraform-plugin-docs
3+
page_title: "turing-pi-bmc_nodeinfo Data Source - terraform-provider-turing-pi-bmc"
4+
subcategory: ""
5+
description: |-
6+
Turing PI NodeInfo Data Source
7+
---
8+
9+
# turing-pi-bmc_nodeinfo (Data Source)
10+
11+
Turing PI NodeInfo Data Source
12+
13+
14+
15+
<!-- schema generated by tfplugindocs -->
16+
## Schema
17+
18+
### Read-Only
19+
20+
- `id` (String) ID
21+
- `node1` (String) Information for Node 1
22+
- `node2` (String) Information for Node 2
23+
- `node3` (String) Information for Node 3
24+
- `node4` (String) Information for Node 4

docs/data-sources/power.md

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
---
2+
# generated by https://github.com/hashicorp/terraform-plugin-docs
3+
page_title: "turing-pi-bmc_power Data Source - terraform-provider-turing-pi-bmc"
4+
subcategory: ""
5+
description: |-
6+
Turing PI Power Data Source
7+
---
8+
9+
# turing-pi-bmc_power (Data Source)
10+
11+
Turing PI Power Data Source
12+
13+
14+
15+
<!-- schema generated by tfplugindocs -->
16+
## Schema
17+
18+
### Read-Only
19+
20+
- `id` (String) ID
21+
- `node1` (Number) Power state of Node 1
22+
- `node2` (Number) Power state of Node 2
23+
- `node3` (Number) Power state of Node 3
24+
- `node4` (Number) Power state of Node 4

docs/data-sources/usb.md

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
---
2+
# generated by https://github.com/hashicorp/terraform-plugin-docs
3+
page_title: "turing-pi-bmc_usb Data Source - terraform-provider-turing-pi-bmc"
4+
subcategory: ""
5+
description: |-
6+
Turing PI Usb Data Source
7+
---
8+
9+
# turing-pi-bmc_usb (Data Source)
10+
11+
Turing PI Usb Data Source
12+
13+
14+
15+
<!-- schema generated by tfplugindocs -->
16+
## Schema
17+
18+
### Read-Only
19+
20+
- `id` (String) ID
21+
- `mode` (Number) USB mode
22+
- `node` (Number) Node using USB

docs/index.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@ description: |-
1414

1515
```terraform
1616
terraform {
17+
required_version = "~>1.4"
18+
1719
required_providers {
1820
turing-pi-bmc = {
1921
source = "jlec.de/dev/turing-pi-bmc"
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
2+
terraform {
3+
required_version = "~>1.4"
4+
5+
required_providers {
6+
turing-pi-bmc = {
7+
source = "jlec.de/dev/turing-pi-bmc"
8+
version = ">0"
9+
}
10+
}
11+
}
12+
13+
provider "turing-pi-bmc" {
14+
endpoint = "10.100.100.231"
15+
}
16+
17+
data "turing-pi-bmc_power" "example" {
18+
}
19+
20+
output "power" {
21+
value = data.turing-pi-bmc_power.example
22+
}
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
2+
terraform {
3+
required_version = "~>1.4"
4+
5+
required_providers {
6+
turing-pi-bmc = {
7+
source = "jlec.de/dev/turing-pi-bmc"
8+
version = ">0"
9+
}
10+
}
11+
}
12+
13+
provider "turing-pi-bmc" {
14+
endpoint = "10.100.100.231"
15+
}
16+
17+
data "turing-pi-bmc_usb" "example" {
18+
}
19+
20+
output "usb" {
21+
value = data.turing-pi-bmc_usb.example
22+
}

internal/api/model.go

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,3 +20,23 @@ type NodeInfo struct {
2020
type NodeInfoResponse struct {
2121
Response []NodeInfo `json:"response"`
2222
}
23+
24+
type Power struct {
25+
Node1 int64 `json:"node1"`
26+
Node2 int64 `json:"node2"`
27+
Node3 int64 `json:"node3"`
28+
Node4 int64 `json:"node4"`
29+
}
30+
31+
type PowerResponse struct {
32+
Response []Power `json:"response"`
33+
}
34+
35+
type Usb struct {
36+
Mode int64 `json:"mode"`
37+
Node int64 `json:"node"`
38+
}
39+
40+
type UsbResponse struct {
41+
Response []Usb `json:"response"`
42+
}

internal/api/power.go

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
package turingpi
2+
3+
import (
4+
"encoding/json"
5+
"fmt"
6+
"net/http"
7+
)
8+
9+
// GetPower - Returns Turing Pi BMC SD card status.
10+
func (c *Client) GetPower() (Power, error) {
11+
req, err := http.NewRequest(http.MethodGet, fmt.Sprintf("%s?opt=get&type=power", c.ApiURI), nil)
12+
if err != nil {
13+
return Power{}, err
14+
}
15+
16+
body, err := c.doRequest(req)
17+
if err != nil {
18+
return Power{}, err
19+
}
20+
21+
sdCardResponse := PowerResponse{}
22+
err = json.Unmarshal(body, &sdCardResponse)
23+
24+
if err != nil {
25+
return Power{}, err
26+
}
27+
28+
return sdCardResponse.Response[0], nil
29+
}

0 commit comments

Comments
 (0)