Add auto_delete and instance_redistribution_type to compute-vm and compute-mig modules. (#890)

* Add auto_delete parameter to compute-vm module

* Add instance_redistribution_type in compute-mig module
This commit is contained in:
Giovanni Baratta
2022-10-16 21:19:46 +02:00
committed by GitHub
parent ccac507795
commit ca1dc3659a
9 changed files with 162 additions and 86 deletions

View File

@@ -24,6 +24,7 @@ variable "attached_disk_defaults" {
description = "Defaults for attached disks options."
type = any
default = {
auto_delete = true
mode = "READ_WRITE"
replica_zone = null
type = "pd-balanced"

View File

@@ -12,8 +12,9 @@
# See the License for the specific language governing permissions and
# limitations under the License.
def test_types(plan_runner):
_disks = '''[{
_disks = '''[{
name = "data1"
size = "10"
source_type = "image"
@@ -33,26 +34,35 @@ def test_types(plan_runner):
options = null
}]
'''
_, resources = plan_runner(attached_disks=_disks)
assert len(resources) == 3
disks = {r['values']['name']: r['values']
for r in resources if r['type'] == 'google_compute_disk'}
assert disks['test-data1']['size'] == 10
assert disks['test-data2']['size'] == 20
assert disks['test-data1']['image'] == 'image-1'
assert disks['test-data1']['snapshot'] is None
assert disks['test-data2']['snapshot'] == 'snapshot-2'
assert disks['test-data2']['image'] is None
instance = [r['values']
for r in resources if r['type'] == 'google_compute_instance'][0]
instance_disks = {d['source']: d['device_name']
for d in instance['attached_disk']}
assert instance_disks == {'test-data1': 'data1',
'test-data2': 'data2', 'disk-3': 'data3'}
_, resources = plan_runner(attached_disks=_disks)
assert len(resources) == 3
disks = {
r['values']['name']: r['values']
for r in resources if r['type'] == 'google_compute_disk'
}
assert disks['test-data1']['size'] == 10
assert disks['test-data2']['size'] == 20
assert disks['test-data1']['image'] == 'image-1'
assert disks['test-data1']['snapshot'] is None
assert disks['test-data2']['snapshot'] == 'snapshot-2'
assert disks['test-data2']['image'] is None
instance = [
r['values'] for r in resources
if r['type'] == 'google_compute_instance'
][0]
instance_disks = {
d['source']: d['device_name']
for d in instance['attached_disk']
}
assert instance_disks == {
'test-data1': 'data1',
'test-data2': 'data2',
'disk-3': 'data3'
}
def test_options(plan_runner):
_disks = '''[{
_disks = '''[{
name = "data1"
size = "10"
source_type = "image"
@@ -70,21 +80,26 @@ def test_options(plan_runner):
}
}]
'''
_, resources = plan_runner(attached_disks=_disks)
assert len(resources) == 3
disks_z = [r['values']
for r in resources if r['type'] == 'google_compute_disk']
disks_r = [r['values']
for r in resources if r['type'] == 'google_compute_region_disk']
assert len(disks_z) == len(disks_r) == 1
instance = [r['values']
for r in resources if r['type'] == 'google_compute_instance'][0]
instance_disks = [d['device_name'] for d in instance['attached_disk']]
assert instance_disks == ['data1', 'data2']
_, resources = plan_runner(attached_disks=_disks)
assert len(resources) == 3
disks_z = [
r['values'] for r in resources if r['type'] == 'google_compute_disk'
]
disks_r = [
r['values'] for r in resources
if r['type'] == 'google_compute_region_disk'
]
assert len(disks_z) == len(disks_r) == 1
instance = [
r['values'] for r in resources
if r['type'] == 'google_compute_instance'
][0]
instance_disks = [d['device_name'] for d in instance['attached_disk']]
assert instance_disks == ['data1', 'data2']
def test_template(plan_runner):
_disks = '''[{
_disks = '''[{
name = "data1"
size = "10"
source_type = "image"
@@ -102,9 +117,49 @@ def test_template(plan_runner):
}
}]
'''
_, resources = plan_runner(attached_disks=_disks,
create_template="true")
assert len(resources) == 1
template = [r['values'] for r in resources if r['type']
== 'google_compute_instance_template'][0]
assert len(template['disk']) == 3
_, resources = plan_runner(attached_disks=_disks, create_template="true")
assert len(resources) == 1
template = [
r['values'] for r in resources
if r['type'] == 'google_compute_instance_template'
][0]
assert len(template['disk']) == 3
def test_auto_delete(plan_runner):
_disks = '''[{
name = "data1"
size = "10"
options = {
auto_delete = true, mode = "READ_WRITE"
}
}, {
name = "data2"
size = "20"
options = {
auto_delete = false, mode = "READ_WRITE"
},
}, {
name = "data3"
size = "20"
options = {
mode = "READ_ONLY"
}
}]
'''
_, resources = plan_runner(attached_disks=_disks, create_template="true")
assert len(resources) == 1
template = [
r['values'] for r in resources
if r['type'] == 'google_compute_instance_template'
][0]
additional_disks = [
d for d in template['disk'] if 'boot' not in d or d['boot'] != True
]
assert len(additional_disks) == 3
disk_data1 = [d for d in additional_disks if d['disk_name'] == 'data1']
disk_data2 = [d for d in additional_disks if d['disk_name'] == 'data2']
disk_data3 = [d for d in additional_disks if d['disk_name'] == 'data3']
assert len(disk_data1) == 1 and disk_data1[0]['auto_delete'] == True
assert len(disk_data2) == 1 and disk_data2[0]['auto_delete'] == False
assert len(disk_data3) == 1 and disk_data3[0]['auto_delete'] == False