示例#1
0
 def test_redis(self):
     port = 6384
     f = self.useFixture(redis.RedisDriver(port=port))
     self.assertEqual("redis://localhost:%d" % port,
                      os.getenv("PIFPAF_URL"))
     self.assertEqual(str(port), os.getenv("PIFPAF_REDIS_PORT"))
     self._run("redis-cli -p %d llen pifpaf" % f.port)
示例#2
0
 def test_redis_sentinel(self):
     port = 6385
     f = self.useFixture(redis.RedisDriver(sentinel=True, port=port))
     self.assertEqual("redis://localhost:%d" % port,
                      os.getenv("PIFPAF_URL"))
     self.assertEqual(str(port), os.getenv("PIFPAF_REDIS_PORT"))
     self.assertEqual("6380", os.getenv("PIFPAF_REDIS_SENTINEL_PORT"))
     self._run("redis-cli -p %d sentinel master pifpaf" % f.sentinel_port)
示例#3
0
文件: gnocchi.py 项目: toabctl/pifpaf
    def _setUp(self):
        super(GnocchiDriver, self)._setUp()

        try:
            shutil.copy(self.find_config_file("gnocchi/api-paste.ini"),
                        self.tempdir)
        except RuntimeError:
            pass
        try:
            shutil.copy(self.find_config_file("gnocchi/policy.json"),
                        self.tempdir)
        except RuntimeError:
            pass

        if self.indexer_url is None:
            pg = self.useFixture(
                postgresql.PostgreSQLDriver(port=self.indexer_port))
            self.indexer_url = pg.url

        if self.storage_url is None:
            self.storage_url = "file://%s" % self.tempdir

        conffile = os.path.join(self.tempdir, "gnocchi.conf")

        storage_parsed = urlparse.urlparse(self.storage_url)
        storage_driver = storage_parsed.scheme

        if storage_driver == "s3":
            storage_config = {
                "s3_access_key_id": (urlparse.unquote(storage_parsed.username
                                                      or "gnocchi")),
                "s3_secret_access_key":
                (urlparse.unquote(storage_parsed.password or "whatever")),
                "s3_endpoint_url":
                "http://%s:%s/%s" % (
                    storage_parsed.hostname,
                    storage_parsed.port,
                    storage_parsed.path,
                )
            }
        elif storage_driver == "swift":
            storage_config = {
                "swift_authurl":
                "http://%s:%s%s" % (
                    storage_parsed.hostname,
                    storage_parsed.port,
                    storage_parsed.path,
                ),
                "swift_user": (urlparse.unquote(storage_parsed.username
                                                or "admin:admin")),
                "swift_key": (urlparse.unquote(storage_parsed.password
                                               or "admin")),
            }
        elif storage_driver == "ceph":
            storage_config = {
                "ceph_conffile": storage_parsed.path,
            }
        elif storage_driver == "redis":
            storage_config = {
                "redis_url": self.storage_url,
            }
        elif storage_driver == "file":
            storage_config = {
                "file_basepath": (storage_parsed.path or self.tempdir),
            }
        else:
            raise RuntimeError("Storage driver %s is not supported" %
                               storage_driver)

        if self.coordination_driver == "redis":
            r = self.useFixture(redis.RedisDriver(port=self.coordination_port))
            storage_config["coordination_url"] = r.url

        storage_config_string = "\n".join("%s = %s" % (k, v)
                                          for k, v in storage_config.items())
        statsd_resource_id = str(uuid.uuid4())

        with open(conffile, "w") as f:
            f.write("""[DEFAULT]
debug = %s
verbose = True
[storage]
driver = %s
%s
[metricd]
metric_processing_delay = 1
metric_cleanup_delay = 1
[statsd]
resource_id = %s
creator = admin
user_id = admin
project_id = admin
[indexer]
url = %s""" % (self.debug, storage_driver, storage_config_string,
               statsd_resource_id, self.indexer_url))

        self._exec(["gnocchi-upgrade", "--config-file=%s" % conffile])

        c, _ = self._exec(["gnocchi-metricd",
                           "--config-file=%s" % conffile],
                          wait_for_line="metrics wait to be processed")

        c, _ = self._exec(
            ["gnocchi-statsd", "--config-file=%s" % conffile],
            wait_for_line=("(Resource .* already exists"
                           "|Created resource )"))

        args = [
            "uwsgi",
            "--http",
            "localhost:%d" % self.port,
            "--wsgi-file",
            spawn.find_executable("gnocchi-api"),
            "--master",
            "--die-on-term",
            "--lazy-apps",
            "--processes",
            "4",
            "--no-orphans",
            "--enable-threads",
            "--chdir",
            self.tempdir,
            "--add-header",
            "Connection: close",
            "--pyargv",
            "--config-file=%s" % conffile,
        ]

        virtual_env = os.getenv("VIRTUAL_ENV")
        if virtual_env is not None:
            args.extend(["-H", virtual_env])

        c, _ = self._exec(args,
                          wait_for_line="WSGI app 0 \(mountpoint=''\) ready")
        self.addCleanup(self._kill, c)

        self.http_url = "http://localhost:%d" % self.port

        self.putenv("GNOCCHI_PORT", str(self.port))
        self.putenv("URL", "gnocchi://localhost:%d" % self.port)
        self.putenv("GNOCCHI_HTTP_URL", self.http_url)
        self.putenv("GNOCCHI_ENDPOINT", self.http_url, True)
        self.putenv("OS_AUTH_TYPE", "gnocchi-basic", True)
        self.putenv("GNOCCHI_STATSD_RESOURCE_ID", statsd_resource_id, True)
        self.putenv("GNOCCHI_USER", "admin", True)