diff --git a/app/create_db.py b/app/create_db.py
index d18da350..d02efce8 100644
--- a/app/create_db.py
+++ b/app/create_db.py
@@ -144,7 +144,9 @@ def create_table(**kwargs):
`type` VARCHAR ( 64 ),
`group` VARCHAR ( 64 ),
`key` VARCHAR ( 64 ),
- `secret` VARCHAR ( 64 ),
+ `secret` VARCHAR ( 64 ),
+ `create_date` DATETIME default '0000-00-00 00:00:00',
+ `edit_date` DATETIME default '0000-00-00 00:00:00',
PRIMARY KEY(`id`)
);
CREATE TABLE IF NOT EXISTS provisioned_servers (
@@ -169,7 +171,7 @@ def create_table(**kwargs):
`date` DATETIME default '0000-00-00 00:00:00',
`IP` VARCHAR ( 64 ),
`last_error` VARCHAR ( 256 ),
- `delete_on_termination` INTEGER
+ `delete_on_termination` INTEGER,
PRIMARY KEY(`id`)
);
"""
@@ -1051,9 +1053,29 @@ def update_db_v_51(**kwargs):
con.close()
+def update_db_v_5_0_1(**kwargs):
+ con, cur = get_cur()
+ sql = list()
+ sql.append("alter table provisioned_servers add column project VARCHAR ( 64 )")
+ sql.append("alter table provisioned_servers add column network_name VARCHAR ( 64 )")
+ sql.append("alter table provisioned_servers add column volume_type VARCHAR ( 64 )")
+ sql.append("alter table provisioned_servers add column name_template VARCHAR ( 64 )")
+ for i in sql:
+ try:
+ cur.execute(i)
+ con.commit()
+ except sqltool.Error as e:
+ pass
+ else:
+ if kwargs.get('silent') != 1:
+ print('Updating... DB has been updated to version 5.0.1')
+ cur.close()
+ con.close()
+
+
def update_ver():
con, cur = get_cur()
- sql = """update version set version = '5.0.1.0'; """
+ sql = """update version set version = '5.0.2.0'; """
try:
cur.execute(sql)
con.commit()
@@ -1089,6 +1111,7 @@ def update_all():
update_db_v_4_5_9()
update_db_v_5()
update_db_v_51()
+ update_db_v_5_0_1()
update_ver()
@@ -1118,6 +1141,7 @@ def update_all_silent():
update_db_v_4_5_9(silent=1)
update_db_v_5(silent=1)
update_db_v_51(silent=1)
+ update_db_v_5_0_1(silent=1)
update_ver()
diff --git a/app/options.py b/app/options.py
index 0a854422..050a4808 100644
--- a/app/options.py
+++ b/app/options.py
@@ -2348,7 +2348,7 @@ if form.getvalue('show_versions'):
if form.getvalue('get_group_name_by_id'):
print(sql.get_group_name_by_id(form.getvalue('get_group_name_by_id')))
-if form.getvalue('do_new_name') or form.getvalue('aws_new_name'):
+if form.getvalue('do_new_name') or form.getvalue('aws_new_name') or form.getvalue('gcore_new_name'):
funct.check_user_group()
is_add = False
if form.getvalue('do_new_name'):
@@ -2368,6 +2368,15 @@ if form.getvalue('do_new_name') or form.getvalue('aws_new_name'):
if sql.add_provider_aws(provider_name, provider_group, provider_token, provider_secret):
is_add = True
+ elif form.getvalue('gcore_new_name'):
+ provider_name = form.getvalue('gcore_new_name')
+ provider_group = form.getvalue('gcore_new_group')
+ provider_token = form.getvalue('gcore_new_user')
+ provider_pass = form.getvalue('gcore_new_pass')
+
+ if sql.add_provider_gcore(provider_name, provider_group, provider_token, provider_pass):
+ is_add = True
+
if is_add:
from jinja2 import Environment, FileSystemLoader
import http.cookies
@@ -2393,7 +2402,7 @@ if form.getvalue('providerdel'):
print('Ok')
funct.logging('localhost', 'Provider has been deleted', provisioning=1)
-if form.getvalue('awsinit') or form.getvalue('doinit'):
+if form.getvalue('awsinit') or form.getvalue('doinit') or form.getvalue('gcoreinitserver'):
funct.check_user_group()
cmd = 'cd scripts/terraform/ && sudo terraform init -upgrade -no-color'
output, stderr = funct.subprocess_execute(cmd)
@@ -2417,6 +2426,7 @@ if form.getvalue('awsvars') or form.getvalue('awseditvars'):
oss = form.getvalue('aws_create_oss')
ssh_name = form.getvalue('aws_create_ssh_name')
volume_size = form.getvalue('aws_create_volume_size')
+ volume_type = form.getvalue('aws_create_volume_type')
delete_on_termination = form.getvalue('aws_create_delete_on_termination')
floating_ip = form.getvalue('aws_create_floating_net')
firewall = form.getvalue('aws_create_firewall')
@@ -2430,6 +2440,7 @@ if form.getvalue('awsvars') or form.getvalue('awseditvars'):
oss = form.getvalue('aws_editing_oss')
ssh_name = form.getvalue('aws_editing_ssh_name')
volume_size = form.getvalue('aws_editing_volume_size')
+ volume_type = form.getvalue('aws_editing_volume_type')
delete_on_termination = form.getvalue('aws_editing_delete_on_termination')
floating_ip = form.getvalue('aws_editing_floating_net')
firewall = form.getvalue('aws_editing_firewall')
@@ -2439,9 +2450,9 @@ if form.getvalue('awsvars') or form.getvalue('awseditvars'):
cmd = 'cd scripts/terraform/ && sudo ansible-playbook var_generator.yml -i inventory -e "region={} ' \
'group={} size={} os={} floating_ip={} volume_size={} server_name={} AWS_ACCESS_KEY={} ' \
- 'AWS_SECRET_KEY={} firewall={} public_ip={} ssh_name={} delete_on_termination={} ' \
+ 'AWS_SECRET_KEY={} firewall={} public_ip={} ssh_name={} delete_on_termination={} volume_type={} ' \
'cloud=aws"'.format(region, group, size, oss, floating_ip, volume_size, awsvars, aws_key, aws_secret,
- firewall, public_ip, ssh_name, delete_on_termination)
+ firewall, public_ip, ssh_name, delete_on_termination, volume_type)
output, stderr = funct.subprocess_execute(cmd)
if stderr != '':
@@ -2543,7 +2554,7 @@ if form.getvalue('doworkspace'):
user, user_id, role, token, servers = funct.get_users_params()
new_server = sql.select_provisioned_servers(new=workspace, group=group, type='do')
- env = Environment(loader=FileSystemLoader('templates'))
+ env = Environment(extensions=["jinja2.ext.do"], loader=FileSystemLoader('templates'))
template = env.get_template('ajax/provisioning/provisioned_servers.html')
template = template.render(servers=new_server,
groups=sql.select_groups(),
@@ -2610,6 +2621,7 @@ if form.getvalue('awsworkspace'):
oss = form.getvalue('aws_create_oss')
ssh_name = form.getvalue('aws_create_ssh_name')
volume_size = form.getvalue('aws_create_volume_size')
+ volume_type = form.getvalue('aws_create_volume_type')
delete_on_termination = form.getvalue('aws_create_delete_on_termination')
floating_ip = form.getvalue('aws_create_floating_net')
firewall = form.getvalue('aws_create_firewall')
@@ -2628,14 +2640,14 @@ if form.getvalue('awsworkspace'):
print('error: ' + stderr)
else:
if sql.add_server_aws(region, size, public_ip, floating_ip, volume_size, ssh_name, workspace, oss, firewall,
- provider, group, 'Creating', delete_on_termination):
+ provider, group, 'Creating', delete_on_termination, volume_type):
from jinja2 import Environment, FileSystemLoader
user, user_id, role, token, servers = funct.get_users_params()
new_server = sql.select_provisioned_servers(new=workspace, group=group, type='aws')
- env = Environment(loader=FileSystemLoader('templates'))
+ env = Environment(extensions=["jinja2.ext.do"], loader=FileSystemLoader('templates'))
template = env.get_template('ajax/provisioning/provisioned_servers.html')
template = template.render(servers=new_server,
groups=sql.select_groups(),
@@ -2654,13 +2666,15 @@ if form.getvalue('awseditworkspace'):
oss = form.getvalue('aws_editing_oss')
ssh_name = form.getvalue('aws_editing_ssh_name')
volume_size = form.getvalue('aws_editing_volume_size')
+ volume_type = form.getvalue('aws_editing_volume_type')
delete_on_termination = form.getvalue('aws_editing_delete_on_termination')
floating_ip = form.getvalue('aws_editing_floating_net')
firewall = form.getvalue('aws_editing_firewall')
public_ip = form.getvalue('aws_editing_public_ip')
server_id = form.getvalue('server_id')
- if sql.update_server_aws(region, size, public_ip, floating_ip, volume_size, ssh_name, workspace, oss, firewall, provider, group, 'Editing', server_id, delete_on_termination):
+ if sql.update_server_aws(region, size, public_ip, floating_ip, volume_size, ssh_name, workspace, oss, firewall,
+ provider, group, 'Editing', server_id, delete_on_termination, volume_type):
try:
cmd = 'cd scripts/terraform/ && sudo terraform workspace select ' + workspace + '_' + group + '_aws'
@@ -2678,7 +2692,14 @@ if form.getvalue('awseditworkspace'):
else:
print('ok')
-if form.getvalue('awsprovisining') or form.getvalue('awseditingprovisining') or form.getvalue('doprovisining') or form.getvalue('doeditprovisining'):
+if (
+ form.getvalue('awsprovisining') or
+ form.getvalue('awseditingprovisining') or
+ form.getvalue('doprovisining') or
+ form.getvalue('doeditprovisining') or
+ form.getvalue('gcoreprovisining') or
+ form.getvalue('gcoreeditgprovisining')
+ ):
funct.check_user_group()
if form.getvalue('awsprovisining'):
workspace = form.getvalue('awsprovisining')
@@ -2708,6 +2729,20 @@ if form.getvalue('awsprovisining') or form.getvalue('awseditingprovisining') or
action = 'modified'
cloud = 'do'
state_name = 'digitalocean_droplet'
+ elif form.getvalue('gcoreprovisining'):
+ workspace = form.getvalue('gcoreprovisining')
+ group = form.getvalue('gcore_create_group')
+ provider_id = form.getvalue('gcore_create_provider')
+ action = 'created'
+ cloud = 'gcore'
+ state_name = 'gcore_instance'
+ elif form.getvalue('gcoreeditgprovisining'):
+ workspace = form.getvalue('gcoreeditgprovisining')
+ group = form.getvalue('gcore_edit_group')
+ provider_id = form.getvalue('gcore_edit_provider')
+ action = 'modified'
+ cloud = 'gcore'
+ state_name = 'gcore_instance'
tfvars = workspace + '_'+group+'_' + cloud + '.tfvars'
cmd = 'cd scripts/terraform/ && sudo terraform apply -auto-approve -no-color -input=false -target=module.' + cloud + '_module -var-file vars/' + tfvars
@@ -2737,6 +2772,13 @@ if form.getvalue('awsprovisining') or form.getvalue('awseditingprovisining') or
ips += ' '
print(ips)
sql.update_provisioning_server_status('Created', group, workspace, provider_id, update_ip=ips)
+
+ if cloud == 'gcore':
+ cmd = 'cd scripts/terraform/ && sudo terraform state show module.gcore_module.gcore_instance.hapwi|grep "name"|grep -v -e "_name\|name_" |head -1 |awk -F"\\\"" \'{print $2}\''
+ output, stderr = funct.subprocess_execute(cmd)
+ print(':'+output[0])
+ sql.update_provisioning_server_gcore_name(workspace, output[0], group, provider_id)
+
funct.logging('localhost', 'Server ' + workspace + ' has been ' + action, provisioning=1)
if form.getvalue('provisiningdestroyserver'):
@@ -2774,15 +2816,169 @@ if form.getvalue('provisiningdestroyserver'):
funct.logging('localhost', 'Server has been destroyed', provisioning=1)
sql.delete_provisioned_servers(server_id)
+if form.getvalue('gcorevars') or form.getvalue('gcoreeditvars'):
+ 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')
+
+ gcore_user, gcore_pass = sql.select_gcore_provider(provider)
+
+ 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 = funct.subprocess_execute(cmd)
+ if stderr != '':
+ print('error: ' + stderr)
+ else:
+ print('ok')
+
+if form.getvalue('gcorevalidate') or form.getvalue('gcoreeditvalidate'):
+ if form.getvalue('gcorevalidate'):
+ workspace = form.getvalue('gcorevalidate')
+ group = form.getvalue('gcore_create_group')
+ elif form.getvalue('gcoreeditvalidate'):
+ workspace = form.getvalue('gcoreeditvalidate')
+ group = form.getvalue('gcore_edit_group')
+
+ cmd = 'cd scripts/terraform/ && sudo terraform plan -no-color -input=false -target=module.gcore_module -var-file vars/' + workspace + '_'+group+'_gcore.tfvars'
+ output, stderr = funct.subprocess_execute(cmd)
+ if stderr != '':
+ print('error: ' + stderr)
+ else:
+ print('ok')
+
+if form.getvalue('gcoreworkspace'):
+ 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 = 'cd scripts/terraform/ && sudo terraform workspace new ' + workspace + '_' + group + '_gcore'
+ output, stderr = funct.subprocess_execute(cmd)
+
+ if stderr != '':
+ stderr = stderr.strip()
+ stderr = repr(stderr)
+ stderr = stderr.replace("'", "")
+ stderr = stderr.replace("\'", "")
+ sql.update_provisioning_server_status('Error', group, workspace, provider)
+ sql.update_provisioning_server_error(stderr, group, workspace, provider)
+ print('error: ' + stderr)
+ else:
+ 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):
+
+ from jinja2 import Environment, FileSystemLoader
+
+ user, user_id, role, token, servers = funct.get_users_params()
+ new_server = sql.select_provisioned_servers(new=workspace, group=group, type='gcore')
+
+ env = Environment(extensions=["jinja2.ext.do"], loader=FileSystemLoader('templates'))
+ template = env.get_template('ajax/provisioning/provisioned_servers.html')
+ template = template.render(servers=new_server,
+ groups=sql.select_groups(),
+ user_group=group,
+ providers=sql.select_providers(group),
+ role=role,
+ adding=1)
+ print(template)
+
+if form.getvalue('gcoreeditworkspace'):
+ 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')
+
+ 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 = 'cd scripts/terraform/ && sudo terraform workspace select ' + workspace + '_' + group + '_gcore'
+ output, stderr = funct.subprocess_execute(cmd)
+ except Exception as e:
+ print('error: ' + str(e))
+
+ if stderr != '':
+ stderr = stderr.strip()
+ stderr = repr(stderr)
+ stderr = stderr.replace("'", "")
+ stderr = stderr.replace("\'", "")
+ sql.update_provisioning_server_error(stderr, group, workspace, provider)
+ print('error: ' + stderr)
+ else:
+ print('ok')
+
if form.getvalue('editAwsServer'):
funct.check_user_group()
server_id = form.getvalue('editAwsServer')
user_group = form.getvalue('editAwsGroup')
from jinja2 import Environment, FileSystemLoader
- env = Environment(loader=FileSystemLoader('templates'))
+ env = Environment(extensions=["jinja2.ext.do"], loader=FileSystemLoader('templates'))
template = env.get_template('ajax/provisioning/aws_edit_dialog.html')
- template = template.render(server=sql.select_aws_server(server_id=server_id), providers=sql.select_providers(user_group))
+ template = template.render(server=sql.select_aws_server(server_id=server_id), providers=sql.select_providers(int(user_group)))
+ print(template)
+
+if form.getvalue('editGcoreServer'):
+ funct.check_user_group()
+ server_id = form.getvalue('editGcoreServer')
+ user_group = form.getvalue('editGcoreGroup')
+ from jinja2 import Environment, FileSystemLoader
+
+ env = Environment(extensions=["jinja2.ext.do"], loader=FileSystemLoader('templates'))
+ template = env.get_template('ajax/provisioning/gcore_edit_dialog.html')
+ template = template.render(server=sql.select_gcore_server(server_id=server_id), providers=sql.select_providers(int(user_group)))
print(template)
if form.getvalue('editDoServer'):
@@ -2791,9 +2987,9 @@ if form.getvalue('editDoServer'):
user_group = form.getvalue('editDoGroup')
from jinja2 import Environment, FileSystemLoader
- env = Environment(loader=FileSystemLoader('templates'))
+ env = Environment(extensions=["jinja2.ext.do"], loader=FileSystemLoader('templates'))
template = env.get_template('ajax/provisioning/do_edit_dialog.html')
- template = template.render(server=sql.select_do_server(server_id=server_id), providers=sql.select_providers(user_group))
+ template = template.render(server=sql.select_do_server(server_id=server_id), providers=sql.select_providers(int(user_group)))
print(template)
if form.getvalue('edit_do_provider'):
@@ -2806,6 +3002,17 @@ if form.getvalue('edit_do_provider'):
print('ok')
funct.logging('localhost', 'Provider has been renamed. New name is ' + new_name, provisioning=1)
+if form.getvalue('edit_gcore_provider'):
+ funct.check_user_group()
+ provider_id = form.getvalue('edit_gcore_provider')
+ new_name = form.getvalue('edit_gcore_provider_name')
+ new_user = form.getvalue('edit_gcore_provider_user')
+ new_pass = form.getvalue('edit_gcore_provider_pass')
+
+ if sql.update_gcore_provider(new_name, new_user, new_pass, provider_id):
+ print('ok')
+ funct.logging('localhost', 'Provider has been renamed. New name is ' + new_name, provisioning=1)
+
if form.getvalue('edit_aws_provider'):
funct.check_user_group()
provider_id = form.getvalue('edit_aws_provider')
diff --git a/app/sql.py b/app/sql.py
index 4e7d085f..e67f9acb 100644
--- a/app/sql.py
+++ b/app/sql.py
@@ -7,7 +7,7 @@ mysql_enable = funct.get_config_var('mysql', 'enable')
if mysql_enable == '1':
import mysql.connector as sqltool
else:
- db = "haproxy-wi.db"
+ db = "/var/www/haproxy-wi/app/haproxy-wi.db"
import sqlite3 as sqltool
@@ -34,10 +34,10 @@ def get_cur():
def add_user(user, email, password, role, activeuser, group):
con, cur = get_cur()
if password != 'aduser':
- sql = """INSERT INTO user (username, email, password, role, activeuser, 'groups')
+ sql = """INSERT INTO user (username, email, password, role, activeuser, `groups`)
VALUES ('%s', '%s', '%s', '%s', '%s', '%s')""" % (user, email, funct.get_hash(password), role, activeuser, group)
else:
- sql = """INSERT INTO user (username, email, role, ldap_user, activeuser, 'groups')
+ sql = """INSERT INTO user (username, email, role, ldap_user, activeuser, `groups`)
VALUES ('%s', '%s', '%s', '1', '%s', '%s')""" % (user, email, role, activeuser, group)
try:
cur.execute(sql)
@@ -792,6 +792,11 @@ def get_dick_permit(**kwargs):
group = cookie.get('group')
grp = group.value
user = get_user_id_by_uuid(user_id.value)
+ if kwargs.get('token'):
+ token = kwargs.get('token')
+ else:
+ token = ''
+ only_group = kwargs.get('only_group')
disable = ''
haproxy = ''
nginx = ''
@@ -813,10 +818,10 @@ def get_dick_permit(**kwargs):
if kwargs.get('keepalived'):
nginx = "and keepalived = 1"
- if funct.check_user_group():
+ if funct.check_user_group(token=token):
con, cur = get_cur()
- if grp == '1':
- sql = """ select * from servers where enable = 1 %s %s %s order by pos""" % (disable, type_ip, nginx)
+ if grp == '1' and not only_group:
+ sql = """ select * from servers where enable = 1 %s %s %s %s order by pos""" % (disable, type_ip, nginx, ip)
else:
sql = """ select * from servers where groups = '{group}' and (enable = 1 {disable}) {type_ip} {ip} {haproxy} {nginx} {keepalived} order by pos
""".format(group=grp, disable=disable, type_ip=type_ip, ip=ip, haproxy=haproxy, nginx=nginx, keepalived=keepalived)
@@ -1227,17 +1232,17 @@ def insert_mentrics(serv, curr_con, cur_ssl_con, sess_rate, max_sess_rate):
con.close()
-def select_waf_metrics_enable(id):
- con, cur = get_cur()
- sql = """ select waf.metrics from waf left join servers as serv on waf.server_id = serv.id where server_id = '%s' """ % id
- try:
- cur.execute(sql)
- except sqltool.Error as e:
- funct.out_error(e)
- else:
- return cur.fetchall()
- cur.close()
- con.close()
+# def select_waf_metrics_enable(id):
+# con, cur = get_cur()
+# sql = """ select waf.metrics from waf left join servers as serv on waf.server_id = serv.id where server_id = '%s' """ % id
+# try:
+# cur.execute(sql)
+# except sqltool.Error as e:
+# funct.out_error(e)
+# else:
+# return cur.fetchall()
+# cur.close()
+# con.close()
def select_waf_metrics_enable_server(ip):
@@ -1812,7 +1817,10 @@ def select_table_metrics():
def get_setting(param, **kwargs):
- user_group = funct.get_user_group(id=1)
+ try:
+ user_group = funct.get_user_group(id=1)
+ except Exception as e:
+ user_group = ''
if user_group == '' or param == 'lists_path' or param == 'ssl_local_path':
user_group = '1'
@@ -2426,6 +2434,192 @@ def select_geoip_country_codes():
return cur.fetchall()
+def insert_port_scanner_settings(server_id, user_group_id, enabled, notify, history):
+ con, cur = get_cur()
+ sql = """ insert into port_scanner_settings values('%s', '%s', '%s', '%s', '%s') """ % (server_id, user_group_id, enabled, notify, history)
+ try:
+ cur.execute(sql)
+ con.commit()
+ return True
+ except sqltool.Error as e:
+ funct.out_error(e)
+ con.rollback()
+ return False
+ finally:
+ cur.close()
+ con.close()
+
+
+def update_port_scanner_settings(server_id, user_group_id, enabled, notify, history):
+ con, cur = get_cur()
+ sql = """ update port_scanner_settings set
+ user_group_id = '%s',
+ enabled = '%s',
+ notify = '%s',
+ history = '%s'
+ where server_id = '%s' """ % (user_group_id, enabled, notify, history, server_id)
+ try:
+ cur.execute(sql)
+ con.commit()
+ except sqltool.Error as e:
+ funct.out_error(e)
+ con.rollback()
+ cur.close()
+ con.close()
+
+
+def select_port_scanner_settings(user_group):
+ con, cur = get_cur()
+ sql_group = ''
+ if user_group != 1:
+ sql_group = "where user_group_id = '%s'" % str(user_group)
+
+ sql = """select * from port_scanner_settings %s """ % sql_group
+
+ try:
+ cur.execute(sql)
+ except sqltool.Error as e:
+ funct.out_error(e)
+ else:
+ return cur.fetchall()
+ cur.close()
+ con.close()
+
+
+def select_port_scanner_settings_for_service():
+ con, cur = get_cur()
+ sql = """select * from port_scanner_settings """
+
+ try:
+ cur.execute(sql)
+ except sqltool.Error as e:
+ funct.out_error(e)
+ else:
+ return cur.fetchall()
+ cur.close()
+ con.close()
+
+
+def delete_port_scanner_settings(server_id):
+ con, cur = get_cur()
+ sql = """ delete from port_scanner_settings where server_id = '%s' """ % server_id
+
+ try:
+ cur.execute(sql)
+ con.commit()
+ except sqltool.Error as e:
+ con.rollback()
+ cur.close()
+ con.close()
+
+
+def insert_port_scanner_port(serv, user_group_id, port, service_name):
+ con, cur = get_cur()
+ if mysql_enable == '1':
+ sql = """ insert into port_scanner_ports values('%s', '%s', '%s', '%s', now()) """ % (serv, user_group_id, port, service_name)
+ else:
+ sql = """ insert into port_scanner_ports values('%s', '%s', '%s', '%s', datetime('now', 'localtime')) """ % (serv, user_group_id, port, service_name)
+ try:
+ cur.execute(sql)
+ con.commit()
+ except sqltool.Error as e:
+ funct.out_error(e)
+ con.rollback()
+ cur.close()
+ con.close()
+
+
+def select_ports(serv):
+ con, cur = get_cur()
+ sql = """select port from port_scanner_ports where serv = '%s' """ % serv
+
+ try:
+ cur.execute(sql)
+ except sqltool.Error as e:
+ funct.out_error(e)
+ else:
+ return cur.fetchall()
+ cur.close()
+ con.close()
+
+
+def select_port_name(serv, port):
+ con, cur = get_cur()
+ sql = """select service_name from port_scanner_ports where serv = '%s' and port = '%s' """ % (serv, port)
+
+ try:
+ cur.execute(sql)
+ except sqltool.Error as e:
+ funct.out_error(e)
+ else:
+ for port in cur.fetchall():
+ return port[0]
+ cur.close()
+ con.close()
+
+
+def select_count_opened_ports(serv):
+ con, cur = get_cur()
+ sql = """ select date, count(port) from port_scanner_ports where serv = '%s' """ % serv
+ try:
+ cur.execute(sql)
+ except sqltool.Error as e:
+ cur.close()
+ con.close()
+ return ""
+ else:
+ port = list()
+ for ports in cur.fetchall():
+ port.append([ports[1], ports[0]])
+ cur.close()
+ con.close()
+ return port
+
+
+def delete_ports(serv):
+ con, cur = get_cur()
+ sql = """ delete from port_scanner_ports where serv = '%s' """ % serv
+
+ try:
+ cur.execute(sql)
+ con.commit()
+ except sqltool.Error as e:
+ funct.out_error(e)
+ con.rollback()
+ cur.close()
+ con.close()
+
+
+def insert_port_scanner_history(serv, port, port_status, service_name):
+ con, cur = get_cur()
+ if mysql_enable == '1':
+ sql = """ insert into port_scanner_history values('%s', '%s', '%s', '%s', now()) """ % (serv, port, port_status, service_name)
+ else:
+ sql = """ insert into port_scanner_history values('%s', '%s', '%s', '%s', datetime('now', 'localtime')) """ % (serv, port, port_status, service_name)
+ try:
+ cur.execute(sql)
+ con.commit()
+ except sqltool.Error as e:
+ funct.out_error(e)
+ con.rollback()
+ cur.close()
+ con.close()
+
+
+def select_port_scanner_history(serv):
+ con, cur = get_cur()
+ sql = """select * from port_scanner_history where serv = '%s' """ % serv
+
+ try:
+ cur.execute(sql)
+ except sqltool.Error as e:
+ funct.out_error(e)
+ else:
+ return cur.fetchall()
+ cur.close()
+ con.close()
+
+
def add_provider_do(provider_name, provider_group, provider_token):
con, cur = get_cur()
if mysql_enable == '1':
@@ -2463,6 +2657,25 @@ def add_provider_aws(provider_name, provider_group, provider_key, provider_secre
con.close()
+def add_provider_gcore(provider_name, provider_group, provider_user, provider_pass):
+ con, cur = get_cur()
+
+ if mysql_enable == '1':
+ sql = """ insert into providers_creds (name, type, `group`, key, secret, create_date, edit_date) values ('%s', 'gcore', '%s', '%s', '%s', now(), now())""" % (provider_name, provider_group, provider_user, provider_pass)
+ else:
+ sql = """ insert into providers_creds (name, type, `group`, key, secret, create_date, edit_date) values ('%s', 'gcore', '%s', '%s', '%s', datetime('now', 'localtime'), datetime('now', 'localtime'))""" % (provider_name, provider_group, provider_user, provider_pass)
+
+ try:
+ cur.execute(sql)
+ return True
+ except sqltool.Error as e:
+ funct.out_error(e)
+ return False
+ finally:
+ cur.close()
+ con.close()
+
+
def select_providers(user_group, **kwargs):
con, cur = get_cur()
@@ -2503,20 +2716,20 @@ def delete_provider(provider_id):
con.close()
-def add_server_aws(region, instance_type, public_ip, floating_ip, volume_size, ssh_key_name, name, os, firewall, provider_id, group_id, status, delete_on_termination):
+def add_server_aws(region, instance_type, public_ip, floating_ip, volume_size, ssh_key_name, name, os, firewall, provider_id, group_id, status, delete_on_termination, volume_type):
con, cur = get_cur()
if mysql_enable == '1':
sql = """ insert into provisioned_servers
- (region, instance_type, public_ip, floating_ip, volume_size, ssh_key_name, name, os, firewall, provider_id, group_id, type, status, date, delete_on_termination)
- values ('%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', 'aws', '%s', now()), '%s'""" % (
- region, instance_type, public_ip, floating_ip, volume_size, ssh_key_name, name, os, firewall, provider_id,
+ (region, instance_type, public_ip, floating_ip, volume_size, volume_type, ssh_key_name, name, os, firewall, provider_id, group_id, type, status, date, delete_on_termination)
+ values ('%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', 'aws', '%s', now()), '%s'""" % (
+ region, instance_type, public_ip, floating_ip, volume_size, volume_type, ssh_key_name, name, os, firewall, provider_id,
group_id, status, delete_on_termination)
else:
sql = """ insert into provisioned_servers
- (region, instance_type, public_ip, floating_ip, volume_size, ssh_key_name, name, os, firewall, provider_id, group_id, type, status, date, delete_on_termination)
- values ('%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', 'aws', '%s', datetime('now', 'localtime'), '%s')""" % (
- region, instance_type, public_ip, floating_ip, volume_size, ssh_key_name, name, os, firewall, provider_id,
+ (region, instance_type, public_ip, floating_ip, volume_size, volume_type, ssh_key_name, name, os, firewall, provider_id, group_id, type, status, date, delete_on_termination)
+ values ('%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', 'aws', '%s', datetime('now', 'localtime'), '%s')""" % (
+ region, instance_type, public_ip, floating_ip, volume_size, volume_type, ssh_key_name, name, os, firewall, provider_id,
group_id, status, delete_on_termination)
try:
@@ -2530,6 +2743,33 @@ def add_server_aws(region, instance_type, public_ip, floating_ip, volume_size, s
con.close()
+def add_server_gcore(project ,region, instance_type, network_type, network_name, volume_size, ssh_key_name, name, os, firewall, provider_id, group_id, status, delete_on_termination, volume_type):
+ con, cur = get_cur()
+ if mysql_enable == '1':
+ sql = """ insert into provisioned_servers
+ (region, instance_type, public_ip, network_name, volume_size, volume_type, ssh_key_name, name, os, firewall, provider_id, group_id, type, status, date, delete_on_termination, project)
+ values ('%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', 'gcore', '%s', now()), '%s', '%s'""" % (
+ region, instance_type, network_type, network_name, volume_size, volume_type, ssh_key_name, name, os, firewall, provider_id,
+ group_id, status, delete_on_termination, project)
+
+ else:
+ sql = """ insert into provisioned_servers
+ (region, instance_type, public_ip, network_name, volume_size, volume_type, ssh_key_name, name, os, firewall, provider_id, group_id, type, status, date, delete_on_termination, project)
+ values ('%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', 'gcore', '%s', datetime('now', 'localtime'), '%s', '%s')""" % (
+ region, instance_type, network_type, network_name, volume_size, volume_type, ssh_key_name, name, os, firewall, provider_id,
+ group_id, status, delete_on_termination, project)
+
+ try:
+ cur.execute(sql)
+ return True
+ except sqltool.Error as e:
+ funct.out_error(e)
+ return False
+ finally:
+ cur.close()
+ con.close()
+
+
def add_server_do(region, size, privet_net, floating_ip, ssh_ids, ssh_key_name, name, oss, firewall, monitoring, backup, provider_id, group_id, status):
con, cur = get_cur()
if mysql_enable == '1':
@@ -2559,7 +2799,24 @@ def add_server_do(region, size, privet_net, floating_ip, ssh_ids, ssh_key_name,
def select_aws_server(server_id):
con, cur = get_cur()
- sql = """ select region, instance_type, public_ip, floating_ip, volume_size, ssh_key_name, name, os, firewall, provider_id, group_id, id, delete_on_termination
+ sql = """ select region, instance_type, public_ip, floating_ip, volume_size, ssh_key_name, name, os, firewall, provider_id, group_id, id, delete_on_termination, volume_type
+ from provisioned_servers where id = '%s' """ % server_id
+
+ try:
+ cur.execute(sql)
+ except sqltool.Error as e:
+ funct.out_error(e)
+ else:
+ return cur.fetchall()
+ finally:
+ cur.close()
+ con.close()
+
+
+def select_gcore_server(server_id):
+ con, cur = get_cur()
+ sql = """ select region, instance_type, public_ip, floating_ip, volume_size, ssh_key_name, name, os, firewall,
+ provider_id, group_id, id, delete_on_termination, project, network_name, volume_type, name_template
from provisioned_servers where id = '%s' """ % server_id
try:
@@ -2612,6 +2869,22 @@ def update_provisioning_server_status(status, user_group_id, name, provider_id,
con.close()
+def update_provisioning_server_gcore_name(name, template_name, user_group_id, provider_id):
+ con, cur = get_cur()
+
+ sql = """update provisioned_servers set name_template = '%s'
+ where group_id = '%s' and name = '%s' and provider_id = '%s' """ % (template_name, user_group_id, name, provider_id)
+
+ try:
+ cur.execute(sql)
+ con.commit()
+ except sqltool.Error as e:
+ funct.out_error(e)
+ con.rollback()
+ cur.close()
+ con.close()
+
+
def update_provisioning_server_error(status, user_group_id, name, provider_id):
con, cur = get_cur()
@@ -2628,7 +2901,7 @@ def update_provisioning_server_error(status, user_group_id, name, provider_id):
con.close()
-def update_server_aws(region, size, public_ip, floating_ip, volume_size, ssh_name, workspace, oss, firewall, provider, group, status, server_id, delete_on_termination):
+def update_server_aws(region, size, public_ip, floating_ip, volume_size, ssh_name, workspace, oss, firewall, provider, group, status, server_id, delete_on_termination, volume_type):
con, cur = get_cur()
sql = """ update provisioned_servers set
region = '%s',
@@ -2643,8 +2916,9 @@ def update_server_aws(region, size, public_ip, floating_ip, volume_size, ssh_nam
provider_id = '%s',
group_id = '%s',
status = '%s',
- delete_on_termination = '%s'
- where id = '%s' """ % (region, size, public_ip, floating_ip, volume_size, ssh_name, workspace, oss, firewall, provider, group, status, delete_on_termination, server_id)
+ delete_on_termination = '%s',
+ volume_type = '%s'
+ where id = '%s' """ % (region, size, public_ip, floating_ip, volume_size, ssh_name, workspace, oss, firewall, provider, group, status, delete_on_termination, volume_type, server_id)
try:
cur.execute(sql)
@@ -2659,6 +2933,39 @@ def update_server_aws(region, size, public_ip, floating_ip, volume_size, ssh_nam
con.close()
+def update_server_gcore(region, size, network_type, network_name, volume_size, ssh_name, workspace, oss, firewall, provider, group, status, server_id, delete_on_termination, volume_type, project):
+ con, cur = get_cur()
+ sql = """ update provisioned_servers set
+ region = '%s',
+ instance_type = '%s',
+ public_ip = '%s',
+ network_name = '%s',
+ volume_size = '%s',
+ ssh_key_name = '%s',
+ name = '%s',
+ os = '%s',
+ firewall = '%s',
+ provider_id = '%s',
+ group_id = '%s',
+ status = '%s',
+ delete_on_termination = '%s',
+ volume_type = '%s',
+ project = '%s'
+ where id = '%s' """ % (region, size, network_type, network_name, volume_size, ssh_name, workspace, oss, firewall, provider, group, status, delete_on_termination, volume_type, project, server_id)
+
+ try:
+ cur.execute(sql)
+ con.commit()
+ return True
+ except sqltool.Error as e:
+ funct.out_error(e)
+ con.rollback()
+ return False
+ finally:
+ cur.close()
+ con.close()
+
+
def update_server_do(size, privet_net, floating_ip, ssh_ids, ssh_name, oss, firewall, monitoring, backup, provider,
group, status, server_id):
con, cur = get_cur()
@@ -2706,7 +3013,7 @@ def delete_provisioned_servers(server_id):
def select_provisioned_servers(**kwargs):
con, cur = get_cur()
- sql = """select id, name, provider_id, type, group_id, instance_type, status, date, region, os, IP, last_error from provisioned_servers"""
+ sql = """select id, name, provider_id, type, group_id, instance_type, status, date, region, os, IP, last_error, name_template from provisioned_servers"""
if kwargs.get('all'):
sql = """select * from provisioned_servers where id = '%s' """ % kwargs.get('all')
@@ -2743,6 +3050,25 @@ def select_aws_provider(provider_id):
return aws_key, aws_secret
+def select_gcore_provider(provider_id):
+ con, cur = get_cur()
+ sql = """ select key, secret from providers_creds where id = '%s'""" % provider_id
+
+ try:
+ cur.execute(sql)
+ except sqltool.Error as e:
+ cur.close()
+ con.close()
+ return ""
+ else:
+ for p in cur.fetchall():
+ user_name = p[0]
+ password = p[1]
+ cur.close()
+ con.close()
+ return user_name, password
+
+
def select_do_provider(provider_id):
con, cur = get_cur()
sql = """ select key from providers_creds where id = '%s'""" % provider_id
@@ -2790,6 +3116,37 @@ def update_do_provider(new_name, new_token, provider_id):
con.close()
+def update_gcore_provider(new_name, new_user, new_pass, provider_id):
+ con, cur = get_cur()
+
+ if mysql_enable == '1':
+ sql = """ update providers_creds set
+ name = '%s',
+ key = '%s',
+ secret = '%s',
+ edit_date = now()
+ where id = '%s' """ % (new_name, new_user, new_pass, provider_id)
+ else:
+ sql = """ update providers_creds set
+ name = '%s',
+ key = '%s',
+ secret = '%s',
+ edit_date = datetime('now', 'localtime')
+ where id = '%s' """ % (new_name, new_user, new_pass, provider_id)
+
+ try:
+ cur.execute(sql)
+ con.commit()
+ return True
+ except sqltool.Error as e:
+ funct.out_error(e)
+ con.rollback()
+ return False
+ finally:
+ cur.close()
+ con.close()
+
+
def update_aws_provider(new_name, new_key, new_secret, provider_id):
con, cur = get_cur()
diff --git a/app/templates/ajax/provisioning/aws_edit_dialog.html b/app/templates/ajax/provisioning/aws_edit_dialog.html
index 5923b0f4..6c04c0c1 100644
--- a/app/templates/ajax/provisioning/aws_edit_dialog.html
+++ b/app/templates/ajax/provisioning/aws_edit_dialog.html
@@ -1,5 +1,7 @@
{% from 'include/input_macros.html' import input, select, checkbox %}
+{% from 'include/provisioning/variables.html' import aws_regions, aws_oss, aws_volume_type %}
{% for s in server %}
+{% set region_name = [] %}
{% include 'include/tr_validate_tips.html' %}
@@ -42,7 +44,13 @@
Region
- {{s.0}}
+ {% for key, value in aws_regions.items() %}
+ {% if s.0|int() == key|int() %}
+ {% do region_name.append(value) %}
+ {% endif %}
+ {% endfor %}
+ {{s.0}}
+ {{region_name.0}}
|
@@ -56,7 +64,7 @@
*
- {{input('aws_edit_size', size='30', value=s.1)}}
+ {{input('aws_edit_size', size='26', value=s.1)}}
@@ -68,11 +76,7 @@
*
|
- {% set oss = dict() %}
- {% set oss = {'centos-7':'Centos 7 x64','ubuntu-18.04':'Ubuntu 18.04 x64','ubuntu-18.10':'Ubuntu 18.10 x64',
- 'debian-10':'Debian 10 x86','debian-9':'Debian 9 x86','rhel-7':'RHEL 7 x86','rhel-8':'RHEL 8 x86',
- 'amazon-2_lts':'Amazon Linux 2 x86'} %}
- {{ select('aws_edit_oss', values=oss, first=s.7, disabled='false') }}
+ {{ select('aws_edit_oss', values=aws_oss, first=s.7, disabled='false') }}
|
@@ -81,7 +85,7 @@
*
- {{input('aws_edit_ssh_name', size='30', value=s.5)}}
+ {{input('aws_edit_ssh_name', size='26', value=s.5)}}
SSH key must exists in region where instance create
|
@@ -91,13 +95,29 @@
-
+ |
Volume size
*
|
- {{input('aws_edit_volume_size', size='30', value=s.4, type='number')}}
- Size in GB
+ {{input('aws_edit_volume_size', size='26', value=s.4, type='number')}}Gb
+ |
+
+
+
+ Volume type
+ *
+ |
+
+
|
diff --git a/app/templates/ajax/provisioning/do_edit_dialog.html b/app/templates/ajax/provisioning/do_edit_dialog.html
index 852f36e2..3b0d65ed 100644
--- a/app/templates/ajax/provisioning/do_edit_dialog.html
+++ b/app/templates/ajax/provisioning/do_edit_dialog.html
@@ -1,5 +1,7 @@
{% from 'include/input_macros.html' import input, select, checkbox %}
+{% from 'include/provisioning/variables.html' import do_regions, do_oss %}
{% for s in server %}
+{% set region_name = [] %}
{% include 'include/tr_validate_tips.html' %}
@@ -42,7 +44,13 @@
Region
- {{s.0}}
+ {% for key, value in do_regions.items() %}
+ {% if s.0|int() == key|int() %}
+ {% do region_name.append(value) %}
+ {% endif %}
+ {% endfor %}
+ {{s.0}}
+ {{region_name.0}}
|
@@ -63,10 +71,7 @@
*
- {% set oss = dict() %}
- {% set oss = {'centos-7-x64':'Centos 7 x64', 'centos-8-x64':'Centos 8 x64','ubuntu-18-04-x64':'Ubuntu 18.04 x64','ubuntu-20-04-x64':'Ubuntu 20.04 x64',
- 'ubuntu-20-10-x64':'Ubuntu 20.10 x64','debian-10-x64':'Debian 10 x86','debian-9-x64':'Debian 9 x86'} %}
- {{ select('do_edit_oss', values=oss, first=s.7, disabled='false') }}
+ {{ select('do_edit_oss', values=do_oss, first=s.7, disabled='false') }}
|
diff --git a/app/templates/ajax/provisioning/gcore_edit_dialog.html b/app/templates/ajax/provisioning/gcore_edit_dialog.html
new file mode 100644
index 00000000..a8fcd485
--- /dev/null
+++ b/app/templates/ajax/provisioning/gcore_edit_dialog.html
@@ -0,0 +1,244 @@
+{% from 'include/input_macros.html' import input, select, checkbox %}
+{% from 'include/provisioning/variables.html' import gcore_regions, gcore_volume_type %}
+{% for s in server %}
+{% set region_name = [] %}
+
+
+ {% include 'include/tr_validate_tips.html' %}
+
+
+
+
+
+ Server name
+ |
+
+ {{s.6}}({{s.16}})
+ |
+
+ {{input('gcore_edit_group', value=s.10, type='hidden')}}
+ {{input('gcore_edit_id', value=s.11, type='hidden')}}
+
+
+ Provider credentials
+ *
+ |
+
+
+ |
+
+
+
+ Region
+ |
+
+ {% for key, value in gcore_regions.items() %}
+ {% if s.0|int() == key|int() %}
+ {% do region_name.append(value) %}
+ {% endif %}
+ {% endfor %}
+ {{s.0}}
+ {{region_name.0}}
+ |
+
+
+
+ Project name
+ |
+
+ {{s.13}}
+ |
+
+
+
+
+
+
+ Flavor
+ *
+ |
+
+ {{input('gcore_edit_size', size='26', value=s.1)}}
+ |
+
+
+
+ OS
+ *
+ |
+
+ {% set oss = dict() %}
+ {% set oss = {"centos-7-1811-x64-qcow2": "Centos 7", "centos8-1911-x64": "Centos 8", "sles15-SP2": "SLES 15-SP2", "fedora-32-x64-qcow2": "Fedora 32", "fedora-33-x64-qcow2": "Fedora 33",
+ "fedora-coreos-32-x64": "Fedora CoreOS 32", "ubuntu-16.04-x64": "Ubuntu 16.04", "ubuntu-18.04-x64": "Ubuntu 18.04",
+ "ubuntu-20.04-x64": "Ubuntu 20.04", "ubuntu-20.10-x64": "Ubuntu 20.10", "debian-9.7-x64-qcow2": "Debian 9.7",
+ "debian-10.1-x64-qcow2": "Debian 10.1", "debian-10.3-x64-qcow2": "Debian 10.3"} %}
+ {{ select('gcore_edit_oss', values=oss, first=s.7, disabled='false') }}
+ |
+
+
+
+ SSH key pair name
+ *
+ |
+
+ {{input('gcore_edit_ssh_name', size='26', value=s.5)}}
+ SSH key must exists in region where instance edit
+ |
+
+
+
+
+
+
+ Volume size
+ *
+ |
+
+ {{input('gcore_edit_volume_size', size='26', value=s.4, type='number')}}Gb
+ |
+
+
+
+ Volume type
+ *
+ |
+
+
+ |
+
+
+ Delete on termination |
+
+ {% set checked='checked' %}
+ {% if s.12 == 'false' %}
+ {% set checked='' %}
+ {% endif %}
+ {{checkbox('gcore_edit_delete_on_termination', checked=checked)}}
+ Whether the volume should be destroyed on instance termination
+ |
+
+
+
+
+
+ Network Type |
+
+
+ |
+
+
+
+ Network name
+ *
+ |
+ {{input('gcore_edit_network_name', size='26', value=s.14)}} |
+
+
+ {% set checked='checked' %}
+ {% if s.8 == 'false' %}
+ {% set checked='' %}
+ {% endif %}
+ Firewall |
+
+ {{checkbox('gcore_edit_firewall', checked=checked)}}
+ HAProxy-WI will edit Security group and open 22, 443, 1999, 8085, 8086 ports. Otherwise all ports will be closed
+ |
+
+
+
+ Be aware: some changes may cause server re-creation. And all your data will be lost
+ |
+
+
+
+
+{% endfor %}
\ No newline at end of file
diff --git a/app/templates/ajax/provisioning/providers.html b/app/templates/ajax/provisioning/providers.html
index be96723a..a417b48e 100644
--- a/app/templates/ajax/provisioning/providers.html
+++ b/app/templates/ajax/provisioning/providers.html
@@ -9,6 +9,9 @@
{% elif p.2 == 'aws' %}
AWS
{% set onclickEditAction = 'editAwsProvider' %}
+ {% elif p.2 == 'gcore' %}
+ G-Core Labs
+ {% set onclickEditAction = 'editGcoreProvider' %}
{% endif %}
diff --git a/app/templates/ajax/provisioning/provisioned_servers.html b/app/templates/ajax/provisioning/provisioned_servers.html
index 304ff613..264f3aae 100644
--- a/app/templates/ajax/provisioning/provisioned_servers.html
+++ b/app/templates/ajax/provisioning/provisioned_servers.html
@@ -1,6 +1,38 @@
+{% from 'include/provisioning/variables.html' import gcore_regions, do_regions, aws_regions %}
{% for s in servers %}
+{% set region_name = [] %}
+{% if s.3 == 'do' %}
+ {% set provider_full_name = 'DigitalOcean' %}
+ {% set onclickEditAction = 'editDoServer' %}
+ {% for key, value in do_regions.items() %}
+ {% if s.8|int() == key|int() %}
+ {% do region_name.append(value) %}
+ {% endif %}
+ {% endfor %}
+ {% elif s.3 == 'aws' %}
+ {% set provider_full_name = 'AWS' %}
+ {% set onclickEditAction = 'editAwsServer' %}
+ {% for key, value in aws_regions.items() %}
+ {% if s.8|int() == key|int() %}
+ {% do region_name.append(value) %}
+ {% endif %}
+ {% endfor %}
+ {% elif s.3 == 'gcore' %}
+ {% set provider_full_name = 'G-Core Labs' %}
+ {% set onclickEditAction = 'editGcoreServer' %}
+ {% for key, value in gcore_regions.items() %}
+ {% if s.8|int() == key|int() %}
+ {% do region_name.append(value) %}
+ {% endif %}
+ {% endfor %}
+{% endif %}
- {{s.1}} |
+
+ {{s.1}}
+ {% if s.3 == 'gcore' %}
+ ({{s.12}})
+ {% endif %}
+ |
{% for p in providers %}
{% if p.0|int() == s.2|int() %}
@@ -29,17 +61,11 @@
{{user_group}}
{% endif %}
|
- {% if s.3 == 'do' %}
- DigitalOcean
- {% set onclickEditAction = 'editDoServer' %}
- {% elif s.3 == 'aws' %}
- AWS
- {% set onclickEditAction = 'editAwsServer' %}
- {% endif %}
+ {{provider_full_name}}
{{s.3}}
|
-
- {{s.8}}
+ |
+ {{region_name.0}}
|
{{s.9}}
@@ -51,8 +77,8 @@
{{s.5}}
|
- {% if s.6 == 'Created ' %}
- {% set style='сolor: green;' %}
+ {% if s.6 == 'Created' %}
+ {% set style='color: var(--green-color);' %}
{% elif s.6 == 'Error ' %}
{% set style='color: red;cursor: help;' %}
{% endif %}
diff --git a/app/templates/include/provisioning/creating_dialogs.html b/app/templates/include/provisioning/creating_dialogs.html
index 46003029..33eccd93 100644
--- a/app/templates/include/provisioning/creating_dialogs.html
+++ b/app/templates/include/provisioning/creating_dialogs.html
@@ -1,3 +1,4 @@
+{% from 'include/provisioning/variables.html' import gcore_regions, do_regions, aws_regions, aws_oss, do_oss, aws_volume_type, gcore_volume_type %}
{% include 'include/tr_validate_tips.html' %}
@@ -12,7 +13,7 @@
*
- {{input('do_create_server_name', required='required', size='30')}}
+ {{input('do_create_server_name', required='required', size='26')}}
The name must contain only URL safe characters, and no path separators
|
@@ -54,12 +55,7 @@
*
- {% set regions = dict() %}
- {% set regions = {'nyc1':'New York 1','nyc2':'New York 2','nyc3':'New York 3',
- 'ams1':'Amsterdam 1','ams2':'Amsterdam 2','ams3':'Amsterdam 3',
- 'sfo1':'San Francisco 1','sfo2':'San Francisco 2','sfo3':'San Francisco 3',
- 'sgp1':'Singapore 1','lon1':'London 1','fra1':'Frankfurt 1','tor1':'Toronto 1', 'blr1':'Bangalore 1'} %}
- {{ select('do_create_regions', values=regions) }}
+ {{ select('do_create_regions', values=do_regions) }}
Not all regions may be active
|
@@ -73,7 +69,44 @@
Size
*
- {{input('do_create_size', required='required', size='30')}} |
+
+
+ {{input('do_create_size_text', size='26', style='display: none')}}
+ Enter manually
+ Change to select
+ |
@@ -81,10 +114,7 @@
*
|
- {% set oss = dict() %}
- {% set oss = {'centos-7-x64':'Centos 7 x64', 'centos-8-x64':'Centos 8 x64','ubuntu-18-04-x64':'Ubuntu 18.04 x64','ubuntu-20-04-x64':'Ubuntu 20.04 x64',
- 'ubuntu-20-10-x64':'Ubuntu 20.10 x64','debian-10-x64':'Debian 10 x86','debian-9-x64':'Debian 9 x86'} %}
- {{ select('do_create_oss', values=oss) }}
+ {{ select('do_create_oss', values=do_oss) }}
|
@@ -106,7 +136,7 @@
*
- {{input('do_create_ssh_ids', size='30')}}
+ {{input('do_create_ssh_ids', size='26')}}
List comma separated. Required if SSH key name is empty
|
@@ -116,7 +146,7 @@
*
- {{input('do_create_ssh_name', size='30')}}
+ {{input('do_create_ssh_name', size='26')}}
Required if SSH key ids is empty
|
@@ -164,7 +194,7 @@
*
- {{input('aws_create_server_name', required='required', size='30')}}
+ {{input('aws_create_server_name', required='required', size='26')}}
The name must contain only URL safe characters, and no path separators
|
@@ -206,15 +236,7 @@
*
- {% set regions = dict() %}
- {% set regions = {'us-east-1':'US East (N. Virginia)','us-east-2':'US East (Ohio)','us-west-1':'US West (N. California)',
- 'us-west-2':'US West (Oregon)','af-south-1':'Africa (Cape Town)','ap-east-1':'Asia Pacific (Hong Kong)',
- 'ap-south-1':'Asia Pacific (Mumbai)','ap-northeast-2':'Asia Pacific (Seoul)','ap-southeast-1':'Asia Pacific (Singapore)',
- 'ap-southeast-2':'Asia Pacific (Sydney)','ap-northeast-1':'Asia Pacific (Tokyo)','ca-central-1':'Canada (Central)',
- 'eu-central-1':'Europe (Frankfurt)', 'eu-west-1':'Europe (Ireland)', 'eu-west-2':'Europe (London)',
- 'eu-south-1':'Europe (Milan)', 'eu-west-3':'Europe (Paris)', 'eu-north-1':'Europe (Stockholm)',
- 'me-south-1':'Middle East (Bahrain)', 'sa-east-1':'South America (São Paulo)'} %}
- {{ select('aws_create_regions', values=regions) }}
+ {{ select('aws_create_regions', values=aws_regions) }}
Not all regions may be active
|
@@ -229,7 +251,7 @@
*
- {{input('aws_create_size', required='required', size='30')}}
+ {{input('aws_create_size', required='required', size='26')}}
@@ -241,11 +263,7 @@
*
|
- {% set oss = dict() %}
- {% set oss = {'centos-7':'Centos 7 x64','ubuntu-18.04':'Ubuntu 18.04 x64','ubuntu-18.10':'Ubuntu 18.10 x64',
- 'debian-10':'Debian 10 x86','debian-9':'Debian 9 x86','rhel-7':'RHEL 7 x86','rhel-8':'RHEL 8 x86',
- 'amazon-2_lts':'Amazon Linux 2 x86'} %}
- {{ select('aws_create_oss', values=oss) }}
+ {{ select('aws_create_oss', values=aws_oss) }}
|
@@ -254,7 +272,7 @@
*
- {{input('aws_create_ssh_name', size='30')}}
+ {{input('aws_create_ssh_name', size='26')}}
SSH key must exists in region where instance create
|
@@ -264,13 +282,21 @@
-
+ |
Volume size
*
|
- {{input('aws_create_volume_size', size='30', value='10', type='number')}}
- Size in GB
+ {{input('aws_create_volume_size', size='26', value='10', type='number')}}Gb
+ |
+
+
+
+ Volume type
+ *
+ |
+
+ {{ select('aws_create_volume_type', values=aws_volume_type) }}
|
@@ -304,6 +330,200 @@
+
+
+ {% include 'include/tr_validate_tips.html' %}
+
+
+
+
+
+ Server name
+ *
+ |
+
+ {{input('gcore_create_server_name', required='required', size='26')}}
+ The name must contain only URL safe characters, and no path separators
+ |
+
+ {% if role == 1 %}
+
+
+ Group
+ *
+ |
+
+
+ |
+
+ {% else %}
+ {{input('gcore_create_group', value=groups, type='hidden')}}
+ {% endif %}
+
+
+ Provider credentials
+ *
+ |
+
+
+ |
+
+
+
+ Region
+ *
+ |
+
+ {{ select('gcore_create_regions', values=gcore_regions) }}
+ |
+
+
+
+ Project name
+ *
+ |
+
+ {{input('gcore_create_project_name', size='26', value='default')}}
+ |
+
+
+
+
+
+
+ Flavor
+ *
+ |
+
+
+ {{input('gcore_create_size_text', size='26', style='display: none')}}
+ Enter manually
+ Change to select
+ |
+
+
+
+ OS
+ *
+ |
+
+ {% set oss = dict() %}
+ {% set oss = {'centos-7-gcore':'Centos 7'} %}
+ {{ select('gcore_create_oss', values=oss) }}
+ |
+
+
+
+ SSH key pair name
+ *
+ |
+
+ {{input('gcore_create_ssh_name', size='26')}}
+ SSH key must exists in region where instance create
+ |
+
+
+
+
+
+
+ Volume size
+ *
+ |
+
+ {{input('gcore_create_volume_size', size='26', value='10', type='number')}}Gb
+ |
+
+
+
+ Volume type
+ *
+ |
+
+ {{ select('gcore_create_volume_type', values=gcore_volume_type) }}
+ |
+
+
+ Delete on termination |
+
+ {{checkbox('gcore_create_delete_on_termination', checked='checked')}}
+ Whether the volume should be destroyed on instance termination
+ |
+
+
+
+
+
+ Network Type |
+
+
+ |
+
+
+
+ Network name
+ *
+ |
+ {{input('gcore_create_network_name', size='26')}} |
+
+
+ Firewall |
+
+ {{checkbox('gcore_create_firewall', checked='checked')}}
+ HAProxy-WI will create Security group and open 22, 443, 1999, 8085, 8086 ports. Otherwise will be used the default SG
+ |
+
+
+
- Creating environment...
diff --git a/app/templates/include/provisioning/providers_dialogs.html b/app/templates/include/provisioning/providers_dialogs.html
index 4fbd0e5c..b13c6a78 100644
--- a/app/templates/include/provisioning/providers_dialogs.html
+++ b/app/templates/include/provisioning/providers_dialogs.html
@@ -1,5 +1,5 @@
{% set providers_for_choose = dict() %}
-{% set providers_for_choose = {'aws':'AWS','do':'DigitalOcean'} %}
+{% set providers_for_choose = {'aws':'AWS','do':'DigitalOcean', 'gcore':'G-Core Labs'} %}
{{ select('add_select_providers', values=providers_for_choose) }}
@@ -91,6 +91,49 @@
How to get the DigitalOcean token read here
+
+
+ {% include 'include/tr_validate_tips.html' %}
+
+
+ Provider name
+ *
+ |
+ {{input('gcore_new_name', required='required', size='30')}} |
+
+ {% if role == 1 %}
+
+
+ Group
+ *
+ |
+
+
+ |
+
+ {% else %}
+ {{input('gcore_new_group', value=groups, type='hidden')}}
+ {% endif %}
+
+
+ User name
+ *
+ |
+ {{input('gcore_new_user', required='required', size='30')}} |
+
+
+
+ Password
+ *
+ |
+ {{input('gcore_new_pass', required='required', type='password', size='30')}} |
+
+
+
{% include 'include/tr_validate_tips.html' %}
@@ -139,4 +182,32 @@
{{input('do_edit_provider_token', required='required', size='30')}} |
+
+
+
+ {% include 'include/tr_validate_tips.html' %}
+
+
+ Provider name
+ *
+ |
+ {{input('gcore_edit_provider_name', required='required', size='30')}} |
+
+ {{input('gcore_edit_provider_group', value=groups, type='hidden')}}
+ {{input('gcore_edit_provider_id', type='hidden')}}
+
+
+ User name
+ *
+ |
+ {{input('gcore_edit_provider_user', required='required', size='30')}} |
+
+
+
+ Password
+ *
+ |
+ {{input('gcore_edit_provider_password', required='required', type='password', size='30')}} |
+
+
\ No newline at end of file
diff --git a/app/templates/include/provisioning/variables.html b/app/templates/include/provisioning/variables.html
new file mode 100644
index 00000000..92b1fc04
--- /dev/null
+++ b/app/templates/include/provisioning/variables.html
@@ -0,0 +1,21 @@
+{% set gcore_regions = {'6':'Luxembourg','10':'Moscow','14':'Manassas', '18':'Singapore','22':'Khabarovsk'} %}
+{% set aws_regions = {'us-east-1':'US East (N. Virginia)','us-east-2':'US East (Ohio)','us-west-1':'US West (N. California)',
+ 'us-west-2':'US West (Oregon)','af-south-1':'Africa (Cape Town)','ap-east-1':'Asia Pacific (Hong Kong)',
+ 'ap-south-1':'Asia Pacific (Mumbai)','ap-northeast-2':'Asia Pacific (Seoul)','ap-southeast-1':'Asia Pacific (Singapore)',
+ 'ap-southeast-2':'Asia Pacific (Sydney)','ap-northeast-1':'Asia Pacific (Tokyo)','ca-central-1':'Canada (Central)',
+ 'eu-central-1':'Europe (Frankfurt)', 'eu-west-1':'Europe (Ireland)', 'eu-west-2':'Europe (London)',
+ 'eu-south-1':'Europe (Milan)', 'eu-west-3':'Europe (Paris)', 'eu-north-1':'Europe (Stockholm)',
+ 'me-south-1':'Middle East (Bahrain)', 'sa-east-1':'South America (São Paulo)'} %}
+{% set do_regions = {'nyc1':'New York 1','nyc2':'New York 2','nyc3':'New York 3', 'ams1':'Amsterdam 1','ams2':'Amsterdam 2',
+ 'ams3':'Amsterdam 3', 'sfo1':'San Francisco 1','sfo2':'San Francisco 2','sfo3':'San Francisco 3',
+ 'sgp1':'Singapore 1','lon1':'London 1','fra1':'Frankfurt 1','tor1':'Toronto 1', 'blr1':'Bangalore 1'} %}
+
+{% set aws_oss = {'centos-7':'Centos 7 x64','ubuntu-18.04':'Ubuntu 18.04 x64','ubuntu-18.10':'Ubuntu 18.10 x64',
+ 'debian-10':'Debian 10 x86','debian-9':'Debian 9 x86','rhel-7':'RHEL 7 x86','rhel-8':'RHEL 8 x86',
+ 'amazon-2_lts':'Amazon Linux 2 x86'} %}
+{% set do_oss = {'centos-7-x64':'Centos 7 x64', 'centos-8-x64':'Centos 8 x64','ubuntu-18-04-x64':'Ubuntu 18.04 x64',
+ 'ubuntu-20-04-x64':'Ubuntu 20.04 x64', 'ubuntu-20-10-x64':'Ubuntu 20.10 x64','debian-10-x64':'Debian 10 x86',
+ 'debian-9-x64':'Debian 9 x86'} %}
+
+{% set aws_volume_type = {'gp2':'gp2', 'gp3':'gp3', 'standard':'standard', 'io1':'io1', 'io2':'io2', 'sc1':'sc1', 'st1':'st1'} %}
+{% set gcore_volume_type = {'standard':'standard', 'ssd_hiiops':'ssd_hiiops', 'cold':'cold', 'ultra':'ultra'} %}
\ No newline at end of file
diff --git a/inc/provisioning.css b/inc/provisioning.css
index f7505562..bb7b87c0 100644
--- a/inc/provisioning.css
+++ b/inc/provisioning.css
@@ -1,7 +1,7 @@
.padding20{ width: 160px;}
.server-creating {padding-bottom: 10px;}
-.proccessing_done {color: green;}
-.proccessing, .processing_error {font-weight: bold; color: green;}
+.proccessing_done {color: var(--green-color);}
+.proccessing, .processing_error {font-weight: bold; color: var(--green-color);}
.proccessing::before {
display: none;
font-family: "Font Awesome 5 Solid";
diff --git a/inc/provisioning.js b/inc/provisioning.js
index 210314b5..a0da9608 100644
--- a/inc/provisioning.js
+++ b/inc/provisioning.js
@@ -14,6 +14,84 @@ $( function() {
$('#do_create_ssh_ids_tr').show();
}
});
+ $('#gcore_create_network_type').on('selectmenuchange', function (){
+ if ($('#gcore_create_network_type option:selected').val() == 'any_subnet') {
+ $('#gcore_any_subnet').show();
+ } else if ($('#gcore_create_network_type option:selected').val() == 'external') {
+ $('#gcore_any_subnet').hide();
+ }
+ });
+ $('#gcore_create_regions').on('selectmenuchange', function (){
+ if ($('#gcore_create_regions option:selected').val() == '6' || $('#gcore_create_regions option:selected').val() == '14') {
+ var newOptions = {
+ "centos-7-gcore": "Centos 7"
+ };
+ } else if ($('#gcore_create_regions option:selected').val() == '10') {
+ var newOptions = {
+ "centos-7-gcore": "Centos 7",
+ "sles15-SP2": "SLES 15-SP2"
+ };
+ } else if ($('#gcore_create_regions option:selected').val() == '18' || $('#gcore_create_regions option:selected').val() == '22') {
+ var newOptions = {
+ "centos-7-1811-x64-qcow2": "Centos 7",
+ "centos8-1911-x64": "Centos 8",
+ "sles15-SP2": "SLES 15-SP2",
+ "fedora-32-x64-qcow2": "Fedora 32",
+ "fedora-33-x64-qcow2": "Fedora 33",
+ "fedora-coreos-32-x64": "Fedora CoreOS 32",
+ "ubuntu-16.04-x64": "Ubuntu 16.04",
+ "ubuntu-18.04-x64": "Ubuntu 18.04",
+ "ubuntu-20.04-x64": "Ubuntu 20.04",
+ "ubuntu-20.10-x64": "Ubuntu 20.10",
+ "debian-9.7-x64-qcow2": "Debian 9.7",
+ "debian-10.1-x64-qcow2": "Debian 10.1",
+ "debian-10.3-x64-qcow2": "Debian 10.3"
+ };
+ }
+ var $el = $("#gcore_create_oss");
+ $el.empty();
+ $.each(newOptions, function(key,value) {
+ $el.append($("")
+ .attr("value", key).text(value));
+ });
+ $el.selectmenu("refresh");
+ });
+ $('#gcore-instance-enter').on('click', function() {
+ $('#gcore_create_size').css('display', 'none');
+ $('#gcore-instance-enter').css('display', 'none');
+ $('#gcore_create_size').attr('id', 'gcore_create_size_select');
+ $("#gcore_create_size_select" ).selectmenu( "destroy" );
+ $("#gcore_create_size_select" ).css('display', 'none');
+ $('#gcore_create_size_text').attr('id', 'gcore_create_size');
+ $('#gcore_create_size').css('display', 'inline');
+ $('#gcore-instance-enter-select').css('display', 'inline');
+ });
+ $('#gcore-instance-enter-select').on('click', function() {
+ $('#gcore_create_size').css('display', 'none');
+ $('#gcore_create_size').attr('id', 'gcore_create_size_text');
+ $('#gcore_create_size_select').attr('id', 'gcore_create_size');
+ $("#gcore_create_size" ).selectmenu();
+ $("#gcore-instance-enter-select" ).css('display', 'none');
+ $('#gcore-instance-enter').css('display', 'inline');
+ });
+ $('#do-instance-enter').on('click', function() {
+ $('#do_create_size').css('display', 'none');
+ $('#do-instance-enter').css('display', 'none');
+ $('#do_create_size').attr('id', 'do_create_size_select');
+ $("#do_create_size_select" ).selectmenu( "destroy" );
+ $("#do_create_size_select" ).css('display', 'none');
+ $('#do_create_size_text').attr('id', 'do_create_size');
+ $('#do_create_size').css('display', 'inline');
+ $('#do-instance-enter-select').css('display', 'inline');
+ });
+ $('#do-instance-enter-select').on('click', function() {
+ $('#do_create_size').css('display', 'none');
+ $('#do_create_size').attr('id', 'do_create_size_text');
+ $('#do_create_size_select').attr('id', 'do_create_size');
+ $("#do_create_size" ).selectmenu();
+ $("#do-instance-enter-select" ).css('display', 'none');
+ $('#do-instance-enter').css('display', 'inline');
+ });
});
var addProvidersChoosing = $( "#add_providers_choosing" ).dialog({
autoOpen: false,
@@ -83,6 +161,23 @@ var doProvider = $( "#do_provider" ).dialog({
}
}
});
+var gcoreProvider = $( "#gcore_provider" ).dialog({
+ autoOpen: false,
+ width: 574,
+ modal: true,
+ title: "Add G-Core Labs as provider",
+ buttons: {
+ "Add": function() {
+ addGcoreProvider($( this ));
+ clearTips();
+ },
+ Cancel: function() {
+ $( this ).dialog( "close" );
+ addProvidersChoosing.dialog('open');
+ clearTips();
+ }
+ }
+});
var doCreate = $( "#do_create" ).dialog({
autoOpen: false,
width: 574,
@@ -100,6 +195,23 @@ var doCreate = $( "#do_create" ).dialog({
}
}
});
+var gcoreCreate = $( "#gcore_create" ).dialog({
+ autoOpen: false,
+ width: 574,
+ modal: true,
+ title: "Create a new Instance in G-Core Labs",
+ buttons: {
+ "Create": function() {
+ gcoreCreateServer($(this));
+ clearTips();
+ },
+ Cancel: function() {
+ $( this ).dialog( "close" );
+ createProvidersChoosing.dialog('open');
+ clearTips();
+ }
+ }
+});
var awsCreate = $( "#aws_create" ).dialog({
autoOpen: false,
width: 574,
@@ -156,6 +268,8 @@ function addProvider(provider) {
awsProvider.dialog('open');
} else if (provider == 'do') {
doProvider.dialog('open');
+ } else if (provider == 'gcore') {
+ gcoreProvider.dialog('open');
} else {
toastr.error('Choose provider before adding');
}
@@ -165,6 +279,8 @@ function CreateServer(provider) {
awsCreate.dialog('open');
} else if (provider == 'do') {
doCreate.dialog('open');
+ } else if (provider == 'gcore') {
+ gcoreCreate.dialog('open');
} else {
toastr.error('Choose provider before creating server');
}
@@ -183,6 +299,23 @@ function doCreateServer(dialog_id) {
startCreatingServer('do');
}
}
+function gcoreCreateServer(dialog_id) {
+ var valid = true;
+ toastr.clear();
+ allFields = $( [] ).add( $('#gcore_create_server_name') ).add( $('#gcore_create_size') ).add( $('#gcore_create_volume_size') )
+ .add( $('#gcore_create_project_name') ).add( $('#gcore_create_ssh_name') );
+ allFields.removeClass( "ui-state-error" );
+ valid = valid && checkLength( $('#gcore_create_server_name'), "Server name", 1 );
+ valid = valid && checkLength( $('#gcore_create_size'), "Flavor", 1 );
+ valid = valid && checkLength( $('#gcore_create_project_name'), "Project", 1 );
+ valid = valid && checkLength( $('#gcore_create_ssh_name'), "SSH key pair name", 1 );
+ valid = valid && checkLength( $('#gcore_create_volume_size'), "Volume size ", 1 );
+ if (valid) {
+ clearTips();
+ dialog_id.dialog('close');
+ startCreatingServer('gcore');
+ }
+}
function awsCreateServer(dialog_id) {
var valid = true;
toastr.clear();
@@ -195,7 +328,7 @@ function awsCreateServer(dialog_id) {
valid = valid && checkLength( $('#aws_create_volume_size'), "Volume size", 1 );
if(valid) {
clearTips();
- dialog_id.dialog('destroy');
+ dialog_id.dialog('close');
startCreatingServer('aws');
}
}
@@ -222,6 +355,8 @@ function startCreatingServer(provider) {
awsInitServer();
} else if (provider == 'do') {
doInitServer();
+ } else if (provider == 'gcore') {
+ gcoreInitServer();
}
$.getScript("/inc/fontawesome.min.js");
}
@@ -232,6 +367,8 @@ function startEditingServer(provider, server_id) {
awsEditInitServer(server_id);
} else if (provider == 'do') {
doEditInitServer(server_id);
+ } else if (provider == 'gcore') {
+ gcoreEditInitServer(server_id);
}
$.getScript("/inc/fontawesome.min.js");
}
@@ -282,6 +419,7 @@ function awsVarsServer() {
aws_create_oss: $('#aws_create_oss').val(),
aws_create_ssh_name: $('#aws_create_ssh_name').val(),
aws_create_volume_size: $('#aws_create_volume_size').val(),
+ aws_create_volume_type: $('#aws_create_volume_type').val(),
delete_on_termination: aws_create_delete_on_termination,
aws_create_floating_net: aws_create_floating_net,
aws_create_firewall: aws_create_firewall,
@@ -347,6 +485,7 @@ function awsWorkspaceServer() {
aws_create_oss: $('#aws_create_oss option:selected').val(),
aws_create_ssh_name: $('#aws_create_ssh_name').val(),
aws_create_volume_size: $('#aws_create_volume_size').val(),
+ aws_create_volume_type: $('#aws_create_volume_type').val(),
aws_create_delete_on_termination: aws_create_delete_on_termination,
aws_create_floating_net: aws_create_floating_net,
aws_create_firewall: aws_create_firewall,
@@ -357,11 +496,7 @@ function awsWorkspaceServer() {
success: function( data ) {
data = data.replace(/\s+/g, ' ');
if (data.indexOf('error:') != '-1' && data.indexOf('Last error:') == '-1') {
- var server_id = $('#ajax-provisioning-body tr td span:regex(id, sever-ip-)').last().attr('id').split('-')[2]
showProvisioningError(data, '#creating-workspace', '#creating-validate', '#wait-mess', '#creating-error', '#creating-progress', 'aws');
- $('#sever-status-'+server_id).text('Error');
- $('#sever-status-'+server_id).attr('title', data);
- $('#sever-status-'+server_id).css('color', 'red');
} else {
showProvisioningProccess('#creating-validate', '#creating-workspace', '#creating-server', '80', '#creating-progress');
common_ajax_action_after_success('1', 'newserver', 'ajax-provisioning-body', data);
@@ -423,7 +558,7 @@ function awsEditInitServer(server_id) {
}
} );
}
-function awsEditingVarsServer(server_id, dialog_id) {
+function awsEditingVarsServer(server_id) {
var aws_edit_floating_net = 'false';
var aws_editing_firewall = 'false';
var aws_edit_public_ip = 'false';
@@ -450,6 +585,7 @@ function awsEditingVarsServer(server_id, dialog_id) {
aws_editing_oss: $('#aws_edit_oss option:selected').val(),
aws_editing_ssh_name: $('#aws_edit_ssh_name').val(),
aws_editing_volume_size: $('#aws_edit_volume_size').val(),
+ aws_editing_volume_type: $('#aws_edit_volume_type').val(),
aws_editing_delete_on_termination: aws_edit_delete_on_termination,
aws_editing_floating_net: aws_edit_floating_net,
aws_editing_firewall: aws_editing_firewall,
@@ -519,6 +655,7 @@ function awsEditWorkspaceServer(server_id) {
aws_editing_oss: $('#aws_edit_oss option:selected').val(),
aws_editing_ssh_name: $('#aws_edit_ssh_name').val(),
aws_editing_volume_size: $('#aws_edit_volume_size').val(),
+ aws_editing_volume_type: $('#aws_edit_volume_type').val(),
aws_editing_delete_on_termination: aws_edit_delete_on_termination,
aws_editing_floating_net: aws_edit_floating_net,
aws_editing_firewall: aws_editing_firewall,
@@ -659,6 +796,48 @@ function editAwsServer(id) {
}
} );
}
+function editGcoreServer(id) {
+ $.ajax( {
+ url: "options.py",
+ data: {
+ editGcoreServer: id,
+ editGcoreGroup: $('#server-group-'+id).text(),
+ token: $('#token').val()
+ },
+ type: "POST",
+ success: function( data ) {
+ data = data.replace(/\s+/g,' ');
+ if (data.indexOf('error: ') != '-1') {
+ toastr.error(data);
+ } else if (data.indexOf('warning: ') != '-1') {
+ toastr.clear();
+ toastr.warning(data);
+ } else {
+ $('#ajax').html(data);
+ var gcoreEdit = $( "#gcore_edit" ).dialog({
+ autoOpen: false,
+ width: 576,
+ modal: true,
+ title: "Editing G-Core Labs server: " + $('#server-name-'+id).text(),
+ close: function( event, ui ) {$( this ).dialog( "destroy" );},
+ buttons: {
+ "Edit": function() {
+ gcoreEditServer($(this), id);
+ },
+ Cancel: function() {
+ $( this ).dialog( "destroy" );
+ clearTips();
+ }
+ }
+ });
+ $( "select" ).selectmenu();
+ $( "input[type=checkbox]" ).checkboxradio();
+ $.getScript("/inc/fontawesome.min.js");
+ gcoreEdit.dialog('open');
+ }
+ }
+ } );
+}
function editDoServer(id) {
$.ajax( {
url: "options.py",
@@ -727,6 +906,19 @@ function add_do_button_after_server_created() {
} });
creatingServer.dialog("option", "buttons", buttons);
}
+function add_gcore_button_after_server_created() {
+ var buttons = creatingServer.dialog("option", "buttons");
+ $.extend(buttons, { Back: function() {
+ $( this ).dialog( "close" );
+ gcoreCreate.dialog( "open" );
+ cleanProvisioningProccess('#server_creating ul li', '#created-mess');
+ $('#wait-mess').show();
+ $('#edited-mess').html('');
+ $('#edited-mess').hide();
+ hideProvisioningError('#creating-error');
+ } });
+ creatingServer.dialog("option", "buttons", buttons);
+}
function add_button_after_server_edited(server_id) {
var buttons = editingServer.dialog("option", "buttons");
$.extend(buttons, { Back: function() {
@@ -740,6 +932,19 @@ function add_button_after_server_edited(server_id) {
} });
editingServer.dialog("option", "buttons", buttons);
}
+function add_gcore_button_after_server_edited(server_id) {
+ var buttons = editingServer.dialog("option", "buttons");
+ $.extend(buttons, { Back: function() {
+ $( this ).dialog( "close" );
+ editGcoreServer(server_id)
+ cleanProvisioningProccess('#server_editing ul li', '#edited-mess');
+ $('#wait-mess').show();
+ $('#edited-mess').html('');
+ $('#edited-mess').hide();
+ hideProvisioningError('#editing-error');
+ } });
+ editingServer.dialog("option", "buttons", buttons);
+}
function add_do_button_after_server_edited(server_id) {
var buttons = editingServer.dialog("option", "buttons");
$.extend(buttons, { Back: function() {
@@ -753,6 +958,19 @@ function add_do_button_after_server_edited(server_id) {
} });
editingServer.dialog("option", "buttons", buttons);
}
+function add_gcore_button_after_server_edited(server_id) {
+ var buttons = editingServer.dialog("option", "buttons");
+ $.extend(buttons, { Back: function() {
+ $( this ).dialog( "close" );
+ editGcoreServer(server_id);
+ cleanProvisioningProccess('#server_editing ul li', '#edited-mess');
+ $('#wait-mess').show();
+ $('#edited-mess').html('');
+ $('#edited-mess').hide();
+ hideProvisioningError('#editing-error');
+ } });
+ editingServer.dialog("option", "buttons", buttons);
+}
function remove_button_after_server_created() {
creatingServer.dialog("option",{buttons:{ Close: function() {
$( this ).dialog( "close" );
@@ -778,6 +996,8 @@ function showProvisioningError(data, step_id, prev_step_id, wait_mess, error_id,
add_button_after_server_created();
} else if (cloud == 'do') {
add_do_button_after_server_created();
+ } else if (cloud == 'gcore') {
+ add_gcore_button_after_server_created();
}
$.getScript("/inc/fontawesome.min.js");
}
@@ -837,6 +1057,39 @@ function addDoProvider(dialog_id) {
} );
}
}
+function addGcoreProvider(dialog_id) {
+ var valid = true;
+ toastr.clear();
+ allFields = $( [] ).add( $('#gcore_new_name') ).add( $('#gcore_new_name')).add( $('#gcore_new_pass') );
+ allFields.removeClass( "ui-state-error" );
+ valid = valid && checkLength( $('#gcore_new_name'), "Provider name", 1 );
+ valid = valid && checkLength( $('#gcore_new_name'), "User name", 1 );
+ valid = valid && checkLength( $('#gcore_new_pass'), "Password", 1 );
+ if (valid) {
+ $.ajax( {
+ url: "options.py",
+ data: {
+ gcore_new_name: $('#gcore_new_name').val(),
+ gcore_new_group: $('#do_new_group').val(),
+ gcore_new_user: $('#gcore_new_user').val(),
+ gcore_new_pass: $('#gcore_new_pass').val(),
+ token: $('#token').val()
+ },
+ type: "POST",
+ success: function( data ) {
+ data = data.replace(/\s+/g,' ');
+ if (data.indexOf('error:') != '-1') {
+ toastr.error(data);
+ } else {
+ var getId = new RegExp('[0-9]+');
+ var id = data.match(getId);
+ $('select:regex(id, gcore_create_provider)').append('').selectmenu("refresh");
+ common_ajax_action_after_success(dialog_id, 'newprovider', 'ajax-providers', data);
+ }
+ }
+ } );
+ }
+}
function addAwsProvider(dialog_id) {
var valid = true;
toastr.clear();
@@ -913,7 +1166,6 @@ var doEditProvider = $( "#do_edit_provider" ).dialog({
buttons: {
"Edit": function() {
doEditProviderSave();
- $( this ).dialog( "close" );
},
Cancel: function() {
$( this ).dialog( "close" );
@@ -928,32 +1180,103 @@ function editDoProvider(id) {
doEditProvider.dialog('open');
}
function doEditProviderSave() {
- id = $('#do_edit_provider_id').val();
- token = $('#do_edit_provider_token').val();
- new_name = $('#do_edit_provider_name').val();
- $.ajax( {
- url: "options.py",
- data: {
- edit_do_provider: id,
- edit_do_provider_name: new_name,
- edit_do_provider_token: token,
- token: $('#token').val()
- },
- type: "POST",
- success: function( data ) {
- data = data.replace(/\s+/g,' ');
- if(data == "ok ") {
- $("#provider-name-"+id).text(new_name);
- $("#provider-"+id).addClass( "update", 1000 );
- setTimeout(function() {
- $( "#provider-"+id ).removeClass( "update" );
- }, 2500 );
- $('#provider-edited-date-'+id).text(returnFormatedDate())
- } else if (data.indexOf('error:') != '-1') {
- toastr.error(data);
- }
- }
- } );
+ var valid = true;
+ toastr.clear();
+ allFields = $( [] ).add( $('#do_edit_provider_name')).add( $('#do_edit_provider_token') );
+ allFields.removeClass( "ui-state-error" );
+ valid = valid && checkLength( $('#do_edit_provider_name'), "Provider name", 1 );
+ valid = valid && checkLength( $('#do_edit_provider_token'), "Token", 1 );
+ if(valid) {
+ doEditProvider.dialog( "close" );
+ id = $('#do_edit_provider_id').val();
+ token = $('#do_edit_provider_token').val();
+ new_name = $('#do_edit_provider_name').val();
+ $.ajax({
+ url: "options.py",
+ data: {
+ edit_do_provider: id,
+ edit_do_provider_name: new_name,
+ edit_do_provider_token: token,
+ token: $('#token').val()
+ },
+ type: "POST",
+ success: function (data) {
+ data = data.replace(/\s+/g, ' ');
+ if (data == "ok ") {
+ $("#provider-name-" + id).text(new_name);
+ $("#provider-" + id).addClass("update", 1000);
+ setTimeout(function () {
+ $("#provider-" + id).removeClass("update");
+ }, 2500);
+ $('#provider-edited-date-' + id).text(returnFormatedDate())
+ } else if (data.indexOf('error:') != '-1') {
+ toastr.error(data);
+ }
+ }
+ });
+ }
+}
+var gcoreEditProvider = $( "#gcore_edit_provider" ).dialog({
+ autoOpen: false,
+ width: 574,
+ modal: true,
+ title: "Editing G-Core Labs provider",
+ buttons: {
+ "Edit": function() {
+ gcoreEditProviderSave();
+ },
+ Cancel: function() {
+ $( this ).dialog( "close" );
+ clearTips();
+ }
+ }
+});
+function editGcoreProvider(id) {
+ $('#gcore_edit_provider_id').val(id);
+ name = $('#provider-name-'+id).text();
+ $('#gcore_edit_provider_name').val(name);
+ gcoreEditProvider.dialog('open');
+}
+function gcoreEditProviderSave() {
+ var valid = true;
+ toastr.clear();
+ allFields = $( [] ).add( $('#gcore_edit_provider_name')).add( $('#gcore_edit_provider_user') ).add( $('#gcore_edit_provider_password'));
+ allFields.removeClass( "ui-state-error" );
+ valid = valid && checkLength( $('#gcore_edit_provider_name'), "User name", 1 );
+ valid = valid && checkLength( $('#gcore_edit_provider_user'), "Provider name", 1 );
+ valid = valid && checkLength( $('#gcore_edit_provider_password'), "Password", 1 );
+ if(valid) {
+ gcoreEditProvider.dialog('close');
+ clearTips();
+ id = $('#gcore_edit_provider_id').val();
+ username = $('#gcore_edit_provider_user').val();
+ pass = $('#gcore_edit_provider_password').val();
+ new_name = $('#gcore_edit_provider_name').val();
+ $.ajax({
+ url: "options.py",
+ data: {
+ edit_gcore_provider: id,
+ edit_gcore_provider_name: new_name,
+ edit_gcore_provider_user: username,
+ edit_gcore_provider_pass: pass,
+ token: $('#token').val()
+ },
+ type: "POST",
+ success: function (data) {
+ data = data.replace(/\s+/g, ' ');
+ if (data == "ok ") {
+ $("#provider-name-" + id).text(new_name);
+ $("#provider-" + id).addClass("update", 1000);
+ setTimeout(function () {
+ $("#provider-" + id).removeClass("update");
+ }, 2500);
+ $('#provider-edited-date-' + id).text(returnFormatedDate())
+ } else if (data.indexOf('error:') != '-1') {
+ toastr.error(data);
+ }
+ }
+ });
+ }
}
var awsEditProvider = $("#aws_edit_provider").dialog({
autoOpen: false,
@@ -963,7 +1286,6 @@ var awsEditProvider = $("#aws_edit_provider").dialog({
buttons: {
"Edit": function () {
awsEditProviderSave($(this));
- $( this ).dialog( "close" );
},
Cancel: function () {
$(this).dialog("close");
@@ -978,34 +1300,44 @@ function editAwsProvider(id) {
awsEditProvider.dialog('open');
}
function awsEditProviderSave() {
- id = $('#aws_edit_provider_id').val();
- new_name = $('#aws_edit_provider_name').val();
- key = $('#aws_edit_provider_key').val();
- secret = $('#aws_edit_provider_secret').val();
- $.ajax( {
- url: "options.py",
- data: {
- edit_aws_provider: id,
- edit_aws_provider_name: new_name,
- edit_aws_provider_key: key,
- edit_aws_provider_secret: secret,
- token: $('#token').val()
- },
- type: "POST",
- success: function( data ) {
- data = data.replace(/\s+/g,' ');
- if(data == "ok ") {
- $("#provider-name-"+id).text(new_name);
- $("#provider-"+id).addClass( "update", 1000 );
- $('#provider-edited-date-'+id).text(returnFormatedDate())
- setTimeout(function() {
- $( "#provider-"+id ).removeClass( "update" );
- }, 2500 );
- } else if (data.indexOf('error:') != '-1') {
- toastr.error(data);
- }
- }
- } );
+ var valid = true;
+ toastr.clear();
+ allFields = $( [] ).add( $('#aws_edit_provider_name')).add( $('#aws_edit_provider_key') ).add($('#aws_edit_provider_secret'));
+ allFields.removeClass( "ui-state-error" );
+ valid = valid && checkLength( $('#aws_edit_provider_name'), "Provider name", 1 );
+ valid = valid && checkLength( $('#aws_edit_provider_key'), "ACCESS_KEY", 1 );
+ valid = valid && checkLength( $('#aws_edit_provider_secret'), "ACCESS_SECRET", 1 );
+ if(valid) {
+ awsEditProvider.dialog("close");
+ id = $('#aws_edit_provider_id').val();
+ new_name = $('#aws_edit_provider_name').val();
+ key = $('#aws_edit_provider_key').val();
+ secret = $('#aws_edit_provider_secret').val();
+ $.ajax({
+ url: "options.py",
+ data: {
+ edit_aws_provider: id,
+ edit_aws_provider_name: new_name,
+ edit_aws_provider_key: key,
+ edit_aws_provider_secret: secret,
+ token: $('#token').val()
+ },
+ type: "POST",
+ success: function (data) {
+ data = data.replace(/\s+/g, ' ');
+ if (data == "ok ") {
+ $("#provider-name-" + id).text(new_name);
+ $("#provider-" + id).addClass("update", 1000);
+ $('#provider-edited-date-' + id).text(returnFormatedDate())
+ setTimeout(function () {
+ $("#provider-" + id).removeClass("update");
+ }, 2500);
+ } else if (data.indexOf('error:') != '-1') {
+ toastr.error(data);
+ }
+ }
+ });
+ }
}
function doEditServer(dialog_id, server_id) {
var valid = true;
@@ -1339,11 +1671,7 @@ function doWorkspaceServer() {
success: function( data ) {
data = data.replace(/\s+/g, ' ');
if (data.indexOf('error:') != '-1' && data.indexOf('Last error:') == '-1') {
- var server_id = $('#ajax-provisioning-body tr td span:regex(id, sever-ip-)').last().attr('id').split('-')[2]
showProvisioningError(data, '#creating-workspace', '#creating-validate', '#wait-mess', '#creating-error', '#creating-progress', 'do');
- $('#sever-status-'+server_id).text('Error');
- $('#sever-status-'+server_id).attr('title', data);
- $('#sever-status-'+server_id).css('color', 'red');
} else {
showProvisioningProccess('#creating-validate', '#creating-workspace', '#creating-server', '80', '#creating-progress');
common_ajax_action_after_success('1', 'newserver', 'ajax-provisioning-body', data);
@@ -1382,8 +1710,347 @@ function doProvisiningServer() {
}
} );
}
+function gcoreInitServer() {
+ $('#creating-init').addClass('proccessing');
+ $.ajax( {
+ url: "options.py",
+ data: {
+ gcoreinitserver: 1,
+ token: $('#token').val()
+ },
+ type: "POST",
+ success: function( data ) {
+ data = data.replace(/\s+/g, ' ');
+ if (data.indexOf('error:') != '-1') {
+ showProvisioningError(data, '#creating-init', '#creating-init', '#wait-mess', '#creating-error', '#creating-progress', 'gcore');
+ } else {
+ showProvisioningProccess('#creating-init', '#creating-init', '#creating-vars', '20', '#creating-progress');
+ gcoreVarsServer();
+ }
+ }
+ } );
+}
+function gcoreVarsServer() {
+ var gcore_create_firewall = 'false';
+ var gcore_create_delete_on_termination = 'false';
+ if ($('#gcore_create_firewall').is(':checked')) {
+ gcore_create_firewall = 'true';
+ }
+ if ($('#gcore_create_delete_on_termination').is(':checked')) {
+ gcore_create_delete_on_termination = 'true';
+ }
+ $.ajax( {
+ url: "options.py",
+ data: {
+ gcorevars: $('#gcore_create_server_name').val(),
+ gcore_create_group: $('#gcore_create_group').val(),
+ gcore_create_provider: $('#gcore_create_provider').val(),
+ gcore_create_regions: $('#gcore_create_regions').val(),
+ gcore_create_project: $('#gcore_create_project_name').val(),
+ gcore_create_size: $('#gcore_create_size').val(),
+ gcore_create_oss: $('#gcore_create_oss').val(),
+ gcore_create_ssh_name: $('#gcore_create_ssh_name').val(),
+ gcore_create_volume_size: $('#gcore_create_volume_size').val(),
+ gcore_create_volume_type: $('#gcore_create_volume_type').val(),
+ gcore_create_delete_on_termination: gcore_create_delete_on_termination,
+ gcore_create_network_name: $('#gcore_create_network_name').val(),
+ gcore_create_firewall: gcore_create_firewall,
+ gcore_create_network_type: $('#gcore_create_network_type').val(),
+ token: $('#token').val()
+ },
+ type: "POST",
+ success: function( data ) {
+ data = data.replace(/\s+/g, ' ');
+ if (data.indexOf('error:') != '-1') {
+ showProvisioningError(data, '#creating-vars', '#creating-init', '#wait-mess', '#creating-error', '#creating-progress', 'gcore');
+ } else {
+ showProvisioningProccess('#creating-init', '#creating-vars', '#creating-validate', '40', '#creating-progress');
+ gcoreValidateServer();
+ }
+ }
+ } );
+}
+function gcoreValidateServer() {
+ $.ajax( {
+ url: "options.py",
+ data: {
+ gcorevalidate: $('#gcore_create_server_name').val(),
+ gcore_create_group: $('#gcore_create_group').val(),
+ token: $('#token').val()
+ },
+ type: "POST",
+ success: function( data ) {
+ data = data.replace(/\s+/g, ' ');
+ if (data.indexOf('error:') != '-1') {
+ showProvisioningError(data, '#creating-validate', '#creating-vars', '#wait-mess', '#creating-error', '#creating-progress', 'gcore');
+ } else {
+ showProvisioningProccess('#creating-vars', '#creating-validate', '#creating-workspace', '60', '#creating-progress');
+ gcoreWorkspaceServer();
+ }
+ }
+ } );
+}
+function gcoreWorkspaceServer() {
+ var gcore_create_firewall = 'false';
+ var gcore_create_delete_on_termination = 'false';
+ if ($('#gcore_create_firewall').is(':checked')) {
+ gcore_create_firewall = 'true';
+ }
+ if ($('#gcore_create_delete_on_termination').is(':checked')) {
+ gcore_create_delete_on_termination = 'true';
+ }
+ $.ajax( {
+ url: "options.py",
+ data: {
+ gcoreworkspace: $('#gcore_create_server_name').val(),
+ gcore_create_group: $('#gcore_create_group').val(),
+ gcore_create_provider: $('#gcore_create_provider').val(),
+ gcore_create_regions: $('#gcore_create_regions').val(),
+ gcore_create_project: $('#gcore_create_project_name').val(),
+ gcore_create_size: $('#gcore_create_size').val(),
+ gcore_create_oss: $('#gcore_create_oss').val(),
+ gcore_create_ssh_name: $('#gcore_create_ssh_name').val(),
+ gcore_create_volume_size: $('#gcore_create_volume_size').val(),
+ gcore_create_volume_type: $('#gcore_create_volume_type').val(),
+ gcore_create_delete_on_termination: gcore_create_delete_on_termination,
+ gcore_create_network_name: $('#gcore_create_network_name').val(),
+ gcore_create_firewall: gcore_create_firewall,
+ gcore_create_network_type: $('#gcore_create_network_type').val(),
+ token: $('#token').val()
+ },
+ type: "POST",
+ success: function( data ) {
+ data = data.replace(/\s+/g, ' ');
+ if (data.indexOf('error:') != '-1' && data.indexOf('Last error:') == '-1') {
+ showProvisioningError(data, '#creating-workspace', '#creating-validate', '#wait-mess', '#creating-error', '#creating-progress', 'gcore');
+ } else {
+ showProvisioningProccess('#creating-validate', '#creating-workspace', '#creating-server', '80', '#creating-progress');
+ common_ajax_action_after_success('1', 'newserver', 'ajax-provisioning-body', data);
+ gcoreProvisiningServer();
+ }
+ }
+ } );
+}
+function gcoreProvisiningServer() {
+ var gcoreprovisining = $('#gcore_create_server_name').val()
+ $.ajax( {
+ url: "options.py",
+ data: {
+ gcoreprovisining: gcoreprovisining,
+ gcore_create_group: $('#gcore_create_group').val(),
+ gcore_create_provider: $('#gcore_create_provider').val(),
+ token: $('#token').val()
+ },
+ type: "POST",
+ success: function( data ) {
+ data = data.replace(/\s+/g, ' ');
+ var server_id = $('#ajax-provisioning-body tr td span:regex(id, sever-ip-)').last().attr('id').split('-')[2]
+ if (data.indexOf('error:') != '-1' && data.indexOf('Last error:') == '-1') {
+ showProvisioningError(data, '#creating-server', '#creating-workspace', '#wait-mess', '#creating-error', '#creating-progress', 'gcore');
+ $('#sever-status-'+server_id).text('Error');
+ $('#sever-status-'+server_id).attr('title', data);
+ $('#sever-status-'+server_id).css('color', 'red');
+ } else {
+ data = data.split(':');
+ data[1] = data[1].replace(/\s+/g, ' ');
+ showProvisioningProccess('#creating-workspace', '#creating-server', '', '100', '#creating-progress');
+ $('#wait-mess').hide();
+ $('#created-mess').html('Server has been created. Server IPs are:' + data[0]);
+ $('#created-mess').show();
+ $('#sever-status-'+server_id).text('Created');
+ $('#sever-status-'+server_id).css('color', 'var(--green-color)');
+ $('#sever-ip-'+server_id).text(data[0]);
+ $('#server-name-'+server_id).text(gcoreprovisining+'('+data[1]+')');
+ add_gcore_button_after_server_created();
+ }
+ }
+ } );
+}
+function gcoreEditServer(dialog_id, server_id) {
+ var valid = true;
+ toastr.clear();
+ allFields = $( [] ).add( $('#gcore_edit_size')).add( $('#gcore_edit_ssh_name')).add( $('#gcore_edit_volume_size'));
+ allFields.removeClass( "ui-state-error" );
+ valid = valid && checkLength( $('#gcore_edit_size'), "Instance type", 1 );
+ valid = valid && checkLength( $('#gcore_edit_ssh_name'), "SSH key pair name", 1 );
+ valid = valid && checkLength( $('#gcore_edit_volume_size'), "Volume size", 1 );
+ if(valid) {
+ clearTips();
+ dialog_id.dialog('destroy');
+ startEditingServer('gcore', server_id);
+ $('#editing-wait-mess').show();
+ }
+}
+function gcoreEditInitServer(server_id) {
+ $('#editing-init').addClass('proccessing');
+ $('#server-'+server_id).css('background-color', '#fff3cd');
+ $.ajax( {
+ url: "options.py",
+ data: {
+ gcoreinitserver: 1,
+ token: $('#token').val()
+ },
+ type: "POST",
+ success: function( data ) {
+ data = data.replace(/\s+/g, ' ');
+ if (data.indexOf('error:') != '-1') {
+ showProvisioningError(data, '#editing-init', '#editing-init', '#editing-wait-mess', '#editing-error', '#editing-progress', 'gcore');
+ $('#server-'+server_id).css('background-color', '#fff');
+ add_gcore_button_after_server_edited(server_id)
+ } else {
+ showProvisioningProccess('#editing-init', '#editing-init', '#editing-vars', '20', '#editing-progress');
+ gcoreEditingVarsServer(server_id);
+ }
+ }
+ } );
+}
+
+function gcoreEditingVarsServer(server_id, dialog_id) {
+ var gcore_edit_firewall = 'false';
+ var gcore_edit_delete_on_termination = 'false';
+ if ($('#gcore_edit_firewall').is(':checked')) {
+ gcore_edit_firewall = 'true';
+ }
+ if ($('#gcore_edit_delete_on_termination').is(':checked')) {
+ gcore_edit_delete_on_termination = 'true';
+ }
+ $.ajax( {
+ url: "options.py",
+ data: {
+ gcoreeditvars: $('#gcore_edit_server_name').text(),
+ gcore_edit_group: $('#gcore_edit_group').val(),
+ gcore_edit_provider: $('#gcore_edit_id_provider').val(),
+ gcore_edit_regions: $('#gcore_edit_region').text(),
+ gcore_edit_project: $('#gcore_edit_project_name').text(),
+ gcore_edit_size: $('#gcore_edit_size').val(),
+ gcore_edit_oss: $('#gcore_edit_oss').val(),
+ gcore_edit_ssh_name: $('#gcore_edit_ssh_name').val(),
+ gcore_edit_volume_size: $('#gcore_edit_volume_size').val(),
+ gcore_edit_volume_type: $('#gcore_edit_volume_type').val(),
+ gcore_edit_delete_on_termination: gcore_edit_delete_on_termination,
+ gcore_edit_network_name: $('#gcore_edit_network_name').val(),
+ gcore_edit_firewall: gcore_edit_firewall,
+ gcore_edit_network_type: $('#gcore_edit_network_type').val(),
+ token: $('#token').val()
+ },
+ type: "POST",
+ success: function( data ) {
+ data = data.replace(/\s+/g, ' ');
+ if (data.indexOf('error:') != '-1') {
+ showProvisioningError(data, '#editing-vars', '#editing-init', '#editing-wait-mess', '#editing-error', '#editing-progress', 'gcore');
+ $('#server-'+server_id).css('background-color', '#fff');
+ add_gcore_button_after_server_edited(server_id);
+ } else {
+ showProvisioningProccess('#editing-init', '#editing-vars', '#editing-validate', '40', '#editing-progress');
+ gcoreEditValidateServer(server_id);
+ }
+ }
+ } );
+}
+function gcoreEditValidateServer(server_id) {
+ $.ajax( {
+ url: "options.py",
+ data: {
+ gcoreeditvalidate: $('#gcore_edit_server_name').text(),
+ gcore_edit_group: $('#gcore_edit_group').val(),
+ token: $('#token').val()
+ },
+ type: "POST",
+ success: function( data ) {
+ data = data.replace(/\s+/g, ' ');
+ if (data.indexOf('error:') != '-1') {
+ showProvisioningError(data, '#editing-validate', '#editing-vars', '#editing-wait-mess', '#editing-error', '#editing-progress', 'gcore');
+ $('#server-'+server_id).css('background-color', '#fff');
+ add_gcore_button_after_server_edited(server_id);
+ } else {
+ showProvisioningProccess('#editing-vars', '#editing-validate', '#editing-workspace', '60', '#editing-progress');
+ gcoreEditWorkspaceServer(server_id);
+ }
+ }
+ } );
+}
+function gcoreEditWorkspaceServer(server_id) {
+ var gcore_edit_firewall = 'false';
+ var gcore_edit_delete_on_termination = 'false';
+ if ($('#gcore_edit_firewall').is(':checked')) {
+ gcore_edit_firewall = 'true';
+ }
+ if ($('#gcore_edit_delete_on_termination').is(':checked')) {
+ gcore_edit_delete_on_termination = 'true';
+ }
+ $.ajax( {
+ url: "options.py",
+ data: {
+ gcoreeditworkspace: $('#gcore_edit_server_name').text(),
+ gcore_edit_group: $('#gcore_edit_group').val(),
+ gcore_edit_provider: $('#gcore_edit_id_provider').val(),
+ gcore_edit_regions: $('#gcore_edit_region').text(),
+ gcore_edit_project: $('#gcore_edit_project_name').text(),
+ gcore_edit_size: $('#gcore_edit_size').val(),
+ gcore_edit_oss: $('#gcore_edit_oss').val(),
+ gcore_edit_ssh_name: $('#gcore_edit_ssh_name').val(),
+ gcore_edit_volume_size: $('#gcore_edit_volume_size').val(),
+ gcore_edit_volume_type: $('#gcore_edit_volume_type').val(),
+ gcore_edit_delete_on_termination: gcore_edit_delete_on_termination,
+ gcore_edit_network_name: $('#gcore_edit_network_name').val(),
+ gcore_edit_firewall: gcore_edit_firewall,
+ gcore_edit_network_type: $('#gcore_edit_network_type').val(),
+ server_id: server_id,
+ token: $('#token').val()
+ },
+ type: "POST",
+ success: function( data ) {
+ data = data.replace(/\s+/g, ' ');
+ if (data.indexOf('error:') != '-1' && data.indexOf('Last error:') == '-1') {
+ showProvisioningError(data, '#editing-workspace', '#editing-validate', '#editing-wait-mess', '#editing-error', '#editing-progress', 'gcore');
+ showEditProvisioningError(data, server_id);
+ add_gcore_button_after_server_edited(server_id);
+ } else {
+ showProvisioningProccess('#editing-validate', '#editing-workspace', '#editing-server', '80', '#editing-progress');
+ $('#sever-status-'+server_id).text('Editing');
+ $('#sever-status-'+server_id).css('color', '#000');
+ gcoreEditProvisiningServer(server_id);
+ }
+ }
+ } );
+}
+function gcoreEditProvisiningServer(server_id, dialog_id) {
+ var gcoreeditgprovisining = $('#gcore_edit_server_name').text();
+ $.ajax( {
+ url: "options.py",
+ data: {
+ gcoreeditgprovisining: gcoreeditgprovisining,
+ gcore_edit_group: $('#gcore_edit_group').val(),
+ gcore_edit_provider: $('#gcore_edit_id_provider option:selected').val(),
+ token: $('#token').val()
+ },
+ type: "POST",
+ success: function( data ) {
+ data = data.replace(/\s+/g, ' ');
+ if (data.indexOf('error:') != '-1' && data.indexOf('Last error:') == '-1') {
+ showProvisioningError(data, '#editing-server', '#editing-workspace', '#editing-wait-mess', '#editing-error', '#editing-progress', 'gcore');
+ showEditProvisioningError(data, server_id);
+ add_gcore_button_after_server_edited(server_id);
+ } else {
+ showProvisioningProccess('#editing-workspace', '#editing-server', '', '100', '#editing-progress');
+ data = data.split(':');
+ data[1] = data[1].replace(/\s+/g, ' ');
+ $('#editing-wait-mess').hide();
+ $('#edited-mess').html('Server has been changed. IPs are: ' + data[0]);
+ $('#edited-mess').show();
+ $('#sever-status-'+server_id).text('Created');
+ $('#sever-size-'+server_id).text($('#gcore_edit_size').val());
+ $('#sever-os-'+server_id).text($('#gcore_edit_oss').val());
+ $('#server-'+server_id).css('background-color', '#fff');
+ $('#sever-status-'+server_id).css('color', 'var(--green-color)');
+ $('#sever-ip-'+server_id).text(data[0]);
+ $('#server-name-'+server_id).text(gcoreeditgprovisining+'('+data[1]+')');
+ }
+ }
+ } );
+}
function returnFormatedDate() {
let date = new Date();
current_date = date.toISOString().slice(0,10)+' '+date.toTimeString().split(' ')[0]
return current_date
-}
\ No newline at end of file
+}
diff --git a/inc/style.css b/inc/style.css
index 228108ef..83bd03d6 100644
--- a/inc/style.css
+++ b/inc/style.css
@@ -1,3 +1,6 @@
+:root {
+ --green-color: #5ad05a;
+}
html {
font-size: 10px;
}
@@ -389,7 +392,7 @@ pre {
font-weight: bold;
}
.serverUp {
- background-color: #5ad05a;
+ background-color: var(--green-color);
}
.serverNone {
background-color: #ddd;
@@ -753,7 +756,7 @@ label {
height: 95px;
}
.div-server-head-up {
- border-top: 3px solid #5ad05a !important;
+ border-top: 3px solid var(--green-color) !important;
}
.div-server-head-down {
border-top: 3px solid #be2424 !important;
|