mirror of
https://github.com/aptly-dev/aptly.git
synced 2026-07-15 11:57:59 +00:00
Compare commits
5 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| d64ce33e2a | |||
| f59b0d2b06 | |||
| aa42fc1025 | |||
| 080da87b4e | |||
| 87e6a36d9b |
@@ -16,3 +16,4 @@ git push origin v$version master
|
|||||||
- update version in content/download.md
|
- update version in content/download.md
|
||||||
- push commit to master
|
- push commit to master
|
||||||
- create release announcement on https://github.com/aptly-dev/aptly/discussions
|
- create release announcement on https://github.com/aptly-dev/aptly/discussions
|
||||||
|
- update aptly infrastructure
|
||||||
|
|||||||
@@ -597,6 +597,7 @@ func apiMirrorsUpdate(c *gin.Context) {
|
|||||||
if err == nil {
|
if err == nil {
|
||||||
return &task.ProcessReturnValue{Code: http.StatusConflict, Value: nil}, fmt.Errorf("unable to rename: mirror %s already exists", b.Name)
|
return &task.ProcessReturnValue{Code: http.StatusConflict, Value: nil}, fmt.Errorf("unable to rename: mirror %s already exists", b.Name)
|
||||||
}
|
}
|
||||||
|
remote.Name = b.Name
|
||||||
}
|
}
|
||||||
|
|
||||||
downloader := context.NewDownloader(out)
|
downloader := context.NewDownloader(out)
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
module github.com/aptly-dev/aptly
|
module github.com/aptly-dev/aptly
|
||||||
|
|
||||||
go 1.25.0
|
go 1.26
|
||||||
|
|
||||||
require (
|
require (
|
||||||
github.com/AlekSi/pointer v1.1.0
|
github.com/AlekSi/pointer v1.1.0
|
||||||
|
|||||||
+3
-3
@@ -2,7 +2,7 @@ FROM debian:trixie-slim
|
|||||||
|
|
||||||
RUN echo 'deb http://deb.debian.org/debian trixie-backports main' > /etc/apt/sources.list.d/backports.list && \
|
RUN echo 'deb http://deb.debian.org/debian trixie-backports main' > /etc/apt/sources.list.d/backports.list && \
|
||||||
apt-get update -y && apt-get install -y --no-install-recommends curl gnupg bzip2 xz-utils ca-certificates vim procps \
|
apt-get update -y && apt-get install -y --no-install-recommends curl gnupg bzip2 xz-utils ca-certificates vim procps \
|
||||||
golang-1.25 golang-1.25-go golang-1.25-src \
|
golang-1.26 golang-1.26-go golang-1.26-src \
|
||||||
make git python3 python3-requests-unixsocket python3-termcolor python3-swiftclient python3-boto3 python3-azure-storage \
|
make git python3 python3-requests-unixsocket python3-termcolor python3-swiftclient python3-boto3 python3-azure-storage \
|
||||||
g++ python3-etcd3 python3-plyvel graphviz devscripts sudo dh-golang binutils-i686-linux-gnu binutils-aarch64-linux-gnu \
|
g++ python3-etcd3 python3-plyvel graphviz devscripts sudo dh-golang binutils-i686-linux-gnu binutils-aarch64-linux-gnu \
|
||||||
binutils-arm-linux-gnueabihf bash-completion zip ruby-dev lintian npm \
|
binutils-arm-linux-gnueabihf bash-completion zip ruby-dev lintian npm \
|
||||||
@@ -10,8 +10,8 @@ RUN echo 'deb http://deb.debian.org/debian trixie-backports main' > /etc/apt/sou
|
|||||||
gcc-i686-linux-gnu gcc-arm-linux-gnueabihf gcc-aarch64-linux-gnu \
|
gcc-i686-linux-gnu gcc-arm-linux-gnueabihf gcc-aarch64-linux-gnu \
|
||||||
faketime dput-ng && \
|
faketime dput-ng && \
|
||||||
apt-get clean && rm -rf /var/lib/apt/lists/* && \
|
apt-get clean && rm -rf /var/lib/apt/lists/* && \
|
||||||
ln -sf /usr/lib/go-1.25/bin/go /usr/local/bin/go && \
|
ln -sf /usr/lib/go-1.26/bin/go /usr/local/bin/go && \
|
||||||
ln -sf /usr/lib/go-1.25/bin/gofmt /usr/local/bin/gofmt
|
ln -sf /usr/lib/go-1.26/bin/gofmt /usr/local/bin/gofmt
|
||||||
|
|
||||||
RUN useradd -m --shell /bin/bash --home-dir /var/lib/aptly aptly
|
RUN useradd -m --shell /bin/bash --home-dir /var/lib/aptly aptly
|
||||||
RUN sed -i 's/#force_color_prompt=yes/force_color_prompt=yes/' /var/lib/aptly/.bashrc
|
RUN sed -i 's/#force_color_prompt=yes/force_color_prompt=yes/' /var/lib/aptly/.bashrc
|
||||||
|
|||||||
@@ -279,6 +279,78 @@ class MirrorsAPITestEditArchiveURL(APITest):
|
|||||||
self.check_equal(resp.json()['ArchiveRoot'], 'http://repo.aptly.info/system-tests/ftp.ch.debian.org/debian/')
|
self.check_equal(resp.json()['ArchiveRoot'], 'http://repo.aptly.info/system-tests/ftp.ch.debian.org/debian/')
|
||||||
|
|
||||||
|
|
||||||
|
class MirrorsAPITestRename(APITest):
|
||||||
|
"""
|
||||||
|
PUT /api/mirrors/:name - Rename mirror via update endpoint
|
||||||
|
"""
|
||||||
|
def check(self):
|
||||||
|
mirror_name = self.random_name()
|
||||||
|
mirror_desc = {'Name': mirror_name,
|
||||||
|
'ArchiveURL': 'http://repo.aptly.info/system-tests/packagecloud.io/varnishcache/varnish30/debian/',
|
||||||
|
'IgnoreSignatures': True,
|
||||||
|
'Distribution': 'wheezy',
|
||||||
|
'Components': ['main'],
|
||||||
|
'Architectures': ['amd64']}
|
||||||
|
|
||||||
|
resp = self.post("/api/mirrors", json=mirror_desc)
|
||||||
|
self.check_equal(resp.status_code, 201)
|
||||||
|
|
||||||
|
# Rename the mirror via PUT
|
||||||
|
new_name = self.random_name()
|
||||||
|
resp = self.put_task("/api/mirrors/" + mirror_name, json={'Name': new_name, 'IgnoreSignatures': True})
|
||||||
|
self.check_task(resp)
|
||||||
|
|
||||||
|
# Old name should no longer exist
|
||||||
|
resp = self.get("/api/mirrors/" + mirror_name)
|
||||||
|
self.check_equal(resp.status_code, 404)
|
||||||
|
|
||||||
|
# New name should exist with correct data
|
||||||
|
resp = self.get("/api/mirrors/" + new_name)
|
||||||
|
self.check_equal(resp.status_code, 200)
|
||||||
|
self.check_subset({'Name': new_name,
|
||||||
|
'ArchiveRoot': 'http://repo.aptly.info/system-tests/packagecloud.io/varnishcache/varnish30/debian/',
|
||||||
|
'Distribution': 'wheezy'}, resp.json())
|
||||||
|
|
||||||
|
|
||||||
|
class MirrorsAPITestRenameConflict(APITest):
|
||||||
|
"""
|
||||||
|
PUT /api/mirrors/:name - Rename mirror to an already existing name should fail with 409
|
||||||
|
"""
|
||||||
|
def check(self):
|
||||||
|
mirror_name_a = self.random_name()
|
||||||
|
mirror_name_b = self.random_name()
|
||||||
|
|
||||||
|
mirror_desc_a = {'Name': mirror_name_a,
|
||||||
|
'ArchiveURL': 'http://repo.aptly.info/system-tests/packagecloud.io/varnishcache/varnish30/debian/',
|
||||||
|
'IgnoreSignatures': True,
|
||||||
|
'Distribution': 'wheezy',
|
||||||
|
'Components': ['main'],
|
||||||
|
'Architectures': ['amd64']}
|
||||||
|
|
||||||
|
mirror_desc_b = {'Name': mirror_name_b,
|
||||||
|
'ArchiveURL': 'http://repo.aptly.info/system-tests/packagecloud.io/varnishcache/varnish30/debian/',
|
||||||
|
'IgnoreSignatures': True,
|
||||||
|
'Distribution': 'wheezy',
|
||||||
|
'Components': ['main'],
|
||||||
|
'Architectures': ['amd64']}
|
||||||
|
|
||||||
|
resp = self.post("/api/mirrors", json=mirror_desc_a)
|
||||||
|
self.check_equal(resp.status_code, 201)
|
||||||
|
|
||||||
|
resp = self.post("/api/mirrors", json=mirror_desc_b)
|
||||||
|
self.check_equal(resp.status_code, 201)
|
||||||
|
|
||||||
|
# Try to rename mirror A to mirror B's name — should fail with 409
|
||||||
|
resp = self.put("/api/mirrors/" + mirror_name_a, json={'Name': mirror_name_b, 'IgnoreSignatures': True})
|
||||||
|
self.check_equal(resp.status_code, 409)
|
||||||
|
self.check_in('unable to rename', resp.json()['error'])
|
||||||
|
|
||||||
|
# Mirror A should still exist under its original name
|
||||||
|
resp = self.get("/api/mirrors/" + mirror_name_a)
|
||||||
|
self.check_equal(resp.status_code, 200)
|
||||||
|
self.check_subset({'Name': mirror_name_a}, resp.json())
|
||||||
|
|
||||||
|
|
||||||
class MirrorsAPITestEditFlatMirrorUdebs(APITest):
|
class MirrorsAPITestEditFlatMirrorUdebs(APITest):
|
||||||
"""
|
"""
|
||||||
POST /api/mirrors/{name} - Edit flat mirror with udebs (should fail)
|
POST /api/mirrors/{name} - Edit flat mirror with udebs (should fail)
|
||||||
|
|||||||
Reference in New Issue
Block a user