diff --git a/app/admin/routes.py b/app/admin/routes.py
index c14f21c..18dd391 100644
--- a/app/admin/routes.py
+++ b/app/admin/routes.py
@@ -186,26 +186,22 @@ def dashboard(user_pid=0):
#extract rrd and status from the deployments
rrd = {}
statuses = {}
- for cubeid in inv_deploycubeids:
- rrd[cubeid] = {}
- try:
- query = contact_proxmaster({}, 'vmrrd', cubeid)
- except:
- flash('Deploy #{} unreachable.'.format(str(cubeid)))
-
- graphs_list = ['net', 'cpu', 'mem', 'hdd']
- try:
+ for unit_id in inv_deploycubeids:
+ rrd[unit_id] = {}
+ data = { 'unit_id': int(unit_id),
+ 'type': 'deploy' }
+ query = contact_proxmaster(data, 'vmrrd')
+ if query['status'] == 'UNREACHABLE':
+ flash('Deploy #{} is unreachable. Support is notified.'.format(str(unit_id)))
+ send_email(current_app.config['MAIL_USERNAME'], 'Deploy {} is unreachable'.format(unit_id),
+ 'vmanager/email/adm_unreachable', user=cuser, unit_id=unit_id )
+ else:
+ graphs_list = ['net', 'cpu', 'mem', 'hdd']
for graph in graphs_list:
raw = query[graph]['image'].encode('raw_unicode_escape')
- rrd[cubeid][graph] = base64.b64encode(raw).decode()
- status = { cubeid : query['status'] }
+ rrd[unit_id][graph] = base64.b64encode(raw).decode()
+ status = { unit_id : query['status'] }
statuses.update(status)
- except Exception as e:
- print(e)
- flash('Deploy #{} unreachable. Support is notified'.format(str(cubeid)))
- send_email(current_app.config['MAIL_USERNAME'], 'Cube {} is unreachable'.format(cubeid),
- 'vmanager/email/adm_unreachable', user=cuser, cubeid=cubeid )
- #current_app.logger.warning('[ADMIN] {} deployments: {}, services: {}, domains: {}, services: {}'.format(cuser.email, inv_deployments_list, inv_services_list, inv_domains_list, inv_addresses_list ))
return render_template('main/dashboard.html', rrd=rrd, status=statuses, inv_deployments=inv_deployments, inv_services=inv_services, inv_domains=inv_domains, inv_addresses=inv_addresses, region=regions)
diff --git a/app/main/routes.py b/app/main/routes.py
index 740acaf..2bb01e0 100644
--- a/app/main/routes.py
+++ b/app/main/routes.py
@@ -94,15 +94,17 @@ def dashboard():
rrd = {}
statuses = {}
#current_app.logger.warning(str(inv_deploycubeids))
- for cubeid in inv_deploycubeids:
- rrd[cubeid] = {}
+ for user_id in inv_deploycubeids:
+ rrd[user_id] = {}
+ data = { 'user_id': int(user_id),
+ 'type': 'deploy' }
try:
- query = contact_proxmaster({}, 'vmrrd', cubeid)
+ query = contact_proxmaster(data, 'vmrrd')
except Exception as e:
current_app.logger.error(e)
- flash('Deploy #{} unreachable. Support is notified'.format(str(cubeid)))
- send_email(current_app.config['MAIL_USERNAME'], 'Cube {} is unreachable'.format(cubeid),
- 'vmanager/email/adm_unreachable', user=current_user, cubeid=cubeid)
+ flash('Deploy #{} unreachable. Support is notified'.format(str(unit_id)))
+ send_email(current_app.config['MAIL_USERNAME'], 'Cube {} is unreachable'.format(unit_id),
+ 'vmanager/email/adm_unreachable', user=current_user, unit_id=unit_id)
#current_app.logger.info('debug query:')
#current_app.logger.info(query)
@@ -110,14 +112,14 @@ def dashboard():
try:
for graph in graphs_list:
raw = query[graph]['image'].encode('raw_unicode_escape')
- rrd[cubeid][graph] = base64.b64encode(raw).decode()
- status = { cubeid : query['status'] }
+ rrd[unit_id][graph] = base64.b64encode(raw).decode()
+ status = { unit_id : query['status'] }
statuses.update(status)
except Exception as e:
current_app.logger.error(e)
- flash('Deploy #{} unreachable. Support is notified'.format(str(cubeid)))
- send_email(current_app.config['MAIL_USERNAME'], 'Cube {} is unreachable'.format(cubeid),
- 'vmanager/email/adm_unreachable', user=current_user, cubeid=cubeid )
+ flash('Deploy #{} unreachable. Support is notified'.format(str(unit_id)))
+ send_email(current_app.config['MAIL_USERNAME'], 'Cube {} is unreachable'.format(unit_id),
+ 'vmanager/email/adm_unreachable', user=current_user, unit_id=unit_id )
current_app.logger.info('[{}] Enabled deployments: {}, services: {}, domains: {}, addresses: {}'.format(current_user.email, inv_deployments_list, inv_services_list, inv_domains_list, inv_addresses_list ))
return render_template('main/dashboard.html', rrd=rrd, status=statuses, inv_deployments=inv_deployments, inv_services=inv_services, inv_domains=inv_domains, inv_addresses=inv_addresses, region=regions)
diff --git a/app/models.py b/app/models.py
index d851249..8ee5e0c 100644
--- a/app/models.py
+++ b/app/models.py
@@ -213,23 +213,16 @@ lm.anonymous_user = AnonymousUser
def load_user(user_id):
return User.query.get(int(user_id))
-def contact_proxmaster(data, method, cubeid=0):
- prxurl = current_app.config['PROXMASTER_URL']
+def contact_proxmaster(data, method):
data['apikey'] = current_app.config['APIKEY']
data_json = json.dumps(data)
-
- url = '{}/{}/{}'.format(prxurl, method, cubeid)
- if method == 'vmcreate':
- url = '{}/vmcreate'.format(prxurl)
- if method == 'vmremove':
- url = '{}/vmremove/{}'.format(prxurl, cubeid)
-
+ url = current_app.config['PROXMASTER_URL'] + '/' + str(method)
try:
db_result = requests.post( url, data=data_json, headers={"content-type": "application/json"}, timeout=30 )
proxjson = db_result.json()
return proxjson
except:
- return None
+ return { 'status': 'UNREACHABLE' }
class Router(db.Model):
__tablename__ = 'routers'
@@ -238,7 +231,7 @@ class Router(db.Model):
date_created = db.Column(db.DateTime, default=datetime.utcnow)
deleted = db.Column(db.Boolean, default=False)
- machine_id = db.Column(db.BigInteger) #cubeid
+ machine_id = db.Column(db.BigInteger) #unit_id
class Bridge(db.Model):
__tablename__ = 'bridge'
@@ -263,7 +256,7 @@ class Deployment(db.Model):
period = db.Column(db.Integer)
daysleft = db.Column(db.Integer)
- machine_id = db.Column(db.BigInteger) #cubeid
+ machine_id = db.Column(db.BigInteger) #unit_id
machine_alias = db.Column(db.String) #dns name
machine_cpu = db.Column(db.Integer)
machine_mem = db.Column(db.Integer)
diff --git a/app/templates/main/dashboard.html b/app/templates/main/dashboard.html
index d356db5..53070a1 100644
--- a/app/templates/main/dashboard.html
+++ b/app/templates/main/dashboard.html
@@ -180,14 +180,14 @@ addEventListener("DOMContentLoaded", function() {
{% if deploy.enabled == True %}
{% if status[deploy.machine_id] == 'running' %}
-
-
+
+
{% else %}
-
+
{% endif %}
{% endif %}
- + diff --git a/app/templates/vmanager/email/adm_unreachable.html b/app/templates/vmanager/email/adm_unreachable.html index b51466a..52abd1f 100644 --- a/app/templates/vmanager/email/adm_unreachable.html +++ b/app/templates/vmanager/email/adm_unreachable.html @@ -1,4 +1,4 @@ -
{{ user.email }} encountered an error working with cube id: {{ cubeid }}
+
{{ user.email }} encountered an error working with id: {{ unit_id }}
Regards,
diff --git a/app/templates/vmanager/email/adm_unreachable.txt b/app/templates/vmanager/email/adm_unreachable.txt
index cfa0f93..dbb7ddd 100644
--- a/app/templates/vmanager/email/adm_unreachable.txt
+++ b/app/templates/vmanager/email/adm_unreachable.txt
@@ -1,4 +1,4 @@
-User {{ user.email }} encountered an error working with cube id: {{ cubeid }}
+User {{ user.email }} encountered an error working with id: {{ unit_id }}
Regards,
Proxadmin
diff --git a/app/vmanager/routes.py b/app/vmanager/routes.py
index 212e160..2ef43c6 100644
--- a/app/vmanager/routes.py
+++ b/app/vmanager/routes.py
@@ -49,9 +49,11 @@ def createvm():
#no switches in the account. create one...
data = { 'clientid': str(current_user.pid),
'clientemail': str(current_user.email),
- 'region': str(selected_region.name)
+ 'region': str(selected_region.name),
+ 'type': 'bridge'
}
- query = contact_proxmaster(data, 'brcreate')
+ #create bridge unit
+ query = contact_proxmaster(data, 'create')
if query is not None:
bridge = Bridge(user_id=int(current_user.pid))
db.session.add(bridge)
@@ -63,12 +65,13 @@ def createvm():
return redirect(url_for('main.dashboard'))
else:
#bridge found. lets see on which slave it is so we can create the instance on the same slave.
- data = {}
- query = contact_proxmaster(data, 'brquery', str(selected_bridge.bridge_id))
+ data = { 'unit_id': int(selected_bridge.bridge_id),
+ 'type': 'bridge' }
+ query = contact_proxmaster(data, 'status')
if query is not None:
newbridge = False
else:
- flash('Point found but cannot be used1')
+ flash('Point found but cannot be used!')
return redirect(url_for('main.dashboard'))
#machine will be installed where the switch physically is
@@ -78,24 +81,23 @@ def createvm():
#create new machine...
data = { 'clientid': str(current_user.pid),
'clientemail': str(current_user.email),
- 'hostname': str(form.servername.data) + '-c' + str(current_user.pid),
+ 'hostname': 'c' + str(current_user.pid) + '-' + str(form.servername.data),
'region': str(selected_region.name),
'slave': str(slave_name),
- 'type': 'kvm',
+ 'type': 'deploy',
'cpu': '1',
'mem': '512',
'hdd': '20',
- 'eth0br': str(bridge_id),
- 'eth0ip': 'AUTO'
+ 'bridge': str(bridge_id)
}
try:
- query = contact_proxmaster(data, 'vmcreate')
+ query = contact_proxmaster(data, 'create')
except:
flash('Region not available! Please try again later...')
return redirect(url_for('main.dashboard'))
if query is not None:
- deployment = Deployment(user_id=int(current_user.pid), machine_alias=query['hostname'], machine_id=query['cube'], machine_cpu=data['cpu'], machine_mem=data['mem'], machine_hdd=data['hdd'], enabled=True, protected=False, daysleft=15, warning=True, discount=0)
+ deployment = Deployment(user_id=int(current_user.pid), machine_alias=query['hostname'], machine_id=query['unit_id'], machine_cpu=data['cpu'], machine_mem=data['mem'], machine_hdd=data['hdd'], enabled=True, protected=False, daysleft=15, warning=True, discount=0)
db.session.add(deployment)
db.session.commit()
flash('New device created successfully in region "{}".'.format(str(selected_region.description)))
@@ -171,7 +173,7 @@ def activate(itemid=0):
'eth1ip': str(selected_address.ip)
}
try:
- query = contact_proxmaster(data, 'vmcreate')
+ query = contact_proxmaster(data, 'create')
except:
flash('Region unreachable! Cannot create router. Please try again later...')
return redirect(url_for('main.dashboard'))
@@ -204,34 +206,35 @@ def activate(itemid=0):
return redirect(url_for('main.dashboard'))
return render_template('vmanager/activate.html', form=form, deploy=deploy, cpu_cost=cpu_cost, mem_cost=mem_cost, hdd_cost=hdd_cost, ppm=ppm, discount=discount, total=total, currency=owner.currency)
-@vmanager.route('/vmremove/