← Back to team overview

launchpad-reviewers team mailing list archive

[Merge] ~clinton-fung/launchpad-buildd:restart-apparmor-snaps into launchpad-buildd:master

 

Clinton Fung has proposed merging ~clinton-fung/launchpad-buildd:restart-apparmor-snaps into launchpad-buildd:master.

Commit message:
For snaps: Add a restart of host apparmor after guest upgrades to reload profiles

Requested reviews:
  Launchpad code reviewers (launchpad-reviewers)

For more details, see:
https://code.launchpad.net/~clinton-fung/launchpad-buildd/+git/launchpad-buildd/+merge/495065

For snaps: Add a restart of host apparmor after guest upgrades to reload profiles
-- 
Your team Launchpad code reviewers is requested to review the proposed merge of ~clinton-fung/launchpad-buildd:restart-apparmor-snaps into launchpad-buildd:master.
diff --git a/lpbuildd/target/build_snap.py b/lpbuildd/target/build_snap.py
index 5d957ae..0c6c2e5 100644
--- a/lpbuildd/target/build_snap.py
+++ b/lpbuildd/target/build_snap.py
@@ -5,6 +5,7 @@ import argparse
 import json
 import logging
 import os.path
+import subprocess
 
 from lpbuildd.target.operation import Operation
 from lpbuildd.target.proxy import BuilderProxyOperationMixin
@@ -150,6 +151,13 @@ class BuildSnap(
         self.backend.run(["apt-get", "-y", "install"] + deps)
         if self.backend.supports_snapd:
             self.snap_store_set_proxy()
+        result = subprocess.run(
+            ["sudo", "service", "apparmor", "restart"],
+            capture_output=True,
+            check=True
+        )
+        logger.info("Command output: %s" % result.stdout)
+        logger.info("Command errors (if any): %s" % result.stderr)
         for snap_name, channel in sorted(self.args.channels.items()):
             # snapcraft is handled separately, since it requires --classic.
             if snap_name != "snapcraft":
diff --git a/lpbuildd/target/tests/test_build_oci.py b/lpbuildd/target/tests/test_build_oci.py
index 46a3343..8af7ce5 100644
--- a/lpbuildd/target/tests/test_build_oci.py
+++ b/lpbuildd/target/tests/test_build_oci.py
@@ -8,7 +8,7 @@ from textwrap import dedent
 
 import responses
 from fixtures import FakeLogger, TempDir
-from systemfixtures import FakeFilesystem
+from systemfixtures import FakeFilesystem, FakeProcesses
 from testtools import TestCase
 from testtools.matchers import AnyMatch, MatchesAll, MatchesListwise
 
@@ -82,6 +82,9 @@ class TestBuildOCI(TestCase):
         )
 
     def test_install_bzr(self):
+        processes_fixture = self.useFixture(FakeProcesses())
+        processes_fixture.add(lambda _: {}, name="sudo")
+
         args = [
             "build-oci",
             "--backend=fake",
@@ -108,6 +111,9 @@ class TestBuildOCI(TestCase):
         )
 
     def test_install_git(self):
+        processes_fixture = self.useFixture(FakeProcesses())
+        processes_fixture.add(lambda _: {}, name="sudo")
+
         args = [
             "build-oci",
             "--backend=fake",
@@ -135,6 +141,9 @@ class TestBuildOCI(TestCase):
 
     @responses.activate
     def test_install_snap_store_proxy(self):
+        processes_fixture = self.useFixture(FakeProcesses())
+        processes_fixture.add(lambda _: {}, name="sudo")
+
         store_assertion = dedent(
             """\
             type: store
@@ -185,6 +194,9 @@ class TestBuildOCI(TestCase):
         )
 
     def test_install_proxy(self):
+        processes_fixture = self.useFixture(FakeProcesses()) 
+        processes_fixture.add(lambda _: {}, name="sudo")
+
         args = [
             "build-oci",
             "--backend=fake",
diff --git a/lpbuildd/target/tests/test_build_snap.py b/lpbuildd/target/tests/test_build_snap.py
index 3a94727..635d739 100644
--- a/lpbuildd/target/tests/test_build_snap.py
+++ b/lpbuildd/target/tests/test_build_snap.py
@@ -10,7 +10,7 @@ from textwrap import dedent
 
 import responses
 from fixtures import FakeLogger, TempDir
-from systemfixtures import FakeFilesystem
+from systemfixtures import FakeFilesystem, FakeProcesses
 from testtools import TestCase
 from testtools.matchers import AnyMatch, MatchesAll, MatchesListwise, Not
 
@@ -55,6 +55,9 @@ class FakeSnapcraft(FakeMethod):
 
 class TestBuildSnap(TestCase):
     def test_install_bzr(self):
+        processes_fixture = self.useFixture(FakeProcesses())
+        processes_fixture.add(lambda _: {}, name="sudo")
+
         args = [
             "buildsnap",
             "--backend=fake",
@@ -78,6 +81,9 @@ class TestBuildSnap(TestCase):
         )
 
     def test_install_git(self):
+        processes_fixture = self.useFixture(FakeProcesses())
+        processes_fixture.add(lambda _: {}, name="sudo")
+
         args = [
             "buildsnap",
             "--backend=fake",
@@ -102,6 +108,9 @@ class TestBuildSnap(TestCase):
 
     @responses.activate
     def test_install_snap_store_proxy(self):
+        processes_fixture = self.useFixture(FakeProcesses())
+        processes_fixture.add(lambda _: {}, name="sudo")
+
         store_assertion = dedent(
             """\
             type: store
@@ -152,6 +161,9 @@ class TestBuildSnap(TestCase):
         )
 
     def test_install_proxy(self):
+        processes_fixture = self.useFixture(FakeProcesses())
+        processes_fixture.add(lambda _: {}, name="sudo")
+
         args = [
             "buildsnap",
             "--backend=fake",
@@ -199,6 +211,9 @@ class TestBuildSnap(TestCase):
         )
 
     def test_install_certificate(self):
+        processes_fixture = self.useFixture(FakeProcesses())
+        processes_fixture.add(lambda _: {}, name="sudo")
+
         args = [
             "buildsnap",
             "--backend=fake",
@@ -298,6 +313,9 @@ class TestBuildSnap(TestCase):
         )
 
     def test_install_snapd_proxy(self):
+        processes_fixture = self.useFixture(FakeProcesses())
+        processes_fixture.add(lambda _: {}, name="sudo")
+
         args = [
             "buildsnap",
             "--backend=fake",
@@ -388,6 +406,9 @@ class TestBuildSnap(TestCase):
         )
 
     def test_install_channels(self):
+        processes_fixture = self.useFixture(FakeProcesses())
+        processes_fixture.add(lambda _: {}, name="sudo")
+
         args = [
             "buildsnap",
             "--backend=fake",
@@ -424,6 +445,9 @@ class TestBuildSnap(TestCase):
         )
 
     def test_install_fetch_service(self):
+        processes_fixture = self.useFixture(FakeProcesses())
+        processes_fixture.add(lambda _: {}, name="sudo")
+
         args = [
             "buildsnap",
             "--backend=fake",
@@ -461,6 +485,9 @@ class TestBuildSnap(TestCase):
         )
 
     def test_install_fetch_service_focal(self):
+        processes_fixture = self.useFixture(FakeProcesses())
+        processes_fixture.add(lambda _: {}, name="sudo")
+
         args = [
             "buildsnap",
             "--backend=fake",
@@ -1403,6 +1430,9 @@ class TestBuildSnap(TestCase):
     # convert it to requests first.
 
     def test_run_succeeds(self):
+        processes_fixture = self.useFixture(FakeProcesses())
+        processes_fixture.add(lambda _: {}, name="sudo")
+
         args = [
             "buildsnap",
             "--backend=fake",
@@ -1484,6 +1514,9 @@ class TestBuildSnap(TestCase):
         self.assertEqual(RETCODE_FAILURE_INSTALL, build_snap.run())
 
     def test_run_repo_fails(self):
+        processes_fixture = self.useFixture(FakeProcesses())
+        processes_fixture.add(lambda _: {}, name="sudo")
+
         class FailRepo(FakeMethod):
             def __call__(self, run_args, *args, **kwargs):
                 super().__call__(run_args, *args, **kwargs)
@@ -1507,6 +1540,9 @@ class TestBuildSnap(TestCase):
         self.assertEqual(RETCODE_FAILURE_BUILD, build_snap.run())
 
     def test_run_pull_fails(self):
+        processes_fixture = self.useFixture(FakeProcesses())
+        processes_fixture.add(lambda _: {}, name="sudo")
+
         class FailPull(FakeMethod):
             def __call__(self, run_args, *args, **kwargs):
                 super().__call__(run_args, *args, **kwargs)
@@ -1533,6 +1569,9 @@ class TestBuildSnap(TestCase):
         self.assertEqual(RETCODE_FAILURE_BUILD, build_snap.run())
 
     def test_run_build_fails(self):
+        processes_fixture = self.useFixture(FakeProcesses())
+        processes_fixture.add(lambda _: {}, name="sudo")
+
         class FailBuild(FakeMethod):
             def __call__(self, run_args, *args, **kwargs):
                 super().__call__(run_args, *args, **kwargs)

Follow ups