pkh put only spoke SFTP to the PPA queue, so a failure of the SSH transport itself (TCP, banner exchange) failed the upload even though dput happily pushes the same files: its plain ppa: profile goes over the anonymous FTP queue of ppa.launchpad.net, the same destination over another port. Classify the SSH connection failures: Transport (the connection never came up: resolution, TCP, banner or key exchange) degrades to that FTP queue — the upload order (payload first, .changes last), the reverse-order DELE cleanup of a failed upload and the per-chunk progress reporting all mirror the SFTP path, sharing cleanup_list. Refused failures (host key not accepted, no matching authentication) stay errors: silently switching transport would bypass the refusal. The FTP client is suppaftp's blocking stream, with the time bounds it does not carry by itself: the control channel's reads and writes, the data channel's writes and connect (through a custom passive stream builder), and the NAT workaround for PASV replies announcing an unroutable address. The queue endpoints (host, port) join data/launchpad.yml next to the SFTP ones, and the FTP transport is covered by unit tests against an in-process fake queue plus a live control-channel handshake with the real server (ignored, network).
34 lines
1.7 KiB
YAML
34 lines
1.7 KiB
YAML
## Launchpad service endpoints: the REST API, the PPA SFTP upload queue,
|
|
## the PPA package-content host and the Ubuntu source-package git web UI.
|
|
## Like host_keys.yml, this file exists so that static endpoints are data,
|
|
## updatable in one reviewable place, instead of hardcoded in the source —
|
|
## the API and content URLs were previously triplicated across modules.
|
|
##
|
|
## Templates carry their variable parts as {name} placeholders ({owner},
|
|
## {ppa}, {package}), substituted by the accessors of src/launchpad.rs
|
|
## with plain string replacement.
|
|
##
|
|
## Where the values come from:
|
|
## api_base: the Launchpad REST API root (https://launchpad.net/docs/api/)
|
|
## ssh_*: the PPA upload queue, as expanded by dput-ng's
|
|
## ppa:user/ppa profile (ppa.launchpad.net:22, incoming
|
|
## ~<user>/<ppa>)
|
|
## ftp_*: the same upload queue over anonymous FTP, dput-ng's
|
|
## plain ppa: profile: the transport pkh degrades to
|
|
## when the SSH connection itself never comes up
|
|
## content_host_template: ppa.launchpadcontent.net serves PPA apt
|
|
## repositories since the 2022 move off ppa.launchpad.net
|
|
## git_web_template: Launchpad's CGit mirrors of Ubuntu source packages
|
|
## (git.launchpad.net/ubuntu/+source/<package>)
|
|
|
|
api_base: https://api.launchpad.net/1.0
|
|
ssh_host: ppa.launchpad.net
|
|
ssh_port: 22
|
|
## The anonymous FTP upload queue dput-ng's plain ppa: profile uses:
|
|
## pkh degrades to it when the SSH connection itself never comes up.
|
|
ftp_host: ppa.launchpad.net
|
|
ftp_port: 21
|
|
incoming_template: "~{owner}/{ppa}"
|
|
content_host_template: https://ppa.launchpadcontent.net/{owner}/{ppa}/ubuntu
|
|
git_web_template: https://git.launchpad.net/ubuntu/+source/{package}
|