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
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
def setUp(self): super(TestDriver, self).setUp() self.driver = driver.GlanceDriver() self.test_dir = tempfile.mkdtemp()