mirror of
https://github.com/bpg/terraform-provider-proxmox.git
synced 2025-08-25 04:45:46 +00:00
Set volume format for container creation
Signed-off-by: maidlover <117573165+maidl0ver@users.noreply.github.com>
This commit is contained in:
parent
19ee6ce6ef
commit
93644e7d7a
@ -1495,6 +1495,22 @@ func containerCreateCustom(ctx context.Context, d *schema.ResourceData, m interf
|
|||||||
return diag.FromErr(err)
|
return diag.FromErr(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
vmIDUntyped, hasVMID := d.GetOk(mkVMID)
|
||||||
|
vmID := vmIDUntyped.(int)
|
||||||
|
|
||||||
|
if !hasVMID {
|
||||||
|
vmIDNew, err := config.GetIDGenerator().NextID(ctx)
|
||||||
|
if err != nil {
|
||||||
|
return diag.FromErr(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
vmID = vmIDNew
|
||||||
|
|
||||||
|
err = d.Set(mkVMID, vmID)
|
||||||
|
if err != nil {
|
||||||
|
return diag.FromErr(err)
|
||||||
|
}
|
||||||
|
}
|
||||||
nodeName := d.Get(mkNodeName).(string)
|
nodeName := d.Get(mkNodeName).(string)
|
||||||
container := Container()
|
container := Container()
|
||||||
|
|
||||||
@ -1758,8 +1774,11 @@ func containerCreateCustom(ctx context.Context, d *schema.ResourceData, m interf
|
|||||||
if diskDatastoreID != "" && (diskSize != dvDiskSize || len(mountPoints) > 0) {
|
if diskDatastoreID != "" && (diskSize != dvDiskSize || len(mountPoints) > 0) {
|
||||||
// This is a special case where the rootfs size is set to a non-default value at creation time.
|
// This is a special case where the rootfs size is set to a non-default value at creation time.
|
||||||
// see https://pve.proxmox.com/pve-docs/chapter-pct.html#_storage_backed_mount_points
|
// see https://pve.proxmox.com/pve-docs/chapter-pct.html#_storage_backed_mount_points
|
||||||
|
|
||||||
|
// rootfs ID is always 0
|
||||||
|
diskID := 0
|
||||||
rootFS = &containers.CustomRootFS{
|
rootFS = &containers.CustomRootFS{
|
||||||
Volume: fmt.Sprintf("%s:%d", diskDatastoreID, diskSize),
|
Volume: fmt.Sprintf("%s:%d", getContainerDiskVolume(diskDatastoreID, vmID, diskID) , diskSize),
|
||||||
MountOptions: &diskMountOptions,
|
MountOptions: &diskMountOptions,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1877,22 +1896,6 @@ func containerCreateCustom(ctx context.Context, d *schema.ResourceData, m interf
|
|||||||
tags := d.Get(mkTags).([]interface{})
|
tags := d.Get(mkTags).([]interface{})
|
||||||
template := types.CustomBool(d.Get(mkTemplate).(bool))
|
template := types.CustomBool(d.Get(mkTemplate).(bool))
|
||||||
unprivileged := types.CustomBool(d.Get(mkUnprivileged).(bool))
|
unprivileged := types.CustomBool(d.Get(mkUnprivileged).(bool))
|
||||||
vmIDUntyped, hasVMID := d.GetOk(mkVMID)
|
|
||||||
vmID := vmIDUntyped.(int)
|
|
||||||
|
|
||||||
if !hasVMID {
|
|
||||||
vmIDNew, err := config.GetIDGenerator().NextID(ctx)
|
|
||||||
if err != nil {
|
|
||||||
return diag.FromErr(err)
|
|
||||||
}
|
|
||||||
|
|
||||||
vmID = vmIDNew
|
|
||||||
|
|
||||||
err = d.Set(mkVMID, vmID)
|
|
||||||
if err != nil {
|
|
||||||
return diag.FromErr(err)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Attempt to create the container using the retrieved values.
|
// Attempt to create the container using the retrieved values.
|
||||||
createBody := containers.CreateRequestBody{
|
createBody := containers.CreateRequestBody{
|
||||||
@ -2986,8 +2989,12 @@ func containerUpdate(ctx context.Context, d *schema.ResourceData, m interface{})
|
|||||||
return diag.FromErr(err)
|
return diag.FromErr(err)
|
||||||
}
|
}
|
||||||
rootFS := &containers.CustomRootFS{}
|
rootFS := &containers.CustomRootFS{}
|
||||||
|
// Disk ID for the rootfs is always 0
|
||||||
|
diskID := 0
|
||||||
|
vmID := d.Get(mkVMID).(int)
|
||||||
rootFS.Volume = diskBlock[mkDiskDatastoreID].(string)
|
rootFS.Volume = diskBlock[mkDiskDatastoreID].(string)
|
||||||
|
rootFS.Volume = getContainerDiskVolume(rootFS.Volume, vmID, diskID)
|
||||||
|
|
||||||
|
|
||||||
acl := types.CustomBool(diskBlock[mkDiskACL].(bool))
|
acl := types.CustomBool(diskBlock[mkDiskACL].(bool))
|
||||||
mountOptions := diskBlock[mkDiskMountOptions].([]interface{})
|
mountOptions := diskBlock[mkDiskMountOptions].([]interface{})
|
||||||
@ -3000,10 +3007,6 @@ func containerUpdate(ctx context.Context, d *schema.ResourceData, m interface{})
|
|||||||
rootFS.Quota = "a
|
rootFS.Quota = "a
|
||||||
rootFS.Replicate = &replicate
|
rootFS.Replicate = &replicate
|
||||||
rootFS.Size = size
|
rootFS.Size = size
|
||||||
// Disk ID for the rootfs is always 0
|
|
||||||
diskID := 0
|
|
||||||
vmID := d.Get(mkVMID).(int)
|
|
||||||
rootFS.Volume = fmt.Sprintf("%s:vm-%d-disk-%d", rootFS.Volume, vmID, diskID)
|
|
||||||
|
|
||||||
if len(mountOptions) > 0 {
|
if len(mountOptions) > 0 {
|
||||||
mountOptionsArray := make([]string, 0, len(mountOptions))
|
mountOptionsArray := make([]string, 0, len(mountOptions))
|
||||||
@ -3524,3 +3527,7 @@ func parseImportIDWithNodeName(id string) (string, string, error) {
|
|||||||
|
|
||||||
return nodeName, id, nil
|
return nodeName, id, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func getContainerDiskVolume(rawVolume string, vmID int, diskID int) string {
|
||||||
|
return fmt.Sprintf("%s:vm-%d-disk-%d", rawVolume, vmID, diskID)
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user