mini_buildd.api module

API arguments and commands.

>>> Setup(Setup.parse_command_line("--save --update --archives-from-proxy --sources bullseye --sources-from-vendor-with-lts Debian --chroots-from-sources --repositories test/Test")).command_line()
'--save --update --archives-from-proxy --sources bullseye --sources-from-vendor-with-lts Debian --chroots-from-sources --repositories test/Test'
class mini_buildd.api.Argument(id_list, doc='Undocumented', default=None, choices=None, header=None)

Bases: object

Generic Argument Class.

value() always provides a non-None value of the specific type, either the default or a given value.

strvalue() always provides a non-None str value.

The default value is given in the constructor. For server-specific defaults, this may be function – then the default value will be computed only at run time on the server.

A given value can be provided via special set() method:
  • Empty str, list or false bool will yield None.

  • Non-empty str will be converted to the specific type.

  • Other given values will be used as is.

Type

value() type

svalue() ex.

HTML GET

argparse

Str

str

“string”

key=string

–key “string”

Url

str

http://..”

key=string

–key “string”

MultilineStr

str

“long”

key=string

–key “string”

Choice

str

“c0”

key=string

–key “string”

Int

int

“17”

key=string

–key “int”

Bool

bool

“True”

key=True

–key

List

list of str

“v0,v1,..”

key=v0,v1..

–key “v0” “v1”..

VALUE_TYPE

alias of str

SERVER_DEFAULT = '<server_default>'

Magic string value to use as value when a default callable on the server should be used.

classmethod s2v(str_value)

Convert string to value.

classmethod v2s(value)

Convert value to string.

needs_value()

If user input is no_value.

choices()
default()
strdefault()
value()
strvalue()
strgiven()
icommand_line_given()
set(given)
argparse_kvsargs()

Python ‘argparse’ support.

class mini_buildd.api.StrArgument(id_list, doc='Undocumented', default=None, choices=None, header=None)

Bases: mini_buildd.api.Argument

HTML_TYPE = 'text'
argparse_kvsargs()

Python ‘argparse’ support.

class mini_buildd.api.UrlArgument(id_list, doc='Undocumented', default=None, choices=None, header=None)

Bases: mini_buildd.api.StrArgument

HTML_TYPE = 'url'
class mini_buildd.api.MultilineStrArgument(id_list, doc='Undocumented', default=None, choices=None, header=None)

Bases: mini_buildd.api.StrArgument

HTML_TYPE = 'textarea'
class mini_buildd.api.ChoiceArgument(id_list, doc='Undocumented', default=None, choices=None, header=None)

Bases: mini_buildd.api.Argument

HTML_TYPE = 'text'
value()
argparse_kvsargs()

Python ‘argparse’ support.

class mini_buildd.api.IntArgument(id_list, doc='Undocumented', default=None, choices=None, header=None)

Bases: mini_buildd.api.StrArgument

VALUE_TYPE

alias of int

HTML_TYPE = 'number'
argparse_kvsargs()

Python ‘argparse’ support.

class mini_buildd.api.BoolArgument(*args, **kwargs)

Bases: mini_buildd.api.ChoiceArgument

VALUE_TYPE

alias of bool

HTML_TYPE = 'checkbox'
classmethod s2v(str_value)
icommand_line_given()

Empty generator – bools are just command line options like --with-foo.

argparse_kvsargs()

Python ‘argparse’ support.

class mini_buildd.api.ListArgument(id_list, doc='Undocumented', default=None, choices=None, header=None)

Bases: mini_buildd.api.StrArgument

VALUE_TYPE

alias of list

SEPARATOR = ','
classmethod s2v(str_value)
classmethod v2s(value)
icommand_line_given()
argparse_kvsargs()

Python ‘argparse’ support.

class mini_buildd.api.Repositories(id_list, **kwargs)

Bases: mini_buildd.api.ListArgument

objects()
class mini_buildd.api.Codenames(id_list, **kwargs)

Bases: mini_buildd.api.ListArgument

mini_buildd.api.diststr2repository(diststr)
class mini_buildd.api.Distribution(id_list, choices=Name.ACTIVE_DISTRIBUTIONS, doc='', **kwargs)

Bases: mini_buildd.api.StrArgument

class mini_buildd.api.Distributions(id_list, choices=Name.ACTIVE_DISTRIBUTIONS, **kwargs)

Bases: mini_buildd.api.ListArgument

class mini_buildd.api.Source(id_list, doc='', **kwargs)

Bases: mini_buildd.api.StrArgument

class mini_buildd.api.UploadOptions(id_list, **kwargs)

Bases: mini_buildd.api.StrArgument

class mini_buildd.api.Command(given_args=None, request=None)

Bases: object

AUTH = <mini_buildd.config.Auth object>
NEEDS_RUNNING_DAEMON = False
CONFIRM = False
PLAIN = '__plain__'
classmethod name()
classmethod uri()
classmethod doc()
classmethod iarguments()
classmethod json_pretty(result)
classmethod get_plain(result)
classmethod parse_command_line(command_line)
icommand_line(full=False, with_user=False, user=None)
command_line(full=False, with_user=False, user=None)
plain()
abstract run()
class mini_buildd.api.Status(given_args=None, request=None)

Bases: mini_buildd.api.Command

Get the status of an instance.

JSON Result:

  • version : mini-buildd’s version.

  • identity : Instance identity.

  • url : Instance URL (HTTP).

  • incoming_url: Incoming URL (currently FTP).

  • load : Instance’s (0 =< load <= 1). If negative, the instance is not powered on.

  • chroots : Active chroots.

  • remotes : Active or auto-reactivatable remotes.

Authorization: NONE

HEADER = 'Consume'
run()
classmethod has_chroot(result, codename, arch)
class mini_buildd.api.PubKey(given_args=None, request=None)

Bases: mini_buildd.api.Command

Get (ASCII-armored) GnuPG public key.

Authorization: NONE

run()
class mini_buildd.api.Handshake(given_args=None, request=None)

Bases: mini_buildd.api.Command

Check if signed message matches a remote, reply our signed message on success.

Authorization: NONE

classmethod iarguments()
run()
class mini_buildd.api.DputConf(given_args=None, request=None)

Bases: mini_buildd.api.Command

Get recommended dput config snippet.

Usually, this is for integration in your personal ~/.dput.cf.

Authorization: NONE

run()
class mini_buildd.api.SourcesList(given_args=None, request=None)

Bases: mini_buildd.api.Command

Get sources.list (apt lines).

Usually, this output is put to a file like ‘/etc/sources.list.d/mini-buildd-xyz.list’.

Authorization: NONE

classmethod iarguments()
run()
class mini_buildd.api.Ls(given_args=None, request=None)

Bases: mini_buildd.api.Command

List distributions a source package is in.

Authorization: NONE

classmethod iarguments()
run()
class mini_buildd.api.Find(given_args=None, request=None)

Bases: mini_buildd.api.Ls

Find a source package.

Like ‘ls’, but call will fail on no results.

Authorization: NONE

run()
class mini_buildd.api.List(given_args=None, request=None)

Bases: mini_buildd.api._Login, mini_buildd.api.Command

List packages (deb or src) in distributions.

This may be a very expensive operation - pick <package> and <distributions> wisely.

Authorization: LOGIN

classmethod iarguments()
run()
class mini_buildd.api.Migrate(given_args=None, request=None)

Bases: mini_buildd.api._Staff, mini_buildd.api._Confirm, mini_buildd.api.Command

Migrate a source package (along with all binary packages).

If run for a rollback distribution, this will perform a rollback restore.

JSON Result (dict):

__plain__: string: textual migration log.

Authorization: STAFF

HEADER = 'Contribute'
classmethod iarguments()
run()
class mini_buildd.api.Remove(given_args=None, request=None)

Bases: mini_buildd.api._Admin, mini_buildd.api._Confirm, mini_buildd.api.Command

Remove a source package (along with all binary packages).

JSON Result (dict):

__plain__: string: textual removal log.

Authorization: ADMIN

classmethod iarguments()
run()
class mini_buildd.api.Port(given_args=None, request=None)

Bases: mini_buildd.api._Staff, mini_buildd.api._Running, mini_buildd.api._Confirm, mini_buildd.api.Command

Port an internal package.

An internal ‘port’ is a no-changes (i.e., only the changelog will be adapted) rebuild of the given locally-installed package.

When from-distribution equals to_distribution, a rebuild will be done.

JSON Result (dict):

requested: list: Info string about each port that has been triggered

JSON Result (dict):

uploaded: list of triples of all items uploaded

Authorization: STAFF

classmethod iarguments()
run()
class mini_buildd.api.PortExt(given_args=None, request=None)

Bases: mini_buildd.api._Staff, mini_buildd.api._Running, mini_buildd.api._Confirm, mini_buildd.api.Command

Port an external package.

An external ‘port’ is a no-changes (i.e., only the changelog will be adapted) rebuild of any given source package.

JSON Result (dict):

requested: list: Info string about each port that has been triggered.

JSON Result (dict):

uploaded: list of triples of all items uploaded

Authorization: STAFF

classmethod iarguments()
run()
class mini_buildd.api.Retry(given_args=None, request=None)

Bases: mini_buildd.api._Staff, mini_buildd.api._Running, mini_buildd.api._Confirm, mini_buildd.api.Command

Retry a previously failed packaging.

JSON Result:

  • changes: Changes file that has been re-uploaded.

Authorization: STAFF

BKEY_FORMAT = '<source>/<version>/<timecode>/source[ <arch>]'
BKEY_REGEX = re.compile('[^/]+/[^/]+/[^/]+/[^/]+')
classmethod iarguments()
run()
class mini_buildd.api.Cancel(given_args=None, request=None)

Bases: mini_buildd.api._Staff, mini_buildd.api._Running, mini_buildd.api._Confirm, mini_buildd.api.Command

Cancel a build. Authorization: STAFF

classmethod iarguments()
run()
class mini_buildd.api.SetUserKey(given_args=None, request=None)

Bases: mini_buildd.api._Login, mini_buildd.api._Confirm, mini_buildd.api.Command

Set a user’s GnuPG public key.

Authorization: LOGIN

classmethod iarguments()
run()
class mini_buildd.api.Subscribe(given_args=None, request=None)

Bases: mini_buildd.api._Login, mini_buildd.api.Command

Subscribe to package (email) notifications.

Authorization: LOGIN

classmethod iarguments()
run()
class mini_buildd.api.Unsubscribe(given_args=None, request=None)

Bases: mini_buildd.api.Subscribe

Unsubscribe from package (email) notifications.

Authorization: LOGIN

run()
class mini_buildd.api.Setup(given_args=None, request=None)

Bases: mini_buildd.api._Admin, mini_buildd.api._Confirm, mini_buildd.api.Command

Create, update or inspect your setup.

Authorization: ADMIN

HEADER = 'Maintain'
classmethod iarguments()
SETUP = {'layout': {'Debian Developer': {'options': {'experimental_mandatory_version_regex': '.*', 'extra_options': 'Meta-Distributions: unstable=sid-unstable experimental=sid-experimental\n', 'mandatory_version_regex': '.*'}, 'suites': {'experimental': {'options': {'but_automatic_upgrades': False, 'experimental': True}, 'rollback': 6}, 'stable': {'options': {'uploadable': False}, 'rollback': 6}, 'testing': {'migrates_to': 'stable', 'options': {'uploadable': False}, 'rollback': 3}, 'unstable': {'migrates_to': 'testing', 'options': {'build_keyring_package': True}, 'rollback': 9}}, 'with_rollbacks': False}, 'Default': {'suites': {'experimental': {'options': {'but_automatic_upgrades': False, 'experimental': True}, 'rollback': 6}, 'hotfix': {'migrates_to': 'stable', 'rollback': 4}, 'snapshot': {'options': {'experimental': True}, 'rollback': 12}, 'stable': {'options': {'uploadable': False}, 'rollback': 6}, 'testing': {'migrates_to': 'stable', 'options': {'uploadable': False}, 'rollback': 3}, 'unstable': {'migrates_to': 'testing', 'options': {'build_keyring_package': True}, 'rollback': 9}}, 'with_rollbacks': True}, 'Default (no rollbacks)': {'suites': {'experimental': {'options': {'but_automatic_upgrades': False, 'experimental': True}, 'rollback': 6}, 'hotfix': {'migrates_to': 'stable', 'rollback': 4}, 'snapshot': {'options': {'experimental': True}, 'rollback': 12}, 'stable': {'options': {'uploadable': False}, 'rollback': 6}, 'testing': {'migrates_to': 'stable', 'options': {'uploadable': False}, 'rollback': 3}, 'unstable': {'migrates_to': 'testing', 'options': {'build_keyring_package': True}, 'rollback': 9}}, 'with_rollbacks': False}}, 'lintian_options': {'common': ['--suppress-tags', 'bad-distribution-in-changes-file'], 'warnfail': ['--fail-on', 'error,warning']}, 'repository': {'Debian Developer': {'distribution_filter': {'base_source__codename': 'sid'}, 'layout': 'Debian Developer', 'options': {'extra_uploader_keyrings': "# Allow Debian maintainers (must install the 'debian-keyring' package)\n/usr/share/keyrings/debian-keyring.gpg\n"}}, 'Default': {'distribution_filter': {'base_source__codename__regex': '.*'}, 'layout': 'Default'}, 'Test': {'distribution_filter': {'base_source__codename__regex': '.*'}, 'layout': 'Default', 'options': {'allow_unauthenticated_uploads': True}}}, 'vendor': {'Debian': {'archive': ['http://ftp.debian.org/debian/', 'http://deb.debian.org/debian/', 'http://security.debian.org/debian-security/', 'http://deb.debian.org/debian-security/', 'http://archive.debian.org/debian/', 'http://archive.debian.org/debian-security/', 'http://archive.debian.org/debian-backports/'], 'archive_paths': ['debian', 'debian-security', 'debian-ports', 'debian-archive/debian', 'debian-archive/debian-security', 'debian-archive/debian-backports'], 'codename': {'bullseye': {'sources': [<mini_buildd.dist.SourceSetup object>, <mini_buildd.dist.SourceSetup object>, <mini_buildd.dist.SourceSetup object>]}, 'buster': {'lintian_options': {'warnfail': ['--fail-on-warnings']}, 'sources': [<mini_buildd.dist.SourceSetup object>, <mini_buildd.dist.SourceSetup object>, <mini_buildd.dist.SourceSetup object>, <mini_buildd.dist.SourceSetup object>]}, 'jessie': {'apt_allow_unauthenticated': True, 'lintian_options': {'warnfail': ['--fail-on-warnings']}, 'sources': [<mini_buildd.dist.SourceSetup object>, <mini_buildd.dist.SourceSetup object>, <mini_buildd.dist.SourceSetup object>, <mini_buildd.dist.SourceSetup object>]}, 'lenny': {'lintian_options': {'common': [], 'warnfail': ['--fail-on-warnings']}, 'needs_uname_26': True, 'sources': [<mini_buildd.dist.SourceSetup object>, <mini_buildd.dist.SourceSetup object>, <mini_buildd.dist.SourceSetup object>]}, 'sid': {'sources': [<mini_buildd.dist.SourceSetup object>, <mini_buildd.dist.SourceSetup object>]}, 'squeeze': {'lintian_options': {'warnfail': ['--fail-on-warnings']}, 'sources': [<mini_buildd.dist.SourceSetup object>, <mini_buildd.dist.SourceSetup object>, <mini_buildd.dist.SourceSetup object>]}, 'stretch': {'lintian_options': {'warnfail': ['--fail-on-warnings']}, 'sources': [<mini_buildd.dist.SourceSetup object>, <mini_buildd.dist.SourceSetup object>, <mini_buildd.dist.SourceSetup object>, <mini_buildd.dist.SourceSetup object>]}, 'wheezy': {'lintian_options': {'warnfail': ['--fail-on-warnings']}, 'sources': [<mini_buildd.dist.SourceSetup object>, <mini_buildd.dist.SourceSetup object>, <mini_buildd.dist.SourceSetup object>, <mini_buildd.dist.SourceSetup object>]}}, 'default_components': ['main', 'contrib', 'non-free'], 'distro_info': <mini_buildd.dist.DebianDistroInfo object>, 'security_codename_regex': re.compile('(^[a-z]+-security$|^[a-z]+/updates$)')}, 'Ubuntu': {'archive': ['http://archive.ubuntu.com/ubuntu/', 'http://security.ubuntu.com/ubuntu/', 'http://old-releases.ubuntu.com/ubuntu/'], 'archive_paths': ['ubuntu', 'ubuntu-old'], 'codename': {'bionic': {'lintian_options': {'warnfail': ['--fail-on-warnings']}, 'produces_ddebs': True, 'sources': [<mini_buildd.dist.SourceSetup object>, <mini_buildd.dist.SourceSetup object>, <mini_buildd.dist.SourceSetup object>]}, 'eoan': {'lintian_options': {'warnfail': ['--fail-on-warnings']}, 'produces_ddebs': True, 'sources': [<mini_buildd.dist.SourceSetup object>, <mini_buildd.dist.SourceSetup object>, <mini_buildd.dist.SourceSetup object>]}, 'focal': {'arch_optional': ['i386'], 'lintian_options': {'warnfail': []}, 'produces_ddebs': True, 'sources': [<mini_buildd.dist.SourceSetup object>, <mini_buildd.dist.SourceSetup object>, <mini_buildd.dist.SourceSetup object>]}, 'groovy': {'arch_optional': ['i386'], 'produces_ddebs': True, 'sources': [<mini_buildd.dist.SourceSetup object>, <mini_buildd.dist.SourceSetup object>, <mini_buildd.dist.SourceSetup object>]}, 'hirsute': {'arch_optional': ['i386'], 'produces_ddebs': True, 'sources': [<mini_buildd.dist.SourceSetup object>, <mini_buildd.dist.SourceSetup object>, <mini_buildd.dist.SourceSetup object>]}, 'xenial': {'lintian_options': {'warnfail': ['--fail-on-warnings']}, 'sources': [<mini_buildd.dist.SourceSetup object>, <mini_buildd.dist.SourceSetup object>, <mini_buildd.dist.SourceSetup object>]}}, 'default_components': ['main', 'universe', 'restricted', 'multiverse'], 'distro_info': <mini_buildd.dist.UbuntuDistroInfo object>, 'security_codename_regex': re.compile('^[a-z]+-security$')}}}
x_or_create(cls, defaults=None, **kwargs)
classmethod ilocal_archive_urls()
classmethod iapt_cacher_archive_urls()
setup_daemon()
setup_archives()
setup_sources()
setup_chroots()
setup_remotes()
setup_repositories()
run()
mini_buildd.api.get_setup()
class mini_buildd.api.Power(given_args=None, request=None)

Bases: mini_buildd.api._Admin, mini_buildd.api._Confirm, mini_buildd.api.Command

Power Daemon (incoming) on or off (toggles by default).

Authorization: ADMIN

classmethod iarguments()
run()
class mini_buildd.api.Wake(given_args=None, request=None)

Bases: mini_buildd.api._Admin, mini_buildd.api._Confirm, mini_buildd.api.Command

Wake a remote instance.

Authorization: ADMIN

classmethod iarguments()
run()
class mini_buildd.api.Cronjob(given_args=None, request=None)

Bases: mini_buildd.api._Admin, mini_buildd.api._Confirm, mini_buildd.api.Command

Run a cron job now (out of schedule).

Authorization: ADMIN

classmethod iarguments()
run()
class mini_buildd.api.Uploaders(given_args=None, request=None)

Bases: mini_buildd.api._Admin, mini_buildd.api._Running, mini_buildd.api.Command

Get upload permissions for repositories.

Authorization: ADMIN

classmethod iarguments()
run()
class mini_buildd.api.SnapshotLs(given_args=None, request=None)

Bases: mini_buildd.api._Running, mini_buildd.api.Command

Get list of repository snapshots for a distribution.

JSON Result (dict):

dict: <distribution>: [snasphot,…]: List of snapshots for the given distribution.

Authorization: NONE

classmethod iarguments()
run()
class mini_buildd.api.SnapshotCreate(given_args=None, request=None)

Bases: mini_buildd.api._Admin, mini_buildd.api._Confirm, mini_buildd.api.SnapshotLs

Create a repository snapshot.

Authorization: ADMIN

classmethod iarguments()
run()
class mini_buildd.api.SnapshotDelete(given_args=None, request=None)

Bases: mini_buildd.api.SnapshotCreate

Delete a repository snapshot.

run()
class mini_buildd.api.KeyringPackages(given_args=None, request=None)

Bases: mini_buildd.api._Admin, mini_buildd.api._Running, mini_buildd.api._Confirm, mini_buildd.api.Command

Build keyring packages for all active repositories.

JSON Result (dict):

uploaded: list of triples of all items uploaded

Authorization: ADMIN

classmethod iarguments()
classmethod upload_template_package(template_package, dist)

Portext macro. Used for keyring_packages and test_packages.

run()
class mini_buildd.api.TestPackages(given_args=None, request=None)

Bases: mini_buildd.api._Admin, mini_buildd.api._Running, mini_buildd.api._Confirm, mini_buildd.api.Command

Build internal test packages.

JSON Result (dict):

uploaded: list of triples of all items uploaded

Authorization: ADMIN

classmethod iarguments()
run()
class mini_buildd.api.Commands

Bases: collections.OrderedDict

Automatically collect all commands defined in this module, and make them accessible.