add some template_funcs to controller.py
1.modify config_sets.py 2.modify controller.py 3.modify members.py 4.modify roles.py Change-Id: I22554b50fb29d7350616b8be4eafb378dc7f2904
This commit is contained in:
44
code/daisy/daisy/api/v1/config_sets.py
Executable file → Normal file
44
code/daisy/daisy/api/v1/config_sets.py
Executable file → Normal file
@@ -298,29 +298,43 @@ class Controller(controller.BaseController):
|
|||||||
raise HTTPBadRequest(explanation=e.msg, request=req)
|
raise HTTPBadRequest(explanation=e.msg, request=req)
|
||||||
return role_id_list
|
return role_id_list
|
||||||
|
|
||||||
|
def get_config_meta(self, req, template_configs):
|
||||||
|
configs = []
|
||||||
|
for template_config in template_configs:
|
||||||
|
meta = self.get_template_config_meta_or_404(req, template_config)
|
||||||
|
config = {'config_file': meta['config_file'],
|
||||||
|
'section': meta['section_name'],
|
||||||
|
'key': meta['name'],
|
||||||
|
'default_value': meta['default_value'],
|
||||||
|
'id': template_config}
|
||||||
|
configs.append(config)
|
||||||
|
return configs
|
||||||
|
|
||||||
@utils.mutating
|
@utils.mutating
|
||||||
def cluster_config_set_update(self, req, config_set_meta):
|
def cluster_config_set_update(self, req, config_set_meta):
|
||||||
if 'cluster' in config_set_meta:
|
if 'cluster' in config_set_meta:
|
||||||
orig_cluster = str(config_set_meta['cluster'])
|
orig_cluster = str(config_set_meta['cluster'])
|
||||||
self._raise_404_if_cluster_deleted(req, orig_cluster)
|
self._raise_404_if_cluster_deleted(req, orig_cluster)
|
||||||
|
backend = manager.configBackend('clushshell', req)
|
||||||
try:
|
try:
|
||||||
if config_set_meta.get('role', None):
|
if config_set_meta.get('role', None):
|
||||||
role_id_list = self._raise_404_if_role_exist(
|
role_id_list = self._raise_404_if_role_exist(
|
||||||
req, config_set_meta)
|
req, config_set_meta)
|
||||||
if len(role_id_list) == len(eval(config_set_meta['role'])):
|
if len(role_id_list) == len(eval(config_set_meta['role'])):
|
||||||
backend = manager.configBackend('clushshell', req)
|
|
||||||
backend.push_config_by_roles(role_id_list)
|
backend.push_config_by_roles(role_id_list)
|
||||||
else:
|
else:
|
||||||
msg = "the role is not exist"
|
msg = "the role is not exist"
|
||||||
LOG.error(msg)
|
LOG.error(msg)
|
||||||
raise HTTPNotFound(msg)
|
raise HTTPNotFound(msg)
|
||||||
|
elif config_set_meta.get('host_id'):
|
||||||
|
hosts = eval(config_set_meta['host_id'])
|
||||||
|
backend.push_config_by_hosts(hosts)
|
||||||
else:
|
else:
|
||||||
roles = registry.get_roles_detail(req.context)
|
roles = registry.get_roles_detail(req.context)
|
||||||
role_id_list = []
|
role_id_list = []
|
||||||
for role in roles:
|
for role in roles:
|
||||||
if role['cluster_id'] == config_set_meta['cluster']:
|
if role['cluster_id'] == config_set_meta['cluster']:
|
||||||
role_id_list.append(role['id'])
|
role_id_list.append(role['id'])
|
||||||
backend = manager.configBackend('clushshell', req)
|
|
||||||
backend.push_config_by_roles(role_id_list)
|
backend.push_config_by_roles(role_id_list)
|
||||||
|
|
||||||
except exception.Invalid as e:
|
except exception.Invalid as e:
|
||||||
@@ -370,12 +384,27 @@ class Controller(controller.BaseController):
|
|||||||
except exception.Invalid as e:
|
except exception.Invalid as e:
|
||||||
raise HTTPBadRequest(explanation=e.msg, request=req)
|
raise HTTPBadRequest(explanation=e.msg, request=req)
|
||||||
return role_list
|
return role_list
|
||||||
|
|
||||||
else:
|
else:
|
||||||
msg = "the cluster is not exist"
|
msg = "the cluster is not exist"
|
||||||
LOG.error(msg)
|
LOG.error(msg)
|
||||||
raise HTTPNotFound(msg)
|
raise HTTPNotFound(msg)
|
||||||
|
|
||||||
|
@utils.mutating
|
||||||
|
def cluster_config_set_get(self, req, config_set_meta):
|
||||||
|
self._enforce(req, 'cluster_config_set_get')
|
||||||
|
if config_set_meta.get('host_id') and config_set_meta.get(
|
||||||
|
'template_config_id'):
|
||||||
|
backend = manager.configBackend('clushshell', req)
|
||||||
|
template_config_ids = eval(config_set_meta['template_config_id'])
|
||||||
|
configs = self.get_config_meta(req, template_config_ids)
|
||||||
|
host_configs = backend.get_config_by_host(
|
||||||
|
config_set_meta['host_id'], configs)
|
||||||
|
return {'configs': host_configs}
|
||||||
|
else:
|
||||||
|
msg = "lack of host_id or template_config_id!"
|
||||||
|
LOG.error(msg)
|
||||||
|
raise HTTPNotFound(msg)
|
||||||
|
|
||||||
|
|
||||||
class Config_setDeserializer(wsgi.JSONRequestDeserializer):
|
class Config_setDeserializer(wsgi.JSONRequestDeserializer):
|
||||||
"""Handles deserialization of specific controller method requests."""
|
"""Handles deserialization of specific controller method requests."""
|
||||||
@@ -397,6 +426,9 @@ class Config_setDeserializer(wsgi.JSONRequestDeserializer):
|
|||||||
def cluster_config_set_progress(self, request):
|
def cluster_config_set_progress(self, request):
|
||||||
return self._deserialize(request)
|
return self._deserialize(request)
|
||||||
|
|
||||||
|
def cluster_config_set_get(self, request):
|
||||||
|
return self._deserialize(request)
|
||||||
|
|
||||||
|
|
||||||
class Config_setSerializer(wsgi.JSONResponseSerializer):
|
class Config_setSerializer(wsgi.JSONResponseSerializer):
|
||||||
"""Handles serialization of specific controller method responses."""
|
"""Handles serialization of specific controller method responses."""
|
||||||
@@ -437,6 +469,12 @@ class Config_setSerializer(wsgi.JSONResponseSerializer):
|
|||||||
response.body = self.to_json(dict(config_set=result))
|
response.body = self.to_json(dict(config_set=result))
|
||||||
return response
|
return response
|
||||||
|
|
||||||
|
def cluster_config_set_get(self, response, result):
|
||||||
|
response.status = 201
|
||||||
|
response.headers['Content-Type'] = 'application/json'
|
||||||
|
response.body = self.to_json(result)
|
||||||
|
return response
|
||||||
|
|
||||||
|
|
||||||
def create_resource():
|
def create_resource():
|
||||||
"""config_sets resource factory method"""
|
"""config_sets resource factory method"""
|
||||||
|
|||||||
159
code/daisy/daisy/api/v1/controller.py
Executable file → Normal file
159
code/daisy/daisy/api/v1/controller.py
Executable file → Normal file
@@ -334,7 +334,7 @@ class BaseController(object):
|
|||||||
try:
|
try:
|
||||||
return registry.get_service_disk_detail_metadata(context, id)
|
return registry.get_service_disk_detail_metadata(context, id)
|
||||||
except exception.NotFound:
|
except exception.NotFound:
|
||||||
msg = "config with identifier %s not found" % id
|
msg = "service_disk with identifier %s not found" % id
|
||||||
LOG.debug(msg)
|
LOG.debug(msg)
|
||||||
raise webob.exc.HTTPNotFound(
|
raise webob.exc.HTTPNotFound(
|
||||||
msg, request=request, content_type='text/plain')
|
msg, request=request, content_type='text/plain')
|
||||||
@@ -358,6 +358,31 @@ class BaseController(object):
|
|||||||
context = request.context
|
context = request.context
|
||||||
try:
|
try:
|
||||||
return registry.get_cinder_volume_detail_metadata(context, id)
|
return registry.get_cinder_volume_detail_metadata(context, id)
|
||||||
|
except exception.NotFound:
|
||||||
|
msg = "cinder_volume with identifier %s not found" % id
|
||||||
|
LOG.debug(msg)
|
||||||
|
raise webob.exc.HTTPNotFound(
|
||||||
|
msg, request=request, content_type='text/plain')
|
||||||
|
except exception.Forbidden:
|
||||||
|
msg = "Forbidden config access"
|
||||||
|
LOG.debug(msg)
|
||||||
|
raise webob.exc.HTTPForbidden(msg,
|
||||||
|
request=request,
|
||||||
|
content_type='text/plain')
|
||||||
|
|
||||||
|
def get_optical_switch_meta_or_404(self, request, id):
|
||||||
|
"""
|
||||||
|
Grabs the config metadata for an config with a supplied
|
||||||
|
identifier or raises an HTTPNotFound (404) response
|
||||||
|
|
||||||
|
:param request: The WSGI/Webob Request object
|
||||||
|
:param host_id: The opaque config identifier
|
||||||
|
|
||||||
|
:raises HTTPNotFound if config does not exist
|
||||||
|
"""
|
||||||
|
context = request.context
|
||||||
|
try:
|
||||||
|
return registry.get_optical_switch_detail_metadata(context, id)
|
||||||
except exception.NotFound:
|
except exception.NotFound:
|
||||||
msg = "config with identifier %s not found" % id
|
msg = "config with identifier %s not found" % id
|
||||||
LOG.debug(msg)
|
LOG.debug(msg)
|
||||||
@@ -369,3 +394,135 @@ class BaseController(object):
|
|||||||
raise webob.exc.HTTPForbidden(msg,
|
raise webob.exc.HTTPForbidden(msg,
|
||||||
request=request,
|
request=request,
|
||||||
content_type='text/plain')
|
content_type='text/plain')
|
||||||
|
|
||||||
|
def get_version_meta_or_404(self, request, id):
|
||||||
|
"""
|
||||||
|
Grabs the version metadata for an version with a supplied
|
||||||
|
identifier or raises an HTTPNotFound (404) response
|
||||||
|
"""
|
||||||
|
context = request.context
|
||||||
|
try:
|
||||||
|
return registry.get_version_metadata(context, id)
|
||||||
|
except exception.NotFound:
|
||||||
|
msg = "version with identifier %s not found" % id
|
||||||
|
LOG.debug(msg)
|
||||||
|
raise webob.exc.HTTPNotFound(
|
||||||
|
msg, request=request, content_type='text/plain')
|
||||||
|
except exception.Forbidden:
|
||||||
|
msg = "Forbidden version access"
|
||||||
|
LOG.debug(msg)
|
||||||
|
raise webob.exc.HTTPForbidden(msg,
|
||||||
|
request=request,
|
||||||
|
content_type='text/plain')
|
||||||
|
|
||||||
|
def get_version_patch_meta_or_404(self, request, id):
|
||||||
|
"""
|
||||||
|
Grabs the version patch metadata for an version patch with a supplied
|
||||||
|
identifier or raises an HTTPNotFound (404) response
|
||||||
|
"""
|
||||||
|
context = request.context
|
||||||
|
try:
|
||||||
|
return registry.get_version_patch_metadata(context, id)
|
||||||
|
except exception.NotFound:
|
||||||
|
msg = "version patch patch with identifier %s not found" % id
|
||||||
|
LOG.debug(msg)
|
||||||
|
raise webob.exc.HTTPNotFound(
|
||||||
|
msg, request=request, content_type='text/plain')
|
||||||
|
except exception.Forbidden:
|
||||||
|
msg = "Forbidden version patch access"
|
||||||
|
LOG.debug(msg)
|
||||||
|
raise webob.exc.HTTPForbidden(msg,
|
||||||
|
request=request,
|
||||||
|
content_type='text/plain')
|
||||||
|
|
||||||
|
def get_template_func_meta_or_404(self, request, template_func_id,
|
||||||
|
**params):
|
||||||
|
"""
|
||||||
|
Grabs the template_func metadata for an template_func with a supplied
|
||||||
|
identifier or raises an HTTPNotFound (404) response
|
||||||
|
|
||||||
|
:param request: The WSGI/Webob Request object
|
||||||
|
:param host_id: The opaque template_func identifier
|
||||||
|
|
||||||
|
:raises HTTPNotFound if template_func does not exist
|
||||||
|
"""
|
||||||
|
context = request.context
|
||||||
|
try:
|
||||||
|
return registry.get_template_func_metadata(context,
|
||||||
|
template_func_id,
|
||||||
|
**params)
|
||||||
|
except exception.NotFound:
|
||||||
|
msg = "template_func with identifier %s not found" % \
|
||||||
|
template_func_id
|
||||||
|
LOG.debug(msg)
|
||||||
|
raise webob.exc.HTTPNotFound(
|
||||||
|
msg, request=request, content_type='text/plain')
|
||||||
|
except exception.Forbidden:
|
||||||
|
msg = "Forbidden template_func access"
|
||||||
|
LOG.debug(msg)
|
||||||
|
raise webob.exc.HTTPForbidden(msg,
|
||||||
|
request=request,
|
||||||
|
content_type='text/plain')
|
||||||
|
|
||||||
|
def get_template_config_meta_or_404(self, request, template_config_id):
|
||||||
|
"""
|
||||||
|
Grabs the template_config metadata for an
|
||||||
|
template_config with a supplied
|
||||||
|
identifier or raises an HTTPNotFound (404) response
|
||||||
|
|
||||||
|
:param request: The WSGI/Webob Request object
|
||||||
|
:param host_id: The opaque template_config identifier
|
||||||
|
|
||||||
|
:raises HTTPNotFound if template_config does not exist
|
||||||
|
"""
|
||||||
|
context = request.context
|
||||||
|
try:
|
||||||
|
return registry.get_template_config_metadata(context,
|
||||||
|
template_config_id)
|
||||||
|
except exception.NotFound:
|
||||||
|
msg = "template_config with " \
|
||||||
|
"identifier %s not found" % template_config_id
|
||||||
|
LOG.debug(msg)
|
||||||
|
raise webob.exc.HTTPNotFound(
|
||||||
|
msg, request=request, content_type='text/plain')
|
||||||
|
except exception.Forbidden:
|
||||||
|
msg = "Forbidden template_config access"
|
||||||
|
LOG.debug(msg)
|
||||||
|
raise webob.exc.HTTPForbidden(msg,
|
||||||
|
request=request,
|
||||||
|
content_type='text/plain')
|
||||||
|
|
||||||
|
def get_template_service_meta_or_404(self, request, template_service_id):
|
||||||
|
"""
|
||||||
|
Grabs the template_service metadata for
|
||||||
|
an template_service with a supplied
|
||||||
|
identifier or raises an HTTPNotFound (404) response
|
||||||
|
|
||||||
|
:param request: The WSGI/Webob Request object
|
||||||
|
:param host_id: The opaque template_service identifier
|
||||||
|
|
||||||
|
:raises HTTPNotFound if template_service does not exist
|
||||||
|
"""
|
||||||
|
context = request.context
|
||||||
|
try:
|
||||||
|
return registry.get_template_service_metadata(context,
|
||||||
|
template_service_id)
|
||||||
|
except exception.NotFound:
|
||||||
|
msg = "template_service with"\
|
||||||
|
" identifier %s not found" % template_service_id
|
||||||
|
LOG.debug(msg)
|
||||||
|
raise webob.exc.HTTPNotFound(
|
||||||
|
msg, request=request, content_type='text/plain')
|
||||||
|
except exception.Forbidden:
|
||||||
|
msg = "Forbidden template_service access"
|
||||||
|
LOG.debug(msg)
|
||||||
|
raise webob.exc.HTTPForbidden(msg,
|
||||||
|
request=request,
|
||||||
|
content_type='text/plain')
|
||||||
|
|
||||||
|
def _raise_404_if_cluster_deleted(self, req, cluster_id):
|
||||||
|
cluster = self.get_cluster_meta_or_404(req, cluster_id)
|
||||||
|
if cluster['deleted']:
|
||||||
|
msg = _("Cluster with identifier %s has been deleted.") % \
|
||||||
|
cluster_id
|
||||||
|
raise webob.exc.HTTPNotFound(msg)
|
||||||
|
|||||||
2
code/daisy/daisy/api/v1/members.py
Executable file → Normal file
2
code/daisy/daisy/api/v1/members.py
Executable file → Normal file
@@ -148,7 +148,7 @@ class Controller(controller.BaseController):
|
|||||||
LOG.debug(utils.exception_to_str(e))
|
LOG.debug(utils.exception_to_str(e))
|
||||||
raise webob.exc.HTTPNotFound(explanation=e.msg)
|
raise webob.exc.HTTPNotFound(explanation=e.msg)
|
||||||
|
|
||||||
return webob.exc.HTTPNoContent()
|
# return webob.exc.HTTPNoContent()
|
||||||
|
|
||||||
def default(self, req, image_id, id, body=None):
|
def default(self, req, image_id, id, body=None):
|
||||||
"""This will cover the missing 'show' and 'create' actions"""
|
"""This will cover the missing 'show' and 'create' actions"""
|
||||||
|
|||||||
6
code/daisy/daisy/api/v1/roles.py
Executable file → Normal file
6
code/daisy/daisy/api/v1/roles.py
Executable file → Normal file
@@ -186,6 +186,12 @@ class Controller(controller.BaseController):
|
|||||||
host_disk_size_m = 0
|
host_disk_size_m = 0
|
||||||
if host_disks:
|
if host_disks:
|
||||||
for key, value in host_disks.items():
|
for key, value in host_disks.items():
|
||||||
|
if value['disk'].find("-fc-") != -1 \
|
||||||
|
or value['disk'].find("-iscsi-") != -1 \
|
||||||
|
or value['name'].find("mpath") != -1 \
|
||||||
|
or value['name'].find("spath") != -1 \
|
||||||
|
or value['removable'] == 'removable':
|
||||||
|
continue
|
||||||
disk_size_b = str(value.get('size', None))
|
disk_size_b = str(value.get('size', None))
|
||||||
disk_size_b_str = disk_size_b.strip().split()[0]
|
disk_size_b_str = disk_size_b.strip().split()[0]
|
||||||
if disk_size_b_str:
|
if disk_size_b_str:
|
||||||
|
|||||||
Reference in New Issue
Block a user