Skip to content

Commit 1567ed2

Browse files
committed
fix handling interfaces
1 parent c0a3f9e commit 1567ed2

File tree

2 files changed

+97
-40
lines changed

2 files changed

+97
-40
lines changed

go.work.sum

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@ github.com/PuerkitoBio/purell v1.1.1/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbt
22
github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE=
33
github.com/btcsuite/btcd v0.22.0-beta/go.mod h1:9n5ntfhhHQBIhUvlhDvD3Qg6fRUj4jkN0VB8L8svzOA=
44
github.com/chenzhuoyu/base64x v0.0.0-20221115062448-fe3a3abad311/go.mod h1:b583jCggY9gE99b6G5LEC39OIiVsWj+R97kbl5odCEk=
5+
github.com/chenzhuoyu/base64x v0.0.0-20230717121745-296ad89f973d/go.mod h1:8EPpVsBuRksnlj1mLy4AWzRNQYxauNi62uWcE3to6eA=
6+
github.com/chenzhuoyu/iasm v0.9.0/go.mod h1:Xjy2NpN3h7aUqeqM+woSuuvxmIe6+DDsiNLIrkAmYog=
57
github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU=
68
github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk=
79
github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=
@@ -12,8 +14,8 @@ github.com/vedhavyas/go-subkey v1.0.3 h1:iKR33BB/akKmcR2PMlXPBeeODjWLM90EL98OrOG
1214
github.com/vedhavyas/go-subkey v1.0.3/go.mod h1:CloUaFQSSTdWnINfBRFjVMkWXZANW+nd8+TI5jYcl6Y=
1315
golang.org/x/crypto v0.28.0 h1:GBDwsMXVQi34v5CCYUm2jkJvu4cbtru2U4TN2PSyQnw=
1416
golang.org/x/telemetry v0.0.0-20240521205824-bda55230c457/go.mod h1:pRgIJT+bRLFKnoM1ldnzKoxTIn14Yxz928LQRYYgIN0=
17+
golang.org/x/term v0.17.0/go.mod h1:lLRBjIVuehSbZlaOtGMbcMncT+aqLLLmKrsjNrUguwk=
1518
golang.org/x/term v0.21.0/go.mod h1:ooXLefLobQVslOqselCNF4SxFAaoS6KujMbsGzSDmX0=
1619
golang.org/x/term v0.27.0/go.mod h1:iMsnZpn0cago0GOrHO2+Y7u7JPn5AylBrcoWkElMTSM=
17-
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
1820
rsc.io/pdf v0.1.1/go.mod h1:n8OzWcQ6Sp37PL01nO98y4iUCRdTGarVfzxY20ICaU4=
1921
sigs.k8s.io/yaml v1.3.0/go.mod h1:GeOyir5tyXNByN85N/dRIT9es5UQNerPYEKK56eTBm8=

node-registrar/client/node.go

Lines changed: 94 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -314,7 +314,7 @@ func (c *RegistrarClient) updateNode(opts []UpdateNodeOpts) (err error) {
314314
}
315315

316316
if err := handler(node); err != nil {
317-
return err
317+
return errors.Wrap(err, "failed here")
318318
}
319319
}
320320

@@ -489,6 +489,7 @@ func (c *RegistrarClient) listNodes(opts []ListNodeOpts) (nodes []Node, err erro
489489
return
490490
}
491491

492+
// try old interface format
492493
var rawNodes []interface{}
493494
err = json.Unmarshal(bodyBytes, &rawNodes)
494495
if err != nil {
@@ -503,7 +504,7 @@ func (c *RegistrarClient) listNodes(opts []ListNodeOpts) (nodes []Node, err erro
503504

504505
node, err := parseResponseBodyToNewInterfaceFormat(nodeBytes)
505506
if err != nil {
506-
return nodes, err
507+
return nodes, errors.Wrap(err, "failed to get nodes with old interface format")
507508
}
508509

509510
nodes = append(nodes, node)
@@ -680,6 +681,22 @@ type oldInterfaceFormat struct {
680681
IPs string `json:"ips"`
681682
}
682683

684+
type oldFormatNodeType struct {
685+
Interfaces []oldInterfaceFormat `json:"interfaces"`
686+
687+
NodeID uint64 `json:"node_id"`
688+
FarmID uint64 `json:"farm_id"`
689+
TwinID uint64 `json:"twin_id"`
690+
Location Location `json:"location"`
691+
Resources Resources `json:"resources"`
692+
SecureBoot bool `json:"secure_boot"`
693+
Virtualized bool `json:"virtualized"`
694+
SerialNumber string `json:"serial_number"`
695+
LastSeen *time.Time `json:"last_seen"`
696+
Online bool `json:"online"`
697+
Approved bool
698+
}
699+
683700
func createRequestBodyWithOldInterfaceFormat(node Node) (body bytes.Buffer, err error) {
684701
var oldInterfaces []oldInterfaceFormat
685702
interfaces := node.Interfaces
@@ -692,19 +709,35 @@ func createRequestBodyWithOldInterfaceFormat(node Node) (body bytes.Buffer, err
692709
oldInterfaces = append(oldInterfaces, old)
693710
}
694711

695-
nodeBytes, err := json.Marshal(node)
696-
if err != nil {
697-
return
698-
}
699-
700-
var nodeMap map[string]any
701-
err = json.Unmarshal(nodeBytes, &nodeMap)
702-
if err != nil {
703-
return
704-
}
705-
nodeMap["interfaces"] = oldInterfaces
706-
707-
err = json.NewEncoder(&body).Encode(node)
712+
oldFormatNode := oldFormatNodeType{
713+
Interfaces: oldInterfaces,
714+
715+
NodeID: node.NodeID,
716+
FarmID: node.FarmID,
717+
TwinID: node.TwinID,
718+
Location: node.Location,
719+
Resources: node.Resources,
720+
SecureBoot: node.SecureBoot,
721+
Virtualized: node.Virtualized,
722+
SerialNumber: node.SerialNumber,
723+
LastSeen: node.LastSeen,
724+
Online: node.Online,
725+
Approved: node.Approved,
726+
}
727+
//
728+
// nodeBytes, err := json.Marshal(node)
729+
// if err != nil {
730+
// return
731+
// }
732+
//
733+
// var nodeMap map[string]any
734+
// err = json.Unmarshal(nodeBytes, &nodeMap)
735+
// if err != nil {
736+
// return
737+
// }
738+
// nodeMap["interfaces"] = oldInterfaces
739+
740+
err = json.NewEncoder(&body).Encode(oldFormatNode)
708741
if err != nil {
709742
return
710743
}
@@ -713,10 +746,7 @@ func createRequestBodyWithOldInterfaceFormat(node Node) (body bytes.Buffer, err
713746
}
714747

715748
func parseResponseBodyToNewInterfaceFormat(nodeBytes []byte) (Node, error) {
716-
oldFormatNode := struct {
717-
Interfaces []oldInterfaceFormat `json:"interfaces"`
718-
}{}
719-
749+
var oldFormatNode oldFormatNodeType
720750
err := json.Unmarshal(nodeBytes, &oldFormatNode)
721751
if err != nil {
722752
return Node{}, err
@@ -731,26 +761,51 @@ func parseResponseBodyToNewInterfaceFormat(nodeBytes []byte) (Node, error) {
731761
IPs: ips,
732762
})
733763
}
734-
735-
var nodeMap map[string]any
736-
err = json.Unmarshal(nodeBytes, &nodeMap)
737-
if err != nil {
738-
return Node{}, err
739-
}
740-
nodeMap["interfaces"] = newFormat
741-
742-
encodedNode, err := json.Marshal(nodeMap)
743-
if err != nil {
744-
return Node{}, err
745-
}
746-
747-
var node Node
748-
err = json.Unmarshal(encodedNode, &node)
749-
if err != nil {
750-
return Node{}, err
751-
}
752-
753-
return node, nil
764+
return Node{
765+
Interfaces: newFormat,
766+
767+
NodeID: oldFormatNode.NodeID,
768+
FarmID: oldFormatNode.FarmID,
769+
TwinID: oldFormatNode.TwinID,
770+
Location: oldFormatNode.Location,
771+
Resources: oldFormatNode.Resources,
772+
SecureBoot: oldFormatNode.SecureBoot,
773+
Virtualized: oldFormatNode.Virtualized,
774+
SerialNumber: oldFormatNode.SerialNumber,
775+
LastSeen: oldFormatNode.LastSeen,
776+
Online: oldFormatNode.Online,
777+
Approved: oldFormatNode.Approved,
778+
}, nil
779+
780+
// data, err := json.Marshal(newFormat)
781+
// if err != nil {
782+
// return Node{}, err
783+
// }
784+
//
785+
// var genericInterface any
786+
// if err := json.Unmarshal(data, &genericInterface); err != nil {
787+
// return Node{}, err
788+
// }
789+
//
790+
// var nodeMap map[string]any
791+
// err = json.Unmarshal(nodeBytes, &nodeMap)
792+
// if err != nil {
793+
// return Node{}, err
794+
// }
795+
// nodeMap["interfaces"] = genericInterface
796+
//
797+
// encodedNode, err := json.Marshal(nodeMap)
798+
// if err != nil {
799+
// return Node{}, err
800+
// }
801+
//
802+
// var node Node
803+
// err = json.Unmarshal(encodedNode, &node)
804+
// if err != nil {
805+
// return Node{}, errors.Wrapf(err, "failed to Unmarshal here %+v", nodeMap)
806+
// }
807+
//
808+
// return node, nil
754809
}
755810

756811
// nodeBytes, err := json.Marshal(nodeMap)

0 commit comments

Comments
 (0)