@@ -100,13 +100,27 @@ func (s *Service) getInstanceFromInstanceID(instanceID string) (*vm.VirtualMachi
100100func (s * Service ) CreateInstance (ctx context.Context , bootstrap string ) (* vm.VirtualMachine , error ) {
101101 log := log .FromContext (ctx )
102102
103- // temp solution
104- node , err := s .GetRandomNode ()
105- if err != nil {
106- log .Error (err , "failed to get random node" )
107- return nil , err
103+ var node * node.Node
104+ var err error
105+ nodeName := s .scope .NodeName ()
106+ if nodeName != "" {
107+ node , err = s .GetNode (nodeName )
108+ if err != nil {
109+ log .Error (err , fmt .Sprintf ("failed to get node %s" , nodeName ))
110+ return nil , err
111+ }
112+ } else {
113+ // temp solution
114+ node , err = s .GetRandomNode ()
115+ if err != nil {
116+ log .Error (err , "failed to get random node" )
117+ return nil , err
118+ }
108119 }
109120
121+ // (for multiple node proxmox cluster support)
122+ // to do : set ssh client for specific node
123+
110124 vmid , err := s .GetNextID ()
111125 if err != nil {
112126 log .Error (err , "failed to get available vmid" )
@@ -155,6 +169,10 @@ func (s *Service) GetNodes() ([]*node.Node, error) {
155169 return s .client .Nodes ()
156170}
157171
172+ func (s * Service ) GetNode (name string ) (* node.Node , error ) {
173+ return s .client .Node (name )
174+ }
175+
158176// GetRandomNode returns a node chosen randomly
159177func (s * Service ) GetRandomNode () (* node.Node , error ) {
160178 nodes , err := s .GetNodes ()
0 commit comments