@@ -8,23 +8,24 @@ import (
88
99 "github.com/pkg/errors"
1010 "github.com/sp-yduck/proxmox-go/api"
11+ "github.com/sp-yduck/proxmox-go/proxmox"
1112 "github.com/sp-yduck/proxmox-go/rest"
1213 "sigs.k8s.io/controller-runtime/pkg/log"
1314
1415 infrav1 "github.com/sp-yduck/cluster-api-provider-proxmox/api/v1beta1"
1516)
1617
17- func (s * Service ) reconcileQEMU (ctx context.Context ) (* api .VirtualMachine , error ) {
18+ func (s * Service ) reconcileQEMU (ctx context.Context ) (* proxmox .VirtualMachine , error ) {
1819 log := log .FromContext (ctx )
1920 log .Info ("Reconciling QEMU" )
2021
2122 nodeName := s .scope .NodeName ()
2223 vmid := s .scope .GetVMID ()
23- api , err := s .getQEMU (nodeName , vmid )
24+ api , err := s .getQEMU (ctx , vmid )
2425 if err == nil { // if api is found, return it
2526 return api , nil
2627 }
27- if ! IsNotFound (err ) {
28+ if ! rest . IsNotFound (err ) {
2829 log .Error (err , fmt .Sprintf ("failed to get api: node=%s,vmid=%d" , nodeName , * vmid ))
2930 return nil , err
3031 }
@@ -33,79 +34,67 @@ func (s *Service) reconcileQEMU(ctx context.Context) (*api.VirtualMachine, error
3334 return s .createQEMU (ctx , nodeName , vmid )
3435}
3536
36- func (s * Service ) getQEMU (nodeName string , vmid * int ) (* api.VirtualMachine , error ) {
37- if vmid != nil && nodeName != "" {
38- node , err := s .GetNode (nodeName )
39- if err != nil {
40- return nil , err
41- }
42- return node .VirtualMachine (* vmid )
37+ func (s * Service ) getQEMU (ctx context.Context , vmid * int ) (* proxmox.VirtualMachine , error ) {
38+ if vmid != nil {
39+ return s .client .VirtualMachine (ctx , * vmid )
4340 }
44- return nil , rest .ErrNotFound
41+ return nil , rest .NotFoundErr
4542}
4643
47- func (s * Service ) createQEMU (ctx context.Context , nodeName string , vmid * int ) (* api .VirtualMachine , error ) {
44+ func (s * Service ) createQEMU (ctx context.Context , nodeName string , vmid * int ) (* proxmox .VirtualMachine , error ) {
4845 log := log .FromContext (ctx )
4946
50- var node * api.Node
51- var err error
52-
53- // get node
54- if nodeName != "" {
55- node , err = s .GetNode (nodeName )
56- if err != nil {
57- log .Error (err , fmt .Sprintf ("failed to get node %s" , nodeName ))
58- return nil , err
59- }
60- } else {
47+ // get nodej
48+ if nodeName == "" {
6149 // temp solution
62- node , err = s .GetRandomNode ()
50+ node , err : = s .getRandomNode ()
6351 if err != nil {
6452 log .Error (err , "failed to get random node" )
6553 return nil , err
6654 }
67- s .scope .SetNodeName (node .Node )
55+ nodeName = node .Node
56+ s .scope .SetNodeName (nodeName )
6857 }
6958
7059 // (for multiple node proxmox cluster support)
7160 // to do : set ssh client for specific node
7261
7362 // if vmid is empty, generate new vmid
7463 if vmid == nil {
75- nextid , err := s .GetNextID ()
64+ nextid , err := s .getNextID ()
7665 if err != nil {
7766 log .Error (err , "failed to get available vmid" )
7867 return nil , err
7968 }
8069 vmid = & nextid
8170 }
8271
83- // create api
8472 vmoption := generateVMOptions (s .scope .Name (), s .scope .GetStorage ().Name , s .scope .GetNetwork (), s .scope .GetHardware ())
85- api , err := node .CreateVirtualMachine (* vmid , vmoption )
73+ // to do : do not use RESTClient()
74+ _ , err := s .client .RESTClient ().CreateVirtualMachine (ctx , nodeName , * vmid , vmoption )
8675 if err != nil {
87- log .Error (err , "failed to create virtual machine" )
76+ log .Error (err , fmt . Sprintf ( "failed to get node %s" , nodeName ) )
8877 return nil , err
8978 }
9079 s .scope .SetVMID (* vmid )
91- return api , nil
80+ return s . client . VirtualMachine ( ctx , * vmid )
9281}
9382
94- func (s * Service ) GetNextID () (int , error ) {
83+ func (s * Service ) getNextID () (int , error ) {
9584 return s .client .RESTClient ().GetNextID (context .TODO ())
9685}
9786
98- func (s * Service ) GetNodes () ([]* api.Node , error ) {
87+ func (s * Service ) getNodes () ([]* api.Node , error ) {
9988 return s .client .Nodes (context .TODO ())
10089}
10190
102- func (s * Service ) GetNode ( name string ) (* api.Node , error ) {
103- return s .client .Node (name )
91+ func (s * Service ) getNode ( ctx context. Context , name string ) (* api.Node , error ) {
92+ return s .client .Node (ctx , name )
10493}
10594
10695// GetRandomNode returns a node chosen randomly
107- func (s * Service ) GetRandomNode () (* api.Node , error ) {
108- nodes , err := s .GetNodes ()
96+ func (s * Service ) getRandomNode () (* api.Node , error ) {
97+ nodes , err := s .getNodes ()
10998 if err != nil {
11099 return nil , err
111100 }
0 commit comments