25
24
# TODO(termie): replace minidom with etree
26
25
from xml.dom import minidom
28
_log = logging.getLogger("api")
29
_log.setLevel(logging.DEBUG)
27
from nova import log as logging
29
LOG = logging.getLogger("nova.api.request")
32
32
_c2u = re.compile('(((?<=[a-z])[A-Z])|([A-Z](?![A-Z]|$)))')
85
85
class APIRequest(object):
86
def __init__(self, controller, action):
86
def __init__(self, controller, action, args):
87
87
self.controller = controller
88
88
self.action = action
90
def send(self, context, **kwargs):
91
def invoke(self, context):
92
93
method = getattr(self.controller,
93
94
_camelcase_to_underscore(self.action))
94
95
except AttributeError:
95
_error = ('Unsupported API request: controller = %s,'
96
'action = %s') % (self.controller, self.action)
96
_error = _('Unsupported API request: controller = %s,'
97
'action = %s') % (self.controller, self.action)
98
99
# TODO: Raise custom exception, trap in apiserver,
99
100
# and reraise as 400 error.
100
101
raise Exception(_error)
103
for key, value in kwargs.items():
104
for key, value in self.args.items():
104
105
parts = key.split(".")
105
106
key = _camelcase_to_underscore(parts[0])
106
107
if isinstance(value, str) or isinstance(value, unicode):