mirror of
https://github.com/pgadmin-org/pgadmin4.git
synced 2025-02-25 18:55:31 -06:00
PEP8 fixes. Fixes #3156
This commit is contained in:
parent
f5afd5fdb4
commit
cca6504d54
@ -32,12 +32,14 @@ class ResourceGroupModule(CollectionNodeModule):
|
|||||||
"""
|
"""
|
||||||
class ResourceGroupModule(CollectionNodeModule)
|
class ResourceGroupModule(CollectionNodeModule)
|
||||||
|
|
||||||
A module class for Resource Group node derived from CollectionNodeModule.
|
A module class for Resource Group node derived from
|
||||||
|
CollectionNodeModule.
|
||||||
|
|
||||||
Methods:
|
Methods:
|
||||||
-------
|
-------
|
||||||
* __init__(*args, **kwargs)
|
* __init__(*args, **kwargs)
|
||||||
- Method is used to initialize the ResourceGroupModule and it's base module.
|
- Method is used to initialize the ResourceGroupModule and it's
|
||||||
|
base module.
|
||||||
|
|
||||||
* BackendSupported(manager, **kwargs)
|
* BackendSupported(manager, **kwargs)
|
||||||
- This function is used to check the database server type and version.
|
- This function is used to check the database server type and version.
|
||||||
@ -50,8 +52,8 @@ class ResourceGroupModule(CollectionNodeModule):
|
|||||||
- Method is overridden from its base class to make the node as leaf node.
|
- Method is overridden from its base class to make the node as leaf node.
|
||||||
|
|
||||||
* script_load()
|
* script_load()
|
||||||
- Load the module script for resource group, when any of the server node is
|
- Load the module script for resource group, when any of the server
|
||||||
initialized.
|
node is initialized.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
NODE_TYPE = 'resource_group'
|
NODE_TYPE = 'resource_group'
|
||||||
@ -59,7 +61,8 @@ class ResourceGroupModule(CollectionNodeModule):
|
|||||||
|
|
||||||
def __init__(self, *args, **kwargs):
|
def __init__(self, *args, **kwargs):
|
||||||
"""
|
"""
|
||||||
Method is used to initialize the ResourceGroupModule and it's base module.
|
Method is used to initialize the ResourceGroupModule and
|
||||||
|
it's base module.
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
*args:
|
*args:
|
||||||
@ -93,13 +96,13 @@ class ResourceGroupModule(CollectionNodeModule):
|
|||||||
@property
|
@property
|
||||||
def script_load(self):
|
def script_load(self):
|
||||||
"""
|
"""
|
||||||
Load the module script for resource group, when any of the server node is initialized.
|
Load the module script for resource group, when any of the server
|
||||||
|
node is initialized.
|
||||||
|
|
||||||
Returns: node type of the server module.
|
Returns: node type of the server module.
|
||||||
"""
|
"""
|
||||||
return servers.ServerModule.NODE_TYPE
|
return servers.ServerModule.NODE_TYPE
|
||||||
|
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def module_use_template_javascript(self):
|
def module_use_template_javascript(self):
|
||||||
"""
|
"""
|
||||||
@ -116,9 +119,10 @@ class ResourceGroupView(NodeView):
|
|||||||
"""
|
"""
|
||||||
class ResourceGroupView(NodeView)
|
class ResourceGroupView(NodeView)
|
||||||
|
|
||||||
A view class for resource group node derived from NodeView. This class is
|
A view class for resource group node derived from NodeView.
|
||||||
responsible for all the stuff related to view like create/update/delete resource group,
|
This class is responsible for all the stuff related to view like
|
||||||
showing properties of resource group node, showing sql in sql pane.
|
create/update/delete resource group, showing properties of resource
|
||||||
|
group node, showing sql in sql pane.
|
||||||
|
|
||||||
Methods:
|
Methods:
|
||||||
-------
|
-------
|
||||||
@ -135,14 +139,16 @@ class ResourceGroupView(NodeView):
|
|||||||
manager,conn & template_path properties to self
|
manager,conn & template_path properties to self
|
||||||
|
|
||||||
* list()
|
* list()
|
||||||
- This function is used to list all the resource group nodes within that collection.
|
- This function is used to list all the resource group nodes within
|
||||||
|
that collection.
|
||||||
|
|
||||||
* nodes()
|
* nodes()
|
||||||
- This function will used to create all the child node within that collection.
|
- This function will used to create all the child node within that
|
||||||
Here it will create all the resource group node.
|
collection. Here it will create all the resource group node.
|
||||||
|
|
||||||
* properties(gid, sid, did, rg_id)
|
* properties(gid, sid, did, rg_id)
|
||||||
- This function will show the properties of the selected resource group node
|
- This function will show the properties of the selected resource
|
||||||
|
group node
|
||||||
|
|
||||||
* create(gid, sid, did, rg_id)
|
* create(gid, sid, did, rg_id)
|
||||||
- This function will create the new resource group object
|
- This function will create the new resource group object
|
||||||
@ -154,13 +160,15 @@ class ResourceGroupView(NodeView):
|
|||||||
- This function will drop the resource group object
|
- This function will drop the resource group object
|
||||||
|
|
||||||
* msql(gid, sid, did, rg_id)
|
* msql(gid, sid, did, rg_id)
|
||||||
- This function is used to return modified SQL for the selected resource group node
|
- This function is used to return modified SQL for the selected
|
||||||
|
resource group node
|
||||||
|
|
||||||
* get_sql(data, rg_id)
|
* get_sql(data, rg_id)
|
||||||
- This function will generate sql from model data
|
- This function will generate sql from model data
|
||||||
|
|
||||||
* sql(gid, sid, did, rg_id):
|
* sql(gid, sid, did, rg_id):
|
||||||
- This function will generate sql to show it in sql pane for the selected resource group node.
|
- This function will generate sql to show it in sql pane for the
|
||||||
|
selected resource group node.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
node_type = blueprint.node_type
|
node_type = blueprint.node_type
|
||||||
@ -190,7 +198,8 @@ class ResourceGroupView(NodeView):
|
|||||||
def __init__(self, **kwargs):
|
def __init__(self, **kwargs):
|
||||||
"""
|
"""
|
||||||
Method is used to initialize the ResourceGroupView and it's base view.
|
Method is used to initialize the ResourceGroupView and it's base view.
|
||||||
Also initialize all the variables create/used dynamically like conn, template_path.
|
Also initialize all the variables create/used dynamically like conn,
|
||||||
|
template_path.
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
**kwargs:
|
**kwargs:
|
||||||
@ -244,7 +253,8 @@ class ResourceGroupView(NodeView):
|
|||||||
@check_precondition
|
@check_precondition
|
||||||
def list(self, gid, sid):
|
def list(self, gid, sid):
|
||||||
"""
|
"""
|
||||||
This function is used to list all the resource group nodes within that collection.
|
This function is used to list all the resource group nodes within
|
||||||
|
that collection.
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
gid: Server Group ID
|
gid: Server Group ID
|
||||||
@ -263,8 +273,8 @@ class ResourceGroupView(NodeView):
|
|||||||
@check_precondition
|
@check_precondition
|
||||||
def node(self, gid, sid, rg_id):
|
def node(self, gid, sid, rg_id):
|
||||||
"""
|
"""
|
||||||
This function will used to create all the child node within that collection.
|
This function will used to create all the child node within that
|
||||||
Here it will create all the resource group node.
|
collection. Here it will create all the resource group node.
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
gid: Server Group ID
|
gid: Server Group ID
|
||||||
@ -281,11 +291,11 @@ class ResourceGroupView(NodeView):
|
|||||||
return gone(gettext("""Could not find the resource group."""))
|
return gone(gettext("""Could not find the resource group."""))
|
||||||
|
|
||||||
res = self.blueprint.generate_browser_node(
|
res = self.blueprint.generate_browser_node(
|
||||||
result['rows'][0]['oid'],
|
result['rows'][0]['oid'],
|
||||||
sid,
|
sid,
|
||||||
result['rows'][0]['name'],
|
result['rows'][0]['name'],
|
||||||
icon="icon-resource_group"
|
icon="icon-resource_group"
|
||||||
)
|
)
|
||||||
|
|
||||||
return make_json_response(
|
return make_json_response(
|
||||||
data=res,
|
data=res,
|
||||||
@ -295,8 +305,8 @@ class ResourceGroupView(NodeView):
|
|||||||
@check_precondition
|
@check_precondition
|
||||||
def nodes(self, gid, sid):
|
def nodes(self, gid, sid):
|
||||||
"""
|
"""
|
||||||
This function will used to create all the child node within that collection.
|
This function will used to create all the child node within that
|
||||||
Here it will create all the resource group node.
|
collection. Here it will create all the resource group node.
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
gid: Server Group ID
|
gid: Server Group ID
|
||||||
@ -325,14 +335,16 @@ class ResourceGroupView(NodeView):
|
|||||||
@check_precondition
|
@check_precondition
|
||||||
def properties(self, gid, sid, rg_id):
|
def properties(self, gid, sid, rg_id):
|
||||||
"""
|
"""
|
||||||
This function will show the properties of the selected resource group node.
|
This function will show the properties of the selected resource
|
||||||
|
group node.
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
gid: Server Group ID
|
gid: Server Group ID
|
||||||
sid: Server ID
|
sid: Server ID
|
||||||
rg_id: Resource Group ID
|
rg_id: Resource Group ID
|
||||||
"""
|
"""
|
||||||
sql = render_template("/".join([self.template_path, 'properties.sql']), rgid=rg_id)
|
sql = render_template(
|
||||||
|
"/".join([self.template_path, 'properties.sql']), rgid=rg_id)
|
||||||
status, res = self.conn.execute_dict(sql)
|
status, res = self.conn.execute_dict(sql)
|
||||||
|
|
||||||
if not status:
|
if not status:
|
||||||
@ -373,21 +385,33 @@ class ResourceGroupView(NodeView):
|
|||||||
)
|
)
|
||||||
try:
|
try:
|
||||||
# Below logic will create new resource group
|
# Below logic will create new resource group
|
||||||
sql = render_template("/".join([self.template_path, 'create.sql']), rgname=data['name'], conn=self.conn)
|
sql = render_template(
|
||||||
|
"/".join([self.template_path, 'create.sql']),
|
||||||
|
rgname=data['name'], conn=self.conn
|
||||||
|
)
|
||||||
if sql and sql.strip('\n') and sql.strip(' '):
|
if sql and sql.strip('\n') and sql.strip(' '):
|
||||||
status, res = self.conn.execute_scalar(sql)
|
status, res = self.conn.execute_scalar(sql)
|
||||||
if not status:
|
if not status:
|
||||||
return internal_server_error(errormsg=res)
|
return internal_server_error(errormsg=res)
|
||||||
# Below logic will update the cpu_rate_limit and dirty_rate_limit for resource group
|
# Below logic will update the cpu_rate_limit and dirty_rate_limit
|
||||||
# we need to add this logic because in resource group you can't run multiple commands in one transaction.
|
# for resource group, we need to add this logic because in
|
||||||
sql = render_template("/".join([self.template_path, 'update.sql']), data=data, conn=self.conn)
|
# resource group you can't run multiple commands in one
|
||||||
|
# transaction.
|
||||||
|
sql = render_template(
|
||||||
|
"/".join([self.template_path, 'update.sql']),
|
||||||
|
data=data, conn=self.conn
|
||||||
|
)
|
||||||
# Checking if we are not executing empty query
|
# Checking if we are not executing empty query
|
||||||
if sql and sql.strip('\n') and sql.strip(' '):
|
if sql and sql.strip('\n') and sql.strip(' '):
|
||||||
status, res = self.conn.execute_scalar(sql)
|
status, res = self.conn.execute_scalar(sql)
|
||||||
if not status:
|
if not status:
|
||||||
return internal_server_error(errormsg=res)
|
return internal_server_error(errormsg=res)
|
||||||
# Below logic is used to fetch the oid of the newly created resource group
|
# Below logic is used to fetch the oid of the newly created
|
||||||
sql = render_template("/".join([self.template_path, 'getoid.sql']), rgname=data['name'])
|
# resource group
|
||||||
|
sql = render_template(
|
||||||
|
"/".join([self.template_path, 'getoid.sql']),
|
||||||
|
rgname=data['name']
|
||||||
|
)
|
||||||
# Checking if we are not executing empty query
|
# Checking if we are not executing empty query
|
||||||
rg_id = 0
|
rg_id = 0
|
||||||
if sql and sql.strip('\n') and sql.strip(' '):
|
if sql and sql.strip('\n') and sql.strip(' '):
|
||||||
@ -424,7 +448,8 @@ class ResourceGroupView(NodeView):
|
|||||||
)
|
)
|
||||||
|
|
||||||
try:
|
try:
|
||||||
sql = render_template("/".join([self.template_path, 'properties.sql']), rgid=rg_id)
|
sql = render_template(
|
||||||
|
"/".join([self.template_path, 'properties.sql']), rgid=rg_id)
|
||||||
status, res = self.conn.execute_dict(sql)
|
status, res = self.conn.execute_dict(sql)
|
||||||
if not status:
|
if not status:
|
||||||
return internal_server_error(errormsg=res)
|
return internal_server_error(errormsg=res)
|
||||||
@ -434,19 +459,26 @@ class ResourceGroupView(NodeView):
|
|||||||
data[arg] = old_data[arg]
|
data[arg] = old_data[arg]
|
||||||
|
|
||||||
if data['name'] != old_data['name']:
|
if data['name'] != old_data['name']:
|
||||||
sql = render_template("/".join([self.template_path, 'update.sql']),
|
sql = render_template(
|
||||||
oldname=old_data['name'], newname=data['name'], conn=self.conn)
|
"/".join([self.template_path, 'update.sql']),
|
||||||
|
oldname=old_data['name'], newname=data['name'],
|
||||||
|
conn=self.conn
|
||||||
|
)
|
||||||
if sql and sql.strip('\n') and sql.strip(' '):
|
if sql and sql.strip('\n') and sql.strip(' '):
|
||||||
status, res = self.conn.execute_scalar(sql)
|
status, res = self.conn.execute_scalar(sql)
|
||||||
if not status:
|
if not status:
|
||||||
return internal_server_error(errormsg=res)
|
return internal_server_error(errormsg=res)
|
||||||
|
|
||||||
# Below logic will update the cpu_rate_limit and dirty_rate_limit for resource group
|
# Below logic will update the cpu_rate_limit and dirty_rate_limit
|
||||||
# we need to add this logic because in resource group you can't run multiple commands
|
# for resource group we need to add this logic because in
|
||||||
# in one transaction.
|
# resource group you can't run multiple commands in one
|
||||||
if (data['cpu_rate_limit'] != old_data['cpu_rate_limit']) \
|
# transaction.
|
||||||
or (data['dirty_rate_limit'] != old_data['dirty_rate_limit']):
|
if data['cpu_rate_limit'] != old_data['cpu_rate_limit'] or \
|
||||||
sql = render_template("/".join([self.template_path, 'update.sql']), data=data, conn=self.conn)
|
data['dirty_rate_limit'] != old_data['dirty_rate_limit']:
|
||||||
|
sql = render_template(
|
||||||
|
"/".join([self.template_path, 'update.sql']),
|
||||||
|
data=data, conn=self.conn
|
||||||
|
)
|
||||||
if sql and sql.strip('\n') and sql.strip(' '):
|
if sql and sql.strip('\n') and sql.strip(' '):
|
||||||
status, res = self.conn.execute_scalar(sql)
|
status, res = self.conn.execute_scalar(sql)
|
||||||
if not status:
|
if not status:
|
||||||
@ -476,7 +508,10 @@ class ResourceGroupView(NodeView):
|
|||||||
"""
|
"""
|
||||||
try:
|
try:
|
||||||
# Get name for resource group from rg_id
|
# Get name for resource group from rg_id
|
||||||
sql = render_template("/".join([self.template_path, 'delete.sql']), rgid=rg_id, conn=self.conn)
|
sql = render_template(
|
||||||
|
"/".join([self.template_path, 'delete.sql']),
|
||||||
|
rgid=rg_id, conn=self.conn
|
||||||
|
)
|
||||||
status, rgname = self.conn.execute_scalar(sql)
|
status, rgname = self.conn.execute_scalar(sql)
|
||||||
if not status:
|
if not status:
|
||||||
return internal_server_error(errormsg=rgname)
|
return internal_server_error(errormsg=rgname)
|
||||||
@ -493,7 +528,10 @@ class ResourceGroupView(NodeView):
|
|||||||
)
|
)
|
||||||
|
|
||||||
# drop resource group
|
# drop resource group
|
||||||
sql = render_template("/".join([self.template_path, 'delete.sql']), rgname=rgname, conn=self.conn)
|
sql = render_template(
|
||||||
|
"/".join([self.template_path, 'delete.sql']),
|
||||||
|
rgname=rgname, conn=self.conn
|
||||||
|
)
|
||||||
status, res = self.conn.execute_scalar(sql)
|
status, res = self.conn.execute_scalar(sql)
|
||||||
if not status:
|
if not status:
|
||||||
return internal_server_error(errormsg=res)
|
return internal_server_error(errormsg=res)
|
||||||
@ -514,7 +552,8 @@ class ResourceGroupView(NodeView):
|
|||||||
@check_precondition
|
@check_precondition
|
||||||
def msql(self, gid, sid, rg_id=None):
|
def msql(self, gid, sid, rg_id=None):
|
||||||
"""
|
"""
|
||||||
This function is used to return modified SQL for the selected resource group node
|
This function is used to return modified SQL for the selected
|
||||||
|
resource group node
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
gid: Server Group ID
|
gid: Server Group ID
|
||||||
@ -554,7 +593,8 @@ class ResourceGroupView(NodeView):
|
|||||||
'name', 'cpu_rate_limit', 'dirty_rate_limit'
|
'name', 'cpu_rate_limit', 'dirty_rate_limit'
|
||||||
]
|
]
|
||||||
if rg_id is not None:
|
if rg_id is not None:
|
||||||
sql = render_template("/".join([self.template_path, 'properties.sql']), rgid=rg_id)
|
sql = render_template(
|
||||||
|
"/".join([self.template_path, 'properties.sql']), rgid=rg_id)
|
||||||
status, res = self.conn.execute_dict(sql)
|
status, res = self.conn.execute_dict(sql)
|
||||||
if not status:
|
if not status:
|
||||||
return internal_server_error(errormsg=res)
|
return internal_server_error(errormsg=res)
|
||||||
@ -572,19 +612,41 @@ class ResourceGroupView(NodeView):
|
|||||||
name_changed = False
|
name_changed = False
|
||||||
if data['name'] != old_data['name']:
|
if data['name'] != old_data['name']:
|
||||||
name_changed = True
|
name_changed = True
|
||||||
sql = render_template("/".join([self.template_path, 'update.sql']),
|
sql = render_template(
|
||||||
oldname=old_data['name'], newname=data['name'], conn=self.conn)
|
"/".join([self.template_path, 'update.sql']),
|
||||||
if (data['cpu_rate_limit'] != old_data['cpu_rate_limit']) \
|
oldname=old_data['name'], newname=data['name'],
|
||||||
or data['dirty_rate_limit'] != old_data['dirty_rate_limit']:
|
conn=self.conn
|
||||||
|
)
|
||||||
|
if data['cpu_rate_limit'] != old_data['cpu_rate_limit'] or \
|
||||||
|
data['dirty_rate_limit'] != old_data['dirty_rate_limit']:
|
||||||
if name_changed:
|
if name_changed:
|
||||||
sql += "\n-- Following query will be executed in a separate transaction\n"
|
sql += "\n-- Following query will be executed in a " \
|
||||||
sql += render_template("/".join([self.template_path, 'update.sql']), data=data, conn=self.conn)
|
"separate transaction\n"
|
||||||
|
sql += render_template(
|
||||||
|
"/".join([self.template_path, 'update.sql']),
|
||||||
|
data=data, conn=self.conn
|
||||||
|
)
|
||||||
else:
|
else:
|
||||||
sql = render_template("/".join([self.template_path, 'create.sql']), rgname=data['name'], conn=self.conn)
|
sql = render_template(
|
||||||
if ('cpu_rate_limit' in data and data['cpu_rate_limit'] > 0) \
|
"/".join([self.template_path, 'create.sql']),
|
||||||
or ('dirty_rate_limit' in data and data['dirty_rate_limit'] > 0):
|
rgname=data['name'], conn=self.conn
|
||||||
sql += "\n-- Following query will be executed in a separate transaction\n"
|
)
|
||||||
sql += render_template("/".join([self.template_path, 'update.sql']), data=data, conn=self.conn)
|
|
||||||
|
cpu_rate_limit_flag = False
|
||||||
|
dirty_rate_limit_flag = False
|
||||||
|
if 'cpu_rate_limit' in data and data['cpu_rate_limit'] > 0:
|
||||||
|
cpu_rate_limit_flag = True
|
||||||
|
|
||||||
|
if 'dirty_rate_limit' in data and data['dirty_rate_limit'] > 0:
|
||||||
|
dirty_rate_limit_flag = True
|
||||||
|
|
||||||
|
if cpu_rate_limit_flag or dirty_rate_limit_flag:
|
||||||
|
sql += "\n-- Following query will be executed in a " \
|
||||||
|
"separate transaction\n"
|
||||||
|
sql += render_template(
|
||||||
|
"/".join([self.template_path, 'update.sql']),
|
||||||
|
data=data, conn=self.conn
|
||||||
|
)
|
||||||
|
|
||||||
return sql, data['name'] if 'name' in data else old_data['name']
|
return sql, data['name'] if 'name' in data else old_data['name']
|
||||||
|
|
||||||
@ -598,7 +660,9 @@ class ResourceGroupView(NodeView):
|
|||||||
sid: Server ID
|
sid: Server ID
|
||||||
rg_id: Resource Group ID
|
rg_id: Resource Group ID
|
||||||
"""
|
"""
|
||||||
sql = render_template("/".join([self.template_path, 'properties.sql']), rgid=rg_id)
|
sql = render_template(
|
||||||
|
"/".join([self.template_path, 'properties.sql']), rgid=rg_id
|
||||||
|
)
|
||||||
status, res = self.conn.execute_dict(sql)
|
status, res = self.conn.execute_dict(sql)
|
||||||
if not status:
|
if not status:
|
||||||
return internal_server_error(errormsg=res)
|
return internal_server_error(errormsg=res)
|
||||||
@ -610,10 +674,16 @@ class ResourceGroupView(NodeView):
|
|||||||
# Making copy of output for future use
|
# Making copy of output for future use
|
||||||
old_data = dict(res['rows'][0])
|
old_data = dict(res['rows'][0])
|
||||||
|
|
||||||
sql = render_template("/".join([self.template_path, 'create.sql']), display_comments=True,
|
sql = render_template(
|
||||||
rgname=old_data['name'], conn=self.conn)
|
"/".join([self.template_path, 'create.sql']),
|
||||||
|
display_comments=True,
|
||||||
|
rgname=old_data['name'], conn=self.conn
|
||||||
|
)
|
||||||
sql += "\n"
|
sql += "\n"
|
||||||
sql += render_template("/".join([self.template_path, 'update.sql']), data=old_data, conn=self.conn)
|
sql += render_template(
|
||||||
|
"/".join([self.template_path, 'update.sql']),
|
||||||
|
data=old_data, conn=self.conn
|
||||||
|
)
|
||||||
|
|
||||||
return ajax_response(response=sql)
|
return ajax_response(response=sql)
|
||||||
|
|
||||||
|
@ -34,8 +34,8 @@ class ResourceGroupsDeleteTestCase(BaseTestGenerator):
|
|||||||
self.skipTest(message)
|
self.skipTest(message)
|
||||||
else:
|
else:
|
||||||
if server_response["data"]["version"] < 90400:
|
if server_response["data"]["version"] < 90400:
|
||||||
message = "Resource groups are not supported by PPAS 9.3 " \
|
message = "Resource groups are not supported by PPAS " \
|
||||||
"and below."
|
"9.3 and below."
|
||||||
self.skipTest(message)
|
self.skipTest(message)
|
||||||
self.resource_group = "test_resource_group_delete%s" % \
|
self.resource_group = "test_resource_group_delete%s" % \
|
||||||
str(uuid.uuid4())[1:8]
|
str(uuid.uuid4())[1:8]
|
||||||
|
@ -38,7 +38,7 @@ class ResourceGroupsGetTestCase(BaseTestGenerator):
|
|||||||
" and below."
|
" and below."
|
||||||
self.skipTest(message)
|
self.skipTest(message)
|
||||||
self.resource_group = "test_resource_group_get%s" % \
|
self.resource_group = "test_resource_group_get%s" % \
|
||||||
str(uuid.uuid4())[1:8]
|
str(uuid.uuid4())[1:8]
|
||||||
self.resource_group_id = resource_groups_utils.create_resource_groups(
|
self.resource_group_id = resource_groups_utils.create_resource_groups(
|
||||||
self.server, self.resource_group)
|
self.server, self.resource_group)
|
||||||
|
|
||||||
|
@ -148,8 +148,8 @@ class RoleView(PGChildNodeView):
|
|||||||
# postgres database datestyle format
|
# postgres database datestyle format
|
||||||
try:
|
try:
|
||||||
if data[u'rolvaliduntil'] is not None and \
|
if data[u'rolvaliduntil'] is not None and \
|
||||||
data[u'rolvaliduntil'] != '' and \
|
data[u'rolvaliduntil'] != '' and \
|
||||||
len(data[u'rolvaliduntil']) > 0:
|
len(data[u'rolvaliduntil']) > 0:
|
||||||
data[u'rolvaliduntil'] = dateutil_parser.parse(
|
data[u'rolvaliduntil'] = dateutil_parser.parse(
|
||||||
data[u'rolvaliduntil']
|
data[u'rolvaliduntil']
|
||||||
).isoformat()
|
).isoformat()
|
||||||
@ -161,9 +161,11 @@ class RoleView(PGChildNodeView):
|
|||||||
if u'rolconnlimit' in data:
|
if u'rolconnlimit' in data:
|
||||||
if data[u'rolconnlimit'] is not None:
|
if data[u'rolconnlimit'] is not None:
|
||||||
data[u'rolconnlimit'] = int(data[u'rolconnlimit'])
|
data[u'rolconnlimit'] = int(data[u'rolconnlimit'])
|
||||||
if type(data[u'rolconnlimit']) != int or data[u'rolconnlimit'] < -1:
|
if type(data[u'rolconnlimit']) != int or \
|
||||||
|
data[u'rolconnlimit'] < -1:
|
||||||
return precondition_required(
|
return precondition_required(
|
||||||
_("Connection limit must be an integer value or equal to -1.")
|
_("Connection limit must be an integer value "
|
||||||
|
"or equal to -1.")
|
||||||
)
|
)
|
||||||
|
|
||||||
if u'rolmembership' in data:
|
if u'rolmembership' in data:
|
||||||
@ -185,7 +187,8 @@ rolmembership:[{
|
|||||||
data[u'admins'] = []
|
data[u'admins'] = []
|
||||||
|
|
||||||
for r in data[u'rolmembership']:
|
for r in data[u'rolmembership']:
|
||||||
if type(r) != dict or u'role' not in r or u'admin' not in r:
|
if type(r) != dict or u'role' not in r or \
|
||||||
|
u'admin' not in r:
|
||||||
return precondition_required(msg)
|
return precondition_required(msg)
|
||||||
else:
|
else:
|
||||||
if r[u'admin']:
|
if r[u'admin']:
|
||||||
@ -231,8 +234,9 @@ rolmembership:{
|
|||||||
return precondition_required(msg)
|
return precondition_required(msg)
|
||||||
|
|
||||||
for r in roles:
|
for r in roles:
|
||||||
if (type(r) != dict or u'role' not in r or
|
if type(r) != dict or \
|
||||||
u'admin' not in r):
|
u'role' not in r or \
|
||||||
|
u'admin' not in r:
|
||||||
return precondition_required(msg)
|
return precondition_required(msg)
|
||||||
|
|
||||||
if r[u'admin']:
|
if r[u'admin']:
|
||||||
@ -259,8 +263,9 @@ rolmembership:{
|
|||||||
return precondition_required(msg)
|
return precondition_required(msg)
|
||||||
|
|
||||||
for r in roles:
|
for r in roles:
|
||||||
if (type(r) != dict or u'role' not in r or
|
if type(r) != dict or \
|
||||||
u'admin' not in r):
|
u'role' not in r or \
|
||||||
|
u'admin' not in r:
|
||||||
return precondition_required(msg)
|
return precondition_required(msg)
|
||||||
|
|
||||||
if not r[u'admin']:
|
if not r[u'admin']:
|
||||||
@ -284,8 +289,9 @@ seclabels:[{
|
|||||||
return precondition_required(msg)
|
return precondition_required(msg)
|
||||||
|
|
||||||
for s in data[u'seclabels']:
|
for s in data[u'seclabels']:
|
||||||
if (type(s) != dict or u'provider' not in s or
|
if type(s) != dict or \
|
||||||
u'label' not in s):
|
u'provider' not in s or \
|
||||||
|
u'label' not in s:
|
||||||
return precondition_required(msg)
|
return precondition_required(msg)
|
||||||
else:
|
else:
|
||||||
msg = _("""
|
msg = _("""
|
||||||
@ -322,8 +328,9 @@ seclabels:{
|
|||||||
return precondition_required(msg)
|
return precondition_required(msg)
|
||||||
|
|
||||||
for s in new_seclabels:
|
for s in new_seclabels:
|
||||||
if (type(s) != dict or u'provider' not in s or
|
if type(s) != dict or \
|
||||||
u'label' not in s):
|
u'provider' not in s or \
|
||||||
|
u'label' not in s:
|
||||||
return precondition_required(msg)
|
return precondition_required(msg)
|
||||||
|
|
||||||
if u'deleted' in seclabels:
|
if u'deleted' in seclabels:
|
||||||
@ -343,15 +350,16 @@ seclabels:{
|
|||||||
return precondition_required(msg)
|
return precondition_required(msg)
|
||||||
|
|
||||||
for s in changed_seclabels:
|
for s in changed_seclabels:
|
||||||
if (type(s) != dict or u'provider' not in s
|
if type(s) != dict or \
|
||||||
and u'label' not in s):
|
u'provider' not in s and \
|
||||||
|
u'label' not in s:
|
||||||
return precondition_required(msg)
|
return precondition_required(msg)
|
||||||
|
|
||||||
if u'variables' in data:
|
if u'variables' in data:
|
||||||
if u'rid' not in kwargs or kwargs['rid'] == -1:
|
if u'rid' not in kwargs or kwargs['rid'] == -1:
|
||||||
msg = _("""
|
msg = _("""
|
||||||
Configuration parameters/variables must be passed as an array of JSON objects in
|
Configuration parameters/variables must be passed as an array of JSON objects
|
||||||
the following format in create mode:
|
in the following format in create mode:
|
||||||
variables:[{
|
variables:[{
|
||||||
database: <database> or null,
|
database: <database> or null,
|
||||||
name: <configuration>,
|
name: <configuration>,
|
||||||
@ -363,14 +371,13 @@ variables:[{
|
|||||||
return precondition_required(msg)
|
return precondition_required(msg)
|
||||||
|
|
||||||
for r in data[u'variables']:
|
for r in data[u'variables']:
|
||||||
if (type(r) != dict or
|
if type(r) != dict or u'name' not in r or \
|
||||||
u'name' not in r or
|
u'value' not in r:
|
||||||
u'value' not in r):
|
|
||||||
return precondition_required(msg)
|
return precondition_required(msg)
|
||||||
else:
|
else:
|
||||||
msg = _("""
|
msg = _("""
|
||||||
Configuration parameters/variables must be passed as an array of JSON objects in
|
Configuration parameters/variables must be passed as an array of JSON objects
|
||||||
the following format in update mode:
|
in the following format in update mode:
|
||||||
rolmembership:{
|
rolmembership:{
|
||||||
'added': [{
|
'added': [{
|
||||||
database: <database> or null,
|
database: <database> or null,
|
||||||
@ -405,8 +412,8 @@ rolmembership:{
|
|||||||
return precondition_required(msg)
|
return precondition_required(msg)
|
||||||
|
|
||||||
for v in new_vars:
|
for v in new_vars:
|
||||||
if (type(v) != dict or u'name' not in v or
|
if type(v) != dict or u'name' not in v or \
|
||||||
u'value' not in v):
|
u'value' not in v:
|
||||||
return precondition_required(msg)
|
return precondition_required(msg)
|
||||||
|
|
||||||
if u'deleted' in variables:
|
if u'deleted' in variables:
|
||||||
@ -426,8 +433,8 @@ rolmembership:{
|
|||||||
return precondition_required(msg)
|
return precondition_required(msg)
|
||||||
|
|
||||||
for v in new_vars:
|
for v in new_vars:
|
||||||
if (type(v) != dict or u'name' not in v or
|
if type(v) != dict or u'name' not in v or \
|
||||||
u'value' not in v):
|
u'value' not in v:
|
||||||
return precondition_required(msg)
|
return precondition_required(msg)
|
||||||
|
|
||||||
self.request = data
|
self.request = data
|
||||||
@ -466,10 +473,10 @@ rolmembership:{
|
|||||||
ver = self.manager.version
|
ver = self.manager.version
|
||||||
|
|
||||||
self.sql_path = 'role/sql/{0}/'.format(
|
self.sql_path = 'role/sql/{0}/'.format(
|
||||||
'post9_4' if ver >= 90500 else \
|
'post9_4' if ver >= 90500 else
|
||||||
'post9_1' if ver >= 90200 else \
|
'post9_1' if ver >= 90200 else
|
||||||
'post9_0' if ver >= 90100 else \
|
'post9_0' if ver >= 90100 else
|
||||||
'post8_4'
|
'post8_4'
|
||||||
)
|
)
|
||||||
|
|
||||||
self.alterKeys = [
|
self.alterKeys = [
|
||||||
@ -491,19 +498,22 @@ rolmembership:{
|
|||||||
fetch_name = True
|
fetch_name = True
|
||||||
if action == 'drop':
|
if action == 'drop':
|
||||||
forbidden_msg = _(
|
forbidden_msg = _(
|
||||||
"The current user does not have permission to drop the role."
|
"The current user does not have permission to drop"
|
||||||
|
" the role."
|
||||||
)
|
)
|
||||||
else:
|
else:
|
||||||
forbidden_msg = _(
|
forbidden_msg = _(
|
||||||
"The current user does not have permission to update the role."
|
"The current user does not have permission to "
|
||||||
|
"update the role."
|
||||||
)
|
)
|
||||||
elif action == 'create':
|
elif action == 'create':
|
||||||
check_permission = True
|
check_permission = True
|
||||||
forbidden_msg = _(
|
forbidden_msg = _(
|
||||||
"The current user does not have permission to create the role."
|
"The current user does not have permission to create "
|
||||||
|
"the role."
|
||||||
)
|
)
|
||||||
elif (action == 'msql' and
|
elif action == 'msql' and 'rid' in kwargs and \
|
||||||
'rid' in kwargs and kwargs['rid'] != -1):
|
kwargs['rid'] != -1:
|
||||||
fetch_name = True
|
fetch_name = True
|
||||||
|
|
||||||
if check_permission:
|
if check_permission:
|
||||||
@ -511,13 +521,12 @@ rolmembership:{
|
|||||||
|
|
||||||
if not user['is_superuser'] and \
|
if not user['is_superuser'] and \
|
||||||
not user['can_create_role']:
|
not user['can_create_role']:
|
||||||
if (action != 'update' or
|
if action != 'update' or 'rid' in kwargs:
|
||||||
'rid' in kwargs and kwargs['rid'] != -1 and
|
if kwargs['rid'] != -1:
|
||||||
user['id'] != kwargs['rid']):
|
if user['id'] != kwargs['rid']:
|
||||||
return forbidden(forbidden_msg)
|
return forbidden(forbidden_msg)
|
||||||
|
|
||||||
if fetch_name:
|
if fetch_name:
|
||||||
|
|
||||||
status, res = self.conn.execute_dict(
|
status, res = self.conn.execute_dict(
|
||||||
render_template(
|
render_template(
|
||||||
self.sql_path + 'permission.sql',
|
self.sql_path + 'permission.sql',
|
||||||
@ -535,7 +544,8 @@ rolmembership:{
|
|||||||
|
|
||||||
if len(res['rows']) == 0:
|
if len(res['rows']) == 0:
|
||||||
return gone(
|
return gone(
|
||||||
_("Could not find the role on the database server.")
|
_("Could not find the role on the database "
|
||||||
|
"server.")
|
||||||
)
|
)
|
||||||
|
|
||||||
row = res['rows'][0]
|
row = res['rows'][0]
|
||||||
@ -583,7 +593,8 @@ rolmembership:{
|
|||||||
if not status:
|
if not status:
|
||||||
return internal_server_error(
|
return internal_server_error(
|
||||||
_(
|
_(
|
||||||
"Error fetching role information from the database server.\n{0}"
|
"Error fetching role information from the database "
|
||||||
|
"server.\n{0}"
|
||||||
).format(rset)
|
).format(rset)
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -617,7 +628,8 @@ rolmembership:{
|
|||||||
if not status:
|
if not status:
|
||||||
return internal_server_error(
|
return internal_server_error(
|
||||||
_(
|
_(
|
||||||
"Error fetching role information from the database server.\n{0}"
|
"Error fetching role information from the database "
|
||||||
|
"server.\n{0}"
|
||||||
).format(rset)
|
).format(rset)
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -707,7 +719,8 @@ rolmembership:{
|
|||||||
|
|
||||||
if not status:
|
if not status:
|
||||||
return internal_server_error(
|
return internal_server_error(
|
||||||
_("Could not generate reversed engineered query for the role.\n{0}").format(
|
_("Could not generate reversed engineered query for the "
|
||||||
|
"role.\n{0}").format(
|
||||||
res
|
res
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
@ -756,7 +769,8 @@ rolmembership:{
|
|||||||
if not status:
|
if not status:
|
||||||
return internal_server_error(
|
return internal_server_error(
|
||||||
_(
|
_(
|
||||||
"Error fetching role information from the database server.\n{0}"
|
"Error fetching role information from the database "
|
||||||
|
"server.\n{0}"
|
||||||
).format(rset)
|
).format(rset)
|
||||||
)
|
)
|
||||||
for row in rset['rows']:
|
for row in rset['rows']:
|
||||||
@ -803,7 +817,8 @@ rolmembership:{
|
|||||||
if not status:
|
if not status:
|
||||||
return internal_server_error(
|
return internal_server_error(
|
||||||
_(
|
_(
|
||||||
"Error fetching role information from the database server.\n{0}"
|
"Error fetching role information from the database "
|
||||||
|
"server.\n{0}"
|
||||||
).format(rset)
|
).format(rset)
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -925,9 +940,21 @@ rolmembership:{
|
|||||||
oid = db_row['datdba']
|
oid = db_row['datdba']
|
||||||
if db_row['type'] == 'd':
|
if db_row['type'] == 'd':
|
||||||
if rid == oid:
|
if rid == oid:
|
||||||
dependents.append({'type': 'database', 'name': '', 'field': db_row['datname']})
|
dependents.append(
|
||||||
|
{
|
||||||
|
'type': 'database',
|
||||||
|
'name': '',
|
||||||
|
'field': db_row['datname']
|
||||||
|
}
|
||||||
|
)
|
||||||
else:
|
else:
|
||||||
dependents.append({'type': 'tablespace', 'name': db_row['datname'], 'field': ''})
|
dependents.append(
|
||||||
|
{
|
||||||
|
'type': 'tablespace',
|
||||||
|
'name': db_row['datname'],
|
||||||
|
'field': ''
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
# If connection to the database is not allowed then continue
|
# If connection to the database is not allowed then continue
|
||||||
# with the next database
|
# with the next database
|
||||||
@ -947,8 +974,11 @@ rolmembership:{
|
|||||||
current_app.logger.exception(e)
|
current_app.logger.exception(e)
|
||||||
|
|
||||||
if temp_conn.connected():
|
if temp_conn.connected():
|
||||||
query = render_template("/".join([self.sql_path, 'dependents.sql']),
|
query = render_template(
|
||||||
fetch_dependents=True, rid=rid, lastsysoid=db_row['datlastsysoid'])
|
"/".join([self.sql_path, 'dependents.sql']),
|
||||||
|
fetch_dependents=True, rid=rid,
|
||||||
|
lastsysoid=db_row['datlastsysoid']
|
||||||
|
)
|
||||||
|
|
||||||
status, result = temp_conn.execute_dict(query)
|
status, result = temp_conn.execute_dict(query)
|
||||||
if not status:
|
if not status:
|
||||||
@ -985,7 +1015,13 @@ rolmembership:{
|
|||||||
else:
|
else:
|
||||||
continue
|
continue
|
||||||
|
|
||||||
dependents.append({'type': type_name, 'name': rel_name, 'field': db_row['datname']})
|
dependents.append(
|
||||||
|
{
|
||||||
|
'type': type_name,
|
||||||
|
'name': rel_name,
|
||||||
|
'field': db_row['datname']
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
# Release only those connections which we have created above.
|
# Release only those connections which we have created above.
|
||||||
if not is_connected:
|
if not is_connected:
|
||||||
@ -1027,7 +1063,8 @@ SELECT
|
|||||||
NULL AS min_val, NULL AS max_val, NULL::text[] AS enumvals
|
NULL AS min_val, NULL AS max_val, NULL::text[] AS enumvals
|
||||||
UNION ALL
|
UNION ALL
|
||||||
SELECT
|
SELECT
|
||||||
name, vartype, min_val::numeric AS min_val, max_val::numeric AS max_val, enumvals
|
name, vartype, min_val::numeric AS min_val, max_val::numeric AS max_val,
|
||||||
|
enumvals
|
||||||
FROM
|
FROM
|
||||||
pg_settings
|
pg_settings
|
||||||
WHERE
|
WHERE
|
||||||
|
@ -36,10 +36,11 @@ class LoginRoleAddTestCase(BaseTestGenerator):
|
|||||||
|
|
||||||
data = roles_utils.get_role_data(self.server['db_password'])
|
data = roles_utils.get_role_data(self.server['db_password'])
|
||||||
self.role_name = data['rolname']
|
self.role_name = data['rolname']
|
||||||
response = self.tester.post(self.url + str(utils.SERVER_GROUP) + '/'
|
response = self.tester.post(
|
||||||
+ str(server_id) + '/',
|
self.url + str(utils.SERVER_GROUP) + '/' + str(server_id) + '/',
|
||||||
data=json.dumps(data),
|
data=json.dumps(data),
|
||||||
content_type='html/json')
|
content_type='html/json'
|
||||||
|
)
|
||||||
self.assertEquals(response.status_code, 200)
|
self.assertEquals(response.status_code, 200)
|
||||||
response_data = json.loads(response.data.decode('utf-8'))
|
response_data = json.loads(response.data.decode('utf-8'))
|
||||||
role_id = response_data['node']['_id']
|
role_id = response_data['node']['_id']
|
||||||
|
@ -47,4 +47,3 @@ class LoginRoleDeleteTestCase(BaseTestGenerator):
|
|||||||
self.server['port'],
|
self.server['port'],
|
||||||
self.server['sslmode'])
|
self.server['sslmode'])
|
||||||
roles_utils.delete_role(connection, self.role_name)
|
roles_utils.delete_role(connection, self.role_name)
|
||||||
|
|
||||||
|
@ -56,4 +56,3 @@ class LoginRolePutTestCase(BaseTestGenerator):
|
|||||||
self.server['port'],
|
self.server['port'],
|
||||||
self.server['sslmode'])
|
self.server['sslmode'])
|
||||||
roles_utils.delete_role(connection, self.role_name)
|
roles_utils.delete_role(connection, self.role_name)
|
||||||
|
|
||||||
|
@ -119,7 +119,11 @@ class TablespaceView(PGChildNodeView):
|
|||||||
def wrap(*args, **kwargs):
|
def wrap(*args, **kwargs):
|
||||||
# Here args[0] will hold self & kwargs will hold gid,sid,tsid
|
# Here args[0] will hold self & kwargs will hold gid,sid,tsid
|
||||||
self = args[0]
|
self = args[0]
|
||||||
self.manager = get_driver(PG_DEFAULT_DRIVER).connection_manager(kwargs['sid'])
|
self.manager = get_driver(
|
||||||
|
PG_DEFAULT_DRIVER
|
||||||
|
).connection_manager(
|
||||||
|
kwargs['sid']
|
||||||
|
)
|
||||||
self.conn = self.manager.connection()
|
self.conn = self.manager.connection()
|
||||||
|
|
||||||
# If DB not connected then return error to browser
|
# If DB not connected then return error to browser
|
||||||
@ -133,7 +137,9 @@ class TablespaceView(PGChildNodeView):
|
|||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
self.template_path = 'tablespaces/sql/#{0}#'.format(self.manager.version)
|
self.template_path = 'tablespaces/sql/#{0}#'.format(
|
||||||
|
self.manager.version
|
||||||
|
)
|
||||||
current_app.logger.debug(
|
current_app.logger.debug(
|
||||||
"Using the template path: %s", self.template_path
|
"Using the template path: %s", self.template_path
|
||||||
)
|
)
|
||||||
@ -173,11 +179,11 @@ class TablespaceView(PGChildNodeView):
|
|||||||
return gone(gettext("""Could not find the tablespace."""))
|
return gone(gettext("""Could not find the tablespace."""))
|
||||||
|
|
||||||
res = self.blueprint.generate_browser_node(
|
res = self.blueprint.generate_browser_node(
|
||||||
rset['rows'][0]['oid'],
|
rset['rows'][0]['oid'],
|
||||||
sid,
|
sid,
|
||||||
rset['rows'][0]['name'],
|
rset['rows'][0]['name'],
|
||||||
icon="icon-tablespace"
|
icon="icon-tablespace"
|
||||||
)
|
)
|
||||||
|
|
||||||
return make_json_response(
|
return make_json_response(
|
||||||
data=res,
|
data=res,
|
||||||
@ -269,7 +275,9 @@ class TablespaceView(PGChildNodeView):
|
|||||||
return internal_server_error(errormsg=res)
|
return internal_server_error(errormsg=res)
|
||||||
|
|
||||||
if len(res['rows']) == 0:
|
if len(res['rows']) == 0:
|
||||||
return gone(gettext("""Could not find the tablespace information."""))
|
return gone(
|
||||||
|
gettext("""Could not find the tablespace information.""")
|
||||||
|
)
|
||||||
|
|
||||||
# Making copy of output for future use
|
# Making copy of output for future use
|
||||||
copy_data = dict(res['rows'][0])
|
copy_data = dict(res['rows'][0])
|
||||||
@ -494,11 +502,17 @@ class TablespaceView(PGChildNodeView):
|
|||||||
for key in ['spcacl']:
|
for key in ['spcacl']:
|
||||||
if key in data and data[key] is not None:
|
if key in data and data[key] is not None:
|
||||||
if 'added' in data[key]:
|
if 'added' in data[key]:
|
||||||
data[key]['added'] = parse_priv_to_db(data[key]['added'], self.acl)
|
data[key]['added'] = parse_priv_to_db(
|
||||||
|
data[key]['added'], self.acl
|
||||||
|
)
|
||||||
if 'changed' in data[key]:
|
if 'changed' in data[key]:
|
||||||
data[key]['changed'] = parse_priv_to_db(data[key]['changed'], self.acl)
|
data[key]['changed'] = parse_priv_to_db(
|
||||||
|
data[key]['changed'], self.acl
|
||||||
|
)
|
||||||
if 'deleted' in data[key]:
|
if 'deleted' in data[key]:
|
||||||
data[key]['deleted'] = parse_priv_to_db(data[key]['deleted'], self.acl)
|
data[key]['deleted'] = parse_priv_to_db(
|
||||||
|
data[key]['deleted'], self.acl
|
||||||
|
)
|
||||||
|
|
||||||
# If name is not present with in update data then copy it
|
# If name is not present with in update data then copy it
|
||||||
# from old data
|
# from old data
|
||||||
@ -689,7 +703,10 @@ class TablespaceView(PGChildNodeView):
|
|||||||
}
|
}
|
||||||
|
|
||||||
# Fetching databases with CONNECT privileges status.
|
# Fetching databases with CONNECT privileges status.
|
||||||
query = render_template("/".join([self.template_path, 'dependents.sql']), fetch_database=True)
|
query = render_template(
|
||||||
|
"/".join([self.template_path, 'dependents.sql']),
|
||||||
|
fetch_database=True
|
||||||
|
)
|
||||||
status, db_result = self.conn.execute_dict(query)
|
status, db_result = self.conn.execute_dict(query)
|
||||||
if not status:
|
if not status:
|
||||||
current_app.logger.error(db_result)
|
current_app.logger.error(db_result)
|
||||||
@ -726,8 +743,10 @@ class TablespaceView(PGChildNodeView):
|
|||||||
current_app.logger.exception(e)
|
current_app.logger.exception(e)
|
||||||
|
|
||||||
if temp_conn.connected():
|
if temp_conn.connected():
|
||||||
query = render_template("/".join([self.template_path, 'dependents.sql']),
|
query = render_template(
|
||||||
fetch_dependents=True, tsid=tsid)
|
"/".join([self.template_path, 'dependents.sql']),
|
||||||
|
fetch_dependents=True, tsid=tsid
|
||||||
|
)
|
||||||
status, result = temp_conn.execute_dict(query)
|
status, result = temp_conn.execute_dict(query)
|
||||||
if not status:
|
if not status:
|
||||||
current_app.logger.error(result)
|
current_app.logger.error(result)
|
||||||
@ -763,7 +782,13 @@ class TablespaceView(PGChildNodeView):
|
|||||||
else:
|
else:
|
||||||
continue
|
continue
|
||||||
|
|
||||||
dependents.append({'type': type_name, 'name': rel_name, 'field': db_row['datname']})
|
dependents.append(
|
||||||
|
{
|
||||||
|
'type': type_name,
|
||||||
|
'name': rel_name,
|
||||||
|
'field': db_row['datname']
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
# Release only those connections which we have created above.
|
# Release only those connections which we have created above.
|
||||||
if not is_connected:
|
if not is_connected:
|
||||||
|
@ -37,6 +37,7 @@ class BackendSupportedTestCase(BaseTestGenerator):
|
|||||||
expected_result=False
|
expected_result=False
|
||||||
))
|
))
|
||||||
]
|
]
|
||||||
|
|
||||||
class LocalManager:
|
class LocalManager:
|
||||||
def __init__(self, properties):
|
def __init__(self, properties):
|
||||||
self.sversion = properties['sversion']
|
self.sversion = properties['sversion']
|
||||||
|
@ -47,10 +47,10 @@ class TableSpaceAddTestCase(BaseTestGenerator):
|
|||||||
table_space_path, db_owner)
|
table_space_path, db_owner)
|
||||||
self.tablespace_name = data['name']
|
self.tablespace_name = data['name']
|
||||||
response = self.tester.post(
|
response = self.tester.post(
|
||||||
self.url + str(utils.SERVER_GROUP) + '/'
|
self.url + str(utils.SERVER_GROUP) + '/' + str(server_id) + '/',
|
||||||
+ str(server_id) + '/',
|
|
||||||
data=json.dumps(data),
|
data=json.dumps(data),
|
||||||
content_type='html/json')
|
content_type='html/json'
|
||||||
|
)
|
||||||
self.assertEquals(response.status_code, 200)
|
self.assertEquals(response.status_code, 200)
|
||||||
response_data = json.loads(response.data.decode('utf-8'))
|
response_data = json.loads(response.data.decode('utf-8'))
|
||||||
tablespace_id = response_data['node']['_id']
|
tablespace_id = response_data['node']['_id']
|
||||||
|
@ -36,9 +36,11 @@ class TableSpaceDeleteTestCase(BaseTestGenerator):
|
|||||||
self.server_id = parent_node_dict["server"][-1]["server_id"]
|
self.server_id = parent_node_dict["server"][-1]["server_id"]
|
||||||
self.tablespace_id = tablespace_utils.create_tablespace(
|
self.tablespace_id = tablespace_utils.create_tablespace(
|
||||||
self.server, self.tablespace_name)
|
self.server, self.tablespace_name)
|
||||||
tablespace_dict = {"tablespace_id": self.tablespace_id,
|
tablespace_dict = {
|
||||||
"tablespace_name": self.tablespace_name,
|
"tablespace_id": self.tablespace_id,
|
||||||
"server_id": self.server_id}
|
"tablespace_name": self.tablespace_name,
|
||||||
|
"server_id": self.server_id
|
||||||
|
}
|
||||||
utils.write_node_info("tsid", tablespace_dict)
|
utils.write_node_info("tsid", tablespace_dict)
|
||||||
|
|
||||||
def runTest(self):
|
def runTest(self):
|
||||||
@ -48,10 +50,11 @@ class TableSpaceDeleteTestCase(BaseTestGenerator):
|
|||||||
if tablespace_count == 0:
|
if tablespace_count == 0:
|
||||||
raise Exception("No tablespace(s) to delete!!!")
|
raise Exception("No tablespace(s) to delete!!!")
|
||||||
|
|
||||||
response = self.tester.delete(self.url + str(utils.SERVER_GROUP)
|
response = self.tester.delete(
|
||||||
+ '/' + str(self.server_id) + '/'
|
self.url + str(utils.SERVER_GROUP) +
|
||||||
+ str(self.tablespace_id),
|
'/' + str(self.server_id) + '/' + str(self.tablespace_id),
|
||||||
follow_redirects=True)
|
follow_redirects=True
|
||||||
|
)
|
||||||
self.assertEquals(response.status_code, 200)
|
self.assertEquals(response.status_code, 200)
|
||||||
delete_response_data = json.loads(response.data.decode('utf-8'))
|
delete_response_data = json.loads(response.data.decode('utf-8'))
|
||||||
self.assertEquals(delete_response_data['success'], 1)
|
self.assertEquals(delete_response_data['success'], 1)
|
||||||
@ -65,4 +68,3 @@ class TableSpaceDeleteTestCase(BaseTestGenerator):
|
|||||||
self.server['port'],
|
self.server['port'],
|
||||||
self.server['sslmode'])
|
self.server['sslmode'])
|
||||||
tablespace_utils.delete_tablespace(connection, self.tablespace_name)
|
tablespace_utils.delete_tablespace(connection, self.tablespace_name)
|
||||||
|
|
||||||
|
@ -50,11 +50,13 @@ class TableSpaceUpdateTestCase(BaseTestGenerator):
|
|||||||
data = {
|
data = {
|
||||||
"description": "This is test description.",
|
"description": "This is test description.",
|
||||||
"table_space_id": self.tablespace_id
|
"table_space_id": self.tablespace_id
|
||||||
}
|
}
|
||||||
put_response = self.tester.put(
|
put_response = self.tester.put(
|
||||||
self.url + str(utils.SERVER_GROUP) + '/' + str(self.server_id) + '/'
|
self.url + str(utils.SERVER_GROUP) +
|
||||||
+ str(self.tablespace_id), data=json.dumps(data),
|
'/' + str(self.server_id) + '/' + str(self.tablespace_id),
|
||||||
follow_redirects=True)
|
data=json.dumps(data),
|
||||||
|
follow_redirects=True
|
||||||
|
)
|
||||||
self.assertEquals(put_response.status_code, 200)
|
self.assertEquals(put_response.status_code, 200)
|
||||||
|
|
||||||
def tearDown(self):
|
def tearDown(self):
|
||||||
|
Loading…
Reference in New Issue
Block a user