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_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")
Beispiel #3
0
 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')
Beispiel #4
0
 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'
         )
Beispiel #5
0
    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)
Beispiel #6
0
    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)
Beispiel #7
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 #8
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 #9
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)
Beispiel #10
0
 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"))
Beispiel #11
0
 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")
Beispiel #12
0
 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'))