Ejemplo n.º 1
0
    def _generate_thumbnail(self):
        thumbnail = os.path.join(config.get_screenshot_path(), '%s-%s.png' %
                                 (self.vm_uuid, str(uuid.uuid4())))

        self._get_test_result()
        if stream_test_result is None:
            self._watch_stream_creation(thumbnail)
        elif stream_test_result:
            try:
                self._generate_scratch(thumbnail)
            except:
                wok_log.error("screenshot_creation: Unable to create "
                              "screenshot image %s." % thumbnail)
        else:
            self._create_black_image(thumbnail)

        if os.path.getsize(thumbnail) == 0:
            self._create_black_image(thumbnail)
        else:
            im = Image.open(thumbnail)
            try:
                # Prevent Image lib from lazy load,
                # work around pic truncate validation in thumbnail generation
                im.thumbnail(self.THUMBNAIL_SIZE)
            except Exception as e:
                wok_log.warning("Image load with warning: %s." % e)
            im.save(thumbnail, "PNG")

        self.info['thumbnail'] = thumbnail
Ejemplo n.º 2
0
 def __init__(self, args):
     self.vm_uuid = args['uuid']
     args.setdefault('thumbnail',
                     os.path.join(config.get_screenshot_path(),
                                  '%s-%s.png' %
                                  (self.vm_uuid, str(uuid.uuid4()))))
     self.info = args
Ejemplo n.º 3
0
    def __init__(self, wok_options):
        if hasattr(wok_options, "model"):
            self.model = wok_options.model
        elif wok_options.test:
            self.model = mockmodel.MockModel()
        else:
            self.model = kimchiModel.Model()

        dev_env = wok_options.environment != 'production'
        super(KimchiRoot, self).__init__(self.model, dev_env)

        for ident, node in sub_nodes.items():
            setattr(self, ident, node(self.model))

        if isinstance(self.model, kimchiModel.Model):
            vnc_ws_proxy = vnc.new_ws_proxy()
            cherrypy.engine.subscribe('exit', vnc_ws_proxy.terminate)

        self.api_schema = json.load(open(os.path.join(os.path.dirname(
                                    os.path.abspath(__file__)), 'API.json')))
        self.paths = config.kimchiPaths
        self.domain = 'kimchi'
        self.messages = messages

        make_dirs = [
            os.path.abspath(config.get_distros_store()),
            os.path.abspath(config.get_debugreports_path()),
            os.path.abspath(config.get_screenshot_path())
        ]
        for directory in make_dirs:
            if not os.path.isdir(directory):
                os.makedirs(directory)
Ejemplo n.º 4
0
 def __init__(self, args):
     self.vm_uuid = args['uuid']
     args.setdefault(
         'thumbnail',
         os.path.join(config.get_screenshot_path(),
                      '%s-%s.png' % (self.vm_uuid, str(uuid.uuid4()))))
     self.info = args
Ejemplo n.º 5
0
    def _generate_thumbnail(self):
        thumbnail = os.path.join(
            config.get_screenshot_path(),
            '%s-%s.png' % (self.vm_uuid, str(uuid.uuid4())))

        self._get_test_result()
        if stream_test_result is None:
            self._watch_stream_creation(thumbnail)
        elif stream_test_result:
            try:
                self._generate_scratch(thumbnail)
            except:
                wok_log.error("screenshot_creation: Unable to create "
                              "screenshot image %s." % thumbnail)
        else:
            self._create_black_image(thumbnail)

        if os.path.getsize(thumbnail) == 0:
            self._create_black_image(thumbnail)
        else:
            im = Image.open(thumbnail)
            try:
                # Prevent Image lib from lazy load,
                # work around pic truncate validation in thumbnail generation
                im.thumbnail(self.THUMBNAIL_SIZE)
            except Exception as e:
                wok_log.warning("Image load with warning: %s." % e)
            im.save(thumbnail, "PNG")

        self.info['thumbnail'] = thumbnail
Ejemplo n.º 6
0
    def __init__(self, options):
        make_dirs = [
            os.path.dirname(os.path.abspath(options.access_log)),
            os.path.dirname(os.path.abspath(options.error_log)),
            os.path.dirname(os.path.abspath(config.get_object_store())),
            os.path.abspath(config.get_screenshot_path()),
            os.path.abspath(config.get_session_path()),
            os.path.abspath(config.get_distros_store())
        ]
        for directory in make_dirs:
            if not os.path.isdir(directory):
                os.makedirs(directory)

        cherrypy.tools.nocache = cherrypy.Tool('on_end_resource', set_no_cache)
        cherrypy.tools.kimchiauth = cherrypy.Tool('before_handler',
                                                  auth.kimchiauth)
        cherrypy.server.socket_host = options.host
        cherrypy.server.socket_port = options.port

        # SSL Server
        try:
            if options.ssl_port and options.ssl_port > 0:
                self._init_ssl(options)
        except AttributeError, e:
            pass
Ejemplo n.º 7
0
    def _generate_thumbnail(self):
        thumbnail = os.path.join(
            config.get_screenshot_path(),
            '%s-%s.png' % (self.vm_name, str(uuid.uuid4())))

        self._get_test_result()
        if stream_test_result is None:
            self._watch_stream_creation(thumbnail)
        elif stream_test_result:
            try:
                self._generate_scratch(thumbnail)
            except:
                kimchi_log.error("screenshot_creation: Unable to create "
                                 "screenshot image %s." % thumbnail)
        else:
            self._create_black_image(thumbnail)

        if os.path.getsize(thumbnail) == 0:
            self._create_black_image(thumbnail)
        else:
            im = Image.open(thumbnail)
            im.thumbnail(self.THUMBNAIL_SIZE)
            im.save(thumbnail, "PNG")

        self.info['thumbnail'] = thumbnail
Ejemplo n.º 8
0
    def _generate_thumbnail(self):
        thumbnail = os.path.join(config.get_screenshot_path(), '%s-%s.png' %
                                 (self.vm_name, str(uuid.uuid4())))
        self._generate_scratch(thumbnail)

        if os.path.getsize(thumbnail) == 0:
            image = Image.new("RGB", self.THUMBNAIL_SIZE, 'black')
            image.save(thumbnail)
        else:
            im = Image.open(thumbnail)
            im.thumbnail(self.THUMBNAIL_SIZE)
            im.save(thumbnail, "PNG")
        self.info['thumbnail'] = thumbnail
Ejemplo n.º 9
0
 def _clean_extra(self, window=-1):
     """
     Clear screenshots before time specified by window,
     Clear all screenshots if window is -1.
     """
     try:
         now = time.time()
         clear_list = glob.glob("%s/%s-*.png" %
             (config.get_screenshot_path(), self.vm_name))
         for f in clear_list:
             if now - os.path.getmtime(f) > window:
                 os.unlink(f)
     except OSError:
         pass
Ejemplo n.º 10
0
 def _clean_extra(self, window=-1):
     """
     Clear screenshots before time specified by window,
     Clear all screenshots if window is -1.
     """
     try:
         now = time.time()
         clear_list = glob.glob(
             "%s/%s-*.png" % (config.get_screenshot_path(), self.vm_uuid))
         for f in clear_list:
             if now - os.path.getmtime(f) > window:
                 os.unlink(f)
     except OSError:
         pass
Ejemplo n.º 11
0
    def _generate_thumbnail(self):
        thumbnail = os.path.join(config.get_screenshot_path(), '%s-%s.png' %
                                 (self.vm_uuid, str(uuid.uuid4())))

        self._get_test_result()
        if stream_test_result is None:
            self._watch_stream_creation(thumbnail)
        elif stream_test_result:
            try:
                self._generate_scratch(thumbnail)
            except:
                kimchi_log.error("screenshot_creation: Unable to create "
                                 "screenshot image %s." % thumbnail)
        else:
            self._create_black_image(thumbnail)

        if os.path.getsize(thumbnail) == 0:
            self._create_black_image(thumbnail)
        else:
            im = Image.open(thumbnail)
            im.thumbnail(self.THUMBNAIL_SIZE)
            im.save(thumbnail, "PNG")

        self.info['thumbnail'] = thumbnail