Merge lp:~rharding/charmworld/fix-revisionless-store_url into lp:charmworld
Status: | Merged |
---|---|
Approved by: | Richard Harding |
Approved revision: | 438 |
Merged at revision: | 435 |
Proposed branch: | lp:~rharding/charmworld/fix-revisionless-store_url |
Merge into: | lp:charmworld |
Diff against target: |
61 lines (+32/-1) 2 files modified
charmworld/models.py (+20/-1) charmworld/tests/test_models.py (+12/-0) |
To merge this branch: | bzr merge lp:~rharding/charmworld/fix-revisionless-store_url |
Related bugs: |
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Juju Gui Bot | continuous-integration | Approve | |
Charmworld Developers | Pending | ||
Review via email: mp+193336@code.launchpad.net |
Commit message
Allow revisionless cs: urls to be valid and found.
- Normally a full qualified store_url has a version on the end. Some users
(Jorge) remove those to create bundles that stay up to date with charms vs
locked.
- This supports that by performing a mongo regex vs exact match query when no
revision is found on the charm store urls.
https:/
R=bac, benji
Description of the change
Allow revisionless cs: urls to be valid and found.
- Normally a full qualified store_url has a version on the end. Some users
(Jorge) remove those to create bundles that stay up to date with charms vs
locked.
- This supports that by performing a mongo regex vs exact match query when no
revision is found on the charm store urls.
Reviewers: mp+193336_ code.launchpad. net,
Message:
Please take a look.
Description:
Allow revisionless cs: urls to be valid and found.
- Normally a full qualified store_url has a version on the end. Some
users
(Jorge) remove those to create bundles that stay up to date with charms
vs
locked.
- This supports that by performing a mongo regex vs exact match query
when no
revision is found on the charm store urls.
https:/ /code.launchpad .net/~rharding/ charmworld/ fix-revisionles s-store_ url/+merge/ 193336
(do not edit description out of merge proposal)
Please review this at https:/ /codereview. appspot. com/19990043/
Affected files (+24, -1 lines): models. py tests/test_ models. py
A [revision details]
M charmworld/
M charmworld/
Index: [revision details] 20131030201737- gz0c5vg8fgoy12l y
=== added file '[revision details]'
--- [revision details] 2012-01-01 00:00:00 +0000
+++ [revision details] 2012-01-01 00:00:00 +0000
@@ -0,0 +1,2 @@
+Old revision: tarmac-
+New revision: <email address hidden>
Index: charmworld/ models. py models. py' models. py 2013-10-24 17:24:43 +0000 models. py 2013-10-30 20:59:40 +0000 description. store_url) : on.store_ url} on.revision: on.store_ url} on.store_ url on.branch:
charm_ query = {u'branch_spec': charm_descripti on.branch}
=== modified file 'charmworld/
--- charmworld/
+++ charmworld/
@@ -1627,7 +1627,16 @@
charm_query = None
if (charm_
# The description includes a cs: charm store url, use that.
- charm_query = {'store_url': charm_descripti
+ # That cs url may or may not have a revision in it. If not, use a
+ # regex query to find charms regardless of revision.
+ if charm_descripti
+ charm_query = {'store_url': charm_descripti
+ else:
+ charm_query = {
+ 'store_url': {
+ "$regex": charm_descripti
+ }
+ }
elif charm_descripti
# The description includes a branch_spec to search for.
Index: charmworld/ tests/test_ models. py tests/test_ models. py' tests/test_ models. py 2013-10-24 18:23:37 +0000 tests/test_ models. py 2013-10-30 20:59:40 +0000
self. assertEqual( 1, charm[' store_data' ]['revision' ])
self. assertEqual( 1, charm['revision'])
=== modified file 'charmworld/
--- charmworld/
+++ charmworld/
@@ -2150,6 +2150,18 @@
+ def test_resolve_ by_store_ url_sans_ version( self): wikipedia' cription( 'wiki', data) charm_from_ description( self.db, charm_description) tNone(charm) l('~charmers/ precise/ wikipedia/ 3', charm['_id']) l('wikipedia' , charm['name']) store_data' ]['revision' ]) by_name_ and_series( self):
'charm' : 'wikipedia'
+ data = {
+ 'charm': 'cs:precise/
+ }
+ charm_description = BundledCharmDes
+ charm = resolve_
+ self.assertIsNo
+ self.assertEqua
+ self.assertEqua
+ self.assertEqual(3, charm['
+ self.assertEqual(3, charm['revision'])
+
def test_resolve_
data = {