[sru][xenial-updates-backport] support dash "-" in a tag name for filters

Bug #1737126 reported by Dmitrii Shcherbakov
8
This bug affects 1 person
Affects Status Importance Assigned to Milestone
simplestreams
In Progress
Undecided
Unassigned

Bug Description

[Impact]

Matching by fields that have a dash in their name fails ("bootloader-type" in this case).

sstream-mirror --progress --max=1 --keyring=/usr/share/keyrings/ubuntu-cloudimage-keyring.gpg http://images.maas.io/ephemeral-v3/daily/ ~/mirror/images.maas.io/ephemeral-v3/daily/ 'bootloader-type=~(pxe|(^$))' 'arch=amd64' 'subarch~((ga-16.04)|(^$))' 'kflavor~((generic)|(^$))' 'content_id~((com.ubuntu.maas:daily:1:bootloader-download)|com.ubuntu.maas.daily:v3)'
Traceback (most recent call last):
  File "/usr/bin/sstream-mirror", line 157, in <module>
    main()
  File "/usr/bin/sstream-mirror", line 112, in main
    filter_list = filters.get_filters(args.filters)
  File "/usr/lib/python3/dist-packages/simplestreams/filters.py", line 62, in get_filters
    flist.append(ItemFilter(f, noneval=noneval))
  File "/usr/lib/python3/dist-packages/simplestreams/filters.py", line 29, in __init__
    raise ValueError("Unable to parse expression %s" % content)
ValueError: Unable to parse expression bootloader-type=~(pxe|(^$))

[Test Case]

This is both a test case and a reproducer on a Xenial machine:

sstream-mirror --progress --max=1 --keyring=/usr/share/keyrings/ubuntu-cloudimage-keyring.gpg http://images.maas.io/ephemeral-v3/daily/ ~/mirror/images.maas.io/ephemeral-v3/daily/ 'bootloader-type=~(pxe|(^$))' 'arch=amd64' 'subarch~((ga-16.04)|(^$))' 'kflavor~((generic)|(^$))' 'content_id~((com.ubuntu.maas:daily:1:bootloader-download)|com.ubuntu.maas.daily:v3)'

[Regression Potential]

None

[Other Info]

Need to backport this to be able to match tag names that contain dashes:

http://bazaar.launchpad.net/~simplestreams-dev/simplestreams/trunk/revision/445

commit 2df782018dda0b58f2296b981e6eef2cc08b9ab0
Author: Lee Trager <email address hidden>
Date: Mon Oct 17 13:26:06 2016 -0700

    Allow filtered fields to contain a '-'

diff --git a/simplestreams/filters.py b/simplestreams/filters.py
index 5e93ce4..3818949 100644
--- a/simplestreams/filters.py
+++ b/simplestreams/filters.py
@@ -22,7 +22,7 @@ import re

 class ItemFilter(object):
     def __init__(self, content, noneval=""):
- rparsefmt = r"(\w+)[ ]*([!]{0,1}[=~])[ ]*(.*)[ ]*$"
+ rparsefmt = r"([\w|\-]+)[ ]*([!]{0,1}[=~])[ ]*(.*)[ ]*$"
         parsed = re.match(rparsefmt, content)

         if not parsed:

Tags: cpe-onsite

Related branches

description: updated
Changed in simplestreams:
status: New → In Progress
assignee: nobody → Dmitrii Shcherbakov (dmitriis)
summary: - [xenial-updates-backport] support dash "-" in a tag name for filters
+ [sru][xenial-updates-backport] support dash "-" in a tag name for
+ filters
Changed in simplestreams:
assignee: Dmitrii Shcherbakov (dmitriis) → nobody
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.