Beispiel #1
0
 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)
Beispiel #2
0
 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()
Beispiel #3
0
 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()
Beispiel #4
0
 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)