@@ -314,7 +314,7 @@ func (c *RegistrarClient) updateNode(opts []UpdateNodeOpts) (err error) {
314
314
}
315
315
316
316
if err := handler (node ); err != nil {
317
- return err
317
+ return errors . Wrap ( err , "failed here" )
318
318
}
319
319
}
320
320
@@ -489,6 +489,7 @@ func (c *RegistrarClient) listNodes(opts []ListNodeOpts) (nodes []Node, err erro
489
489
return
490
490
}
491
491
492
+ // try old interface format
492
493
var rawNodes []interface {}
493
494
err = json .Unmarshal (bodyBytes , & rawNodes )
494
495
if err != nil {
@@ -503,7 +504,7 @@ func (c *RegistrarClient) listNodes(opts []ListNodeOpts) (nodes []Node, err erro
503
504
504
505
node , err := parseResponseBodyToNewInterfaceFormat (nodeBytes )
505
506
if err != nil {
506
- return nodes , err
507
+ return nodes , errors . Wrap ( err , "failed to get nodes with old interface format" )
507
508
}
508
509
509
510
nodes = append (nodes , node )
@@ -680,6 +681,22 @@ type oldInterfaceFormat struct {
680
681
IPs string `json:"ips"`
681
682
}
682
683
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
+
683
700
func createRequestBodyWithOldInterfaceFormat (node Node ) (body bytes.Buffer , err error ) {
684
701
var oldInterfaces []oldInterfaceFormat
685
702
interfaces := node .Interfaces
@@ -692,19 +709,35 @@ func createRequestBodyWithOldInterfaceFormat(node Node) (body bytes.Buffer, err
692
709
oldInterfaces = append (oldInterfaces , old )
693
710
}
694
711
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 )
708
741
if err != nil {
709
742
return
710
743
}
@@ -713,10 +746,7 @@ func createRequestBodyWithOldInterfaceFormat(node Node) (body bytes.Buffer, err
713
746
}
714
747
715
748
func parseResponseBodyToNewInterfaceFormat (nodeBytes []byte ) (Node , error ) {
716
- oldFormatNode := struct {
717
- Interfaces []oldInterfaceFormat `json:"interfaces"`
718
- }{}
719
-
749
+ var oldFormatNode oldFormatNodeType
720
750
err := json .Unmarshal (nodeBytes , & oldFormatNode )
721
751
if err != nil {
722
752
return Node {}, err
@@ -731,26 +761,51 @@ func parseResponseBodyToNewInterfaceFormat(nodeBytes []byte) (Node, error) {
731
761
IPs : ips ,
732
762
})
733
763
}
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
754
809
}
755
810
756
811
// nodeBytes, err := json.Marshal(nodeMap)
0 commit comments