1.0 Requirements {#REQ001}

Requirements

Functional/feature bits should include the following items.

  • Python ConfigParser sample config

  • download rpms to a directory (flat)

  • download rpms to the usual files tree

  • download rpm URLs without a config file

  • maintain a manifest file for each config with valid URLs

If creatrepo is available

  • create yum-compatible rpm repo from files tree

1.1 REQ002 {#REQ002}

The software Shall provide the following ConfigParser defaults.

  • interpolation = ExtendedInterpolation

  • inline_comment_prefixes = None

  • empty_lines_in_values = False

Child links: SDD002, TST002

Attribute

Value

normative

True

1.2 REQ003 {#REQ003}

The software Shall self-validate the active configuration.

Child links: TST003, SDD004

Attribute

Value

normative

True

1.3 REQ004 {#REQ004}

The software Shall consider a configuration valid when it passes the following minimum rule criteria. Note that ConfigParser treats all values as strings so other types must be coerced after being extracted.

  • the rpmget section must be present and contain at least the following baseline keys and their allowed values

    • ‘top_dir’: ‘any’

    • ‘layout’: [‘flat’, ‘tree’]

    • ‘pkg_tool’: [‘rpm’, ‘yum’, ‘dnf’]

    • ‘repo_dir’: ‘any’

    • ‘repo_tool’: [‘createrepo_c’, ‘createrepo’]

    • ‘repo_args’: optional arg string (can be empty)

    • ‘httpx_timeout’: ‘float’

  • there must be at least one string value matching the following criteria

    • starts with ‘http’

    • ends with ‘.rpm’

Child links: SDD003, TST003

Attribute

Value

normative

True

1.4 REQ005 {#REQ005}

The software Shall provide a command-line argument to run the validation checks.

Child links: SDD004

Attribute

Value

normative

True

1.5 REQ006 {#REQ006}

The software Shall support both a flat layout and the rpmdev-setuptree layout, according to the cfg layout values flat or tree.

Child links: SDD003, TST004, SDD005

Attribute

Value

normative

True

1.6 REQ007 {#REQ007}

The software Shall create a default .rpmmacros file in top_dir when the layout type is ‘tree’.

Child links: TST004, SDD005

Attribute

Value

normative

True

1.7 REQ008 {#REQ008}

The software Shall create a layout compatible with rpmdev-setuptree when the user-requested layout is ‘tree’.

Child links: TST004

Attribute

Value

normative

True

1.8 REQ009 {#REQ009}

The software Shall support the createrepo tool for both creating and updating rpm-metadata (repodata) from local rpm packages.

Child links: TST005

Attribute

Value

normative

True

1.9 REQ010 {#REQ010}

The software Shall support using a list of valid URLs as input in lieu of the user configuration file (ie, a “no config” mode).

Child links: TST006

Attribute

Value

normative

True

1.10 REQ011 {#REQ011}

The software Shall maintain a manifest file for each configuration with valid rpm urls.

Child links: SDD007, TST007

Attribute

Value

normative

True

1.11 REQ012 {#REQ012}

The rpm manifest Shall contain the configuration name and metadata for aech downloaded rpm file. The minimum file metadata should include the following:

  • file name

  • file mtime (download timestamp)

  • file digest using at least sha256

  • file size in bytes

Child links: SDD007, TST008

Attribute

Value

normative

True

1.12 REQ013 {#REQ013}

The manifest file Shall be maintained as valid JSON.

Child links: SDD007, TST008

Attribute

Value

normative

True