@@ -4,6 +4,8 @@ import org.zstack.header.vm.DiskAO
44import org.zstack.utils.data.SizeUnit
55
66class VmDiskSpec extends Spec {
7+ private Closure primaryStorage = {}
8+
79 @SpecParam (required = false )
810 boolean boot
911 @SpecParam (required = false )
@@ -13,8 +15,6 @@ class VmDiskSpec extends Spec {
1315 @SpecParam (required = false )
1416 String architecture
1517 @SpecParam (required = false )
16- String primaryStorageUuid
17- @SpecParam (required = false )
1818 long size
1919 /**
2020 * allow: ImageVO.uuid
@@ -59,7 +59,7 @@ class VmDiskSpec extends Spec {
5959 ao. platform = platform
6060 ao. guestOsType = guestOsType
6161 ao. architecture = architecture
62- ao. primaryStorageUuid = primaryStorageUuid
62+ ao. primaryStorageUuid = primaryStorage();
6363 ao. size = size
6464 ao. templateUuid = templateUuid
6565 ao. diskOfferingUuid = diskOfferingUuid
@@ -73,4 +73,16 @@ class VmDiskSpec extends Spec {
7373 void sizeGB (long sizeGB ) {
7474 this . size = SizeUnit . GIGABYTE . toByte(sizeGB)
7575 }
76- }
76+
77+ @SpecMethod
78+ void diskUsePrimaryStorage (String name ) {
79+ preCreate {
80+ addDependency(name, PrimaryStorageSpec . class)
81+ }
82+ primaryStorage = {
83+ PrimaryStorageSpec spec = findSpec(name, PrimaryStorageSpec . class)
84+ assert spec != null : " cannot find primaryStorage[$name ], check the vm block of environment"
85+ return spec. inventory. uuid
86+ }
87+ }
88+ }
0 commit comments