def execute(self, display_name, image, root_volume_size, config):
        if root_volume_size:
            logging.debug("creating a root volume for instance %s from image %s" % (display_name, image))
            nc = get_openstack_cinder_client(config)
            volume_name = '%s-root' % display_name

            volume = nc.volumes.create(
                size=root_volume_size,
                imageRef=image.id,
                name=volume_name
            )
            self.volume_id = volume.id
            retries = 0
            while nc.volumes.get(volume.id).status not in ('available',):
                logging.debug("...waiting for volume to be ready")
                time.sleep(5)
                retries += 1
                if retries > 30:
                    raise RuntimeError('Volume creation %s is stuck')

            return volume.id
        else:
            logging.debug("no root volume defined")
            return ""