Skip to content

Commit 5e66098

Browse files
authored
Merge pull request #64 from kdeng3849/add-endpoints
add endpoints for crud operations & update hardware data model
2 parents aac71dc + bc1a5a9 commit 5e66098

35 files changed

+3982
-498
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ certs/
33
cmd/tink-cli/tink-cli
44
cmd/tink-server/tink-server
55
cmd/tink-worker/tink-worker
6+
.idea
67

78
# Terraform
89
.terraform

Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ cli: ${cli}
1010
worker : ${worker}
1111

1212
${server} ${cli} ${worker}:
13-
CGO_ENABLED=0 go build -o $@ ./$@
13+
CGO_ENABLED=0 GOOS=$$GOOS go build -o $@ ./$@
1414

1515
run: ${binaries}
1616
docker-compose up -d --build db

cmd/tink-cli/cmd/hardware/all.go

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package hardware
22

33
import (
44
"context"
5+
"encoding/json"
56
"fmt"
67
"io"
78
"log"
@@ -24,10 +25,14 @@ var allCmd = &cobra.Command{
2425
var hw *hardware.Hardware
2526
err = nil
2627
for hw, err = alls.Recv(); err == nil && hw != nil; hw, err = alls.Recv() {
27-
fmt.Println(hw.JSON)
28+
b, err := json.Marshal(hw)
29+
if err != nil {
30+
log.Println(err)
31+
}
32+
fmt.Println(string(b))
2833
}
2934
if err != nil && err != io.EOF {
30-
log.Fatal(err)
35+
log.Println(err)
3136
}
3237
},
3338
}

cmd/tink-cli/cmd/hardware/id.go

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ package hardware
44

55
import (
66
"context"
7+
"encoding/json"
78
"fmt"
89
"log"
910

@@ -22,11 +23,15 @@ var idCmd = &cobra.Command{
2223
},
2324
Run: func(cmd *cobra.Command, args []string) {
2425
for _, id := range args {
25-
hw, err := client.HardwareClient.ByID(context.Background(), &hardware.GetRequest{ID: id})
26+
hw, err := client.HardwareClient.ByID(context.Background(), &hardware.GetRequest{Id: id})
2627
if err != nil {
2728
log.Fatal(err)
2829
}
29-
fmt.Println(hw.JSON)
30+
b, err := json.Marshal(hw)
31+
if err != nil {
32+
log.Fatal(err)
33+
}
34+
fmt.Println(string(b))
3035
}
3136
},
3237
}

cmd/tink-cli/cmd/hardware/ingest.go

Lines changed: 0 additions & 32 deletions
This file was deleted.

cmd/tink-cli/cmd/hardware/ip.go

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ package hardware
44

55
import (
66
"context"
7+
"encoding/json"
78
"fmt"
89
"log"
910
"net"
@@ -28,11 +29,15 @@ var ipCmd = &cobra.Command{
2829
},
2930
Run: func(cmd *cobra.Command, args []string) {
3031
for _, ip := range args {
31-
hw, err := client.HardwareClient.ByIP(context.Background(), &hardware.GetRequest{IP: ip})
32+
hw, err := client.HardwareClient.ByIP(context.Background(), &hardware.GetRequest{Ip: ip})
3233
if err != nil {
3334
log.Fatal(err)
3435
}
35-
fmt.Println(hw.JSON)
36+
b, err := json.Marshal(hw)
37+
if err != nil {
38+
log.Fatal(err)
39+
}
40+
fmt.Println(string(b))
3641
}
3742
},
3843
}

cmd/tink-cli/cmd/hardware/mac.go

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ package hardware
44

55
import (
66
"context"
7+
"encoding/json"
78
"fmt"
89
"log"
910
"net"
@@ -28,11 +29,15 @@ var macCmd = &cobra.Command{
2829
},
2930
Run: func(cmd *cobra.Command, args []string) {
3031
for _, mac := range args {
31-
hw, err := client.HardwareClient.ByMAC(context.Background(), &hardware.GetRequest{MAC: mac})
32+
hw, err := client.HardwareClient.ByMAC(context.Background(), &hardware.GetRequest{Mac: mac})
3233
if err != nil {
3334
log.Fatal(err)
3435
}
35-
fmt.Println(hw.JSON)
36+
b, err := json.Marshal(hw)
37+
if err != nil {
38+
log.Fatal(err)
39+
}
40+
fmt.Println(string(b))
3641
}
3742
},
3843
}

cmd/tink-cli/cmd/hardware/push.go

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,13 @@ tink hardware push --file /tmp/data.json`,
5151
} else if s.ID == "" {
5252
log.Fatalf("invalid json, ID is required: %s", data)
5353
}
54-
if _, err := client.HardwareClient.Push(context.Background(), &hardware.PushRequest{Data: data}); err != nil {
54+
55+
hw := hardware.Hardware{}
56+
err := json.Unmarshal([]byte(data), &hw)
57+
if err != nil {
58+
log.Fatal(err)
59+
}
60+
if _, err := client.HardwareClient.Push(context.Background(), &hardware.PushRequest{Data: &hw}); err != nil {
5561
log.Fatal(err)
5662
}
5763
log.Println("Hardware data pushed successfully")

cmd/tink-cli/cmd/hardware/watch.go

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ package hardware
44

55
import (
66
"context"
7+
"encoding/json"
78
"fmt"
89
"io"
910
"log"
@@ -26,7 +27,7 @@ var watchCmd = &cobra.Command{
2627
stdoutLock := sync.Mutex{}
2728
for _, id := range args {
2829
go func(id string) {
29-
stream, err := client.HardwareClient.Watch(context.Background(), &hardware.GetRequest{ID: id})
30+
stream, err := client.HardwareClient.Watch(context.Background(), &hardware.GetRequest{Id: id})
3031
if err != nil {
3132
log.Fatal(err)
3233
}
@@ -35,7 +36,11 @@ var watchCmd = &cobra.Command{
3536
err = nil
3637
for hw, err = stream.Recv(); err == nil && hw != nil; hw, err = stream.Recv() {
3738
stdoutLock.Lock()
38-
fmt.Println(hw.JSON)
39+
b, err := json.Marshal(hw)
40+
if err != nil {
41+
log.Fatal(err)
42+
}
43+
fmt.Println(string(b))
3944
stdoutLock.Unlock()
4045
}
4146
if err != nil && err != io.EOF {

cmd/tink-cli/cmd/template/create.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ cat /tmp/example.tmpl | tink template create -n example`,
5050

5151
data := readAll(reader)
5252
if data != nil {
53-
if err := tryParseTemplate(data); err != nil {
53+
if err := tryParseTemplate(string(data)); err != nil {
5454
log.Println(err)
5555
return
5656
}
@@ -74,16 +74,16 @@ func addFlags() {
7474
createCmd.MarkPersistentFlagRequired(fName)
7575
}
7676

77-
func tryParseTemplate(data []byte) error {
77+
func tryParseTemplate(data string) error {
7878
tmpl := *tt.New("")
79-
if _, err := tmpl.Parse(string(data)); err != nil {
79+
if _, err := tmpl.Parse(data); err != nil {
8080
return err
8181
}
8282
return nil
8383
}
8484

8585
func createTemplate(data []byte) {
86-
req := template.WorkflowTemplate{Name: templateName, Data: data}
86+
req := template.WorkflowTemplate{Name: templateName, Data: string(data)}
8787
res, err := client.TemplateClient.CreateTemplate(context.Background(), &req)
8888
if err != nil {
8989
log.Println(err)

cmd/tink-cli/cmd/template/update.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ func updateTemplate(id string) {
5050
req.Name = templateName
5151
} else if filePath != "" && templateName == "" {
5252
data := readTemplateData()
53-
if data != nil {
53+
if data != "" {
5454
if err := tryParseTemplate(data); err != nil {
5555
log.Println(err)
5656
return
@@ -69,7 +69,7 @@ func updateTemplate(id string) {
6969
fmt.Println("Updated Template: ", id)
7070
}
7171

72-
func readTemplateData() []byte {
72+
func readTemplateData() string {
7373
f, err := os.Open(filePath)
7474
if err != nil {
7575
log.Println(err)
@@ -80,7 +80,7 @@ func readTemplateData() []byte {
8080
if err != nil {
8181
log.Println(err)
8282
}
83-
return data
83+
return string(data)
8484
}
8585

8686
func init() {

db/hardware.go

Lines changed: 23 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -66,13 +66,15 @@ func InsertIntoDB(ctx context.Context, db *sql.DB, data string) error {
6666
func GetByMAC(ctx context.Context, db *sql.DB, mac string) (string, error) {
6767
arg := `
6868
{
69-
"network_ports": [
70-
{
71-
"data": {
72-
"mac": "` + mac + `"
73-
}
74-
}
75-
]
69+
"network": {
70+
"interfaces": [
71+
{
72+
"dhcp": {
73+
"mac": "` + mac + `"
74+
}
75+
}
76+
]
77+
}
7678
}
7779
`
7880
query := `
@@ -94,19 +96,25 @@ func GetByIP(ctx context.Context, db *sql.DB, ip string) (string, error) {
9496
"instance": {
9597
"ip_addresses": [
9698
{
97-
"address": "` + ip + `"
99+
"address": "` + ip + `"
98100
}
99101
]
100102
}
101103
}
102104
`
103105
hardwareOrManagement := `
104106
{
105-
"ip_addresses": [
106-
{
107-
"address": "` + ip + `"
108-
}
109-
]
107+
"network": {
108+
"interfaces": [
109+
{
110+
"dhcp": {
111+
"ip": {
112+
"address": "` + ip + `"
113+
}
114+
}
115+
}
116+
]
117+
}
110118
}
111119
`
112120

@@ -141,7 +149,7 @@ func GetByID(ctx context.Context, db *sql.DB, id string) (string, error) {
141149
}
142150

143151
// GetAll : get data for all machine
144-
func GetAll(db *sql.DB, fn func(string) error) error {
152+
func GetAll(db *sql.DB, fn func([]byte) error) error {
145153
rows, err := db.Query(`
146154
SELECT data
147155
FROM hardware
@@ -163,7 +171,7 @@ func GetAll(db *sql.DB, fn func(string) error) error {
163171
return err
164172
}
165173

166-
err = fn(string(buf))
174+
err = fn(buf)
167175
if err != nil {
168176
return err
169177
}

db/template.go

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ import (
1212
)
1313

1414
// CreateTemplate creates a new workflow template
15-
func CreateTemplate(ctx context.Context, db *sql.DB, name string, data []byte, id uuid.UUID) error {
15+
func CreateTemplate(ctx context.Context, db *sql.DB, name string, data string, id uuid.UUID) error {
1616
tx, err := db.BeginTx(ctx, &sql.TxOptions{Isolation: sql.LevelSerializable})
1717
if err != nil {
1818
return errors.Wrap(err, "BEGIN transaction")
@@ -40,20 +40,21 @@ func CreateTemplate(ctx context.Context, db *sql.DB, name string, data []byte, i
4040
}
4141

4242
// GetTemplate returns a workflow template
43-
func GetTemplate(ctx context.Context, db *sql.DB, id string) ([]byte, error) {
43+
func GetTemplate(ctx context.Context, db *sql.DB, id string) (string, string, error) {
4444
query := `
45-
SELECT data
45+
SELECT name, data
4646
FROM template
4747
WHERE
4848
id = $1
4949
AND
5050
deleted_at IS NULL
5151
`
5252
row := db.QueryRowContext(ctx, query, id)
53-
buf := []byte{}
54-
err := row.Scan(&buf)
53+
name := []byte{}
54+
data := []byte{}
55+
err := row.Scan(&name, &data)
5556
if err == nil {
56-
return buf, nil
57+
return string(name), string(data), nil
5758
}
5859

5960
if err != sql.ErrNoRows {
@@ -63,7 +64,7 @@ func GetTemplate(ctx context.Context, db *sql.DB, id string) ([]byte, error) {
6364
err = nil
6465
}
6566

66-
return []byte{}, nil
67+
return "", "", nil
6768
}
6869

6970
// DeleteTemplate deletes a workflow template
@@ -136,20 +137,20 @@ func ListTemplates(db *sql.DB, fn func(id, n string, in, del *timestamp.Timestam
136137
}
137138

138139
// UpdateTemplate update a given template
139-
func UpdateTemplate(ctx context.Context, db *sql.DB, name string, data []byte, id uuid.UUID) error {
140+
func UpdateTemplate(ctx context.Context, db *sql.DB, name string, data string, id uuid.UUID) error {
140141
tx, err := db.BeginTx(ctx, &sql.TxOptions{Isolation: sql.LevelSerializable})
141142
if err != nil {
142143
return errors.Wrap(err, "BEGIN transaction")
143144
}
144145

145-
if data == nil && name != "" {
146+
if data == "" && name != "" {
146147
_, err = tx.Exec(`
147148
UPDATE template
148149
SET
149150
updated_at = NOW(), name = $2
150151
WHERE
151152
id = $1;`, id, name)
152-
} else if data != nil && name == "" {
153+
} else if data != "" && name == "" {
153154
_, err = tx.Exec(`
154155
UPDATE template
155156
SET

0 commit comments

Comments
 (0)