Ejemplo n.º 1
0
 def _do_container_image_upload(self, context, snapshot_image,
                                container_image_id, data, tag):
     try:
         image_driver.upload_image_data(context, snapshot_image, tag, data,
                                        glance.GlanceDriver())
     except Exception as e:
         LOG.exception("Unexpected exception while uploading image: %s",
                       six.text_type(e))
         image_driver.delete_image(context, snapshot_image.id,
                                   glance.GlanceDriver())
         self.driver.delete_image(container_image_id)
         raise
Ejemplo n.º 2
0
    def _do_container_commit(self,
                             context,
                             snapshot_image,
                             container,
                             repository,
                             tag=None):
        container_image_id = None
        LOG.debug('Creating image...')
        if tag is None:
            tag = 'latest'

        try:
            container_image_id = self.driver.commit(context, container,
                                                    repository, tag)
            container_image = self.driver.get_image(repository + ':' + tag)
        except exception.DockerError as e:
            LOG.error("Error occurred while calling docker commit API: %s",
                      six.text_type(e))
            image_driver.delete_image(context, snapshot_image.id,
                                      glance.GlanceDriver())
            raise
        LOG.debug('Upload image %s to glance', container_image_id)
        self._do_container_image_upload(context, snapshot_image,
                                        container_image_id, container_image,
                                        tag)
 def container_commit(self, context, container, repository, tag=None):
     LOG.debug('Committing the container: %s', container.uuid)
     snapshot_image = None
     try:
         # NOTE(miaohb): Glance is the only driver that support image
         # uploading in the current version, so we have hard-coded here.
         # https://bugs.launchpad.net/zun/+bug/1697342
         snapshot_image = image_driver.create_image(context, repository,
                                                    glance.GlanceDriver())
     except exception.DockerError as e:
         LOG.error("Error occurred while calling glance "
                   "create_image API: %s",
                   six.text_type(e))
     utils.spawn_n(self._do_container_commit, context, snapshot_image,
                   container, repository, tag)
     return snapshot_image.id
Ejemplo n.º 4
0
 def setUp(self):
     super(TestDriver, self).setUp()
     self.driver = driver.GlanceDriver()
     self.test_dir = tempfile.mkdtemp()