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_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)