On 02/24/2014 09:59 AM, Aline Manera wrote:
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(a)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.
Actually it is used in error return of
json schema, but it was wrongly
written there. I fixed this
> + "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
The api schema will not allow spaces in the name. But I am going to add
the strip, then we avoid problems in the case of
someone calls the function directly.
> + # 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)
>
_______________________________________________
Kimchi-devel mailing list
Kimchi-devel(a)ovirt.org
http://lists.ovirt.org/mailman/listinfo/kimchi-devel