def test_trust_gpg_email_id(self): args = self.Args() testobj = Trust(policy_filename=os.path.join(FIXTURE_DIR, "show_policy.json")) testobj.atomic_config = util.get_atomic_config(atomic_config=os.path.join(FIXTURE_DIR, "atomic.conf")) testobj.set_args(args) actual = testobj.get_gpg_id(args.pubkeys) self.assertEqual("*****@*****.**", actual)
def __init__(self, atomic_config=None, backend=None, user=False, args=None, setvalues=None, display=False): self.atomic_config = atomic_config or util.get_atomic_config() self.backend = backend self.user = user self.args = args or [] self.setvalues = setvalues self.display = display
def test_add_repo_sigstore(self): testobj = Trust(policy_filename=TEST_POLICY) testobj.atomic_config = util.get_atomic_config(atomic_config=os.path.join(FIXTURE_DIR, "atomic.conf")) testobj.modify_registry_config("docker.io/repo", "docker", "https://sigstore.acme.com/sigs") with open(os.path.join(FIXTURE_DIR, "configs/docker.io-repo.yaml"), "r") as f: conf_expected = yaml.load(f) with open(os.path.join(FIXTURE_DIR, "etc/containers/registries.d/docker.io-repo.yaml"), "r") as f: conf_modified = yaml.load(f) self.assertEqual(conf_expected, conf_modified)
def test_trust_show(self): args = self.Args() testobj = Trust(policy_filename=os.path.join(FIXTURE_DIR, "show_policy.json")) testobj.atomic_config = util.get_atomic_config(atomic_config=os.path.join(FIXTURE_DIR, "atomic.conf")) testobj.set_args(args) with self.captured_output() as (out, _): testobj.show() with open(os.path.join(FIXTURE_DIR, "show_policy.output"), "r") as f: expected = f.read() actual = out.getvalue() self.assertEqual(expected, actual)
def test_add_trust_keys(self): args = self.Args() args.sigstore = None testobj = Trust(policy_filename = TEST_POLICY) testobj.atomic_config = util.get_atomic_config(atomic_config = os.path.join(FIXTURE_DIR, "atomic.conf")) testobj.set_args(args) testobj.add() with open(testobj.policy_filename, 'r') as f: d = json.load(f) self.assertEqual(d["transports"]["atomic"]["docker.io"][0]["keyPath"], os.path.join(FIXTURE_DIR, "key1.pub"))
def test_delete_trust(self): args = self.Args() args.pubkeys = [] args.sigstoretype = "web" args.registry = "registry.example.com/foo" args.pubkeys = None testobj = Trust(policy_filename=TEST_POLICY) testobj.atomic_config = util.get_atomic_config(atomic_config=os.path.join(FIXTURE_DIR, "atomic.conf")) testobj.set_args(args) testobj.delete() with open(testobj.policy_filename, "r") as f: d = json.load(f) self.assertNotIn(args.registry, d["transports"]["docker"])
def test_add_reject_type(self): args = self.Args() args.trust_type = "reject" args.sigstoretype = "web" args.pubkeys = [] args.registry = "registry.example.com/foo" testobj = Trust(policy_filename=TEST_POLICY) testobj.atomic_config = util.get_atomic_config(atomic_config=os.path.join(FIXTURE_DIR, "atomic.conf")) testobj.set_args(args) testobj.add() with open(testobj.policy_filename, "r") as f: d = json.load(f) self.assertEqual(d["transports"]["docker"][args.registry][0]["type"], args.trust_type)
def print_scan_list(all_scanners): if len(all_scanners) == 0: util.write_out("There are no scanners configured for this system.") sys.exit(0) default_scanner = (util.get_atomic_config())['default_scanner'] if default_scanner is None: default_scanner = '' for scanner in all_scanners: scanner_name = scanner['scanner_name'] df = '* ' if scanner_name == default_scanner else '' default_scan_type = scanner.get('default_scan') if default_scan_type is None: raise ValueError("Invalid configuration file: At least one scan type must be " "declared as the default for {}.".format(scanner_name)) util.write_out("Scanner: {} {}".format(scanner_name, df)) util.write_out("{}Image Name: {}".format(" " * 2, scanner['image_name'])) for scan_type in scanner['scans']: df = '* ' if default_scan_type == scan_type['name'] else '' util.write_out("{}Scan type: {} {}".format(" " * 5, scan_type['name'], df)) util.write_out("{}Description: {}\n".format(" " * 5, scan_type['description'])) util.write_out("\n* denotes defaults") sys.exit(0)
from Atomic import Atomic from Atomic import util from Atomic import info from Atomic import verify from Atomic import help as Help from Atomic.mount import Mount from Atomic.delete import Delete import os import math import shutil import tempfile import argparse from Atomic import backendutils ATOMIC_CONFIG = util.get_atomic_config() storage = ATOMIC_CONFIG.get('default_storage', "docker") def convert_size(size): if size > 0: size_name = ("B", "KB", "MB", "GB", "TB", "PB", "EB", "ZB", "YB") i = int(math.floor(math.log(size, 1000))) p = math.pow(1000, i) s = round(size / p, 2) # pylint: disable=round-builtin,old-division if s > 0: return '%s %s' % (s, size_name[i]) return '0B' def cli(subparser): # atomic images
try: from . import Atomic except ImportError: from atomic import Atomic # pylint: disable=relative-import import argparse from Atomic.backendutils import BackendUtils from Atomic.util import get_atomic_config ATOMIC_CONFIG = get_atomic_config() storage = ATOMIC_CONFIG.get('default_storage', "docker") def cli(subparser, hidden=False): # atomic update if hidden: updatep = subparser.add_parser("update", argument_default=argparse.SUPPRESS) else: updatep = subparser.add_parser( "update", help=_("pull latest container image from repository"), epilog="downloads the latest container image. If a previously created " "container based on this image exists, the container will " "continue to use the old image. Use --force to remove the " "outdated container.") updatep.set_defaults(_class=Update, func='update') updatep.add_argument("-f", "--force", default=False, dest="force", action="store_true", help=_("remove all containers based on this image")) updatep.add_argument("--storage", default=storage, dest="storage", help=_("Specify the storage of the image. Defaults to: %s" % storage)) updatep.add_argument("image", help=_("container image"))
try: from . import Atomic except ImportError: from atomic import Atomic # pylint: disable=relative-import from Atomic.util import get_atomic_config from Atomic.backendutils import BackendUtils try: from StringIO import StringIO except ImportError: from io import StringIO from contextlib import closing from Atomic.discovery import RegistryInspectError ATOMIC_CONFIG = get_atomic_config() storage = ATOMIC_CONFIG.get('default_storage', "docker") def cli(subparser, hidden=False): # atomic info if hidden: infop = subparser.add_parser("info", argument_default=argparse.SUPPRESS) else: infop = subparser.add_parser( "info", help=_("display label information about an image"), epilog="atomic info attempts to read and display the LABEL " "information about an image")
from Atomic import Atomic from Atomic import util from Atomic import info from Atomic import update from Atomic import verify from Atomic import help as Help from Atomic.mount import Mount from Atomic.delete import Delete import os import math import shutil import tempfile import argparse from Atomic import backendutils ATOMIC_CONFIG = util.get_atomic_config() storage = ATOMIC_CONFIG.get('default_storage', "docker") def convert_size(size): if size > 0: size_name = ("B", "KB", "MB", "GB", "TB", "PB", "EB", "ZB", "YB") i = int(math.floor(math.log(size, 1000))) p = math.pow(1000, i) s = round(size/p, 2) # pylint: disable=round-builtin,old-division if s > 0: return '%s %s' % (s, size_name[i]) return '0B' def cli(subparser): # atomic images imagesp = subparser.add_parser("images",