haproxy-wi/app/modules/provisioning/gcore.py

142 lines
6.2 KiB
Python

import modules.db.sql as sql
import modules.common.common as common
import modules.server.server as server_mod
import modules.provisioning.common as prov_common
form = common.form
def create_vars() -> None:
if form.getvalue('gcorevars'):
gcorevars = form.getvalue('gcorevars')
group = form.getvalue('gcore_create_group')
provider = form.getvalue('gcore_create_provider')
region = form.getvalue('gcore_create_regions')
project = form.getvalue('gcore_create_project')
size = form.getvalue('gcore_create_size')
oss = form.getvalue('gcore_create_oss')
ssh_name = form.getvalue('gcore_create_ssh_name')
volume_size = form.getvalue('gcore_create_volume_size')
volume_type = form.getvalue('gcore_create_volume_type')
delete_on_termination = form.getvalue('gcore_create_delete_on_termination')
network_name = form.getvalue('gcore_create_network_name')
firewall = form.getvalue('gcore_create_firewall')
network_type = form.getvalue('gcore_create_network_type')
elif form.getvalue('gcoreeditvars'):
gcorevars = form.getvalue('gcoreeditvars')
group = form.getvalue('gcore_edit_group')
provider = form.getvalue('gcore_edit_provider')
region = form.getvalue('gcore_edit_regions')
project = form.getvalue('gcore_edit_project')
size = form.getvalue('gcore_edit_size')
oss = form.getvalue('gcore_edit_oss')
ssh_name = form.getvalue('gcore_edit_ssh_name')
volume_size = form.getvalue('gcore_edit_volume_size')
volume_type = form.getvalue('gcore_edit_volume_type')
delete_on_termination = form.getvalue('gcore_edit_delete_on_termination')
network_name = form.getvalue('gcore_edit_network_name')
firewall = form.getvalue('gcore_edit_firewall')
network_type = form.getvalue('gcore_edit_network_type')
try:
gcore_user, gcore_pass = sql.select_gcore_provider(provider)
except Exception as e:
print(e)
cmd = 'cd scripts/terraform/ && sudo ansible-playbook var_generator.yml -i inventory -e "region={} ' \
'group={} size={} os={} network_name={} volume_size={} server_name={} username={} ' \
'pass={} firewall={} network_type={} ssh_name={} delete_on_termination={} project={} volume_type={} ' \
'cloud=gcore"'.format(region, group, size, oss, network_name, volume_size, gcorevars, gcore_user, gcore_pass,
firewall, network_type, ssh_name, delete_on_termination, project, volume_type)
output, stderr = server_mod.subprocess_execute(cmd)
if stderr != '':
print(f'error: {stderr}')
else:
print('ok')
def validate() -> None:
if form.getvalue('gcorevalidate'):
workspace = form.getvalue('gcorevalidate')
group = form.getvalue('gcore_create_group')
else:
workspace = form.getvalue('gcoreeditvalidate')
group = form.getvalue('gcore_edit_group')
cmd = f'cd scripts/terraform/ && sudo terraform plan -no-color -input=false -target=module.gcore_module -var-file vars/{workspace}_{group}_gcore.tfvars'
output, stderr = server_mod.subprocess_execute(cmd)
if stderr != '':
print(f'error: {stderr}')
else:
print('ok')
def new_workspace() -> None:
workspace = form.getvalue('gcoreworkspace')
group = form.getvalue('gcore_create_group')
provider = form.getvalue('gcore_create_provider')
region = form.getvalue('gcore_create_regions')
project = form.getvalue('gcore_create_project')
size = form.getvalue('gcore_create_size')
oss = form.getvalue('gcore_create_oss')
ssh_name = form.getvalue('gcore_create_ssh_name')
volume_size = form.getvalue('gcore_create_volume_size')
volume_type = form.getvalue('gcore_create_volume_type')
delete_on_termination = form.getvalue('gcore_create_delete_on_termination')
network_type = form.getvalue('gcore_create_network_type')
firewall = form.getvalue('gcore_create_firewall')
network_name = form.getvalue('gcore_create_network_name')
cmd = f'cd scripts/terraform/ && sudo terraform workspace new {workspace}_{group}_gcore'
output, stderr = server_mod.subprocess_execute(cmd)
if stderr != '':
prov_common.show_error(stderr, group, workspace, provider)
else:
try:
if sql.add_server_gcore(
project, region, size, network_type, network_name, volume_size, ssh_name, workspace, oss, firewall,
provider, group, 'Creating', delete_on_termination, volume_type
):
prov_common.show_new_server(workspace, group, 'gcore')
except Exception as e:
print(e)
def edit_workspace() -> None:
workspace = form.getvalue('gcoreeditworkspace')
group = form.getvalue('gcore_edit_group')
provider = form.getvalue('gcore_edit_provider')
region = form.getvalue('gcore_edit_regions')
project = form.getvalue('gcore_edit_project')
size = form.getvalue('gcore_edit_size')
oss = form.getvalue('gcore_edit_oss')
ssh_name = form.getvalue('gcore_edit_ssh_name')
volume_size = form.getvalue('gcore_edit_volume_size')
volume_type = form.getvalue('gcore_edit_volume_type')
delete_on_termination = form.getvalue('gcore_edit_delete_on_termination')
network_type = form.getvalue('gcore_edit_network_type')
firewall = form.getvalue('gcore_edit_firewall')
network_name = form.getvalue('gcore_edit_network_name')
server_id = form.getvalue('server_id')
try:
if sql.update_server_gcore(
region, size, network_type, network_name, volume_size, ssh_name, workspace, oss, firewall,
provider, group, 'Editing', server_id, delete_on_termination, volume_type, project
):
try:
cmd = f'cd scripts/terraform/ && sudo terraform workspace select {workspace}_{group}_gcore'
output, stderr = server_mod.subprocess_execute(cmd)
except Exception as e:
print('error: ' + str(e))
if stderr != '':
prov_common.show_error(stderr, group, workspace, provider)
else:
print('ok')
except Exception as e:
print(e)