← Back to team overview

launchpad-reviewers team mailing list archive

[Merge] ~cjwatson/launchpad:charm-ftpmaster-uploader-queue-permissions into launchpad:master

 

Colin Watson has proposed merging ~cjwatson/launchpad:charm-ftpmaster-uploader-queue-permissions into launchpad:master.

Commit message:
charm: Fix queue permissions in ftpmaster-uploader

Requested reviews:
  Launchpad code reviewers (launchpad-reviewers)

For more details, see:
https://code.launchpad.net/~cjwatson/launchpad/+git/launchpad/+merge/450807

This syncs this charm up a bit more closely with `launchpad-ppa-uploader`.  Previously, the queue directories were all owned by `root:root` so neither `txpkgupload` nor `process-queue` could do anything in them; in addition, the `launchpad` user needs to be a member of the `txpkgupload` group so that it can see uploaded files.
-- 
Your team Launchpad code reviewers is requested to review the proposed merge of ~cjwatson/launchpad:charm-ftpmaster-uploader-queue-permissions into launchpad:master.
diff --git a/charm/launchpad-ftpmaster-uploader/reactive/launchpad-ftpmaster-uploader.py b/charm/launchpad-ftpmaster-uploader/reactive/launchpad-ftpmaster-uploader.py
index 7966a95..d29f96f 100644
--- a/charm/launchpad-ftpmaster-uploader/reactive/launchpad-ftpmaster-uploader.py
+++ b/charm/launchpad-ftpmaster-uploader/reactive/launchpad-ftpmaster-uploader.py
@@ -36,18 +36,20 @@ def configure_logrotate(config):
 def configure():
     hookenv.log("Configuring ftpmaster uploader")
     config = get_service_config()
-    config["ubuntu_queue_dir"] = os.path.join(base.base_dir(), "ubuntu-queue")
-    host.mkdir(config["ubuntu_queue_dir"], perms=0o755)
-    host.mkdir(
-        os.path.join(config["ubuntu_queue_dir"], "incoming"), perms=0o755
-    )
-    host.mkdir(
-        os.path.join(config["ubuntu_queue_dir"], "accepted"), perms=0o755
-    )
+
+    # Create queue directories.
+    ubuntu_queue_dir = os.path.join(base.base_dir(), "ubuntu-queue")
     host.mkdir(
-        os.path.join(config["ubuntu_queue_dir"], "rejected"), perms=0o755
+        ubuntu_queue_dir, owner=base.user(), group=base.user(), perms=0o755
     )
-    host.mkdir(os.path.join(config["ubuntu_queue_dir"], "failed"), perms=0o755)
+    config["ubuntu_queue_dir"] = ubuntu_queue_dir
+    for queue in ("accepted", "failed", "rejected"):
+        host.mkdir(
+            os.path.join(ubuntu_queue_dir, queue),
+            owner=base.user(),
+            group=base.user(),
+            perms=0o755,
+        )
 
     configure_lazr(
         config,
@@ -64,10 +66,10 @@ def configure():
 @when_not("service.txpkgupload-configured")
 def configure_txpkgupload():
     fsroot = os.path.join(base.base_dir(), "ubuntu-queue", "incoming")
+    host.mkdir(fsroot, owner=base.user(), group="txpkgupload", perms=0o775)
     txpkgupload = endpoint_from_flag("upload-queue-processor.available")
-    txpkgupload.set_config(
-        fsroot=fsroot,
-    )
+    txpkgupload.set_config(fsroot=fsroot)
+    host.add_user_to_group(base.user(), "txpkgupload")
     set_flag("service.txpkgupload-configured")