[Kimchi-devel] [PATCH V2 1/2] Fix debug report naming problem (backend)
Aline Manera
alinefm at linux.vnet.ibm.com
Mon Feb 24 12:59:31 UTC 2014
On 02/21/2014 06:10 PM, Rodrigo Trujillo wrote:
> The tool sosreport only accepts letters, digits and hyphen in the name
> of the report, non alphanumeric characteres are removed from the file
> name and then Kimchi is not able to find the file.
>
> This patch fixes the problem in the backend, adding json schema
> verification.
>
> Implement name generation in backend
>
> Signed-off-by: Rodrigo Trujillo <rodrigo.trujillo at linux.vnet.ibm.com>
> ---
> src/kimchi/API.json | 12 ++++++++++++
> src/kimchi/control/base.py | 1 +
> src/kimchi/i18n.py | 2 ++
> src/kimchi/model/debugreports.py | 5 ++++-
> 4 files changed, 19 insertions(+), 1 deletion(-)
>
> diff --git a/src/kimchi/API.json b/src/kimchi/API.json
> index 1189c01..e393324 100644
> --- a/src/kimchi/API.json
> +++ b/src/kimchi/API.json
> @@ -29,6 +29,18 @@
> }
> },
> "properties": {
> + "debugreports_create": {
> + "type": "object",
> + "error": "KCHDEBREP0006E",
> + "properties": {
> + "name": {
> + "description": "The name for the debug report file.",
> + "type": "string",
> + "pattern": "^[A-Za-z0-9-]*$",
> + "error": "KCHDEBREP0007E"
> + }
> + }
> + },
> "storagepools_create": {
> "type": "object",
> "error": "KCHPOOL0026E",
> diff --git a/src/kimchi/control/base.py b/src/kimchi/control/base.py
> index 048dd34..2cfcfd7 100644
> --- a/src/kimchi/control/base.py
> +++ b/src/kimchi/control/base.py
> @@ -307,6 +307,7 @@ class AsyncCollection(Collection):
> get_class_name(self)})
> raise cherrypy.HTTPError(405, e.message)
>
> + validate_params(params, self, 'create')
> args = self.model_args + [params]
> task = create(*args)
> cherrypy.response.status = 202
> diff --git a/src/kimchi/i18n.py b/src/kimchi/i18n.py
> index dfc1b2b..7ca4060 100644
> --- a/src/kimchi/i18n.py
> +++ b/src/kimchi/i18n.py
> @@ -173,6 +173,8 @@ messages = {
> "KCHDR0003E": _("Unable to create debug report %(name)s. Details: %(err)s."),
> "KCHDR0004E": _("Can not find any generated debug report matching name %(name)s"),
> "KCHDR0005E": _("Unable to generate debug report %(name)s. Details: %(err)s"),
> + "KCHDR0006E": _("You must give a name for the debug file report."),
The above message isn't being used.
> + "KCHDR0007E": _("Name must be a string. Only letters, digits and hyphen ('-') are allowed."),
>
> "KCHSR0001E": _("Storage server %(server)s was not used by Kimchi"),
>
> diff --git a/src/kimchi/model/debugreports.py b/src/kimchi/model/debugreports.py
> index 7dbd69f..aa70a6b 100644
> --- a/src/kimchi/model/debugreports.py
> +++ b/src/kimchi/model/debugreports.py
> @@ -41,7 +41,10 @@ class DebugReportsModel(object):
> self.task = TaskModel(**kargs)
>
> def create(self, params):
> - ident = params['name']
> + ident = params.get('name')
You need to strip() the name value. Otherwise we will accept " " like
a name
> + # Generate a name with time and millisec precision, if necessary
> + if ident is None or ident == "":
> + ident = 'report-' + str(int(time.time()*1000))
> taskid = self._gen_debugreport_file(ident)
> return self.task.lookup(taskid)
>
More information about the Kimchi-devel
mailing list