8.0.0
This commit is contained in:
@@ -39,6 +39,7 @@ class decort_group(DecortController):
|
||||
|
||||
if self.group_id:
|
||||
self.group_should_exist = True
|
||||
self.check_amodule_args_for_change()
|
||||
|
||||
return
|
||||
def nop(self):
|
||||
@@ -74,22 +75,34 @@ class decort_group(DecortController):
|
||||
return
|
||||
|
||||
def create(self):
|
||||
chipset = self.aparams['chipset']
|
||||
if chipset is None:
|
||||
chipset = 'i440fx'
|
||||
self.message(
|
||||
msg=f'Chipset not specified, '
|
||||
f'default value "{chipset}" will be used.',
|
||||
warning=True,
|
||||
)
|
||||
|
||||
self.group_id=self.group_provision(
|
||||
self.bservice_id,
|
||||
self.amodule.params['name'],
|
||||
self.amodule.params['count'],
|
||||
self.amodule.params['cpu'],
|
||||
self.amodule.params['ram'],
|
||||
self.amodule.params['boot_disk'],
|
||||
self.amodule.params['image_id'],
|
||||
self.amodule.params['driver'],
|
||||
self.amodule.params['role'],
|
||||
self.amodule.params['networks'],
|
||||
self.amodule.params['timeoutStart'],
|
||||
bs_id=self.bservice_id,
|
||||
arg_name=self.amodule.params['name'],
|
||||
arg_count=self.amodule.params['count'],
|
||||
arg_cpu=self.amodule.params['cpu'],
|
||||
arg_ram=self.amodule.params['ram'],
|
||||
arg_boot_disk=self.amodule.params['boot_disk'],
|
||||
arg_image_id=self.amodule.params['image_id'],
|
||||
arg_driver=self.amodule.params['driver'],
|
||||
arg_role=self.amodule.params['role'],
|
||||
arg_network=self.amodule.params['networks'],
|
||||
arg_timeout=self.amodule.params['timeoutStart'],
|
||||
chipset=chipset,
|
||||
)
|
||||
|
||||
if self.amodule.params['state'] in ('started','present'):
|
||||
self.group_state(self.bservice_id,self.group_id,self.amodule.params['state'])
|
||||
|
||||
self.group_should_exist = True
|
||||
return
|
||||
|
||||
def action(self):
|
||||
@@ -100,13 +113,26 @@ class decort_group(DecortController):
|
||||
):
|
||||
self.group_state(self.bservice_id,self.group_id,self.amodule.params['state'])
|
||||
|
||||
if self.aparams['count'] != None:
|
||||
aparam_chipset = self.aparams['chipset']
|
||||
if (
|
||||
self.aparams['count'] is not None
|
||||
and self.aparams['count'] != len(self.group_info['computes'])
|
||||
):
|
||||
self.group_resize_count(
|
||||
bs_id=self.bservice_id,
|
||||
gr_dict=self.group_info,
|
||||
desired_count=self.aparams['count'],
|
||||
chipset=aparam_chipset,
|
||||
)
|
||||
|
||||
if aparam_chipset is not None:
|
||||
for vm in self.group_info['computes']:
|
||||
if vm['chipset'] != aparam_chipset:
|
||||
self.compute_update(
|
||||
compute_id=vm['id'],
|
||||
chipset=aparam_chipset,
|
||||
)
|
||||
|
||||
for aparam_name, info_key in {'cpu': 'cpu',
|
||||
'boot_disk': 'disk',
|
||||
'role': 'role',
|
||||
@@ -254,6 +280,13 @@ class decort_group(DecortController):
|
||||
)
|
||||
)
|
||||
),
|
||||
chipset=dict(
|
||||
type='str',
|
||||
choices=[
|
||||
'Q35',
|
||||
'i440fx',
|
||||
]
|
||||
),
|
||||
),
|
||||
supports_check_mode=True,
|
||||
required_one_of=[
|
||||
@@ -268,6 +301,43 @@ class decort_group(DecortController):
|
||||
],
|
||||
)
|
||||
|
||||
def check_amodule_args_for_change(self):
|
||||
check_errors = False
|
||||
|
||||
if (
|
||||
self.aparams['chipset'] is None
|
||||
and self.aparams['count'] > len(self.group_info['computes'])
|
||||
):
|
||||
check_errors = True
|
||||
self.message(
|
||||
msg='Check for parameter "chipset" failed: '
|
||||
'Chipset must be specified when increasing '
|
||||
'VM count in group'
|
||||
)
|
||||
|
||||
if (
|
||||
self.aparams['count'] is None
|
||||
or self.aparams['count'] == len(self.group_info['computes'])
|
||||
):
|
||||
aparam_chipset = self.aparams['chipset']
|
||||
if aparam_chipset is not None:
|
||||
for vm in self.group_info['computes']:
|
||||
if (
|
||||
vm['chipset'] != aparam_chipset
|
||||
and self.group_info['techStatus'] != 'STOPPED'
|
||||
and self.amodule.params['state'] != 'stopped'
|
||||
):
|
||||
check_errors = True
|
||||
self.message(
|
||||
msg=f'Check for parameter "chipset" failed: '
|
||||
f'group ID {self.group_id} must be stopped '
|
||||
f'to change chipset',
|
||||
)
|
||||
break
|
||||
|
||||
if check_errors:
|
||||
self.exit(fail=True)
|
||||
|
||||
def main():
|
||||
subj = decort_group()
|
||||
amodule = subj.amodule
|
||||
|
||||
Reference in New Issue
Block a user