Move userdata from templates

This arrangement was driving me somewhat mad; make userdata just like
script in that it is not a "template".
This commit is contained in:
2019-12-30 15:01:28 -05:00
parent d6bd616b31
commit e550d4589d
3 changed files with 131 additions and 124 deletions

View File

@ -170,20 +170,12 @@ def list_template_storage_disks(name):
disks = data['disks']
return disks
def list_template_userdata(limit, is_fuzzy=True):
"""
Obtain a list of userdata templates.
"""
data = list_template(limit, 'userdata_template', is_fuzzy)
return data
def template_list(limit):
system_templates = list_template_system(limit)
network_templates = list_template_network(limit)
storage_templates = list_template_storage(limit)
userdata_templates = list_template_userdata(limit)
return { "system_templates": system_templates, "network_templates": network_templates, "storage_templates": storage_templates, "userdata_templates": userdata_templates }
return { "system_templates": system_templates, "network_templates": network_templates, "storage_templates": storage_templates }
#
# Template Create functions
@ -317,49 +309,6 @@ def create_template_storage_element(name, pool, disk_id, disk_size_gb, filesyste
close_database(conn, cur)
return flask.jsonify(retmsg), retcode
def create_template_userdata(name, userdata):
if list_template_userdata(name, is_fuzzy=False):
retmsg = { "message": "The userdata template {} already exists".format(name) }
retcode = 400
return flask.jsonify(retmsg), retcode
conn, cur = open_database(config)
try:
query = "INSERT INTO userdata_template (name, userdata) VALUES (%s, %s);"
args = (name, userdata)
cur.execute(query, args)
retmsg = { "name": name }
retcode = 200
except psycopg2.IntegrityError as e:
retmsg = { "message": "Failed to create entry {}".format(name), "error": e }
retcode = 400
close_database(conn, cur)
return flask.jsonify(retmsg), retcode
#
# Template update functions
#
def update_template_userdata(name, userdata):
if not list_template_userdata(name, is_fuzzy=False):
retmsg = { "message": "The userdata template {} does not exist".format(name) }
retcode = 400
return flask.jsonify(retmsg), retcode
tid = list_template_userdata(name, is_fuzzy=False)[0]['id']
conn, cur = open_database(config)
try:
query = "UPDATE userdata_template SET userdata = %s WHERE id = %s;"
args = (userdata, tid)
cur.execute(query, args)
retmsg = { "name": name }
retcode = 200
except psycopg2.IntegrityError as e:
retmsg = { "message": "Failed to update entry {}".format(name), "error": e }
retcode = 400
close_database(conn, cur)
return flask.jsonify(retmsg), retcode
#
# Template Delete functions
#
@ -500,21 +449,89 @@ def delete_template_storage_element(name, disk_id):
close_database(conn, cur)
return flask.jsonify(retmsg), retcode
def delete_template_userdata(name):
if not list_template_userdata(name, is_fuzzy=False):
retmsg = { "message": "The userdata template {} does not exist".format(name) }
#
# Userdata functions
#
def list_userdata(limit, is_fuzzy=True):
if limit:
if is_fuzzy:
# Handle fuzzy vs. non-fuzzy limits
if not re.match('\^.*', limit):
limit = '%' + limit
else:
limit = limit[1:]
if not re.match('.*\$', limit):
limit = limit + '%'
else:
limit = limit[:-1]
query = "SELECT * FROM {} WHERE name LIKE %s;".format('userdata')
args = (limit, )
else:
query = "SELECT * FROM {};".format('userdata')
args = ()
conn, cur = open_database(config)
cur.execute(query, args)
data = cur.fetchall()
close_database(conn, cur)
return data
def create_userdata(name, userdata):
if list_userdata(name, is_fuzzy=False):
retmsg = { "message": "The userdata {} already exists".format(name) }
retcode = 400
return flask.jsonify(retmsg), retcode
conn, cur = open_database(config)
try:
query = "DELETE FROM userdata_template WHERE name = %s;"
query = "INSERT INTO userdata (name, userdata) VALUES (%s, %s);"
args = (name, userdata)
cur.execute(query, args)
retmsg = { "name": name }
retcode = 200
except psycopg2.IntegrityError as e:
retmsg = { "message": "Failed to create entry {}".format(name), "error": e }
retcode = 400
close_database(conn, cur)
return flask.jsonify(retmsg), retcode
def update_userdata(name, userdata):
if not list_userdata(name, is_fuzzy=False):
retmsg = { "message": "The userdata {} does not exist".format(name) }
retcode = 400
return flask.jsonify(retmsg), retcode
tid = list_userdata(name, is_fuzzy=False)[0]['id']
conn, cur = open_database(config)
try:
query = "UPDATE userdata SET userdata = %s WHERE id = %s;"
args = (userdata, tid)
cur.execute(query, args)
retmsg = { "name": name }
retcode = 200
except psycopg2.IntegrityError as e:
retmsg = { "message": "Failed to update entry {}".format(name), "error": e }
retcode = 400
close_database(conn, cur)
return flask.jsonify(retmsg), retcode
def delete_userdata(name):
if not list_userdata(name, is_fuzzy=False):
retmsg = { "message": "The userdata {} does not exist".format(name) }
retcode = 400
return flask.jsonify(retmsg), retcode
conn, cur = open_database(config)
try:
query = "DELETE FROM userdata WHERE name = %s;"
args = (name,)
cur.execute(query, args)
retmsg = { "name": name }
retcode = 200
except psycopg2.IntegrityError as e:
retmsg = { "message": "Failed to delete entry {}".format(name), "error": e }
retmsg = { "message": "Failed to delete entry {}".format(name), "error": str(e) }
retcode = 400
close_database(conn, cur)
return flask.jsonify(retmsg), retcode