def run(self): storage_set = False if self.args.storage is None else True storage = _storage if not storage_set else self.args.storage be_utils = BackendUtils() if self.name: try: be, con_obj = be_utils.get_backend_and_container_obj(self.name) return be.run(con_obj, atomic=self, args=self.args) except ValueError: pass be = be_utils.get_backend_from_string(storage) db = DockerBackend() img_object = be.has_image(self.image) if img_object is None and storage == 'docker': self.display("Need to pull %s" % self.image) remote_image_obj = db.make_remote_image(self.args.image) # If the image has a atomic.type of system, then we need to land # this in the ostree backend. Install it and then start it # because this is run if remote_image_obj.is_system_type and not storage_set: be = be_utils.get_backend_from_string('ostree') be_utils.message_backend_change('docker', 'ostree') be.install(self.image, self.name) con_obj = be.has_container(self.name) return be.run(con_obj) if self.args.display: return 0 try: db.pull_image(self.image, remote_image_obj) img_object = db.has_image(self.image) except RegistryInspectError: raise ValueError("Unable to find image {}".format(self.image)) return be.run(img_object, atomic=self, args=self.args)
def test_has_image_by_name(self): with patch("Atomic.util.image_by_name") as mockobj: mockobj.return_value = _centos_name_search db = DockerBackend() db.inspect_image = MagicMock(return_value=None) db._inspect_image = MagicMock(return_value=_centos_inspect_image) img_obj = db.has_image("centos") self.assertEqual(img_obj.id, "0584b3d2cf6d235ee310cf14b54667d889887b838d3f3d3033acd70fc3c48b8a")
def test_has_image_by_inspect(self): db = DockerBackend() db._inspect_image = MagicMock(return_value=_rsyslog_image_inspect) img_object = db.has_image( 'registry.access.redhat.com/rhel7/rsyslog:latest') self.assertEqual( img_object.id, '04f7e9543b939537000296e38c11d5d422653f74a6dd2a3905b931bb8f4c3265')
def test_has_image_by_name(self): with patch('Atomic.util.image_by_name') as mockobj: mockobj.return_value = _centos_name_search db = DockerBackend() db.inspect_image = MagicMock(return_value=None) db._inspect_image = MagicMock(return_value=_centos_inspect_image) img_obj = db.has_image('centos') self.assertEqual( img_obj.id, '0584b3d2cf6d235ee310cf14b54667d889887b838d3f3d3033acd70fc3c48b8a' )
def run(self): if self.name: be_utils = BackendUtils() try: be, con_obj = be_utils.get_backend_and_container_obj(self.name) return be.run(con_obj, atomic=self, args=self.args) except ValueError: pass db = DockerBackend() img_object = db.has_image(self.image) if img_object is None: self.display("Need to pull %s" % self.image) if self.args.display: return 0 try: db.pull_image(self.image) img_object = db.has_image(self.image) except RegistryInspectError: raise ValueError("Unable to find image {}".format(self.image)) db.run(img_object, atomic=self, args=self.args)
def run(self): if self.name: be_utils = BackendUtils() try: be, con_obj = be_utils.get_backend_and_container_obj(self.name) return be.run(con_obj, atomic=self, args=self.args) except ValueError: pass db = DockerBackend() img_object = db.has_image(self.image) if img_object is None: self.display("Need to pull %s" % self.image) if self.args.display: return 0 try: db.pull_image(self.image) img_object = db.has_image(self.image) except RegistryInspectError: util.write_err("Unable to find image {}".format(self.image)) db.run(img_object, atomic=self, args=self.args)
def test_pull_by_digest_already_present(self): image_name = "docker.io/busybox@sha256:29f5d56d12684887bdfa50dcd29fc31eea4aaf4ad3bec43daf19026a7ce69912" db = DockerBackend() remote_img_obj = db._make_remote_image(image_name) remote_img_obj.remote_inspect = MagicMock(return_value=remote_inspect_info) remote_img_obj.populate_remote_inspect_info() db.make_remote_image = MagicMock(return_value=remote_img_obj) db._inspect_image = MagicMock(return_value=local_inspect_info) local_image_obj = db.inspect_image(image_name) db.has_image = MagicMock(return_value=local_image_obj) args = self.Args() args.image = image_name args.storage = 'docker' pull = Pull() pull.set_args(args) pull.be_utils.get_backend_from_string = MagicMock(return_value=db) pull.pull_image()
def run(self): storage_set = False if self.args.storage is None else True storage = _storage if not storage_set else self.args.storage be_utils = BackendUtils() if self.name: try: be, con_obj = be_utils.get_backend_and_container_obj(self.name) return be.run(con_obj, atomic=self, args=self.args) except ValueError: pass be = be_utils.get_backend_from_string(storage) db = DockerBackend() img_object = be.has_image(self.image) if img_object is None and storage == 'docker': self.display("Need to pull %s" % self.image) remote_image_obj = db.make_remote_image(self.args.image) # If the image has a atomic.type of system, then we need to land # this in the ostree backend. Install it and then start it # because this is run if remote_image_obj.is_system_type and not storage_set: be = be_utils.get_backend_from_string('ostree') be_utils.message_backend_change('docker', 'ostree') be.install(self.image, self.name) con_obj = be.has_container(self.name) return be.run(con_obj) if self.args.display: return 0 try: db.pull_image(self.image, remote_image_obj) img_object = db.has_image(self.image) except RegistryInspectError: raise ValueError("Unable to find image {}".format(self.image)) if storage == 'ostree': if img_object is None: be.pull_image(self.args.image, None) # For system containers, the run method really needs a container obj con_obj = be.has_container(self.name) if con_obj is None: be.install(self.image, self.name) img_object = be.has_container(self.name) return be.run(img_object, atomic=self, args=self.args)
def test_has_image_not_found(self): with patch("Atomic.util.image_by_name") as mockobj: mockobj.return_value = [] db = DockerBackend() db._inspect_image = MagicMock(return_value=None) self.assertIsNone(db.has_image("foobar"))
def test_has_image_by_inspect(self): db = DockerBackend() db._inspect_image = MagicMock(return_value=_rsyslog_image_inspect) img_object = db.has_image("registry.access.redhat.com/rhel7/rsyslog:latest") self.assertEqual(img_object.id, "04f7e9543b939537000296e38c11d5d422653f74a6dd2a3905b931bb8f4c3265")
def test_has_image_not_found(self): with patch('Atomic.util.image_by_name') as mockobj: mockobj.return_value = [] db = DockerBackend() db._inspect_image = MagicMock(return_value=None) self.assertIsNone(db.has_image('foobar'))