Skip to content

Commit 2180d58

Browse files
committed
fix #17
1 parent 6413f92 commit 2180d58

File tree

3 files changed

+21
-14
lines changed

3 files changed

+21
-14
lines changed

cloud/services/compute/instance/cloudinit.go

Lines changed: 19 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -11,14 +11,14 @@ import (
1111
"github.com/sp-yduck/cluster-api-provider-proxmox/cloud/scope"
1212
)
1313

14-
// reconcileCloudInit
15-
func reconcileCloudInit(s *Service, vmid int, bootstrap string) error {
16-
vmName := s.scope.Name()
17-
storageName := s.scope.GetStorage().Name
18-
cloudInit := s.scope.GetCloudInit()
14+
const (
15+
userSnippetPathFormat = "snippets/%s-user.yml"
16+
)
1917

18+
// reconcileCloudInit
19+
func (s *Service) reconcileCloudInit(bootstrap string) error {
2020
// user
21-
if err := reconcileCloudInitUser(vmid, vmName, storageName, bootstrap, *cloudInit.User, s.remote); err != nil {
21+
if err := s.reconcileCloudInitUser(bootstrap); err != nil {
2222
return err
2323
}
2424
return nil
@@ -27,7 +27,8 @@ func reconcileCloudInit(s *Service, vmid int, bootstrap string) error {
2727
// delete CloudConfig
2828
func (s *Service) deleteCloudConfig() error {
2929
storageName := s.scope.GetStorage().Name
30-
volumeID := fmt.Sprintf("%s:snippets/%s-user.yml", storageName, s.scope.Name())
30+
path := userSnippetPath(s.scope.Name())
31+
volumeID := fmt.Sprintf("%s:%s", storageName, path)
3132

3233
node, err := s.client.Node(s.scope.NodeName())
3334
if err != nil {
@@ -48,14 +49,17 @@ func (s *Service) deleteCloudConfig() error {
4849
return content.DeleteVolume()
4950
}
5051

51-
func reconcileCloudInitUser(vmid int, vmName, storageName, bootstrap string, config infrav1.User, ssh scope.SSHClient) error {
52-
base := baseUserData(vmName)
52+
func (s *Service) reconcileCloudInitUser(bootstrap string) error {
53+
vmName := s.scope.Name()
54+
storagePath := s.scope.GetStorage().Path
55+
config := s.scope.GetCloudInit().User
5356

5457
bootstrapConfig, err := cloudinit.ParseUser(bootstrap)
5558
if err != nil {
5659
return err
5760
}
58-
additional, err := cloudinit.MergeUsers(config, base)
61+
base := baseUserData(vmName)
62+
additional, err := cloudinit.MergeUsers(*config, base)
5963
if err != nil {
6064
return err
6165
}
@@ -71,15 +75,18 @@ func reconcileCloudInitUser(vmid int, vmName, storageName, bootstrap string, con
7175
klog.Info(configYaml)
7276

7377
// to do: should be set via API
74-
// to do: storage path
75-
out, err := ssh.RunWithStdin(fmt.Sprintf("tee /var/lib/vz/%s/snippets/%s-user.yml", storageName, vmName), configYaml)
78+
out, err := s.remote.RunWithStdin(fmt.Sprintf("tee %s/%s", storagePath, userSnippetPath(vmName)), configYaml)
7679
if err != nil {
7780
return errors.Errorf("ssh command error : %s : %v", out, err)
7881
}
7982

8083
return nil
8184
}
8285

86+
func userSnippetPath(vmName string) string {
87+
return fmt.Sprintf(userSnippetPathFormat, vmName)
88+
}
89+
8390
// DEPRECATED : cicustom should be set via API
8491
func ApplyCICustom(vmid int, vmName, storageName, ciType string, ssh scope.SSHClient) error {
8592
if !cloudinit.IsValidType(ciType) {

cloud/services/compute/instance/qemu.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -129,7 +129,7 @@ func generateVMOptions(vmName, storageName string, network infrav1.Network, hard
129129
NameServer: network.NameServer,
130130
Boot: "order=scsi0",
131131
Ide: vm.Ide{Ide2: fmt.Sprintf("file=%s:cloudinit,media=cdrom", storageName)},
132-
CiCustom: fmt.Sprintf("user=%s:snippets/%s-user.yml", storageName, vmName),
132+
CiCustom: fmt.Sprintf("user=%s:%s", storageName, userSnippetPath(vmName)),
133133
IPConfig: vm.IPConfig{IPConfig0: network.IPConfig.String()},
134134
OSType: vm.L26,
135135
Net: vm.Net{Net0: "model=virtio,bridge=vmbr0,firewall=1"},

cloud/services/compute/instance/reconcile.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -207,7 +207,7 @@ func (s *Service) CreateInstance(ctx context.Context, bootstrap string) (*vm.Vir
207207
log.Info(fmt.Sprintf("reconciled qemu: node=%s,vmid=%d", vm.Node.Name(), vmid))
208208

209209
// cloud init
210-
if err := reconcileCloudInit(s, vmid, bootstrap); err != nil {
210+
if err := s.reconcileCloudInit(bootstrap); err != nil {
211211
return nil, err
212212
}
213213

0 commit comments

Comments
 (0)