Merge ~ines-almeida/launchpad:fetch-service-option-ui-update into launchpad:master

Proposed by Ines Almeida
Status: Merged
Approved by: Ines Almeida
Approved revision: 0fd732ed4e8fbb73a350054f6981afce82c17502
Merge reported by: Otto Co-Pilot
Merged at revision: not available
Proposed branch: ~ines-almeida/launchpad:fetch-service-option-ui-update
Merge into: launchpad:master
Prerequisite: ~ines-almeida/launchpad:fetch-service-option-model-update
Diff against target: 113 lines (+42/-7)
2 files modified
lib/lp/snappy/browser/snap.py (+16/-7)
lib/lp/snappy/browser/tests/test_snap.py (+26/-0)
Reviewer Review Type Date Requested Status
Jürgen Gmach Approve
Simone Pelosi Approve
Review via email: mp+461649@code.launchpad.net

Commit message

UI changes to allow admins to update a Snap's use_fetch_service

This is hidden behind the new snap.fetch_service.enable feature flag

To post a comment you must log in.
Revision history for this message
Simone Pelosi (pelpsi) wrote :

LGTM!

review: Approve
Revision history for this message
Jürgen Gmach (jugmac00) :
review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1diff --git a/lib/lp/snappy/browser/snap.py b/lib/lp/snappy/browser/snap.py
2index 5744565..dc4d330 100644
3--- a/lib/lp/snappy/browser/snap.py
4+++ b/lib/lp/snappy/browser/snap.py
5@@ -77,6 +77,7 @@ from lp.snappy.browser.widgets.snaparchive import SnapArchiveWidget
6 from lp.snappy.browser.widgets.storechannels import StoreChannelsWidget
7 from lp.snappy.interfaces.snap import (
8 SNAP_SNAPCRAFT_CHANNEL_FEATURE_FLAG,
9+ SNAP_USE_FETCH_SERVICE_FEATURE_FLAG,
10 CannotAuthorizeStoreUploads,
11 CannotFetchSnapcraftYaml,
12 CannotParseSnapcraftYaml,
13@@ -525,6 +526,7 @@ class ISnapEditSchema(Interface):
14 "auto_build_channels",
15 "store_upload",
16 "pro_enable",
17+ "use_fetch_service",
18 ],
19 )
20
21@@ -929,13 +931,20 @@ class SnapAdminView(BaseSnapEditView):
22 # XXX pappacena 2021-02-19: Once we have the whole privacy work in
23 # place, we should move "project" and "information_type" from +admin
24 # page to +edit, to allow common users to edit this.
25- field_names = [
26- "project",
27- "information_type",
28- "require_virtualized",
29- "allow_internet",
30- "pro_enable",
31- ]
32+ @property
33+ def field_names(self):
34+ fields = [
35+ "project",
36+ "information_type",
37+ "require_virtualized",
38+ "allow_internet",
39+ "pro_enable",
40+ ]
41+
42+ if getFeatureFlag(SNAP_USE_FETCH_SERVICE_FEATURE_FLAG):
43+ fields.append("use_fetch_service")
44+
45+ return fields
46
47 @property
48 def initial_values(self):
49diff --git a/lib/lp/snappy/browser/tests/test_snap.py b/lib/lp/snappy/browser/tests/test_snap.py
50index cb4d4de..1127a50 100644
51--- a/lib/lp/snappy/browser/tests/test_snap.py
52+++ b/lib/lp/snappy/browser/tests/test_snap.py
53@@ -61,6 +61,7 @@ from lp.snappy.browser.snap import (
54 )
55 from lp.snappy.interfaces.snap import (
56 SNAP_SNAPCRAFT_CHANNEL_FEATURE_FLAG,
57+ SNAP_USE_FETCH_SERVICE_FEATURE_FLAG,
58 CannotModifySnapProcessor,
59 ISnapSet,
60 SnapBuildRequestStatus,
61@@ -821,6 +822,11 @@ class TestSnapAdminView(BaseTestSnapView):
62
63 def test_admin_snap(self):
64 # Admins can change require_virtualized, privacy, and allow_internet.
65+
66+ self.useFixture(
67+ FeatureFixture({SNAP_USE_FETCH_SERVICE_FEATURE_FLAG: True})
68+ )
69+
70 login("admin@canonical.com")
71 admin = self.factory.makePerson(
72 member_of=[getUtility(ILaunchpadCelebrities).admin]
73@@ -835,6 +841,7 @@ class TestSnapAdminView(BaseTestSnapView):
74 self.assertFalse(snap.private)
75 self.assertTrue(snap.allow_internet)
76 self.assertFalse(snap.pro_enable)
77+ self.assertFalse(snap.use_fetch_service)
78
79 self.factory.makeAccessPolicy(
80 pillar=project, type=InformationType.PRIVATESECURITY
81@@ -847,6 +854,7 @@ class TestSnapAdminView(BaseTestSnapView):
82 browser.getControl(name="field.information_type").value = private
83 browser.getControl("Allow external network access").selected = False
84 browser.getControl("Enable Ubuntu Pro").selected = True
85+ browser.getControl("Use fetch service").selected = True
86 browser.getControl("Update snap package").click()
87
88 login_admin()
89@@ -855,6 +863,24 @@ class TestSnapAdminView(BaseTestSnapView):
90 self.assertTrue(snap.private)
91 self.assertFalse(snap.allow_internet)
92 self.assertTrue(snap.pro_enable)
93+ self.assertTrue(snap.use_fetch_service)
94+
95+ def test_admin_use_fetch_service_feature_flag(self):
96+ admin = self.factory.makePerson(
97+ member_of=[getUtility(ILaunchpadCelebrities).admin]
98+ )
99+ snap = self.factory.makeSnap(registrant=admin)
100+ browser = self.getViewBrowser(snap, user=admin)
101+
102+ browser.getLink("Administer snap package").click()
103+ self.assertFalse("Use fetch service" in browser.contents)
104+
105+ self.useFixture(
106+ FeatureFixture({SNAP_USE_FETCH_SERVICE_FEATURE_FLAG: True})
107+ )
108+
109+ browser.reload()
110+ self.assertTrue("Use fetch service" in browser.contents)
111
112 def test_admin_snap_private_without_project(self):
113 # Cannot make snap private if it doesn't have a project associated.

Subscribers

People subscribed via source and target branches

to status/vote changes: