From 240e26691d2c902a03acd94a9daf662ba1d1a2fa Mon Sep 17 00:00:00 2001 From: "zhu.boxiang" Date: Tue, 10 May 2022 15:16:05 +0800 Subject: [PATCH] feat: Update policy for manila and trove 1. update policy for manila, use role instead of rule 2. update policy for trove, use role instead of rule 3. update the dependencies for skyline-policy-manager Change-Id: I57f010f769575f7b75673c5c154eac4fed07b708 --- libs/skyline-policy-manager/poetry.lock | 1463 ++++++++++++++++- libs/skyline-policy-manager/pyproject.toml | 2 + .../skyline_policy_manager/cmd/manage.py | 22 +- .../skyline_policy_manager/policies/manila.py | 534 ++++-- .../skyline_policy_manager/policies/trove.py | 148 +- poetry.lock | 2 +- pyproject.toml | 1 + 7 files changed, 1927 insertions(+), 245 deletions(-) diff --git a/libs/skyline-policy-manager/poetry.lock b/libs/skyline-policy-manager/poetry.lock index 399b0a9..311aefb 100644 --- a/libs/skyline-policy-manager/poetry.lock +++ b/libs/skyline-policy-manager/poetry.lock @@ -9,6 +9,34 @@ python-versions = ">=3.6.1" [package.dependencies] tokenize-rt = ">=3.0.1" +[[package]] +name = "alembic" +version = "1.7.7" +description = "A database migration tool for SQLAlchemy." +category = "dev" +optional = false +python-versions = ">=3.6" + +[package.dependencies] +importlib-metadata = {version = "*", markers = "python_version < \"3.9\""} +importlib-resources = {version = "*", markers = "python_version < \"3.9\""} +Mako = "*" +SQLAlchemy = ">=1.3.0" + +[package.extras] +tz = ["python-dateutil"] + +[[package]] +name = "amqp" +version = "5.1.1" +description = "Low-level AMQP client for Python (fork of amqplib)." +category = "dev" +optional = false +python-versions = ">=3.6" + +[package.dependencies] +vine = ">=5.0.0" + [[package]] name = "atomicwrites" version = "1.4.0" @@ -31,6 +59,36 @@ docs = ["furo", "sphinx", "zope.interface", "sphinx-notfound-page"] tests = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "mypy", "pytest-mypy-plugins", "zope.interface", "cloudpickle"] tests_no_zope = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "mypy", "pytest-mypy-plugins", "cloudpickle"] +[[package]] +name = "bcrypt" +version = "3.2.2" +description = "Modern password hashing for your software and your servers" +category = "dev" +optional = false +python-versions = ">=3.6" + +[package.dependencies] +cffi = ">=1.1" + +[package.extras] +tests = ["pytest (>=3.2.1,<3.3.0 || >3.3.0)"] +typecheck = ["mypy"] + +[[package]] +name = "beautifulsoup4" +version = "4.11.1" +description = "Screen-scraping library" +category = "dev" +optional = false +python-versions = ">=3.6.0" + +[package.dependencies] +soupsieve = ">1.2" + +[package.extras] +html5lib = ["html5lib"] +lxml = ["lxml"] + [[package]] name = "black" version = "21.9b0" @@ -58,6 +116,14 @@ jupyter = ["ipython (>=7.8.0)", "tokenize-rt (>=3.2.0)"] python2 = ["typed-ast (>=1.4.2)"] uvloop = ["uvloop (>=0.15.2)"] +[[package]] +name = "cachetools" +version = "5.0.0" +description = "Extensible memoizing collections and decorators" +category = "dev" +optional = false +python-versions = "~=3.7" + [[package]] name = "certifi" version = "2021.10.8" @@ -66,6 +132,17 @@ category = "main" optional = false python-versions = "*" +[[package]] +name = "cffi" +version = "1.15.0" +description = "Foreign Function Interface for Python calling C code." +category = "dev" +optional = false +python-versions = "*" + +[package.dependencies] +pycparser = "*" + [[package]] name = "charset-normalizer" version = "2.0.12" @@ -115,6 +192,43 @@ python-versions = ">=3.6" [package.dependencies] wrapt = ">=1.7.0" +[[package]] +name = "decorator" +version = "5.1.1" +description = "Decorators for Humans" +category = "dev" +optional = false +python-versions = ">=3.5" + +[[package]] +name = "dnspython" +version = "2.2.1" +description = "DNS toolkit" +category = "dev" +optional = false +python-versions = ">=3.6,<4.0" + +[package.extras] +dnssec = ["cryptography (>=2.6,<37.0)"] +curio = ["curio (>=1.2,<2.0)", "sniffio (>=1.1,<2.0)"] +doh = ["h2 (>=4.1.0)", "httpx (>=0.21.1)", "requests (>=2.23.0,<3.0.0)", "requests-toolbelt (>=0.9.1,<0.10.0)"] +idna = ["idna (>=2.1,<4.0)"] +trio = ["trio (>=0.14,<0.20)"] +wmi = ["wmi (>=1.5.1,<2.0.0)"] + +[[package]] +name = "eventlet" +version = "0.33.0" +description = "Highly concurrent networking library" +category = "dev" +optional = false +python-versions = "*" + +[package.dependencies] +dnspython = ">=1.15.0" +greenlet = ">=0.3" +six = ">=1.10.0" + [[package]] name = "execnet" version = "1.9.0" @@ -126,6 +240,39 @@ python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" [package.extras] testing = ["pre-commit"] +[[package]] +name = "extras" +version = "1.0.0" +description = "Useful extra bits for Python - things that shold be in the standard library" +category = "dev" +optional = false +python-versions = "*" + +[[package]] +name = "fasteners" +version = "0.17.3" +description = "A python package that provides useful locks" +category = "dev" +optional = false +python-versions = ">=3.6" + +[[package]] +name = "fixtures" +version = "4.0.0" +description = "Fixtures, reusable state for writing clean tests and more." +category = "dev" +optional = false +python-versions = ">=3.6" + +[package.dependencies] +pbr = ">=5.7.0" +testtools = ">=2.5.0" + +[package.extras] +docs = ["docutils"] +streams = ["testtools"] +test = ["mock", "testtools"] + [[package]] name = "flake8" version = "3.9.2" @@ -139,6 +286,25 @@ mccabe = ">=0.6.0,<0.7.0" pycodestyle = ">=2.7.0,<2.8.0" pyflakes = ">=2.3.0,<2.4.0" +[[package]] +name = "futurist" +version = "2.4.1" +description = "Useful additions to futures, from the future." +category = "dev" +optional = false +python-versions = ">=3.6" + +[[package]] +name = "greenlet" +version = "1.1.2" +description = "Lightweight in-process concurrent programming" +category = "dev" +optional = false +python-versions = ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*" + +[package.extras] +docs = ["sphinx"] + [[package]] name = "idna" version = "3.3" @@ -147,6 +313,37 @@ category = "main" optional = false python-versions = ">=3.5" +[[package]] +name = "importlib-metadata" +version = "4.11.3" +description = "Read metadata from Python packages" +category = "dev" +optional = false +python-versions = ">=3.7" + +[package.dependencies] +zipp = ">=0.5" + +[package.extras] +docs = ["sphinx", "jaraco.packaging (>=9)", "rst.linker (>=1.9)"] +perf = ["ipython"] +testing = ["pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-flake8", "pytest-cov", "pytest-enabler (>=1.0.1)", "packaging", "pyfakefs", "flufl.flake8", "pytest-perf (>=0.9.2)", "pytest-black (>=0.3.7)", "pytest-mypy (>=0.9.1)", "importlib-resources (>=1.3)"] + +[[package]] +name = "importlib-resources" +version = "5.7.1" +description = "Read resources from Python packages" +category = "dev" +optional = false +python-versions = ">=3.7" + +[package.dependencies] +zipp = {version = ">=3.1.0", markers = "python_version < \"3.10\""} + +[package.extras] +docs = ["sphinx", "jaraco.packaging (>=9)", "rst.linker (>=1.9)"] +testing = ["pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-flake8", "pytest-cov", "pytest-enabler (>=1.0.1)", "pytest-black (>=0.3.7)", "pytest-mypy (>=0.9.1)"] + [[package]] name = "iniconfig" version = "1.1.1" @@ -177,6 +374,71 @@ requirements_deprecated_finder = ["pipreqs", "pip-api"] colors = ["colorama (>=0.4.3,<0.5.0)"] plugins = ["setuptools"] +[[package]] +name = "jinja2" +version = "3.1.2" +description = "A very fast and expressive template engine." +category = "dev" +optional = false +python-versions = ">=3.7" + +[package.dependencies] +MarkupSafe = ">=2.0" + +[package.extras] +i18n = ["Babel (>=2.7)"] + +[[package]] +name = "keystoneauth1" +version = "4.5.0" +description = "Authentication Library for OpenStack Identity" +category = "dev" +optional = false +python-versions = "*" + +[package.dependencies] +iso8601 = ">=0.1.11" +os-service-types = ">=1.2.0" +pbr = ">=2.0.0,<2.1.0 || >2.1.0" +requests = ">=2.14.2" +six = ">=1.10.0" +stevedore = ">=1.20.0" + +[package.extras] +betamax = ["betamax (>=0.7.0)", "fixtures (>=3.0.0)", "mock (>=2.0.0)"] +kerberos = ["requests-kerberos (>=0.8.0)"] +oauth1 = ["oauthlib (>=0.6.2)"] +saml2 = ["lxml (>=4.2.0)"] +test = ["PyYAML (>=3.12)", "bandit (>=1.1.0,<1.6.0)", "betamax (>=0.7.0)", "coverage (>=4.0,<4.4 || >4.4)", "fixtures (>=3.0.0)", "flake8-docstrings (0.2.1.post1)", "flake8-import-order (>=0.17.1)", "hacking (>=3.0.1,<3.1.0)", "lxml (>=4.2.0)", "oauthlib (>=0.6.2)", "oslo.config (>=5.2.0)", "oslo.utils (>=3.33.0)", "oslotest (>=3.2.0)", "pycodestyle (>=2.0.0,<2.6.0)", "reno (>=3.1.0)", "requests-kerberos (>=0.8.0)", "requests-mock (>=1.2.0)", "stestr (>=1.0.0)", "testresources (>=2.0.0)", "testtools (>=2.2.0)"] + +[[package]] +name = "kombu" +version = "5.2.4" +description = "Messaging library for Python." +category = "dev" +optional = false +python-versions = ">=3.7" + +[package.dependencies] +amqp = ">=5.0.9,<6.0.0" +vine = "*" + +[package.extras] +azureservicebus = ["azure-servicebus (>=7.0.0)"] +azurestoragequeues = ["azure-storage-queue"] +consul = ["python-consul (>=0.6.0)"] +librabbitmq = ["librabbitmq (>=2.0.0)"] +mongodb = ["pymongo (>=3.3.0,<3.12.1)"] +msgpack = ["msgpack"] +pyro = ["pyro4"] +qpid = ["qpid-python (>=0.26)", "qpid-tools (>=0.26)"] +redis = ["redis (>=3.4.1,<4.0.0 || >4.0.0,<4.0.1 || >4.0.1)"] +slmq = ["softlayer-messaging (>=1.0.3)"] +sqlalchemy = ["sqlalchemy"] +sqs = ["boto3 (>=1.9.12)", "pycurl (>=7.44.1,<7.45.0)", "urllib3 (>=1.26.7)"] +yaml = ["PyYAML (>=3.10)"] +zookeeper = ["kazoo (>=1.3.1)"] + [[package]] name = "loguru" version = "0.5.3" @@ -192,6 +454,38 @@ win32-setctime = {version = ">=1.0.0", markers = "sys_platform == \"win32\""} [package.extras] dev = ["codecov (>=2.0.15)", "colorama (>=0.3.4)", "flake8 (>=3.7.7)", "tox (>=3.9.0)", "tox-travis (>=0.12)", "pytest (>=4.6.2)", "pytest-cov (>=2.7.1)", "Sphinx (>=2.2.1)", "sphinx-autobuild (>=0.7.1)", "sphinx-rtd-theme (>=0.4.3)", "black (>=19.10b0)", "isort (>=5.1.1)"] +[[package]] +name = "logutils" +version = "0.3.5" +description = "Logging utilities" +category = "dev" +optional = false +python-versions = "*" + +[[package]] +name = "mako" +version = "1.2.0" +description = "A super-fast templating language that borrows the best ideas from the existing templating languages." +category = "dev" +optional = false +python-versions = ">=3.7" + +[package.dependencies] +MarkupSafe = ">=0.9.2" + +[package.extras] +babel = ["babel"] +lingua = ["lingua"] +testing = ["pytest"] + +[[package]] +name = "markupsafe" +version = "2.1.1" +description = "Safely add untrusted strings to HTML/XML markup." +category = "dev" +optional = false +python-versions = ">=3.7" + [[package]] name = "mccabe" version = "0.6.1" @@ -257,6 +551,95 @@ category = "main" optional = false python-versions = "*" +[[package]] +name = "neutron-lib" +version = "2.15.0" +description = "Neutron shared routines and utilities" +category = "dev" +optional = false +python-versions = ">=3.6" + +[package.dependencies] +keystoneauth1 = ">=3.14.0" +netaddr = ">=0.7.18" +os-ken = ">=0.3.0" +os-traits = ">=0.9.0" +"oslo.concurrency" = ">=3.26.0" +"oslo.config" = ">=8.0.0" +"oslo.context" = ">=2.22.0" +"oslo.db" = ">=4.44.0" +"oslo.i18n" = ">=3.20.0" +"oslo.log" = ">=4.3.0" +"oslo.messaging" = ">=7.0.0" +"oslo.policy" = ">=3.6.2" +"oslo.serialization" = ">=2.25.0" +"oslo.service" = ">=1.24.0,<1.28.1 || >1.28.1" +"oslo.utils" = ">=4.5.0" +"oslo.versionedobjects" = ">=1.31.2" +osprofiler = ">=1.4.0" +pbr = ">=4.0.0" +pecan = ">=1.0.0,<1.0.2 || >1.0.2,<1.0.3 || >1.0.3,<1.0.4 || >1.0.4,<1.2 || >1.2" +setproctitle = ">=1.1.10" +SQLAlchemy = ">=1.2.0" +stevedore = ">=1.20.0" +WebOb = ">=1.7.1" + +[[package]] +name = "os-ken" +version = "2.3.1" +description = "A component-based software defined networking framework for OpenStack." +category = "dev" +optional = false +python-versions = ">=3.6" + +[package.dependencies] +eventlet = ">=0.26.1" +msgpack = ">=1.0.0" +netaddr = ">=0.7.18" +"oslo.config" = ">=5.1.0" +ovs = ">=2.8.0" +pbr = ">=2.0.0" +Routes = ">=2.3.1" +six = ">=1.10.0" +WebOb = ">=1.8.2" + +[[package]] +name = "os-service-types" +version = "1.7.0" +description = "Python library for consuming OpenStack sevice-types-authority data" +category = "dev" +optional = false +python-versions = "*" + +[package.dependencies] +pbr = ">=2.0.0,<2.1.0 || >2.1.0" + +[[package]] +name = "os-traits" +version = "2.7.0" +description = "A library containing standardized trait strings" +category = "dev" +optional = false +python-versions = ">=3.6" + +[package.dependencies] +pbr = ">=2.0.0,<2.1.0 || >2.1.0" + +[[package]] +name = "oslo.concurrency" +version = "4.5.1" +description = "Oslo Concurrency library" +category = "dev" +optional = false +python-versions = ">=3.6" + +[package.dependencies] +fasteners = ">=0.7.0" +"oslo.config" = ">=5.2.0" +"oslo.i18n" = ">=3.15.3" +"oslo.utils" = ">=3.33.0" +pbr = ">=2.0.0,<2.1.0 || >2.1.0" + [[package]] name = "oslo.config" version = "8.8.0" @@ -290,6 +673,32 @@ python-versions = ">=3.6" debtcollector = ">=1.2.0" pbr = ">=2.0.0,<2.1.0 || >2.1.0" +[[package]] +name = "oslo.db" +version = "11.3.0" +description = "Oslo Database library" +category = "dev" +optional = false +python-versions = ">=3.6" + +[package.dependencies] +alembic = ">=0.9.6" +debtcollector = ">=1.2.0" +"oslo.config" = ">=5.2.0" +"oslo.i18n" = ">=3.15.3" +"oslo.utils" = ">=3.33.0" +pbr = ">=2.0.0,<2.1.0 || >2.1.0" +SQLAlchemy = ">=1.4.0" +sqlalchemy-migrate = ">=0.11.0" +stevedore = ">=1.20.0" +testresources = ">=2.0.0" +testscenarios = ">=0.4" + +[package.extras] +mysql = ["PyMySQL (>=0.7.6)"] +postgresql = ["psycopg2 (>=2.8.0)"] +test = ["PyMySQL (>=0.7.6)", "bandit (>=1.6.0,<1.7.0)", "coverage (>=4.0,<4.4 || >4.4)", "eventlet (>=0.18.2,<0.18.3 || >0.18.3,<0.20.1 || >0.20.1)", "fixtures (>=3.0.0)", "hacking (>=3.0.1,<3.1.0)", "oslo.context (>=2.19.2)", "oslotest (>=3.2.0)", "pifpaf (>=0.10.0)", "pre-commit (>=2.6.0)", "psycopg2 (>=2.8.0)", "python-subunit (>=1.0.0)", "stestr (>=2.0.0)", "testtools (>=2.2.0)"] + [[package]] name = "oslo.i18n" version = "5.1.0" @@ -301,6 +710,97 @@ python-versions = ">=3.6" [package.dependencies] pbr = ">=2.0.0,<2.1.0 || >2.1.0" +[[package]] +name = "oslo.log" +version = "4.8.0" +description = "oslo.log library" +category = "dev" +optional = false +python-versions = ">=3.6" + +[package.dependencies] +debtcollector = ">=1.19.0" +"oslo.config" = ">=5.2.0" +"oslo.context" = ">=2.21.0" +"oslo.i18n" = ">=3.20.0" +"oslo.serialization" = ">=2.25.0" +"oslo.utils" = ">=3.36.0" +pbr = ">=3.1.1" +pyinotify = {version = ">=0.9.6", markers = "sys_platform != \"win32\" and sys_platform != \"darwin\" and sys_platform != \"sunos5\""} +python-dateutil = ">=2.7.0" + +[package.extras] +fixtures = ["fixtures (>=3.0.0)"] +systemd = ["systemd-python (>=234)"] +test = ["bandit (>=1.6.0,<1.7.0)", "coverage (>=4.5.1)", "fixtures (>=3.0.0)", "hacking (>=2.0.0,<2.1.0)", "oslotest (>=3.3.0)", "pre-commit (>=2.6.0)", "stestr (>=2.0.0)", "testtools (>=2.3.0)"] + +[[package]] +name = "oslo.messaging" +version = "12.13.0" +description = "Oslo Messaging API" +category = "dev" +optional = false +python-versions = ">=3.6" + +[package.dependencies] +amqp = ">=2.5.2" +cachetools = ">=2.0.0" +debtcollector = ">=1.2.0" +futurist = ">=1.2.0" +kombu = ">=4.6.6" +"oslo.config" = ">=5.2.0" +"oslo.log" = ">=3.36.0" +"oslo.metrics" = ">=0.2.1" +"oslo.middleware" = ">=3.31.0" +"oslo.serialization" = ">=2.18.0,<2.19.1 || >2.19.1" +"oslo.service" = ">=1.24.0,<1.28.1 || >1.28.1" +"oslo.utils" = ">=3.37.0" +pbr = ">=2.0.0,<2.1.0 || >2.1.0" +PyYAML = ">=3.13" +stevedore = ">=1.20.0" +WebOb = ">=1.7.1" + +[package.extras] +amqp1 = ["pyngus (>=2.2.0)"] +kafka = ["confluent-kafka (>=1.3.0)"] +test = ["bandit (>=1.6.0,<1.7.0)", "confluent-kafka (>=1.3.0)", "coverage (>=4.0,<4.4 || >4.4)", "eventlet (>=0.23.0)", "fixtures (>=3.0.0)", "greenlet (>=0.4.15)", "hacking (>=3.0.1,<3.1.0)", "oslotest (>=3.2.0)", "pifpaf (>=2.2.0)", "pre-commit (>=2.6.0)", "pyngus (>=2.2.0)", "stestr (>=2.0.0)", "testscenarios (>=0.4)", "testtools (>=2.2.0)"] + +[[package]] +name = "oslo.metrics" +version = "0.4.0" +description = "Oslo Metrics API" +category = "dev" +optional = false +python-versions = ">=3.6" + +[package.dependencies] +"oslo.config" = ">=6.9.0" +"oslo.log" = ">=3.44.0" +"oslo.utils" = ">=3.41.0" +pbr = ">=3.1.1" +prometheus-client = ">=0.6.0" + +[[package]] +name = "oslo.middleware" +version = "4.5.1" +description = "Oslo Middleware library" +category = "dev" +optional = false +python-versions = ">=3.6" + +[package.dependencies] +bcrypt = ">=3.1.3" +debtcollector = ">=1.2.0" +Jinja2 = ">=2.10" +"oslo.config" = ">=5.2.0" +"oslo.context" = ">=2.19.2" +"oslo.i18n" = ">=3.15.3" +"oslo.utils" = ">=3.33.0" +pbr = ">=2.0.0,<2.1.0 || >2.1.0" +statsd = ">=3.2.1" +stevedore = ">=1.20.0" +WebOb = ">=1.8.0" + [[package]] name = "oslo.policy" version = "3.8.2" @@ -333,6 +833,30 @@ msgpack = ">=0.5.2" pbr = ">=2.0.0,<2.1.0 || >2.1.0" pytz = ">=2013.6" +[[package]] +name = "oslo.service" +version = "2.8.0" +description = "oslo.service library" +category = "dev" +optional = false +python-versions = ">=3.6" + +[package.dependencies] +debtcollector = ">=1.2.0" +eventlet = ">=0.25.2" +fixtures = ">=3.0.0" +greenlet = ">=0.4.15" +"oslo.concurrency" = ">=3.25.0" +"oslo.config" = ">=5.1.0" +"oslo.i18n" = ">=3.15.3" +"oslo.log" = ">=3.36.0" +"oslo.utils" = ">=3.40.2" +Paste = ">=2.0.2" +PasteDeploy = ">=1.5.0" +Routes = ">=2.3.1" +WebOb = ">=1.7.1" +Yappi = ">=1.0" + [[package]] name = "oslo.utils" version = "4.13.0" @@ -352,6 +876,60 @@ pbr = ">=2.0.0,<2.1.0 || >2.1.0" pyparsing = ">=2.1.0" pytz = ">=2013.6" +[[package]] +name = "oslo.versionedobjects" +version = "2.6.0" +description = "Oslo Versioned Objects library" +category = "dev" +optional = false +python-versions = ">=3.6" + +[package.dependencies] +iso8601 = ">=0.1.11" +netaddr = ">=0.7.18" +"oslo.concurrency" = ">=3.26.0" +"oslo.config" = ">=5.2.0" +"oslo.context" = ">=2.19.2" +"oslo.i18n" = ">=3.15.3" +"oslo.log" = ">=3.36.0" +"oslo.messaging" = ">=5.29.0" +"oslo.serialization" = ">=2.18.0,<2.19.1 || >2.19.1" +"oslo.utils" = ">=4.7.0" +WebOb = ">=1.7.1" + +[[package]] +name = "osprofiler" +version = "3.4.3" +description = "OpenStack Profiler Library" +category = "dev" +optional = false +python-versions = ">=3.6" + +[package.dependencies] +netaddr = ">=0.7.18" +"oslo.concurrency" = ">=3.26.0" +"oslo.serialization" = ">=2.18.0" +"oslo.utils" = ">=3.33.0" +PrettyTable = ">=0.7.2" +requests = ">=2.14.2" +WebOb = ">=1.7.1" + +[package.extras] +oslo_config = ["oslo.config (>=5.2.0)"] +test = ["bandit (>=1.6.0,<1.7.0)", "coverage (>=4.0)", "ddt (>=1.0.1)", "docutils (>=0.14)", "elasticsearch (>=2.0.0,<3.0.0)", "flake8-import-order (0.18.1)", "hacking (>=3.1.0,<3.2.0)", "jaeger-client (>=3.8.0)", "pre-commit (>=2.6.0)", "pymongo (>=3.0.2,<3.1 || >3.1)", "redis (>=2.10.0)", "stestr (>=2.0.0)", "testtools (>=2.2.0)"] + +[[package]] +name = "ovs" +version = "2.17.1.post1" +description = "Open vSwitch library" +category = "dev" +optional = false +python-versions = "*" + +[package.dependencies] +pywin32 = {version = ">=1.0", markers = "sys_platform == \"win32\""} +sortedcontainers = "*" + [[package]] name = "packaging" version = "21.3" @@ -363,6 +941,33 @@ python-versions = ">=3.6" [package.dependencies] pyparsing = ">=2.0.2,<3.0.5 || >3.0.5" +[[package]] +name = "paste" +version = "3.5.0" +description = "Tools for using a Web Server Gateway Interface stack" +category = "dev" +optional = false +python-versions = "*" + +[package.dependencies] +six = ">=1.4.0" + +[package.extras] +flup = ["flup"] +openid = ["python-openid"] + +[[package]] +name = "pastedeploy" +version = "2.1.1" +description = "Load, configure, and compose WSGI applications and servers" +category = "dev" +optional = false +python-versions = "*" + +[package.extras] +paste = ["paste"] +docs = ["Sphinx (>=1.7.5)", "pylons-sphinx-themes"] + [[package]] name = "pathspec" version = "0.9.0" @@ -379,6 +984,21 @@ category = "main" optional = false python-versions = ">=2.6" +[[package]] +name = "pecan" +version = "1.4.1" +description = "A WSGI object-dispatching web framework, designed to be lean and fast, with few dependencies." +category = "dev" +optional = false +python-versions = "*" + +[package.dependencies] +logutils = ">=0.3" +Mako = ">=0.4.0" +six = "*" +WebOb = ">=1.8" +WebTest = ">=1.3.1" + [[package]] name = "platformdirs" version = "2.5.2" @@ -403,6 +1023,31 @@ python-versions = ">=3.6" dev = ["pre-commit", "tox"] testing = ["pytest", "pytest-benchmark"] +[[package]] +name = "prettytable" +version = "3.3.0" +description = "A simple Python library for easily displaying tabular data in a visually appealing ASCII table format" +category = "dev" +optional = false +python-versions = ">=3.7" + +[package.dependencies] +wcwidth = "*" + +[package.extras] +tests = ["pytest", "pytest-cov", "pytest-lazy-fixture"] + +[[package]] +name = "prometheus-client" +version = "0.14.1" +description = "Python client for the Prometheus monitoring system." +category = "dev" +optional = false +python-versions = ">=3.6" + +[package.extras] +twisted = ["twisted"] + [[package]] name = "py" version = "1.11.0" @@ -419,6 +1064,14 @@ category = "dev" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +[[package]] +name = "pycparser" +version = "2.21" +description = "C parser in Python" +category = "dev" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" + [[package]] name = "pydantic" version = "1.8.2" @@ -442,6 +1095,14 @@ category = "dev" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +[[package]] +name = "pyinotify" +version = "0.9.6" +description = "Linux filesystem events monitoring" +category = "dev" +optional = false +python-versions = "*" + [[package]] name = "pyparsing" version = "3.0.8" @@ -543,6 +1204,17 @@ psutil = ["psutil (>=3.0)"] setproctitle = ["setproctitle"] testing = ["filelock"] +[[package]] +name = "python-dateutil" +version = "2.8.2" +description = "Extensions to the standard Python datetime module" +category = "dev" +optional = false +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" + +[package.dependencies] +six = ">=1.5" + [[package]] name = "pytz" version = "2022.1" @@ -551,6 +1223,14 @@ category = "main" optional = false python-versions = "*" +[[package]] +name = "pywin32" +version = "304" +description = "Python for Window Extensions" +category = "dev" +optional = false +python-versions = "*" + [[package]] name = "pyyaml" version = "6.0" @@ -567,6 +1247,18 @@ category = "dev" optional = false python-versions = ">=3.6" +[[package]] +name = "repoze.lru" +version = "0.7" +description = "A tiny LRU cache implementation and decorator" +category = "dev" +optional = false +python-versions = "*" + +[package.extras] +docs = ["sphinx"] +testing = ["coverage", "nose"] + [[package]] name = "requests" version = "2.27.1" @@ -596,6 +1288,41 @@ python-versions = ">=3.7" [package.extras] idna2008 = ["idna"] +[[package]] +name = "routes" +version = "2.5.1" +description = "Routing Recognition and Generation Tools" +category = "dev" +optional = false +python-versions = "*" + +[package.dependencies] +"repoze.lru" = ">=0.3" +six = "*" + +[package.extras] +docs = ["sphinx", "webob"] +middleware = ["webob"] + +[[package]] +name = "setproctitle" +version = "1.2.3" +description = "A Python module to customize the process title" +category = "dev" +optional = false +python-versions = ">=3.6" + +[package.extras] +test = ["pytest"] + +[[package]] +name = "six" +version = "1.16.0" +description = "Python 2 and 3 compatibility utilities" +category = "dev" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*" + [[package]] name = "skyline-log" version = "0.1.0" @@ -612,6 +1339,86 @@ loguru = "0.5.3" type = "directory" url = "../skyline-log" +[[package]] +name = "sortedcontainers" +version = "2.4.0" +description = "Sorted Containers -- Sorted List, Sorted Dict, Sorted Set" +category = "dev" +optional = false +python-versions = "*" + +[[package]] +name = "soupsieve" +version = "2.3.2.post1" +description = "A modern CSS selector implementation for Beautiful Soup." +category = "dev" +optional = false +python-versions = ">=3.6" + +[[package]] +name = "sqlalchemy" +version = "1.4.36" +description = "Database Abstraction Library" +category = "dev" +optional = false +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,>=2.7" + +[package.dependencies] +greenlet = {version = "!=0.4.17", markers = "python_version >= \"3\" and (platform_machine == \"aarch64\" or platform_machine == \"ppc64le\" or platform_machine == \"x86_64\" or platform_machine == \"amd64\" or platform_machine == \"AMD64\" or platform_machine == \"win32\" or platform_machine == \"WIN32\")"} + +[package.extras] +aiomysql = ["greenlet (!=0.4.17)", "aiomysql"] +aiosqlite = ["typing_extensions (!=3.10.0.1)", "greenlet (!=0.4.17)", "aiosqlite"] +asyncio = ["greenlet (!=0.4.17)"] +asyncmy = ["greenlet (!=0.4.17)", "asyncmy (>=0.2.3,<0.2.4 || >0.2.4)"] +mariadb_connector = ["mariadb (>=1.0.1)"] +mssql = ["pyodbc"] +mssql_pymssql = ["pymssql"] +mssql_pyodbc = ["pyodbc"] +mypy = ["sqlalchemy2-stubs", "mypy (>=0.910)"] +mysql = ["mysqlclient (>=1.4.0,<2)", "mysqlclient (>=1.4.0)"] +mysql_connector = ["mysql-connector-python"] +oracle = ["cx_oracle (>=7,<8)", "cx_oracle (>=7)"] +postgresql = ["psycopg2 (>=2.7)"] +postgresql_asyncpg = ["greenlet (!=0.4.17)", "asyncpg"] +postgresql_pg8000 = ["pg8000 (>=1.16.6)"] +postgresql_psycopg2binary = ["psycopg2-binary"] +postgresql_psycopg2cffi = ["psycopg2cffi"] +pymysql = ["pymysql (<1)", "pymysql"] +sqlcipher = ["sqlcipher3-binary"] + +[[package]] +name = "sqlalchemy-migrate" +version = "0.13.0" +description = "Database schema migration for SQLAlchemy" +category = "dev" +optional = false +python-versions = "*" + +[package.dependencies] +decorator = "*" +pbr = ">=1.8" +six = ">=1.7.0" +SQLAlchemy = ">=0.9.6" +sqlparse = "*" +Tempita = ">=0.4" + +[[package]] +name = "sqlparse" +version = "0.4.2" +description = "A non-validating SQL parser." +category = "dev" +optional = false +python-versions = ">=3.5" + +[[package]] +name = "statsd" +version = "3.3.0" +description = "A simple statsd client." +category = "dev" +optional = false +python-versions = "*" + [[package]] name = "stevedore" version = "3.5.0" @@ -623,6 +1430,56 @@ python-versions = ">=3.6" [package.dependencies] pbr = ">=2.0.0,<2.1.0 || >2.1.0" +[[package]] +name = "tempita" +version = "0.5.2" +description = "A very small text templating language" +category = "dev" +optional = false +python-versions = "*" + +[[package]] +name = "testresources" +version = "2.0.1" +description = "Testresources, a pyunit extension for managing expensive test resources" +category = "dev" +optional = false +python-versions = "*" + +[package.dependencies] +pbr = ">=1.8" + +[package.extras] +test = ["docutils", "fixtures", "testtools"] + +[[package]] +name = "testscenarios" +version = "0.5.0" +description = "Testscenarios, a pyunit extension for dependency injection" +category = "dev" +optional = false +python-versions = "*" + +[package.dependencies] +pbr = ">=0.11" +testtools = "*" + +[[package]] +name = "testtools" +version = "2.5.0" +description = "Extensions to the Python standard library unit testing framework" +category = "dev" +optional = false +python-versions = ">=3.5" + +[package.dependencies] +extras = ">=1.0.0" +fixtures = ">=1.3.0" +pbr = ">=0.11" + +[package.extras] +test = ["testscenarios", "testresources"] + [[package]] name = "tokenize-rt" version = "4.2.1" @@ -668,6 +1525,63 @@ brotli = ["brotlicffi (>=0.8.0)", "brotli (>=1.0.9)", "brotlipy (>=0.6.0)"] secure = ["pyOpenSSL (>=0.14)", "cryptography (>=1.3.4)", "idna (>=2.0.0)", "certifi", "ipaddress"] socks = ["PySocks (>=1.5.6,<1.5.7 || >1.5.7,<2.0)"] +[[package]] +name = "vine" +version = "5.0.0" +description = "Promises, promises, promises." +category = "dev" +optional = false +python-versions = ">=3.6" + +[[package]] +name = "waitress" +version = "2.1.1" +description = "Waitress WSGI server" +category = "dev" +optional = false +python-versions = ">=3.7.0" + +[package.extras] +docs = ["Sphinx (>=1.8.1)", "docutils", "pylons-sphinx-themes (>=1.0.9)"] +testing = ["pytest", "pytest-cover", "coverage (>=5.0)"] + +[[package]] +name = "wcwidth" +version = "0.2.5" +description = "Measures the displayed width of unicode strings in a terminal" +category = "dev" +optional = false +python-versions = "*" + +[[package]] +name = "webob" +version = "1.8.7" +description = "WSGI request and response object" +category = "dev" +optional = false +python-versions = ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*" + +[package.extras] +docs = ["Sphinx (>=1.7.5)", "pylons-sphinx-themes"] +testing = ["pytest (>=3.1.0)", "coverage", "pytest-cov", "pytest-xdist"] + +[[package]] +name = "webtest" +version = "3.0.0" +description = "Helper to test WSGI applications" +category = "dev" +optional = false +python-versions = ">=3.6, <4" + +[package.dependencies] +beautifulsoup4 = "*" +waitress = ">=0.8.5" +WebOb = ">=1.2" + +[package.extras] +docs = ["docutils", "pylons-sphinx-themes (>=1.0.8)", "Sphinx (>=1.8.1)"] +tests = ["coverage", "pastedeploy", "pyquery", "pytest", "pytest-cov", "wsgiproxy2"] + [[package]] name = "werkzeug" version = "2.0.1" @@ -698,16 +1612,47 @@ category = "main" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7" +[[package]] +name = "yappi" +version = "1.3.3" +description = "Yet Another Python Profiler" +category = "dev" +optional = false +python-versions = "*" + +[package.extras] +test = ["gevent (>=20.6.2)"] + +[[package]] +name = "zipp" +version = "3.8.0" +description = "Backport of pathlib-compatible object wrapper for zip files" +category = "dev" +optional = false +python-versions = ">=3.7" + +[package.extras] +docs = ["sphinx", "jaraco.packaging (>=9)", "rst.linker (>=1.9)"] +testing = ["pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-flake8", "pytest-cov", "pytest-enabler (>=1.0.1)", "jaraco.itertools", "func-timeout", "pytest-black (>=0.3.7)", "pytest-mypy (>=0.9.1)"] + [metadata] lock-version = "1.1" python-versions = "^3.8" -content-hash = "2b33876eaca34503f1060c3a68c44bff5d03c3e1dafc2776a72e4422f5ebe5f8" +content-hash = "3bb2f76214777ab8c244056fea4b36beaf5d02a2a60f217006d9af25eb1bab67" [metadata.files] add-trailing-comma = [ {file = "add_trailing_comma-2.1.0-py2.py3-none-any.whl", hash = "sha256:f462403aa2e997e20855708edb57536d1d3310d5c5fac7e80542578eb47fdb10"}, {file = "add_trailing_comma-2.1.0.tar.gz", hash = "sha256:f9864ffbc12ea4e54916a356d57341ab58f612867c2ad453339c51004807e8ce"}, ] +alembic = [ + {file = "alembic-1.7.7-py3-none-any.whl", hash = "sha256:29be0856ec7591c39f4e1cb10f198045d890e6e2274cf8da80cb5e721a09642b"}, + {file = "alembic-1.7.7.tar.gz", hash = "sha256:4961248173ead7ce8a21efb3de378f13b8398e6630fab0eb258dc74a8af24c58"}, +] +amqp = [ + {file = "amqp-5.1.1-py3-none-any.whl", hash = "sha256:6f0956d2c23d8fa6e7691934d8c3930eadb44972cbbd1a7ae3a520f735d43359"}, + {file = "amqp-5.1.1.tar.gz", hash = "sha256:2c1b13fecc0893e946c65cbd5f36427861cffa4ea2201d8f6fca22e2a373b5e2"}, +] atomicwrites = [ {file = "atomicwrites-1.4.0-py2.py3-none-any.whl", hash = "sha256:6d1784dea7c0c8d4a5172b6c620f40b6e4cbfdf96d783691f2e1302a7b88e197"}, {file = "atomicwrites-1.4.0.tar.gz", hash = "sha256:ae70396ad1a434f9c7046fd2dd196fc04b12f9e91ffb859164193be8b6168a7a"}, @@ -716,14 +1661,87 @@ attrs = [ {file = "attrs-21.4.0-py2.py3-none-any.whl", hash = "sha256:2d27e3784d7a565d36ab851fe94887c5eccd6a463168875832a1be79c82828b4"}, {file = "attrs-21.4.0.tar.gz", hash = "sha256:626ba8234211db98e869df76230a137c4c40a12d72445c45d5f5b716f076e2fd"}, ] +bcrypt = [ + {file = "bcrypt-3.2.2-cp36-abi3-macosx_10_10_universal2.whl", hash = "sha256:7180d98a96f00b1050e93f5b0f556e658605dd9f524d0b0e68ae7944673f525e"}, + {file = "bcrypt-3.2.2-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:61bae49580dce88095d669226d5076d0b9d927754cedbdf76c6c9f5099ad6f26"}, + {file = "bcrypt-3.2.2-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:88273d806ab3a50d06bc6a2fc7c87d737dd669b76ad955f449c43095389bc8fb"}, + {file = "bcrypt-3.2.2-cp36-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:6d2cb9d969bfca5bc08e45864137276e4c3d3d7de2b162171def3d188bf9d34a"}, + {file = "bcrypt-3.2.2-cp36-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2b02d6bfc6336d1094276f3f588aa1225a598e27f8e3388f4db9948cb707b521"}, + {file = "bcrypt-3.2.2-cp36-abi3-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:a2c46100e315c3a5b90fdc53e429c006c5f962529bc27e1dfd656292c20ccc40"}, + {file = "bcrypt-3.2.2-cp36-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:7d9ba2e41e330d2af4af6b1b6ec9e6128e91343d0b4afb9282e54e5508f31baa"}, + {file = "bcrypt-3.2.2-cp36-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:cd43303d6b8a165c29ec6756afd169faba9396a9472cdff753fe9f19b96ce2fa"}, + {file = "bcrypt-3.2.2-cp36-abi3-win32.whl", hash = "sha256:4e029cef560967fb0cf4a802bcf4d562d3d6b4b1bf81de5ec1abbe0f1adb027e"}, + {file = "bcrypt-3.2.2-cp36-abi3-win_amd64.whl", hash = "sha256:7ff2069240c6bbe49109fe84ca80508773a904f5a8cb960e02a977f7f519b129"}, + {file = "bcrypt-3.2.2.tar.gz", hash = "sha256:433c410c2177057705da2a9f2cd01dd157493b2a7ac14c8593a16b3dab6b6bfb"}, +] +beautifulsoup4 = [ + {file = "beautifulsoup4-4.11.1-py3-none-any.whl", hash = "sha256:58d5c3d29f5a36ffeb94f02f0d786cd53014cf9b3b3951d42e0080d8a9498d30"}, + {file = "beautifulsoup4-4.11.1.tar.gz", hash = "sha256:ad9aa55b65ef2808eb405f46cf74df7fcb7044d5cbc26487f96eb2ef2e436693"}, +] black = [ {file = "black-21.9b0-py3-none-any.whl", hash = "sha256:380f1b5da05e5a1429225676655dddb96f5ae8c75bdf91e53d798871b902a115"}, {file = "black-21.9b0.tar.gz", hash = "sha256:7de4cfc7eb6b710de325712d40125689101d21d25283eed7e9998722cf10eb91"}, ] +cachetools = [ + {file = "cachetools-5.0.0-py3-none-any.whl", hash = "sha256:8fecd4203a38af17928be7b90689d8083603073622229ca7077b72d8e5a976e4"}, + {file = "cachetools-5.0.0.tar.gz", hash = "sha256:486471dfa8799eb7ec503a8059e263db000cdda20075ce5e48903087f79d5fd6"}, +] certifi = [ {file = "certifi-2021.10.8-py2.py3-none-any.whl", hash = "sha256:d62a0163eb4c2344ac042ab2bdf75399a71a2d8c7d47eac2e2ee91b9d6339569"}, {file = "certifi-2021.10.8.tar.gz", hash = "sha256:78884e7c1d4b00ce3cea67b44566851c4343c120abd683433ce934a68ea58872"}, ] +cffi = [ + {file = "cffi-1.15.0-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:c2502a1a03b6312837279c8c1bd3ebedf6c12c4228ddbad40912d671ccc8a962"}, + {file = "cffi-1.15.0-cp27-cp27m-manylinux1_i686.whl", hash = "sha256:23cfe892bd5dd8941608f93348c0737e369e51c100d03718f108bf1add7bd6d0"}, + {file = "cffi-1.15.0-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:41d45de54cd277a7878919867c0f08b0cf817605e4eb94093e7516505d3c8d14"}, + {file = "cffi-1.15.0-cp27-cp27m-win32.whl", hash = "sha256:4a306fa632e8f0928956a41fa8e1d6243c71e7eb59ffbd165fc0b41e316b2474"}, + {file = "cffi-1.15.0-cp27-cp27m-win_amd64.whl", hash = "sha256:e7022a66d9b55e93e1a845d8c9eba2a1bebd4966cd8bfc25d9cd07d515b33fa6"}, + {file = "cffi-1.15.0-cp27-cp27mu-manylinux1_i686.whl", hash = "sha256:14cd121ea63ecdae71efa69c15c5543a4b5fbcd0bbe2aad864baca0063cecf27"}, + {file = "cffi-1.15.0-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:d4d692a89c5cf08a8557fdeb329b82e7bf609aadfaed6c0d79f5a449a3c7c023"}, + {file = "cffi-1.15.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0104fb5ae2391d46a4cb082abdd5c69ea4eab79d8d44eaaf79f1b1fd806ee4c2"}, + {file = "cffi-1.15.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:91ec59c33514b7c7559a6acda53bbfe1b283949c34fe7440bcf917f96ac0723e"}, + {file = "cffi-1.15.0-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:f5c7150ad32ba43a07c4479f40241756145a1f03b43480e058cfd862bf5041c7"}, + {file = "cffi-1.15.0-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:00c878c90cb53ccfaae6b8bc18ad05d2036553e6d9d1d9dbcf323bbe83854ca3"}, + {file = "cffi-1.15.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:abb9a20a72ac4e0fdb50dae135ba5e77880518e742077ced47eb1499e29a443c"}, + {file = "cffi-1.15.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a5263e363c27b653a90078143adb3d076c1a748ec9ecc78ea2fb916f9b861962"}, + {file = "cffi-1.15.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f54a64f8b0c8ff0b64d18aa76675262e1700f3995182267998c31ae974fbc382"}, + {file = "cffi-1.15.0-cp310-cp310-win32.whl", hash = "sha256:c21c9e3896c23007803a875460fb786118f0cdd4434359577ea25eb556e34c55"}, + {file = "cffi-1.15.0-cp310-cp310-win_amd64.whl", hash = "sha256:5e069f72d497312b24fcc02073d70cb989045d1c91cbd53979366077959933e0"}, + {file = "cffi-1.15.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:64d4ec9f448dfe041705426000cc13e34e6e5bb13736e9fd62e34a0b0c41566e"}, + {file = "cffi-1.15.0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2756c88cbb94231c7a147402476be2c4df2f6078099a6f4a480d239a8817ae39"}, + {file = "cffi-1.15.0-cp36-cp36m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3b96a311ac60a3f6be21d2572e46ce67f09abcf4d09344c49274eb9e0bf345fc"}, + {file = "cffi-1.15.0-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:75e4024375654472cc27e91cbe9eaa08567f7fbdf822638be2814ce059f58032"}, + {file = "cffi-1.15.0-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:59888172256cac5629e60e72e86598027aca6bf01fa2465bdb676d37636573e8"}, + {file = "cffi-1.15.0-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:27c219baf94952ae9d50ec19651a687b826792055353d07648a5695413e0c605"}, + {file = "cffi-1.15.0-cp36-cp36m-win32.whl", hash = "sha256:4958391dbd6249d7ad855b9ca88fae690783a6be9e86df65865058ed81fc860e"}, + {file = "cffi-1.15.0-cp36-cp36m-win_amd64.whl", hash = "sha256:f6f824dc3bce0edab5f427efcfb1d63ee75b6fcb7282900ccaf925be84efb0fc"}, + {file = "cffi-1.15.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:06c48159c1abed75c2e721b1715c379fa3200c7784271b3c46df01383b593636"}, + {file = "cffi-1.15.0-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:c2051981a968d7de9dd2d7b87bcb9c939c74a34626a6e2f8181455dd49ed69e4"}, + {file = "cffi-1.15.0-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:fd8a250edc26254fe5b33be00402e6d287f562b6a5b2152dec302fa15bb3e997"}, + {file = "cffi-1.15.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:91d77d2a782be4274da750752bb1650a97bfd8f291022b379bb8e01c66b4e96b"}, + {file = "cffi-1.15.0-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:45db3a33139e9c8f7c09234b5784a5e33d31fd6907800b316decad50af323ff2"}, + {file = "cffi-1.15.0-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:263cc3d821c4ab2213cbe8cd8b355a7f72a8324577dc865ef98487c1aeee2bc7"}, + {file = "cffi-1.15.0-cp37-cp37m-win32.whl", hash = "sha256:17771976e82e9f94976180f76468546834d22a7cc404b17c22df2a2c81db0c66"}, + {file = "cffi-1.15.0-cp37-cp37m-win_amd64.whl", hash = "sha256:3415c89f9204ee60cd09b235810be700e993e343a408693e80ce7f6a40108029"}, + {file = "cffi-1.15.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:4238e6dab5d6a8ba812de994bbb0a79bddbdf80994e4ce802b6f6f3142fcc880"}, + {file = "cffi-1.15.0-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:0808014eb713677ec1292301ea4c81ad277b6cdf2fdd90fd540af98c0b101d20"}, + {file = "cffi-1.15.0-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:57e9ac9ccc3101fac9d6014fba037473e4358ef4e89f8e181f8951a2c0162024"}, + {file = "cffi-1.15.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8b6c2ea03845c9f501ed1313e78de148cd3f6cad741a75d43a29b43da27f2e1e"}, + {file = "cffi-1.15.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:10dffb601ccfb65262a27233ac273d552ddc4d8ae1bf93b21c94b8511bffe728"}, + {file = "cffi-1.15.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:786902fb9ba7433aae840e0ed609f45c7bcd4e225ebb9c753aa39725bb3e6ad6"}, + {file = "cffi-1.15.0-cp38-cp38-win32.whl", hash = "sha256:da5db4e883f1ce37f55c667e5c0de439df76ac4cb55964655906306918e7363c"}, + {file = "cffi-1.15.0-cp38-cp38-win_amd64.whl", hash = "sha256:181dee03b1170ff1969489acf1c26533710231c58f95534e3edac87fff06c443"}, + {file = "cffi-1.15.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:45e8636704eacc432a206ac7345a5d3d2c62d95a507ec70d62f23cd91770482a"}, + {file = "cffi-1.15.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:31fb708d9d7c3f49a60f04cf5b119aeefe5644daba1cd2a0fe389b674fd1de37"}, + {file = "cffi-1.15.0-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:6dc2737a3674b3e344847c8686cf29e500584ccad76204efea14f451d4cc669a"}, + {file = "cffi-1.15.0-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:74fdfdbfdc48d3f47148976f49fab3251e550a8720bebc99bf1483f5bfb5db3e"}, + {file = "cffi-1.15.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ffaa5c925128e29efbde7301d8ecaf35c8c60ffbcd6a1ffd3a552177c8e5e796"}, + {file = "cffi-1.15.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3f7d084648d77af029acb79a0ff49a0ad7e9d09057a9bf46596dac9514dc07df"}, + {file = "cffi-1.15.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ef1f279350da2c586a69d32fc8733092fd32cc8ac95139a00377841f59a3f8d8"}, + {file = "cffi-1.15.0-cp39-cp39-win32.whl", hash = "sha256:2a23af14f408d53d5e6cd4e3d9a24ff9e05906ad574822a10563efcef137979a"}, + {file = "cffi-1.15.0-cp39-cp39-win_amd64.whl", hash = "sha256:3773c4d81e6e818df2efbc7dd77325ca0dcb688116050fb2b3011218eda36139"}, + {file = "cffi-1.15.0.tar.gz", hash = "sha256:920f0d66a896c2d99f0adbb391f990a84091179542c205fa53ce5787aff87954"}, +] charset-normalizer = [ {file = "charset-normalizer-2.0.12.tar.gz", hash = "sha256:2857e29ff0d34db842cd7ca3230549d1a697f96ee6d3fb071cfa6c7393832597"}, {file = "charset_normalizer-2.0.12-py3-none-any.whl", hash = "sha256:6881edbebdb17b39b4eaaa821b438bf6eddffb4468cf344f09f89def34a8b1df"}, @@ -783,18 +1801,111 @@ debtcollector = [ {file = "debtcollector-2.5.0-py3-none-any.whl", hash = "sha256:1393a527d2c72f143ffa6a629e9c33face6642634eece475b48cab7b04ba61f3"}, {file = "debtcollector-2.5.0.tar.gz", hash = "sha256:dc9d1ad3f745c43f4bbedbca30f9ffe8905a8c028c9926e61077847d5ea257ab"}, ] +decorator = [ + {file = "decorator-5.1.1-py3-none-any.whl", hash = "sha256:b8c3f85900b9dc423225913c5aace94729fe1fa9763b38939a95226f02d37186"}, + {file = "decorator-5.1.1.tar.gz", hash = "sha256:637996211036b6385ef91435e4fae22989472f9d571faba8927ba8253acbc330"}, +] +dnspython = [ + {file = "dnspython-2.2.1-py3-none-any.whl", hash = "sha256:a851e51367fb93e9e1361732c1d60dab63eff98712e503ea7d92e6eccb109b4f"}, + {file = "dnspython-2.2.1.tar.gz", hash = "sha256:0f7569a4a6ff151958b64304071d370daa3243d15941a7beedf0c9fe5105603e"}, +] +eventlet = [ + {file = "eventlet-0.33.0-py2.py3-none-any.whl", hash = "sha256:d10a8fcc9e33381905d9873303fde96ebe3541c03fb795055d2c7347dce0639c"}, + {file = "eventlet-0.33.0.tar.gz", hash = "sha256:80144f489c1bb273a51b6f96ff9785a382d2866b9bab1f5bd748385019f4141f"}, +] execnet = [ {file = "execnet-1.9.0-py2.py3-none-any.whl", hash = "sha256:a295f7cc774947aac58dde7fdc85f4aa00c42adf5d8f5468fc630c1acf30a142"}, {file = "execnet-1.9.0.tar.gz", hash = "sha256:8f694f3ba9cc92cab508b152dcfe322153975c29bda272e2fd7f3f00f36e47c5"}, ] +extras = [ + {file = "extras-1.0.0-py2.py3-none-any.whl", hash = "sha256:f689f08df47e2decf76aa6208c081306e7bd472630eb1ec8a875c67de2366e87"}, + {file = "extras-1.0.0.tar.gz", hash = "sha256:132e36de10b9c91d5d4cc620160a476e0468a88f16c9431817a6729611a81b4e"}, +] +fasteners = [ + {file = "fasteners-0.17.3-py3-none-any.whl", hash = "sha256:cae0772df265923e71435cc5057840138f4e8b6302f888a567d06ed8e1cbca03"}, + {file = "fasteners-0.17.3.tar.gz", hash = "sha256:a9a42a208573d4074c77d041447336cf4e3c1389a256fd3e113ef59cf29b7980"}, +] +fixtures = [ + {file = "fixtures-4.0.0-py3-none-any.whl", hash = "sha256:c579191f96a088b16095eb60e21d3eb6334f006a93e248f4decdcb6bfef238d8"}, + {file = "fixtures-4.0.0.tar.gz", hash = "sha256:81ac3a8a627bfa5fce577adf9c60ec7b347896c78d8e0ceccaf94f3a53d39163"}, +] flake8 = [ {file = "flake8-3.9.2-py2.py3-none-any.whl", hash = "sha256:bf8fd333346d844f616e8d47905ef3a3384edae6b4e9beb0c5101e25e3110907"}, {file = "flake8-3.9.2.tar.gz", hash = "sha256:07528381786f2a6237b061f6e96610a4167b226cb926e2aa2b6b1d78057c576b"}, ] +futurist = [ + {file = "futurist-2.4.1-py3-none-any.whl", hash = "sha256:3ef3a1f63eca3c4f6ebc8f4cff0bb1492241a0df93622e0bf3e6e90ca822e0e0"}, + {file = "futurist-2.4.1.tar.gz", hash = "sha256:9c1760a877c0fe3260d04b6a6d4352a6d25ac58e483f1d6cd495e33dc3740ff7"}, +] +greenlet = [ + {file = "greenlet-1.1.2-cp27-cp27m-macosx_10_14_x86_64.whl", hash = "sha256:58df5c2a0e293bf665a51f8a100d3e9956febfbf1d9aaf8c0677cf70218910c6"}, + {file = "greenlet-1.1.2-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:aec52725173bd3a7b56fe91bc56eccb26fbdff1386ef123abb63c84c5b43b63a"}, + {file = "greenlet-1.1.2-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:833e1551925ed51e6b44c800e71e77dacd7e49181fdc9ac9a0bf3714d515785d"}, + {file = "greenlet-1.1.2-cp27-cp27m-win32.whl", hash = "sha256:aa5b467f15e78b82257319aebc78dd2915e4c1436c3c0d1ad6f53e47ba6e2713"}, + {file = "greenlet-1.1.2-cp27-cp27m-win_amd64.whl", hash = "sha256:40b951f601af999a8bf2ce8c71e8aaa4e8c6f78ff8afae7b808aae2dc50d4c40"}, + {file = "greenlet-1.1.2-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:95e69877983ea39b7303570fa6760f81a3eec23d0e3ab2021b7144b94d06202d"}, + {file = "greenlet-1.1.2-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:356b3576ad078c89a6107caa9c50cc14e98e3a6c4874a37c3e0273e4baf33de8"}, + {file = "greenlet-1.1.2-cp310-cp310-macosx_10_14_x86_64.whl", hash = "sha256:8639cadfda96737427330a094476d4c7a56ac03de7265622fcf4cfe57c8ae18d"}, + {file = "greenlet-1.1.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:97e5306482182170ade15c4b0d8386ded995a07d7cc2ca8f27958d34d6736497"}, + {file = "greenlet-1.1.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e6a36bb9474218c7a5b27ae476035497a6990e21d04c279884eb10d9b290f1b1"}, + {file = "greenlet-1.1.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:abb7a75ed8b968f3061327c433a0fbd17b729947b400747c334a9c29a9af6c58"}, + {file = "greenlet-1.1.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:b336501a05e13b616ef81ce329c0e09ac5ed8c732d9ba7e3e983fcc1a9e86965"}, + {file = "greenlet-1.1.2-cp310-cp310-win_amd64.whl", hash = "sha256:14d4f3cd4e8b524ae9b8aa567858beed70c392fdec26dbdb0a8a418392e71708"}, + {file = "greenlet-1.1.2-cp35-cp35m-macosx_10_14_x86_64.whl", hash = "sha256:17ff94e7a83aa8671a25bf5b59326ec26da379ace2ebc4411d690d80a7fbcf23"}, + {file = "greenlet-1.1.2-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:9f3cba480d3deb69f6ee2c1825060177a22c7826431458c697df88e6aeb3caee"}, + {file = "greenlet-1.1.2-cp35-cp35m-manylinux2010_x86_64.whl", hash = "sha256:fa877ca7f6b48054f847b61d6fa7bed5cebb663ebc55e018fda12db09dcc664c"}, + {file = "greenlet-1.1.2-cp35-cp35m-win32.whl", hash = "sha256:7cbd7574ce8e138bda9df4efc6bf2ab8572c9aff640d8ecfece1b006b68da963"}, + {file = "greenlet-1.1.2-cp35-cp35m-win_amd64.whl", hash = "sha256:903bbd302a2378f984aef528f76d4c9b1748f318fe1294961c072bdc7f2ffa3e"}, + {file = "greenlet-1.1.2-cp36-cp36m-macosx_10_14_x86_64.whl", hash = "sha256:049fe7579230e44daef03a259faa24511d10ebfa44f69411d99e6a184fe68073"}, + {file = "greenlet-1.1.2-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:dd0b1e9e891f69e7675ba5c92e28b90eaa045f6ab134ffe70b52e948aa175b3c"}, + {file = "greenlet-1.1.2-cp36-cp36m-manylinux2010_x86_64.whl", hash = "sha256:7418b6bfc7fe3331541b84bb2141c9baf1ec7132a7ecd9f375912eca810e714e"}, + {file = "greenlet-1.1.2-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f9d29ca8a77117315101425ec7ec2a47a22ccf59f5593378fc4077ac5b754fce"}, + {file = "greenlet-1.1.2-cp36-cp36m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:21915eb821a6b3d9d8eefdaf57d6c345b970ad722f856cd71739493ce003ad08"}, + {file = "greenlet-1.1.2-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eff9d20417ff9dcb0d25e2defc2574d10b491bf2e693b4e491914738b7908168"}, + {file = "greenlet-1.1.2-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:b8c008de9d0daba7b6666aa5bbfdc23dcd78cafc33997c9b7741ff6353bafb7f"}, + {file = "greenlet-1.1.2-cp36-cp36m-win32.whl", hash = "sha256:32ca72bbc673adbcfecb935bb3fb1b74e663d10a4b241aaa2f5a75fe1d1f90aa"}, + {file = "greenlet-1.1.2-cp36-cp36m-win_amd64.whl", hash = "sha256:f0214eb2a23b85528310dad848ad2ac58e735612929c8072f6093f3585fd342d"}, + {file = "greenlet-1.1.2-cp37-cp37m-macosx_10_14_x86_64.whl", hash = "sha256:b92e29e58bef6d9cfd340c72b04d74c4b4e9f70c9fa7c78b674d1fec18896dc4"}, + {file = "greenlet-1.1.2-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:fdcec0b8399108577ec290f55551d926d9a1fa6cad45882093a7a07ac5ec147b"}, + {file = "greenlet-1.1.2-cp37-cp37m-manylinux2010_x86_64.whl", hash = "sha256:93f81b134a165cc17123626ab8da2e30c0455441d4ab5576eed73a64c025b25c"}, + {file = "greenlet-1.1.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1e12bdc622676ce47ae9abbf455c189e442afdde8818d9da983085df6312e7a1"}, + {file = "greenlet-1.1.2-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8c790abda465726cfb8bb08bd4ca9a5d0a7bd77c7ac1ca1b839ad823b948ea28"}, + {file = "greenlet-1.1.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f276df9830dba7a333544bd41070e8175762a7ac20350786b322b714b0e654f5"}, + {file = "greenlet-1.1.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:8c5d5b35f789a030ebb95bff352f1d27a93d81069f2adb3182d99882e095cefe"}, + {file = "greenlet-1.1.2-cp37-cp37m-win32.whl", hash = "sha256:64e6175c2e53195278d7388c454e0b30997573f3f4bd63697f88d855f7a6a1fc"}, + {file = "greenlet-1.1.2-cp37-cp37m-win_amd64.whl", hash = "sha256:b11548073a2213d950c3f671aa88e6f83cda6e2fb97a8b6317b1b5b33d850e06"}, + {file = "greenlet-1.1.2-cp38-cp38-macosx_10_14_x86_64.whl", hash = "sha256:9633b3034d3d901f0a46b7939f8c4d64427dfba6bbc5a36b1a67364cf148a1b0"}, + {file = "greenlet-1.1.2-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:eb6ea6da4c787111adf40f697b4e58732ee0942b5d3bd8f435277643329ba627"}, + {file = "greenlet-1.1.2-cp38-cp38-manylinux2010_x86_64.whl", hash = "sha256:f3acda1924472472ddd60c29e5b9db0cec629fbe3c5c5accb74d6d6d14773478"}, + {file = "greenlet-1.1.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e859fcb4cbe93504ea18008d1df98dee4f7766db66c435e4882ab35cf70cac43"}, + {file = "greenlet-1.1.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:00e44c8afdbe5467e4f7b5851be223be68adb4272f44696ee71fe46b7036a711"}, + {file = "greenlet-1.1.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ec8c433b3ab0419100bd45b47c9c8551248a5aee30ca5e9d399a0b57ac04651b"}, + {file = "greenlet-1.1.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:2bde6792f313f4e918caabc46532aa64aa27a0db05d75b20edfc5c6f46479de2"}, + {file = "greenlet-1.1.2-cp38-cp38-win32.whl", hash = "sha256:288c6a76705dc54fba69fbcb59904ae4ad768b4c768839b8ca5fdadec6dd8cfd"}, + {file = "greenlet-1.1.2-cp38-cp38-win_amd64.whl", hash = "sha256:8d2f1fb53a421b410751887eb4ff21386d119ef9cde3797bf5e7ed49fb51a3b3"}, + {file = "greenlet-1.1.2-cp39-cp39-macosx_10_14_x86_64.whl", hash = "sha256:166eac03e48784a6a6e0e5f041cfebb1ab400b394db188c48b3a84737f505b67"}, + {file = "greenlet-1.1.2-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:572e1787d1460da79590bf44304abbc0a2da944ea64ec549188fa84d89bba7ab"}, + {file = "greenlet-1.1.2-cp39-cp39-manylinux2010_x86_64.whl", hash = "sha256:be5f425ff1f5f4b3c1e33ad64ab994eed12fc284a6ea71c5243fd564502ecbe5"}, + {file = "greenlet-1.1.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b1692f7d6bc45e3200844be0dba153612103db241691088626a33ff1f24a0d88"}, + {file = "greenlet-1.1.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7227b47e73dedaa513cdebb98469705ef0d66eb5a1250144468e9c3097d6b59b"}, + {file = "greenlet-1.1.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7ff61ff178250f9bb3cd89752df0f1dd0e27316a8bd1465351652b1b4a4cdfd3"}, + {file = "greenlet-1.1.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:0051c6f1f27cb756ffc0ffbac7d2cd48cb0362ac1736871399a739b2885134d3"}, + {file = "greenlet-1.1.2-cp39-cp39-win32.whl", hash = "sha256:f70a9e237bb792c7cc7e44c531fd48f5897961701cdaa06cf22fc14965c496cf"}, + {file = "greenlet-1.1.2-cp39-cp39-win_amd64.whl", hash = "sha256:013d61294b6cd8fe3242932c1c5e36e5d1db2c8afb58606c5a67efce62c1f5fd"}, + {file = "greenlet-1.1.2.tar.gz", hash = "sha256:e30f5ea4ae2346e62cedde8794a56858a67b878dd79f7df76a0767e356b1744a"}, +] idna = [ {file = "idna-3.3-py3-none-any.whl", hash = "sha256:84d9dd047ffa80596e0f246e2eab0b391788b0503584e8945f2368256d2735ff"}, {file = "idna-3.3.tar.gz", hash = "sha256:9d643ff0a55b762d5cdb124b8eaa99c66322e2157b69160bc32796e824360e6d"}, ] +importlib-metadata = [ + {file = "importlib_metadata-4.11.3-py3-none-any.whl", hash = "sha256:1208431ca90a8cca1a6b8af391bb53c1a2db74e5d1cef6ddced95d4b2062edc6"}, + {file = "importlib_metadata-4.11.3.tar.gz", hash = "sha256:ea4c597ebf37142f827b8f39299579e31685c31d3a438b59f469406afd0f2539"}, +] +importlib-resources = [ + {file = "importlib_resources-5.7.1-py3-none-any.whl", hash = "sha256:e447dc01619b1e951286f3929be820029d48c75eb25d265c28b92a16548212b8"}, + {file = "importlib_resources-5.7.1.tar.gz", hash = "sha256:b6062987dfc51f0fcb809187cffbd60f35df7acb4589091f154214af6d0d49d3"}, +] iniconfig = [ {file = "iniconfig-1.1.1-py2.py3-none-any.whl", hash = "sha256:011e24c64b7f47f6ebd835bb12a743f2fbe9a26d4cecaa7f53bc4f35ee9da8b3"}, {file = "iniconfig-1.1.1.tar.gz", hash = "sha256:bc3af051d7d14b2ee5ef9969666def0cd1a000e121eaea580d4a313df4b37f32"}, @@ -807,10 +1918,71 @@ isort = [ {file = "isort-5.9.3-py3-none-any.whl", hash = "sha256:e17d6e2b81095c9db0a03a8025a957f334d6ea30b26f9ec70805411e5c7c81f2"}, {file = "isort-5.9.3.tar.gz", hash = "sha256:9c2ea1e62d871267b78307fe511c0838ba0da28698c5732d54e2790bf3ba9899"}, ] +jinja2 = [ + {file = "Jinja2-3.1.2-py3-none-any.whl", hash = "sha256:6088930bfe239f0e6710546ab9c19c9ef35e29792895fed6e6e31a023a182a61"}, + {file = "Jinja2-3.1.2.tar.gz", hash = "sha256:31351a702a408a9e7595a8fc6150fc3f43bb6bf7e319770cbc0db9df9437e852"}, +] +keystoneauth1 = [ + {file = "keystoneauth1-4.5.0-py3-none-any.whl", hash = "sha256:47b526d2e813482bd1018916a1c768a5ac6d83c0865a4dc904cb8d6ffd530f1c"}, + {file = "keystoneauth1-4.5.0.tar.gz", hash = "sha256:49b3488966a43eeb0200ea511b997e6403c25d563a984c6330e82a0ebfc4540c"}, +] +kombu = [ + {file = "kombu-5.2.4-py3-none-any.whl", hash = "sha256:8b213b24293d3417bcf0d2f5537b7f756079e3ea232a8386dcc89a59fd2361a4"}, + {file = "kombu-5.2.4.tar.gz", hash = "sha256:37cee3ee725f94ea8bb173eaab7c1760203ea53bbebae226328600f9d2799610"}, +] loguru = [ {file = "loguru-0.5.3-py3-none-any.whl", hash = "sha256:f8087ac396b5ee5f67c963b495d615ebbceac2796379599820e324419d53667c"}, {file = "loguru-0.5.3.tar.gz", hash = "sha256:b28e72ac7a98be3d28ad28570299a393dfcd32e5e3f6a353dec94675767b6319"}, ] +logutils = [ + {file = "logutils-0.3.5.tar.gz", hash = "sha256:bc058a25d5c209461f134e1f03cab637d66a7a5ccc12e593db56fbb279899a82"}, +] +mako = [ + {file = "Mako-1.2.0-py3-none-any.whl", hash = "sha256:23aab11fdbbb0f1051b93793a58323ff937e98e34aece1c4219675122e57e4ba"}, + {file = "Mako-1.2.0.tar.gz", hash = "sha256:9a7c7e922b87db3686210cf49d5d767033a41d4010b284e747682c92bddd8b39"}, +] +markupsafe = [ + {file = "MarkupSafe-2.1.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:86b1f75c4e7c2ac2ccdaec2b9022845dbb81880ca318bb7a0a01fbf7813e3812"}, + {file = "MarkupSafe-2.1.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:f121a1420d4e173a5d96e47e9a0c0dcff965afdf1626d28de1460815f7c4ee7a"}, + {file = "MarkupSafe-2.1.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a49907dd8420c5685cfa064a1335b6754b74541bbb3706c259c02ed65b644b3e"}, + {file = "MarkupSafe-2.1.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:10c1bfff05d95783da83491be968e8fe789263689c02724e0c691933c52994f5"}, + {file = "MarkupSafe-2.1.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b7bd98b796e2b6553da7225aeb61f447f80a1ca64f41d83612e6139ca5213aa4"}, + {file = "MarkupSafe-2.1.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:b09bf97215625a311f669476f44b8b318b075847b49316d3e28c08e41a7a573f"}, + {file = "MarkupSafe-2.1.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:694deca8d702d5db21ec83983ce0bb4b26a578e71fbdbd4fdcd387daa90e4d5e"}, + {file = "MarkupSafe-2.1.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:efc1913fd2ca4f334418481c7e595c00aad186563bbc1ec76067848c7ca0a933"}, + {file = "MarkupSafe-2.1.1-cp310-cp310-win32.whl", hash = "sha256:4a33dea2b688b3190ee12bd7cfa29d39c9ed176bda40bfa11099a3ce5d3a7ac6"}, + {file = "MarkupSafe-2.1.1-cp310-cp310-win_amd64.whl", hash = "sha256:dda30ba7e87fbbb7eab1ec9f58678558fd9a6b8b853530e176eabd064da81417"}, + {file = "MarkupSafe-2.1.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:671cd1187ed5e62818414afe79ed29da836dde67166a9fac6d435873c44fdd02"}, + {file = "MarkupSafe-2.1.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3799351e2336dc91ea70b034983ee71cf2f9533cdff7c14c90ea126bfd95d65a"}, + {file = "MarkupSafe-2.1.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e72591e9ecd94d7feb70c1cbd7be7b3ebea3f548870aa91e2732960fa4d57a37"}, + {file = "MarkupSafe-2.1.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6fbf47b5d3728c6aea2abb0589b5d30459e369baa772e0f37a0320185e87c980"}, + {file = "MarkupSafe-2.1.1-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:d5ee4f386140395a2c818d149221149c54849dfcfcb9f1debfe07a8b8bd63f9a"}, + {file = "MarkupSafe-2.1.1-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:bcb3ed405ed3222f9904899563d6fc492ff75cce56cba05e32eff40e6acbeaa3"}, + {file = "MarkupSafe-2.1.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:e1c0b87e09fa55a220f058d1d49d3fb8df88fbfab58558f1198e08c1e1de842a"}, + {file = "MarkupSafe-2.1.1-cp37-cp37m-win32.whl", hash = "sha256:8dc1c72a69aa7e082593c4a203dcf94ddb74bb5c8a731e4e1eb68d031e8498ff"}, + {file = "MarkupSafe-2.1.1-cp37-cp37m-win_amd64.whl", hash = "sha256:97a68e6ada378df82bc9f16b800ab77cbf4b2fada0081794318520138c088e4a"}, + {file = "MarkupSafe-2.1.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:e8c843bbcda3a2f1e3c2ab25913c80a3c5376cd00c6e8c4a86a89a28c8dc5452"}, + {file = "MarkupSafe-2.1.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:0212a68688482dc52b2d45013df70d169f542b7394fc744c02a57374a4207003"}, + {file = "MarkupSafe-2.1.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8e576a51ad59e4bfaac456023a78f6b5e6e7651dcd383bcc3e18d06f9b55d6d1"}, + {file = "MarkupSafe-2.1.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4b9fe39a2ccc108a4accc2676e77da025ce383c108593d65cc909add5c3bd601"}, + {file = "MarkupSafe-2.1.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:96e37a3dc86e80bf81758c152fe66dbf60ed5eca3d26305edf01892257049925"}, + {file = "MarkupSafe-2.1.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:6d0072fea50feec76a4c418096652f2c3238eaa014b2f94aeb1d56a66b41403f"}, + {file = "MarkupSafe-2.1.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:089cf3dbf0cd6c100f02945abeb18484bd1ee57a079aefd52cffd17fba910b88"}, + {file = "MarkupSafe-2.1.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:6a074d34ee7a5ce3effbc526b7083ec9731bb3cbf921bbe1d3005d4d2bdb3a63"}, + {file = "MarkupSafe-2.1.1-cp38-cp38-win32.whl", hash = "sha256:421be9fbf0ffe9ffd7a378aafebbf6f4602d564d34be190fc19a193232fd12b1"}, + {file = "MarkupSafe-2.1.1-cp38-cp38-win_amd64.whl", hash = "sha256:fc7b548b17d238737688817ab67deebb30e8073c95749d55538ed473130ec0c7"}, + {file = "MarkupSafe-2.1.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:e04e26803c9c3851c931eac40c695602c6295b8d432cbe78609649ad9bd2da8a"}, + {file = "MarkupSafe-2.1.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:b87db4360013327109564f0e591bd2a3b318547bcef31b468a92ee504d07ae4f"}, + {file = "MarkupSafe-2.1.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:99a2a507ed3ac881b975a2976d59f38c19386d128e7a9a18b7df6fff1fd4c1d6"}, + {file = "MarkupSafe-2.1.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:56442863ed2b06d19c37f94d999035e15ee982988920e12a5b4ba29b62ad1f77"}, + {file = "MarkupSafe-2.1.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3ce11ee3f23f79dbd06fb3d63e2f6af7b12db1d46932fe7bd8afa259a5996603"}, + {file = "MarkupSafe-2.1.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:33b74d289bd2f5e527beadcaa3f401e0df0a89927c1559c8566c066fa4248ab7"}, + {file = "MarkupSafe-2.1.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:43093fb83d8343aac0b1baa75516da6092f58f41200907ef92448ecab8825135"}, + {file = "MarkupSafe-2.1.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:8e3dcf21f367459434c18e71b2a9532d96547aef8a871872a5bd69a715c15f96"}, + {file = "MarkupSafe-2.1.1-cp39-cp39-win32.whl", hash = "sha256:d4306c36ca495956b6d568d276ac11fdd9c30a36f1b6eb928070dc5360b22e1c"}, + {file = "MarkupSafe-2.1.1-cp39-cp39-win_amd64.whl", hash = "sha256:46d00d6cfecdde84d40e572d63735ef81423ad31184100411e6e3388d405e247"}, + {file = "MarkupSafe-2.1.1.tar.gz", hash = "sha256:7f91197cc9e48f989d12e4e6fbc46495c446636dfc81b9ccf50bb0ec74b91d4b"}, +] mccabe = [ {file = "mccabe-0.6.1-py2.py3-none-any.whl", hash = "sha256:ab8a6258860da4b6677da4bd2fe5dc2c659cff31b3ee4f7f5d64e79735b80d42"}, {file = "mccabe-0.6.1.tar.gz", hash = "sha256:dd8d182285a0fe56bace7f45b5e7d1a6ebcbf524e8f3bd87eb0f125271b8831f"}, @@ -919,6 +2091,26 @@ netifaces = [ {file = "netifaces-0.11.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:e76c7f351e0444721e85f975ae92718e21c1f361bda946d60a214061de1f00a1"}, {file = "netifaces-0.11.0.tar.gz", hash = "sha256:043a79146eb2907edf439899f262b3dfe41717d34124298ed281139a8b93ca32"}, ] +neutron-lib = [ + {file = "neutron-lib-2.15.0.tar.gz", hash = "sha256:88a25675fedc6760443fbc4180357e6437160bf5237eae132f05f7114eba0508"}, + {file = "neutron_lib-2.15.0-py3-none-any.whl", hash = "sha256:c77ecb54123cf2b113de3eefa8cc738469689e627c27048e0170e8797dbcb76b"}, +] +os-ken = [ + {file = "os-ken-2.3.1.tar.gz", hash = "sha256:3ac8d565ed78093d34bd5fe3f0c5191d6599a4c0dcef5e1f200dc1f0fdb51af7"}, + {file = "os_ken-2.3.1-py3-none-any.whl", hash = "sha256:b90ef275a44c649d3e74fab8040c8db673e14aa4a42b3160be769f9ff9597a2a"}, +] +os-service-types = [ + {file = "os-service-types-1.7.0.tar.gz", hash = "sha256:31800299a82239363995b91f1ebf9106ac7758542a1e4ef6dc737a5932878c6c"}, + {file = "os_service_types-1.7.0-py2.py3-none-any.whl", hash = "sha256:0505c72205690910077fb72b88f2a1f07533c8d39f2fe75b29583481764965d6"}, +] +os-traits = [ + {file = "os-traits-2.7.0.tar.gz", hash = "sha256:aa2ba03b4cd02f5c8bf65924bfc510f9c09c704c3c36e507522b4e8fa3857151"}, + {file = "os_traits-2.7.0-py3-none-any.whl", hash = "sha256:be1986df0aa71710e0f09ac6a43b0d88a004243367c9a6bc36c05950f91c5324"}, +] +"oslo.concurrency" = [ + {file = "oslo.concurrency-4.5.1-py3-none-any.whl", hash = "sha256:2464f8b5b30ee93670169990207d683fa9ee09aa671c404b17427d960515c37d"}, + {file = "oslo.concurrency-4.5.1.tar.gz", hash = "sha256:6869b946b93d95babf20cd16be06fc35a5ec14d07ea2c1f315f4ac6ea5f0da17"}, +] "oslo.config" = [ {file = "oslo.config-8.8.0-py3-none-any.whl", hash = "sha256:b1e2a398450ea35a8e5630d8b23057b8939838c4433cd25a20cc3a36d5df9e3b"}, {file = "oslo.config-8.8.0.tar.gz", hash = "sha256:96933d3011dae15608a11616bfb00d947e22da3cb09b6ff37ddd7576abd4764c"}, @@ -927,10 +2119,30 @@ netifaces = [ {file = "oslo.context-4.1.0-py3-none-any.whl", hash = "sha256:a0cf84fe7970cc070a821c1a88dc66dfceb81233a93f137a3715108804c7b9d5"}, {file = "oslo.context-4.1.0.tar.gz", hash = "sha256:75a9a722a552fba8a89e8a01028fa82a6190ab317a9591bb83303a2210a79144"}, ] +"oslo.db" = [ + {file = "oslo.db-11.3.0-py3-none-any.whl", hash = "sha256:c334ff4de3a3c30f98e67f78d6a24e69a210ec3f004972ceaf39da0c89b2137f"}, + {file = "oslo.db-11.3.0.tar.gz", hash = "sha256:092959234e55f29fa50a08cf706e8b662e32da754dac586323de530ccfd62673"}, +] "oslo.i18n" = [ {file = "oslo.i18n-5.1.0-py3-none-any.whl", hash = "sha256:75086cfd898819638ca741159f677e2073a78ca86a9c9be8d38b46800cdf2dc9"}, {file = "oslo.i18n-5.1.0.tar.gz", hash = "sha256:6bf111a6357d5449640852de4640eae4159b5562bbba4c90febb0034abc095d0"}, ] +"oslo.log" = [ + {file = "oslo.log-4.8.0-py3-none-any.whl", hash = "sha256:b061c66ec176cf5b197432709a7f14517b913abb6ea854ce6aaa997c8f7a4cb6"}, + {file = "oslo.log-4.8.0.tar.gz", hash = "sha256:9eddf6f6a2035327f2a3231a108b98e21ad90c0680380d9d1bc647ac9663e056"}, +] +"oslo.messaging" = [ + {file = "oslo.messaging-12.13.0-py3-none-any.whl", hash = "sha256:cef851e4ad16c368633246bf0ba3179be04a267e6cccbd5a9aece1a7fd3e6b7c"}, + {file = "oslo.messaging-12.13.0.tar.gz", hash = "sha256:2a5ef1d3b8edfb3c7b0fde07033175f81a97d010188616829cc1db05c57124e8"}, +] +"oslo.metrics" = [ + {file = "oslo.metrics-0.4.0-py3-none-any.whl", hash = "sha256:0f03845838f84379f6773a4f18a928a4438db4a5810c44623650ec9c4ef3b629"}, + {file = "oslo.metrics-0.4.0.tar.gz", hash = "sha256:ebbd9eab24869dcd9ef6445d0ad6a806329b42cb409139598056c06f1b0f1f3a"}, +] +"oslo.middleware" = [ + {file = "oslo.middleware-4.5.1-py3-none-any.whl", hash = "sha256:e1ce23564837bd35ba44862b7538dde187fc405f012e562c97b3ec10a8c4dafc"}, + {file = "oslo.middleware-4.5.1.tar.gz", hash = "sha256:c286933ce38ceeedae6b613599ad329546373ca27e0b130d506b6f0cce1099b3"}, +] "oslo.policy" = [ {file = "oslo.policy-3.8.2-py3-none-any.whl", hash = "sha256:4102cb537ebabf23e6e5ca6df344bcc4c6725252434f07427b9baa4f101183d4"}, {file = "oslo.policy-3.8.2.tar.gz", hash = "sha256:233030f9acbc3cb894c66943fd71406ec12825776021f5dda4afab6f1762837f"}, @@ -939,14 +2151,39 @@ netifaces = [ {file = "oslo.serialization-4.3.0-py3-none-any.whl", hash = "sha256:6c1c483231c3827787af9b6ca4a45f4e45fe364772a24692b02de78fe48eafb1"}, {file = "oslo.serialization-4.3.0.tar.gz", hash = "sha256:3aa472f434aee8bbcc0725312b7f409aa1fa54bbc134904124cf49b0e86b9115"}, ] +"oslo.service" = [ + {file = "oslo.service-2.8.0-py3-none-any.whl", hash = "sha256:9ce36992aa96b0adacc0377c5b16acf579f5d274560432c6deaa141d20e914bc"}, + {file = "oslo.service-2.8.0.tar.gz", hash = "sha256:15680c007cc8f45e3e0ee98881b58e21baffac1a31d0aa7f855c6a788f04bd8e"}, +] "oslo.utils" = [ {file = "oslo.utils-4.13.0-py3-none-any.whl", hash = "sha256:dab26f205980a379fe7068dd4f9010809a2ae7dddcbecde53e18cf8fa4a251d9"}, {file = "oslo.utils-4.13.0.tar.gz", hash = "sha256:45ba8aaa5ed056a8e8e46059ef93d5c2d7b9c99bc7480e361cf5783e47f28fba"}, ] +"oslo.versionedobjects" = [ + {file = "oslo.versionedobjects-2.6.0-py3-none-any.whl", hash = "sha256:ab4c592aa746ec819807bea34bd9060ad9e48ffac5b194977bcbd43f86f9629f"}, + {file = "oslo.versionedobjects-2.6.0.tar.gz", hash = "sha256:3debcb6adae9fac5440b9d30e913feda1994ff45647b980b750e37ab5851aecb"}, +] +osprofiler = [ + {file = "osprofiler-3.4.3-py3-none-any.whl", hash = "sha256:163fa20149316c4a41bd48aece5805f70bf960d58a4e5de38b1c881e40f0cc4c"}, + {file = "osprofiler-3.4.3.tar.gz", hash = "sha256:5cea450598a873e4e11d353ff9f0d16e9f3a72e9e2007e7f056b90379dcd54e1"}, +] +ovs = [ + {file = "ovs-2.17.1.post1-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:963a031e2f719e71847f0f3ef62f8ee893df673d9841f63c603f0910fed59b82"}, + {file = "ovs-2.17.1.post1-py3-none-any.whl", hash = "sha256:abae07b4449093a92b9338cf5760955d67de0b1f139db9ff460658ceb88a038f"}, + {file = "ovs-2.17.1.post1.tar.gz", hash = "sha256:575c2d1aecf3599a77ea4c0634ca0a71a6089775c46d4b6ce04d69502428d9d8"}, +] packaging = [ {file = "packaging-21.3-py3-none-any.whl", hash = "sha256:ef103e05f519cdc783ae24ea4e2e0f508a9c99b2d4969652eed6a2e1ea5bd522"}, {file = "packaging-21.3.tar.gz", hash = "sha256:dd47c42927d89ab911e606518907cc2d3a1f38bbd026385970643f9c5b8ecfeb"}, ] +paste = [ + {file = "Paste-3.5.0-py2.py3-none-any.whl", hash = "sha256:8e08200a570f7e29dfafd4eea0e1b38a6193cfda6446bb515db74250b632c53b"}, + {file = "Paste-3.5.0.tar.gz", hash = "sha256:1b095c42dc91d426f3ae85101796b14d265887f8f36f3aad143a5f29effdc39d"}, +] +pastedeploy = [ + {file = "PasteDeploy-2.1.1-py2.py3-none-any.whl", hash = "sha256:14923cfd6ad4281b570693afc278bab5076fbdd4cd15aa9d99b042d694aa4217"}, + {file = "PasteDeploy-2.1.1.tar.gz", hash = "sha256:6dead6ab9823a85d585ef27f878bc647f787edb9ca8da0716aa9f1261b464817"}, +] pathspec = [ {file = "pathspec-0.9.0-py2.py3-none-any.whl", hash = "sha256:7d15c4ddb0b5c802d161efc417ec1a2558ea2653c2e8ad9c19098201dc1c993a"}, {file = "pathspec-0.9.0.tar.gz", hash = "sha256:e564499435a2673d586f6b2130bb5b95f04a3ba06f81b8f895b651a3c76aabb1"}, @@ -955,6 +2192,9 @@ pbr = [ {file = "pbr-5.9.0-py2.py3-none-any.whl", hash = "sha256:e547125940bcc052856ded43be8e101f63828c2d94239ffbe2b327ba3d5ccf0a"}, {file = "pbr-5.9.0.tar.gz", hash = "sha256:e8dca2f4b43560edef58813969f52a56cef023146cbb8931626db80e6c1c4308"}, ] +pecan = [ + {file = "pecan-1.4.1.tar.gz", hash = "sha256:2cbd0eedbb5747c04cdf18c4aae4f1c6e9d950f3af70af2544b074f7ed7a0480"}, +] platformdirs = [ {file = "platformdirs-2.5.2-py3-none-any.whl", hash = "sha256:027d8e83a2d7de06bbac4e5ef7e023c02b863d7ea5d079477e722bb41ab25788"}, {file = "platformdirs-2.5.2.tar.gz", hash = "sha256:58c8abb07dcb441e6ee4b11d8df0ac856038f944ab98b7be6b27b2a3c7feef19"}, @@ -963,6 +2203,14 @@ pluggy = [ {file = "pluggy-1.0.0-py2.py3-none-any.whl", hash = "sha256:74134bbf457f031a36d68416e1509f34bd5ccc019f0bcc952c7b909d06b37bd3"}, {file = "pluggy-1.0.0.tar.gz", hash = "sha256:4224373bacce55f955a878bf9cfa763c1e360858e330072059e10bad68531159"}, ] +prettytable = [ + {file = "prettytable-3.3.0-py3-none-any.whl", hash = "sha256:d1c34d72ea2c0ffd6ce5958e71c428eb21a3d40bf3133afe319b24aeed5af407"}, + {file = "prettytable-3.3.0.tar.gz", hash = "sha256:118eb54fd2794049b810893653b20952349df6d3bc1764e7facd8a18064fa9b0"}, +] +prometheus-client = [ + {file = "prometheus_client-0.14.1-py3-none-any.whl", hash = "sha256:522fded625282822a89e2773452f42df14b5a8e84a86433e3f8a189c1d54dc01"}, + {file = "prometheus_client-0.14.1.tar.gz", hash = "sha256:5459c427624961076277fdc6dc50540e2bacb98eebde99886e59ec55ed92093a"}, +] py = [ {file = "py-1.11.0-py2.py3-none-any.whl", hash = "sha256:607c53218732647dff4acdfcd50cb62615cedf612e72d1724fb1a0cc6405b378"}, {file = "py-1.11.0.tar.gz", hash = "sha256:51c75c4126074b472f746a24399ad32f6053d1b34b68d2fa41e558e6f4a98719"}, @@ -971,6 +2219,10 @@ pycodestyle = [ {file = "pycodestyle-2.7.0-py2.py3-none-any.whl", hash = "sha256:514f76d918fcc0b55c6680472f0a37970994e07bbb80725808c17089be302068"}, {file = "pycodestyle-2.7.0.tar.gz", hash = "sha256:c389c1d06bf7904078ca03399a4816f974a1d590090fecea0c63ec26ebaf1cef"}, ] +pycparser = [ + {file = "pycparser-2.21-py2.py3-none-any.whl", hash = "sha256:8ee45429555515e1f6b185e78100aea234072576aa43ab53aefcae078162fca9"}, + {file = "pycparser-2.21.tar.gz", hash = "sha256:e644fdec12f7872f86c58ff790da456218b10f863970249516d60a5eaca77206"}, +] pydantic = [ {file = "pydantic-1.8.2-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:05ddfd37c1720c392f4e0d43c484217b7521558302e7069ce8d318438d297739"}, {file = "pydantic-1.8.2-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:a7c6002203fe2c5a1b5cbb141bb85060cbff88c2d78eccbc72d97eb7022c43e4"}, @@ -999,6 +2251,9 @@ pyflakes = [ {file = "pyflakes-2.3.1-py2.py3-none-any.whl", hash = "sha256:7893783d01b8a89811dd72d7dfd4d84ff098e5eed95cfa8905b22bbffe52efc3"}, {file = "pyflakes-2.3.1.tar.gz", hash = "sha256:f5bc8ecabc05bb9d291eb5203d6810b49040f6ff446a756326104746cc00c1db"}, ] +pyinotify = [ + {file = "pyinotify-0.9.6.tar.gz", hash = "sha256:9c998a5d7606ca835065cdabc013ae6c66eb9ea76a00a1e3bc6e0cfe2b4f71f4"}, +] pyparsing = [ {file = "pyparsing-3.0.8-py3-none-any.whl", hash = "sha256:ef7b523f6356f763771559412c0d7134753f037822dad1b16945b7b846f7ad06"}, {file = "pyparsing-3.0.8.tar.gz", hash = "sha256:7bf433498c016c4314268d95df76c81b842a4cb2b276fa3312cfb1e1d85f6954"}, @@ -1027,10 +2282,30 @@ pytest-xdist = [ {file = "pytest-xdist-2.4.0.tar.gz", hash = "sha256:89b330316f7fc475f999c81b577c2b926c9569f3d397ae432c0c2e2496d61ff9"}, {file = "pytest_xdist-2.4.0-py3-none-any.whl", hash = "sha256:7b61ebb46997a0820a263553179d6d1e25a8c50d8a8620cd1aa1e20e3be99168"}, ] +python-dateutil = [ + {file = "python-dateutil-2.8.2.tar.gz", hash = "sha256:0123cacc1627ae19ddf3c27a5de5bd67ee4586fbdd6440d9748f8abb483d3e86"}, + {file = "python_dateutil-2.8.2-py2.py3-none-any.whl", hash = "sha256:961d03dc3453ebbc59dbdea9e4e11c5651520a876d0f4db161e8674aae935da9"}, +] pytz = [ {file = "pytz-2022.1-py2.py3-none-any.whl", hash = "sha256:e68985985296d9a66a881eb3193b0906246245294a881e7c8afe623866ac6a5c"}, {file = "pytz-2022.1.tar.gz", hash = "sha256:1e760e2fe6a8163bc0b3d9a19c4f84342afa0a2affebfaa84b01b978a02ecaa7"}, ] +pywin32 = [ + {file = "pywin32-304-cp310-cp310-win32.whl", hash = "sha256:3c7bacf5e24298c86314f03fa20e16558a4e4138fc34615d7de4070c23e65af3"}, + {file = "pywin32-304-cp310-cp310-win_amd64.whl", hash = "sha256:4f32145913a2447736dad62495199a8e280a77a0ca662daa2332acf849f0be48"}, + {file = "pywin32-304-cp310-cp310-win_arm64.whl", hash = "sha256:d3ee45adff48e0551d1aa60d2ec066fec006083b791f5c3527c40cd8aefac71f"}, + {file = "pywin32-304-cp311-cp311-win32.whl", hash = "sha256:30c53d6ce44c12a316a06c153ea74152d3b1342610f1b99d40ba2795e5af0269"}, + {file = "pywin32-304-cp311-cp311-win_amd64.whl", hash = "sha256:7ffa0c0fa4ae4077e8b8aa73800540ef8c24530057768c3ac57c609f99a14fd4"}, + {file = "pywin32-304-cp311-cp311-win_arm64.whl", hash = "sha256:cbbe34dad39bdbaa2889a424d28752f1b4971939b14b1bb48cbf0182a3bcfc43"}, + {file = "pywin32-304-cp36-cp36m-win32.whl", hash = "sha256:be253e7b14bc601718f014d2832e4c18a5b023cbe72db826da63df76b77507a1"}, + {file = "pywin32-304-cp36-cp36m-win_amd64.whl", hash = "sha256:de9827c23321dcf43d2f288f09f3b6d772fee11e809015bdae9e69fe13213988"}, + {file = "pywin32-304-cp37-cp37m-win32.whl", hash = "sha256:f64c0377cf01b61bd5e76c25e1480ca8ab3b73f0c4add50538d332afdf8f69c5"}, + {file = "pywin32-304-cp37-cp37m-win_amd64.whl", hash = "sha256:bb2ea2aa81e96eee6a6b79d87e1d1648d3f8b87f9a64499e0b92b30d141e76df"}, + {file = "pywin32-304-cp38-cp38-win32.whl", hash = "sha256:94037b5259701988954931333aafd39cf897e990852115656b014ce72e052e96"}, + {file = "pywin32-304-cp38-cp38-win_amd64.whl", hash = "sha256:ead865a2e179b30fb717831f73cf4373401fc62fbc3455a0889a7ddac848f83e"}, + {file = "pywin32-304-cp39-cp39-win32.whl", hash = "sha256:25746d841201fd9f96b648a248f731c1dec851c9a08b8e33da8b56148e4c65cc"}, + {file = "pywin32-304-cp39-cp39-win_amd64.whl", hash = "sha256:d24a3382f013b21aa24a5cfbfad5a2cd9926610c0affde3e8ab5b3d7dbcf4ac9"}, +] pyyaml = [ {file = "PyYAML-6.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d4db7c7aef085872ef65a8fd7d6d09a14ae91f691dec3e87ee5ee0539d516f53"}, {file = "PyYAML-6.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9df7ed3b3d2e0ecfe09e14741b857df43adb5a3ddadc919a2d94fbdf78fea53c"}, @@ -1142,6 +2417,10 @@ regex = [ {file = "regex-2022.4.24-cp39-cp39-win_amd64.whl", hash = "sha256:5b9c7b6895a01204296e9523b3e12b43e013835a9de035a783907c2c1bc447f0"}, {file = "regex-2022.4.24.tar.gz", hash = "sha256:92183e9180c392371079262879c6532ccf55f808e6900df5d9f03c9ca8807255"}, ] +"repoze.lru" = [ + {file = "repoze.lru-0.7-py3-none-any.whl", hash = "sha256:f77bf0e1096ea445beadd35f3479c5cff2aa1efe604a133e67150bc8630a62ea"}, + {file = "repoze.lru-0.7.tar.gz", hash = "sha256:0429a75e19380e4ed50c0694e26ac8819b4ea7851ee1fc7583c8572db80aff77"}, +] requests = [ {file = "requests-2.27.1-py2.py3-none-any.whl", hash = "sha256:f22fa1e554c9ddfd16e6e41ac79759e17be9e492b3587efa038054674760e72d"}, {file = "requests-2.27.1.tar.gz", hash = "sha256:68d7c56fd5a8999887728ef304a6d12edc7be74f1cfa47714fc8b414525c9a61"}, @@ -1150,11 +2429,166 @@ rfc3986 = [ {file = "rfc3986-2.0.0-py2.py3-none-any.whl", hash = "sha256:50b1502b60e289cb37883f3dfd34532b8873c7de9f49bb546641ce9cbd256ebd"}, {file = "rfc3986-2.0.0.tar.gz", hash = "sha256:97aacf9dbd4bfd829baad6e6309fa6573aaf1be3f6fa735c8ab05e46cecb261c"}, ] +routes = [ + {file = "Routes-2.5.1-py2.py3-none-any.whl", hash = "sha256:fab5a042a3a87778eb271d053ca2723cadf43c95b471532a191a48539cb606ea"}, + {file = "Routes-2.5.1.tar.gz", hash = "sha256:b6346459a15f0cbab01a45a90c3d25caf980d4733d628b4cc1952b865125d053"}, +] +setproctitle = [ + {file = "setproctitle-1.2.3-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:0a668acec8b61a971de54bc4c733869ea7b0eb1348eae5a32b9477f788908e5c"}, + {file = "setproctitle-1.2.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:52265182fe5ac237d179d8e949248d307882a2e6ec7f189c8dac1c9d1b3631fa"}, + {file = "setproctitle-1.2.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:71d00ef63a1f78e13c236895badac77b6c8503377467b9c1a4f81fe729d16e03"}, + {file = "setproctitle-1.2.3-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:eb82a49aaf440232c762539ab3737b5174d31aba0141fd4bf4d8739c28d18624"}, + {file = "setproctitle-1.2.3-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:791bed39e4ecbdd008b64999a60c9cc560d17b3836ca0c27cd4708e8e1bcf495"}, + {file = "setproctitle-1.2.3-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d8e4da68d4d4ba46d4c5db6ae5eb61b11de9c520f25ae8334570f4d0018a8611"}, + {file = "setproctitle-1.2.3-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:47f97f591ea2335b7d35f5e9ad7d806385338182dc6de5732d091e9c70ed1cc0"}, + {file = "setproctitle-1.2.3-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:501c084cf3df7d848e91c97d4f8c44d799ba545858a79c6960326ce6f285b4e4"}, + {file = "setproctitle-1.2.3-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:a39b30d7400c0d50941fe19e1fe0b7d35676186fec4d9c010129ac91b883fd26"}, + {file = "setproctitle-1.2.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:b213376fc779c0e1a4b60008f3fd03f74e9baa9665db37fa6646e98d31baa6d8"}, + {file = "setproctitle-1.2.3-cp310-cp310-win32.whl", hash = "sha256:e24fa9251cc22ddb88ef183070063fdca826c9636381f1c4fb9d2a1dccb7c2a4"}, + {file = "setproctitle-1.2.3-cp310-cp310-win_amd64.whl", hash = "sha256:3b1883ccdbee624386dc046cfbcd80c4e75e24c478f35627984a79892e088b88"}, + {file = "setproctitle-1.2.3-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:f9cf1098205c23fbcaaaef798afaff714fa9ffadf24166f5e85e6d16b9ef82a1"}, + {file = "setproctitle-1.2.3-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a546cd2dfaecb227d24122257b98b2e062762871888835c7b608f1c41c3a77ad"}, + {file = "setproctitle-1.2.3-cp36-cp36m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e40c35564081983eab6a07f9eb5693867bc447b0edf9c61b69446223d6593814"}, + {file = "setproctitle-1.2.3-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2d083cae02e344e760bd21c28d591ac5f7ddbd6e1a0ecba62092ae724abd5c28"}, + {file = "setproctitle-1.2.3-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b2fa9f4b382a6cf88f2f345044d0916a92f37cac21355585bd14bc7ee91af187"}, + {file = "setproctitle-1.2.3-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:38855b06a124361dc73c198853dee3f2b775531c4f4b7472f0e3d441192b3d8a"}, + {file = "setproctitle-1.2.3-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:a81067bdc015fee1cc148c79b346f24fdad1224a8898b4239c7cbdee1add8a60"}, + {file = "setproctitle-1.2.3-cp36-cp36m-musllinux_1_1_ppc64le.whl", hash = "sha256:409a39f92e123be061626fdfd3e76625b04db103479bb4ba1c85b587db0b9498"}, + {file = "setproctitle-1.2.3-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:a993610383028f093112dce7f77b262e88fce9d70127535fcdc78953179857e8"}, + {file = "setproctitle-1.2.3-cp36-cp36m-win32.whl", hash = "sha256:4eed53c12146de5df959d84384ffc2774651cab406ee4854e12728cf0eee5297"}, + {file = "setproctitle-1.2.3-cp36-cp36m-win_amd64.whl", hash = "sha256:335750c9eb5b18326a138a09266862a52b4f474277c3e410b419bea9a1df8bee"}, + {file = "setproctitle-1.2.3-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:7a72bbe53191fbe574c94c0f8b9451dce535b398b7c47ce2e26e21d55eaa1d7e"}, + {file = "setproctitle-1.2.3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5464e6812d050c986e6e9b97d54ab88c23dbe9d81151a2fa10b48bb5133a1e2c"}, + {file = "setproctitle-1.2.3-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ec7c3a27460ae7811e868e5494e3d8aee5012912744c48fa2d80b5e614b1b972"}, + {file = "setproctitle-1.2.3-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:01cef383afc7ea7a3b1696818c8712029bf2f1d64f5d4777dbaf0166becf2c00"}, + {file = "setproctitle-1.2.3-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:54c7315e53b49ef2227d47a75c3d28c4c51ea9ee46a066460732c0d0f8e605a7"}, + {file = "setproctitle-1.2.3-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:0b444ed4051161a3b0a85dec2bb9b50922f37c75f5fb86f7784b235cf6754336"}, + {file = "setproctitle-1.2.3-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:be0b46beeb1c92450079a7f30a025d69b63fd6a5de040ebc478fd6e6bf3b63fc"}, + {file = "setproctitle-1.2.3-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:60f7a2f5da36a3075dda7edbee2173be5b765b0460b8d401ee01a11f68dee1d2"}, + {file = "setproctitle-1.2.3-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:138bfa853e607f06d95b0f253e9152b32a00af3d0dbec96abf0871236a483932"}, + {file = "setproctitle-1.2.3-cp37-cp37m-win32.whl", hash = "sha256:e80fc59739a738b5c67afbbb9d1c238aa47b6d290c2ada872b15c819350ec5f8"}, + {file = "setproctitle-1.2.3-cp37-cp37m-win_amd64.whl", hash = "sha256:a912df3f065572cef211e9ed9f157a0dd2bd73d150281f18f00728afa1b1e5d2"}, + {file = "setproctitle-1.2.3-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:d45dbe4171f8c27a515ecb4562f4cd9ef67d98474bea18e0c14dfbdc2b225050"}, + {file = "setproctitle-1.2.3-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:b9d905ac84dde5227de6516ec08639759f99684148bb88ba05f4cbdaebff5d69"}, + {file = "setproctitle-1.2.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f272b84d79bbe15af26ecf6f7c129bbe642f628866c9253659cdb519216f138f"}, + {file = "setproctitle-1.2.3-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fc586f002fd5dd8695718e22a83771fd9f744f081a2b8e614bf6b5f44135964a"}, + {file = "setproctitle-1.2.3-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4051c3a3b07f8a4cca205cd45366a22f322da2f26491c0d6b313a10f8c77b734"}, + {file = "setproctitle-1.2.3-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:25538341e56f9e75e9759229ff674282dccb5b1ce79a974f968d36208d465674"}, + {file = "setproctitle-1.2.3-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:fdb2231db176e0848b757fc5d9bed08bc8a498b5b9abb8b640f39e9720f309fc"}, + {file = "setproctitle-1.2.3-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:0670f2130a7ca0e167d3d5a7c8e3c707340b8693d6af7416ff55c18ab2a0a43f"}, + {file = "setproctitle-1.2.3-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:9a92978030616f5e20617b7b832efee398df82072b7239c53db41c8026f5fe55"}, + {file = "setproctitle-1.2.3-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:28e0df80d5069586a08a3cb463fb23503a37cbb805826ef93164bc4bfb5f35b9"}, + {file = "setproctitle-1.2.3-cp38-cp38-win32.whl", hash = "sha256:35b869e416a105c59133a48b569c6e808159485d916f55e80c7394a42667a386"}, + {file = "setproctitle-1.2.3-cp38-cp38-win_amd64.whl", hash = "sha256:f47f6704880869d8e8f52efac2f2f60f5ed4cb9662b98fc1c7e916eefe76e61d"}, + {file = "setproctitle-1.2.3-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:ccb0b5334dbf248f7504d88b5e9e9a09a0da119eeafacd6f7247f7c055443522"}, + {file = "setproctitle-1.2.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:14641a4ec2f2110cf4afc666eaecc82ba67814e927e02647fa1f4cf74476e752"}, + {file = "setproctitle-1.2.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a4a3cb19346a0cd680617742f5e39fdd14596f6fd91d6c9038272663e37441b4"}, + {file = "setproctitle-1.2.3-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e2ac0ebd9c63c3d19f768966be2f771bf088bc7373c63ed6fcbb3444a30d0f62"}, + {file = "setproctitle-1.2.3-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:32a84cc309b9e595f06a55bec2fa335a23c307a55d2989864b60ecd71ea87897"}, + {file = "setproctitle-1.2.3-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3f55493c987935fa540ef9ffb7ee7db03b4a18a9d5cc103681e2e6a6dfbd7054"}, + {file = "setproctitle-1.2.3-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:f2a137984d3436f13e4bf7c8ca6f6f292df119c009c5e39556cabba4f4bfbf92"}, + {file = "setproctitle-1.2.3-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:f06ff922254023eaabef6af6631f89e5f2f420cf0112865d57d7703f933d4e9f"}, + {file = "setproctitle-1.2.3-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:eb06c1086cf8c8cf12ce45a02450befcb408dfd646d0ccb47d388fd6e73c333a"}, + {file = "setproctitle-1.2.3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:2c8c245e08f6a296fdaa1b36894ec40e20464a4fc6458e6178c8d55a2f83457a"}, + {file = "setproctitle-1.2.3-cp39-cp39-win32.whl", hash = "sha256:21d6e064b8fee4e58eb00cdd8771c638de1bc30bb6c02d0208af9ca0a1c00898"}, + {file = "setproctitle-1.2.3-cp39-cp39-win_amd64.whl", hash = "sha256:efb3001fd9e71d3ae939d826bf436f0446fd30a6ac01e0ce08cd7eb55ee5ac57"}, + {file = "setproctitle-1.2.3-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:3dbe87e76197f9a303451512088c18c96f09a6fc4f871a92e5bd695f46f94a26"}, + {file = "setproctitle-1.2.3-pp37-pypy37_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0b207de9e4f4aa5265b36dd826a1f6ef6566b064a042033bd7447efb7e9a7664"}, + {file = "setproctitle-1.2.3-pp37-pypy37_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:48ac48a94040ef21be37366cbc8270fcba2ca103d6c64da6099d5a7b034f72d0"}, + {file = "setproctitle-1.2.3-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:9fb5d2e66f94eebc3d06cda9e71a3fffef24c5273971180a4b5628a37fae05a5"}, + {file = "setproctitle-1.2.3-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:423f8a6d8116acf975ebf93d6b5c4a752f7d2039fa9aafe175a62de86e17016e"}, + {file = "setproctitle-1.2.3-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2c0be45535e934deab3aa72ed1a8487174af4ea12cec124478c68a312e1c8b13"}, + {file = "setproctitle-1.2.3-pp38-pypy38_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:65a9384cafdfed98f91416e93705ad08f049c298afcb9c515882beba23153bd0"}, + {file = "setproctitle-1.2.3-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:d312a170f539895c8093b5e68ba126aa131c9f0d00f6360410db27ec50bf7afa"}, + {file = "setproctitle-1.2.3-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:c93a2272740e60cddf59d3e1d35dbb89fcc3676f5ca9618bb4e6ae9633fdf13c"}, + {file = "setproctitle-1.2.3-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:76f59444a25fb42ca07f53a4474b1545d97a06f016e6c6b8246eee5b146820b5"}, + {file = "setproctitle-1.2.3-pp39-pypy39_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:06aab65e68163ead9d046b452dd9ad1fc6834ce6bde490f63fdce3be53e9cc73"}, + {file = "setproctitle-1.2.3-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:97accd117392b1e57e09888792750c403d7729b7e4b193005178b3736b325ea0"}, + {file = "setproctitle-1.2.3.tar.gz", hash = "sha256:ecf28b1c07a799d76f4326e508157b71aeda07b84b90368ea451c0710dbd32c0"}, +] +six = [ + {file = "six-1.16.0-py2.py3-none-any.whl", hash = "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254"}, + {file = "six-1.16.0.tar.gz", hash = "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926"}, +] skyline-log = [] +sortedcontainers = [ + {file = "sortedcontainers-2.4.0-py2.py3-none-any.whl", hash = "sha256:a163dcaede0f1c021485e957a39245190e74249897e2ae4b2aa38595db237ee0"}, + {file = "sortedcontainers-2.4.0.tar.gz", hash = "sha256:25caa5a06cc30b6b83d11423433f65d1f9d76c4c6a0c90e3379eaa43b9bfdb88"}, +] +soupsieve = [ + {file = "soupsieve-2.3.2.post1-py3-none-any.whl", hash = "sha256:3b2503d3c7084a42b1ebd08116e5f81aadfaea95863628c80a3b774a11b7c759"}, + {file = "soupsieve-2.3.2.post1.tar.gz", hash = "sha256:fc53893b3da2c33de295667a0e19f078c14bf86544af307354de5fcf12a3f30d"}, +] +sqlalchemy = [ + {file = "SQLAlchemy-1.4.36-cp27-cp27m-macosx_10_14_x86_64.whl", hash = "sha256:81e53bd383c2c33de9d578bfcc243f559bd3801a0e57f2bcc9a943c790662e0c"}, + {file = "SQLAlchemy-1.4.36-cp27-cp27m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:6e1fe00ee85c768807f2a139b83469c1e52a9ffd58a6eb51aa7aeb524325ab18"}, + {file = "SQLAlchemy-1.4.36-cp27-cp27m-win32.whl", hash = "sha256:d57ac32f8dc731fddeb6f5d1358b4ca5456e72594e664769f0a9163f13df2a31"}, + {file = "SQLAlchemy-1.4.36-cp27-cp27m-win_amd64.whl", hash = "sha256:fca8322e04b2dde722fcb0558682740eebd3bd239bea7a0d0febbc190e99dc15"}, + {file = "SQLAlchemy-1.4.36-cp27-cp27mu-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:53d2d9ee93970c969bc4e3c78b1277d7129554642f6ffea039c282c7dc4577bc"}, + {file = "SQLAlchemy-1.4.36-cp310-cp310-macosx_10_15_x86_64.whl", hash = "sha256:f0394a3acfb8925db178f7728adb38c027ed7e303665b225906bfa8099dc1ce8"}, + {file = "SQLAlchemy-1.4.36-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:09c606d8238feae2f360b8742ffbe67741937eb0a05b57f536948d198a3def96"}, + {file = "SQLAlchemy-1.4.36-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:8d07fe2de0325d06e7e73281e9a9b5e259fbd7cbfbe398a0433cbb0082ad8fa7"}, + {file = "SQLAlchemy-1.4.36-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5041474dcab7973baa91ec1f3112049a9dd4652898d6a95a6a895ff5c58beb6b"}, + {file = "SQLAlchemy-1.4.36-cp310-cp310-win32.whl", hash = "sha256:be094460930087e50fd08297db9d7aadaed8408ad896baf758e9190c335632da"}, + {file = "SQLAlchemy-1.4.36-cp310-cp310-win_amd64.whl", hash = "sha256:64d796e9af522162f7f2bf7a3c5531a0a550764c426782797bbeed809d0646c5"}, + {file = "SQLAlchemy-1.4.36-cp36-cp36m-macosx_10_14_x86_64.whl", hash = "sha256:a0ae3aa2e86a4613f2d4c49eb7da23da536e6ce80b2bfd60bbb2f55fc02b0b32"}, + {file = "SQLAlchemy-1.4.36-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5d50cb71c1dbed70646d521a0975fb0f92b7c3f84c61fa59e07be23a1aaeecfc"}, + {file = "SQLAlchemy-1.4.36-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:16abf35af37a3d5af92725fc9ec507dd9e9183d261c2069b6606d60981ed1c6e"}, + {file = "SQLAlchemy-1.4.36-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5864a83bd345871ad9699ce466388f836db7572003d67d9392a71998092210e3"}, + {file = "SQLAlchemy-1.4.36-cp36-cp36m-win32.whl", hash = "sha256:fbf8c09fe9728168f8cc1b40c239eab10baf9c422c18be7f53213d70434dea43"}, + {file = "SQLAlchemy-1.4.36-cp36-cp36m-win_amd64.whl", hash = "sha256:6e859fa96605027bd50d8e966db1c4e1b03e7b3267abbc4b89ae658c99393c58"}, + {file = "SQLAlchemy-1.4.36-cp37-cp37m-macosx_10_14_x86_64.whl", hash = "sha256:166a3887ec355f7d2f12738f7fa25dc8ac541867147a255f790f2f41f614cb44"}, + {file = "SQLAlchemy-1.4.36-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2e885548da361aa3f8a9433db4cfb335b2107e533bf314359ae3952821d84b3e"}, + {file = "SQLAlchemy-1.4.36-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:5c90ef955d429966d84326d772eb34333178737ebb669845f1d529eb00c75e72"}, + {file = "SQLAlchemy-1.4.36-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7a052bd9f53004f8993c624c452dfad8ec600f572dd0ed0445fbe64b22f5570e"}, + {file = "SQLAlchemy-1.4.36-cp37-cp37m-win32.whl", hash = "sha256:dce3468bf1fc12374a1a732c9efd146ce034f91bb0482b602a9311cb6166a920"}, + {file = "SQLAlchemy-1.4.36-cp37-cp37m-win_amd64.whl", hash = "sha256:6cb4c4f57a20710cea277edf720d249d514e587f796b75785ad2c25e1c0fed26"}, + {file = "SQLAlchemy-1.4.36-cp38-cp38-macosx_10_14_x86_64.whl", hash = "sha256:e74ce103b81c375c3853b436297952ef8d7863d801dcffb6728d01544e5191b5"}, + {file = "SQLAlchemy-1.4.36-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8b20c4178ead9bc398be479428568ff31b6c296eb22e75776273781a6551973f"}, + {file = "SQLAlchemy-1.4.36-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:af2587ae11400157753115612d6c6ad255143efba791406ad8a0cbcccf2edcb3"}, + {file = "SQLAlchemy-1.4.36-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:83cf3077712be9f65c9aaa0b5bc47bc1a44789fd45053e2e3ecd59ff17c63fe9"}, + {file = "SQLAlchemy-1.4.36-cp38-cp38-win32.whl", hash = "sha256:ce20f5da141f8af26c123ebaa1b7771835ca6c161225ce728962a79054f528c3"}, + {file = "SQLAlchemy-1.4.36-cp38-cp38-win_amd64.whl", hash = "sha256:316c7e5304dda3e3ad711569ac5d02698bbc71299b168ac56a7076b86259f7ea"}, + {file = "SQLAlchemy-1.4.36-cp39-cp39-macosx_10_15_x86_64.whl", hash = "sha256:f522214f6749bc073262529c056f7dfd660f3b5ec4180c5354d985eb7219801e"}, + {file = "SQLAlchemy-1.4.36-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2ecac4db8c1aa4a269f5829df7e706639a24b780d2ac46b3e485cbbd27ec0028"}, + {file = "SQLAlchemy-1.4.36-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:b3db741beaa983d4cbf9087558620e7787106319f7e63a066990a70657dd6b35"}, + {file = "SQLAlchemy-1.4.36-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2ec89bf98cc6a0f5d1e28e3ad28e9be6f3b4bdbd521a4053c7ae8d5e1289a8a1"}, + {file = "SQLAlchemy-1.4.36-cp39-cp39-win32.whl", hash = "sha256:e12532c4d3f614678623da5d852f038ace1f01869b89f003ed6fe8c793f0c6a3"}, + {file = "SQLAlchemy-1.4.36-cp39-cp39-win_amd64.whl", hash = "sha256:cb441ca461bf97d00877b607f132772644b623518b39ced54da433215adce691"}, + {file = "SQLAlchemy-1.4.36.tar.gz", hash = "sha256:64678ac321d64a45901ef2e24725ec5e783f1f4a588305e196431447e7ace243"}, +] +sqlalchemy-migrate = [ + {file = "sqlalchemy-migrate-0.13.0.tar.gz", hash = "sha256:0bc02e292a040ade5e35a01d3ea744119e1309cdddb704fdb99bac13236614f8"}, + {file = "sqlalchemy_migrate-0.13.0-py2.py3-none-any.whl", hash = "sha256:e5d2348db19a5062132d93e3b4d9e7644af552fffbec4c78cc5358f848d2f6c1"}, +] +sqlparse = [ + {file = "sqlparse-0.4.2-py3-none-any.whl", hash = "sha256:48719e356bb8b42991bdbb1e8b83223757b93789c00910a616a071910ca4a64d"}, + {file = "sqlparse-0.4.2.tar.gz", hash = "sha256:0c00730c74263a94e5a9919ade150dfc3b19c574389985446148402998287dae"}, +] +statsd = [ + {file = "statsd-3.3.0-py2.py3-none-any.whl", hash = "sha256:c610fb80347fca0ef62666d241bce64184bd7cc1efe582f9690e045c25535eaa"}, + {file = "statsd-3.3.0.tar.gz", hash = "sha256:e3e6db4c246f7c59003e51c9720a51a7f39a396541cb9b147ff4b14d15b5dd1f"}, +] stevedore = [ {file = "stevedore-3.5.0-py3-none-any.whl", hash = "sha256:a547de73308fd7e90075bb4d301405bebf705292fa90a90fc3bcf9133f58616c"}, {file = "stevedore-3.5.0.tar.gz", hash = "sha256:f40253887d8712eaa2bb0ea3830374416736dc8ec0e22f5a65092c1174c44335"}, ] +tempita = [ + {file = "Tempita-0.5.2-py3-none-any.whl", hash = "sha256:f4554840cb59c6b4a5df4fad27eea4e3cb47ca7089bfeefb5890ff1bb8af2117"}, + {file = "Tempita-0.5.2.tar.gz", hash = "sha256:cacecf0baa674d356641f1d406b8bff1d756d739c46b869a54de515d08e6fc9c"}, +] +testresources = [ + {file = "testresources-2.0.1-py2.py3-none-any.whl", hash = "sha256:67a361c3a2412231963b91ab04192209aa91a1aa052f0ab87245dbea889d1282"}, + {file = "testresources-2.0.1.tar.gz", hash = "sha256:ee9d1982154a1e212d4e4bac6b610800bfb558e4fb853572a827bc14a96e4417"}, +] +testscenarios = [ + {file = "testscenarios-0.5.0-py2.py3-none-any.whl", hash = "sha256:480263fa5d6e618125bdf092aab129a3aeed5996b1e668428f12cc56d6d01d28"}, + {file = "testscenarios-0.5.0.tar.gz", hash = "sha256:c257cb6b90ea7e6f8fef3158121d430543412c9a87df30b5dde6ec8b9b57a2b6"}, +] +testtools = [ + {file = "testtools-2.5.0-py3-none-any.whl", hash = "sha256:798525999f053e4df4e352c0c198baeb9f5079f34bad5bd57a44e97a54fa0330"}, + {file = "testtools-2.5.0.tar.gz", hash = "sha256:57c13433d94f9ffde3be6534177d10fb0c1507cc499319128958ca91a65cb23f"}, +] tokenize-rt = [ {file = "tokenize_rt-4.2.1-py2.py3-none-any.whl", hash = "sha256:08a27fa032a81cf45e8858d0ac706004fcd523e8463415ddf1442be38e204ea8"}, {file = "tokenize_rt-4.2.1.tar.gz", hash = "sha256:0d4f69026fed520f8a1e0103aa36c406ef4661417f20ca643f913e33531b3b94"}, @@ -1175,6 +2609,26 @@ urllib3 = [ {file = "urllib3-1.26.9-py2.py3-none-any.whl", hash = "sha256:44ece4d53fb1706f667c9bd1c648f5469a2ec925fcf3a776667042d645472c14"}, {file = "urllib3-1.26.9.tar.gz", hash = "sha256:aabaf16477806a5e1dd19aa41f8c2b7950dd3c746362d7e3223dbe6de6ac448e"}, ] +vine = [ + {file = "vine-5.0.0-py2.py3-none-any.whl", hash = "sha256:4c9dceab6f76ed92105027c49c823800dd33cacce13bdedc5b914e3514b7fb30"}, + {file = "vine-5.0.0.tar.gz", hash = "sha256:7d3b1624a953da82ef63462013bbd271d3eb75751489f9807598e8f340bd637e"}, +] +waitress = [ + {file = "waitress-2.1.1-py3-none-any.whl", hash = "sha256:c549f5b2b4afd44d9d97d7cec79f3ef581e25d832827f415dc175327af674aa8"}, + {file = "waitress-2.1.1.tar.gz", hash = "sha256:e2e60576cf14a1539da79f7b7ee1e79a71e64f366a0b47db54a15e971f57bb16"}, +] +wcwidth = [ + {file = "wcwidth-0.2.5-py2.py3-none-any.whl", hash = "sha256:beb4802a9cebb9144e99086eff703a642a13d6a0052920003a230f3294bbe784"}, + {file = "wcwidth-0.2.5.tar.gz", hash = "sha256:c4d647b99872929fdb7bdcaa4fbe7f01413ed3d98077df798530e5b04f116c83"}, +] +webob = [ + {file = "WebOb-1.8.7-py2.py3-none-any.whl", hash = "sha256:73aae30359291c14fa3b956f8b5ca31960e420c28c1bec002547fb04928cf89b"}, + {file = "WebOb-1.8.7.tar.gz", hash = "sha256:b64ef5141be559cfade448f044fa45c2260351edcb6a8ef6b7e00c7dcef0c323"}, +] +webtest = [ + {file = "WebTest-3.0.0-py3-none-any.whl", hash = "sha256:2a001a9efa40d2a7e5d9cd8d1527c75f41814eb6afce2c3d207402547b1e5ead"}, + {file = "WebTest-3.0.0.tar.gz", hash = "sha256:54bd969725838d9861a9fa27f8d971f79d275d94ae255f5c501f53bb6d9929eb"}, +] werkzeug = [ {file = "Werkzeug-2.0.1-py3-none-any.whl", hash = "sha256:6c1ec500dcdba0baa27600f6a22f6333d8b662d22027ff9f6202e3367413caa8"}, {file = "Werkzeug-2.0.1.tar.gz", hash = "sha256:1de1db30d010ff1af14a009224ec49ab2329ad2cde454c8a708130642d579c42"}, @@ -1249,3 +2703,10 @@ wrapt = [ {file = "wrapt-1.14.1-cp39-cp39-win_amd64.whl", hash = "sha256:dee60e1de1898bde3b238f18340eec6148986da0455d8ba7848d50470a7a32fb"}, {file = "wrapt-1.14.1.tar.gz", hash = "sha256:380a85cf89e0e69b7cfbe2ea9f765f004ff419f34194018a6827ac0e3edfed4d"}, ] +yappi = [ + {file = "yappi-1.3.3.tar.gz", hash = "sha256:855890cd9a90d833dd2df632d648de8ccd0a4c3131f1edc8abd004db0625b5e8"}, +] +zipp = [ + {file = "zipp-3.8.0-py3-none-any.whl", hash = "sha256:c4f6e5bbf48e74f7a38e7cc5b0480ff42b0ae5178957d564d18932525d5cf099"}, + {file = "zipp-3.8.0.tar.gz", hash = "sha256:56bf8aadb83c24db6c4b577e13de374ccfb67da2078beba1d037c17980bf43ad"}, +] diff --git a/libs/skyline-policy-manager/pyproject.toml b/libs/skyline-policy-manager/pyproject.toml index 2513989..a74514f 100644 --- a/libs/skyline-policy-manager/pyproject.toml +++ b/libs/skyline-policy-manager/pyproject.toml @@ -24,6 +24,8 @@ pytest-xdist = "2.4.0" pytest-cov = "2.12.1" pytest-html = "3.1.1" mimesis = "4.1.3" +"oslo.log" = "4.8.0" +neutron-lib = "2.15.0" skyline-log = {path = "../skyline-log", develop = true} [tool.pytest.ini_options] diff --git a/libs/skyline-policy-manager/skyline_policy_manager/cmd/manage.py b/libs/skyline-policy-manager/skyline_policy_manager/cmd/manage.py index 4a16d08..7c88a46 100644 --- a/libs/skyline-policy-manager/skyline_policy_manager/cmd/manage.py +++ b/libs/skyline-policy-manager/skyline_policy_manager/cmd/manage.py @@ -174,7 +174,9 @@ list_rules = (""" " description={description},\n" " )," ) + rule_mappings = {} for r in rules: + rule_mappings[f"rule:{r.name}"] = r.check_str print( rule_format_str.format( name=json.dumps(r.name), @@ -193,10 +195,26 @@ list_rules = (""" " )," ) for r in api_rules: + name = constants.PREFIX_MAPPINGS.get(entry_point, "") + r.name + check_str = r.check_str + tries = 0 + while "rule:" in check_str: + tries += 1 + for k, v in rule_mappings.items(): + if k + " " in check_str or check_str.endswith(k): + check_str = check_str.replace(k, f"({v})") + elif "(" + k + ")" in check_str: + check_str = check_str.replace(k, v) + if tries > 10: + raise Exception(f"Can't replace rule name in {r.name}") + + # Fix for Trove, replace 'project_id:%(tenant)s' with 'project_id:%(project_id)s' + if entry_point == "trove": + check_str = check_str.replace("project_id:%(tenant)s", "project_id:%(project_id)s") print( apirule_format_str.format( - name=json.dumps(constants.PREFIX_MAPPINGS.get(entry_point, "") + r.name), - check_str=json.dumps(r.check_str), + name=json.dumps(name), + check_str=json.dumps(check_str), description=json.dumps(r.description), scope_types=json.dumps(r.scope_types), operations=json.dumps(r.operations), diff --git a/libs/skyline-policy-manager/skyline_policy_manager/policies/manila.py b/libs/skyline-policy-manager/skyline_policy_manager/policies/manila.py index 2585da4..4e4968f 100644 --- a/libs/skyline-policy-manager/skyline_policy_manager/policies/manila.py +++ b/libs/skyline-policy-manager/skyline_policy_manager/policies/manila.py @@ -53,7 +53,9 @@ list_rules = ( ), base.APIRule( name="manila:availability_zone:index", - check_str=("(rule:system-reader) or (rule:project-reader)"), + check_str=( + "(role:reader and system_scope:all) or (role:reader and project_id:%(project_id)s)" + ), description="Get all storage availability zones.", scope_types=["system", "project"], operations=[ @@ -63,7 +65,7 @@ list_rules = ( ), base.APIRule( name="manila:scheduler_stats:pools:index", - check_str=("rule:system-reader"), + check_str=("(role:reader and system_scope:all)"), description="Get information regarding backends (and storage pools) known to the scheduler.", # noqa scope_types=["system"], operations=[ @@ -73,7 +75,7 @@ list_rules = ( ), base.APIRule( name="manila:scheduler_stats:pools:detail", - check_str=("rule:system-reader"), + check_str=("(role:reader and system_scope:all)"), description="Get detailed information regarding backends (and storage pools) known to the scheduler.", # noqa scope_types=["system"], operations=[ @@ -83,28 +85,34 @@ list_rules = ( ), base.APIRule( name="manila:share:create", - check_str=("(rule:system-admin) or (rule:project-member)"), + check_str=( + "(role:admin and system_scope:all) or (role:member and project_id:%(project_id)s)" + ), description="Create share.", scope_types=["system", "project"], operations=[{"method": "POST", "path": "/shares"}], ), base.APIRule( name="manila:share:create_public_share", - check_str=("rule:system-admin"), + check_str=("(role:admin and system_scope:all)"), description="Create shares visible across all projects in the cloud.", scope_types=["system"], operations=[{"method": "POST", "path": "/shares"}], ), base.APIRule( name="manila:share:get", - check_str=("(rule:system-reader) or (rule:project-reader)"), + check_str=( + "(role:reader and system_scope:all) or (role:reader and project_id:%(project_id)s)" + ), description="Get share.", scope_types=["system", "project"], operations=[{"method": "GET", "path": "/shares/{share_id}"}], ), base.APIRule( name="manila:share:get_all", - check_str=("(rule:system-reader) or (rule:project-reader)"), + check_str=( + "(role:reader and system_scope:all) or (role:reader and project_id:%(project_id)s)" + ), description="List shares.", scope_types=["system", "project"], operations=[ @@ -114,63 +122,73 @@ list_rules = ( ), base.APIRule( name="manila:share:update", - check_str=("(rule:system-admin) or (rule:project-member)"), + check_str=( + "(role:admin and system_scope:all) or (role:member and project_id:%(project_id)s)" + ), description="Update share.", scope_types=["system", "project"], operations=[{"method": "PUT", "path": "/shares"}], ), base.APIRule( name="manila:share:set_public_share", - check_str=("rule:system-admin"), + check_str=("(role:admin and system_scope:all)"), description="Update shares to be visible across all projects in the cloud.", scope_types=["system"], operations=[{"method": "PUT", "path": "/shares"}], ), base.APIRule( name="manila:share:delete", - check_str=("(rule:system-admin) or (rule:project-member)"), + check_str=( + "(role:admin and system_scope:all) or (role:member and project_id:%(project_id)s)" + ), description="Delete share.", scope_types=["system", "project"], operations=[{"method": "DELETE", "path": "/shares/{share_id}"}], ), base.APIRule( name="manila:share:soft_delete", - check_str=("(rule:system-admin) or (rule:project-member)"), + check_str=( + "(role:admin and system_scope:all) or (role:member and project_id:%(project_id)s)" + ), description="Soft Delete a share.", scope_types=["system", "project"], operations=[{"method": "POST", "path": "/shares/{share_id}/action"}], ), base.APIRule( name="manila:share:restore", - check_str=("(rule:system-admin) or (rule:project-member)"), + check_str=( + "(role:admin and system_scope:all) or (role:member and project_id:%(project_id)s)" + ), description="Restore a share.", scope_types=["system", "project"], operations=[{"method": "POST", "path": "/shares/{share_id}/action"}], ), base.APIRule( name="manila:share:force_delete", - check_str=("(rule:system-admin) or (rule:project-admin)"), + check_str=( + "(role:admin and system_scope:all) or (role:admin and project_id:%(project_id)s)" + ), description="Force Delete a share.", scope_types=["system", "project"], operations=[{"method": "DELETE", "path": "/shares/{share_id}"}], ), base.APIRule( name="manila:share:manage", - check_str=("rule:system-admin"), + check_str=("(role:admin and system_scope:all)"), description="Manage share.", scope_types=["system"], operations=[{"method": "POST", "path": "/shares/manage"}], ), base.APIRule( name="manila:share:unmanage", - check_str=("rule:system-admin"), + check_str=("(role:admin and system_scope:all)"), description="Unmanage share.", scope_types=["system"], operations=[{"method": "POST", "path": "/shares/unmanage"}], ), base.APIRule( name="manila:share:list_by_host", - check_str=("rule:system-reader"), + check_str=("(role:reader and system_scope:all)"), description="List share by host.", scope_types=["system"], operations=[ @@ -180,7 +198,7 @@ list_rules = ( ), base.APIRule( name="manila:share:list_by_share_server_id", - check_str=("rule:system-reader"), + check_str=("(role:reader and system_scope:all)"), description="List share by server id.", scope_types=["system"], operations=[ @@ -190,105 +208,127 @@ list_rules = ( ), base.APIRule( name="manila:share:access_get", - check_str=("(rule:system-reader) or (rule:project-reader)"), + check_str=( + "(role:reader and system_scope:all) or (role:reader and project_id:%(project_id)s)" + ), description="Get share access rule, it under deny access operation.", scope_types=["system", "project"], operations=[{"method": "POST", "path": "/shares/{share_id}/action"}], ), base.APIRule( name="manila:share:access_get_all", - check_str=("(rule:system-reader) or (rule:project-reader)"), + check_str=( + "(role:reader and system_scope:all) or (role:reader and project_id:%(project_id)s)" + ), description="List share access rules.", scope_types=["system", "project"], operations=[{"method": "GET", "path": "/shares/{share_id}/action"}], ), base.APIRule( name="manila:share:extend", - check_str=("(rule:system-admin) or (rule:project-member)"), + check_str=( + "(role:admin and system_scope:all) or (role:member and project_id:%(project_id)s)" + ), description="Extend share.", scope_types=["system", "project"], operations=[{"method": "POST", "path": "/shares/{share_id}/action"}], ), base.APIRule( name="manila:share:force_extend", - check_str=("(rule:system-admin) or (rule:project-admin)"), + check_str=( + "(role:admin and system_scope:all) or (role:admin and project_id:%(project_id)s)" + ), description="Force extend share.", scope_types=["system", "project"], operations=[{"method": "POST", "path": "/shares/{share_id}/action"}], ), base.APIRule( name="manila:share:shrink", - check_str=("(rule:system-admin) or (rule:project-member)"), + check_str=( + "(role:admin and system_scope:all) or (role:member and project_id:%(project_id)s)" + ), description="Shrink share.", scope_types=["system", "project"], operations=[{"method": "POST", "path": "/shares/{share_id}/action"}], ), base.APIRule( name="manila:share:migration_start", - check_str=("rule:system-admin"), + check_str=("(role:admin and system_scope:all)"), description="Migrate a share to the specified host.", scope_types=["system"], operations=[{"method": "POST", "path": "/shares/{share_id}/action"}], ), base.APIRule( name="manila:share:migration_complete", - check_str=("rule:system-admin"), + check_str=("(role:admin and system_scope:all)"), description="Invokes 2nd phase of share migration.", scope_types=["system"], operations=[{"method": "POST", "path": "/shares/{share_id}/action"}], ), base.APIRule( name="manila:share:migration_cancel", - check_str=("rule:system-admin"), + check_str=("(role:admin and system_scope:all)"), description="Attempts to cancel share migration.", scope_types=["system"], operations=[{"method": "POST", "path": "/shares/{share_id}/action"}], ), base.APIRule( name="manila:share:migration_get_progress", - check_str=("rule:system-reader"), + check_str=("(role:reader and system_scope:all)"), description="Retrieve share migration progress for a given share.", scope_types=["system"], operations=[{"method": "POST", "path": "/shares/{share_id}/action"}], ), base.APIRule( name="manila:share:reset_task_state", - check_str=("(rule:system-admin) or (rule:project-admin)"), + check_str=( + "(role:admin and system_scope:all) or (role:admin and project_id:%(project_id)s)" + ), description="Reset task state.", scope_types=["system", "project"], operations=[{"method": "POST", "path": "/shares/{share_id}/action"}], ), base.APIRule( name="manila:share:reset_status", - check_str=("(rule:system-admin) or (rule:project-admin)"), + check_str=( + "(role:admin and system_scope:all) or (role:admin and project_id:%(project_id)s)" + ), description="Reset status.", scope_types=["system", "project"], operations=[{"method": "POST", "path": "/shares/{share_id}/action"}], ), base.APIRule( name="manila:share:revert_to_snapshot", - check_str=("(rule:system-admin) or (rule:project-member)"), + check_str=( + "(role:admin and system_scope:all) or (role:member and project_id:%(project_id)s)" + ), description="Revert a share to a snapshot.", scope_types=["system", "project"], operations=[{"method": "POST", "path": "/shares/{share_id}/action"}], ), base.APIRule( name="manila:share:allow_access", - check_str=("(rule:system-admin) or (rule:project-member)"), + check_str=( + "(role:admin and system_scope:all) or (role:member and project_id:%(project_id)s)" + ), description="Add share access rule.", scope_types=["system", "project"], operations=[{"method": "POST", "path": "/shares/{share_id}/action"}], ), base.APIRule( name="manila:share:deny_access", - check_str=("(rule:system-admin) or (rule:project-member)"), + check_str=( + "(role:admin and system_scope:all) or (role:member and project_id:%(project_id)s)" + ), description="Remove share access rule.", scope_types=["system", "project"], operations=[{"method": "POST", "path": "/shares/{share_id}/action"}], ), base.APIRule( name="manila:share:update_share_metadata", - check_str=("(rule:system-admin) or (rule:project-member)"), + check_str=( + "(role:admin and system_scope:all) or (role:member and project_id:%(project_id)s)" + ), description="Update share metadata.", scope_types=["system", "project"], operations=[ @@ -299,14 +339,18 @@ list_rules = ( ), base.APIRule( name="manila:share:delete_share_metadata", - check_str=("(rule:system-admin) or (rule:project-member)"), + check_str=( + "(role:admin and system_scope:all) or (role:member and project_id:%(project_id)s)" + ), description="Delete share metadata.", scope_types=["system", "project"], operations=[{"method": "DELETE", "path": "/shares/{share_id}/metadata/{key}"}], ), base.APIRule( name="manila:share:get_share_metadata", - check_str=("(rule:system-reader) or (rule:project-reader)"), + check_str=( + "(role:reader and system_scope:all) or (role:reader and project_id:%(project_id)s)" + ), description="Get share metadata.", scope_types=["system", "project"], operations=[ @@ -316,35 +360,43 @@ list_rules = ( ), base.APIRule( name="manila:share:create_snapshot", - check_str=("(rule:system-admin) or (rule:project-member)"), + check_str=( + "(role:admin and system_scope:all) or (role:member and project_id:%(project_id)s)" + ), description="Create share snapshot.", scope_types=["system", "project"], operations=[{"method": "POST", "path": "/snapshots"}], ), base.APIRule( name="manila:share:delete_snapshot", - check_str=("(rule:system-admin) or (rule:project-member)"), + check_str=( + "(role:admin and system_scope:all) or (role:member and project_id:%(project_id)s)" + ), description="Delete share snapshot.", scope_types=["system", "project"], operations=[{"method": "DELETE", "path": "/snapshots/{snapshot_id}"}], ), base.APIRule( name="manila:share:snapshot_update", - check_str=("(rule:system-admin) or (rule:project-member)"), + check_str=( + "(role:admin and system_scope:all) or (role:member and project_id:%(project_id)s)" + ), description="Update share snapshot.", scope_types=["system", "project"], operations=[{"method": "PUT", "path": "/snapshots/{snapshot_id}/action"}], ), base.APIRule( name="manila:share:update_admin_only_metadata", - check_str=("(rule:system-admin) or (rule:project-admin)"), + check_str=( + "(role:admin and system_scope:all) or (role:admin and project_id:%(project_id)s)" + ), description='Update metadata items that are considered "admin only" by the service.', scope_types=["system", "project"], operations=[{"method": "PUT", "path": "/shares/{share_id}/metadata"}], ), base.APIRule( name="manila:share_instance_export_location:index", - check_str=("rule:system-reader"), + check_str=("(role:reader and system_scope:all)"), description="Return data about the requested export location.", scope_types=["system"], operations=[ @@ -353,7 +405,7 @@ list_rules = ( ), base.APIRule( name="manila:share_instance_export_location:show", - check_str=("rule:system-reader"), + check_str=("(role:reader and system_scope:all)"), description="Return data about the requested export location.", scope_types=["system"], operations=[ @@ -365,28 +417,32 @@ list_rules = ( ), base.APIRule( name="manila:share_type:create", - check_str=("rule:system-admin"), + check_str=("(role:admin and system_scope:all)"), description="Create share type.", scope_types=["system"], operations=[{"method": "POST", "path": "/types"}], ), base.APIRule( name="manila:share_type:update", - check_str=("rule:system-admin"), + check_str=("(role:admin and system_scope:all)"), description="Update share type.", scope_types=["system"], operations=[{"method": "PUT", "path": "/types/{share_type_id}"}], ), base.APIRule( name="manila:share_type:show", - check_str=("(rule:system-reader) or (rule:project-reader)"), + check_str=( + "(role:reader and system_scope:all) or (role:reader and project_id:%(project_id)s)" + ), description="Get share type.", scope_types=["system", "project"], operations=[{"method": "GET", "path": "/types/{share_type_id}"}], ), base.APIRule( name="manila:share_type:index", - check_str=("(rule:system-reader) or (rule:project-reader)"), + check_str=( + "(role:reader and system_scope:all) or (role:reader and project_id:%(project_id)s)" + ), description="List share types.", scope_types=["system", "project"], operations=[ @@ -396,56 +452,58 @@ list_rules = ( ), base.APIRule( name="manila:share_type:default", - check_str=("(rule:system-reader) or (rule:project-reader)"), + check_str=( + "(role:reader and system_scope:all) or (role:reader and project_id:%(project_id)s)" + ), description="Get default share type.", scope_types=["system", "project"], operations=[{"method": "GET", "path": "/types/default"}], ), base.APIRule( name="manila:share_type:delete", - check_str=("rule:system-admin"), + check_str=("(role:admin and system_scope:all)"), description="Delete share type.", scope_types=["system"], operations=[{"method": "DELETE", "path": "/types/{share_type_id}"}], ), base.APIRule( name="manila:share_type:list_project_access", - check_str=("rule:system-reader"), + check_str=("(role:reader and system_scope:all)"), description="List share type project access.", scope_types=["system"], operations=[{"method": "GET", "path": "/types/{share_type_id}"}], ), base.APIRule( name="manila:share_type:add_project_access", - check_str=("rule:system-admin"), + check_str=("(role:admin and system_scope:all)"), description="Add share type to project.", scope_types=["system"], operations=[{"method": "POST", "path": "/types/{share_type_id}/action"}], ), base.APIRule( name="manila:share_type:remove_project_access", - check_str=("rule:system-admin"), + check_str=("(role:admin and system_scope:all)"), description="Remove share type from project.", scope_types=["system"], operations=[{"method": "POST", "path": "/types/{share_type_id}/action"}], ), base.APIRule( name="manila:share_types_extra_spec:create", - check_str=("rule:system-admin"), + check_str=("(role:admin and system_scope:all)"), description="Create share type extra spec.", scope_types=["system"], operations=[{"method": "POST", "path": "/types/{share_type_id}/extra_specs"}], ), base.APIRule( name="manila:share_types_extra_spec:show", - check_str=("rule:system-reader"), + check_str=("(role:reader and system_scope:all)"), description="Get share type extra specs of a given share type.", scope_types=["system"], operations=[{"method": "GET", "path": "/types/{share_type_id}/extra_specs"}], ), base.APIRule( name="manila:share_types_extra_spec:index", - check_str=("rule:system-reader"), + check_str=("(role:reader and system_scope:all)"), description="Get details of a share type extra spec.", scope_types=["system"], operations=[ @@ -454,28 +512,32 @@ list_rules = ( ), base.APIRule( name="manila:share_types_extra_spec:update", - check_str=("rule:system-admin"), + check_str=("(role:admin and system_scope:all)"), description="Update share type extra spec.", scope_types=["system"], operations=[{"method": "PUT", "path": "/types/{share_type_id}/extra_specs"}], ), base.APIRule( name="manila:share_types_extra_spec:delete", - check_str=("rule:system-admin"), + check_str=("(role:admin and system_scope:all)"), description="Delete share type extra spec.", scope_types=["system"], operations=[{"method": "DELETE", "path": "/types/{share_type_id}/extra_specs/{key}"}], ), base.APIRule( name="manila:share_snapshot:get_snapshot", - check_str=("(rule:system-reader) or (rule:project-reader)"), + check_str=( + "(role:reader and system_scope:all) or (role:reader and project_id:%(project_id)s)" + ), description="Get share snapshot.", scope_types=["system", "project"], operations=[{"method": "GET", "path": "/snapshots/{snapshot_id}"}], ), base.APIRule( name="manila:share_snapshot:get_all_snapshots", - check_str=("(rule:system-reader) or (rule:project-reader)"), + check_str=( + "(role:reader and system_scope:all) or (role:reader and project_id:%(project_id)s)" + ), description="Get all share snapshots.", scope_types=["system", "project"], operations=[ @@ -487,63 +549,77 @@ list_rules = ( ), base.APIRule( name="manila:share_snapshot:force_delete", - check_str=("(rule:system-admin) or (rule:project-admin)"), + check_str=( + "(role:admin and system_scope:all) or (role:admin and project_id:%(project_id)s)" + ), description="Force Delete a share snapshot.", scope_types=["system", "project"], operations=[{"method": "DELETE", "path": "/snapshots/{snapshot_id}"}], ), base.APIRule( name="manila:share_snapshot:manage_snapshot", - check_str=("rule:system-admin"), + check_str=("(role:admin and system_scope:all)"), description="Manage share snapshot.", scope_types=["system"], operations=[{"method": "POST", "path": "/snapshots/manage"}], ), base.APIRule( name="manila:share_snapshot:unmanage_snapshot", - check_str=("rule:system-admin"), + check_str=("(role:admin and system_scope:all)"), description="Unmanage share snapshot.", scope_types=["system"], operations=[{"method": "POST", "path": "/snapshots/{snapshot_id}/action"}], ), base.APIRule( name="manila:share_snapshot:reset_status", - check_str=("(rule:system-admin) or (rule:project-admin)"), + check_str=( + "(role:admin and system_scope:all) or (role:admin and project_id:%(project_id)s)" + ), description="Reset status.", scope_types=["system", "project"], operations=[{"method": "POST", "path": "/snapshots/{snapshot_id}/action"}], ), base.APIRule( name="manila:share_snapshot:access_list", - check_str=("(rule:system-reader) or (rule:project-reader)"), + check_str=( + "(role:reader and system_scope:all) or (role:reader and project_id:%(project_id)s)" + ), description="List access rules of a share snapshot.", scope_types=["system", "project"], operations=[{"method": "GET", "path": "/snapshots/{snapshot_id}/access-list"}], ), base.APIRule( name="manila:share_snapshot:allow_access", - check_str=("(rule:system-admin) or (rule:project-member)"), + check_str=( + "(role:admin and system_scope:all) or (role:member and project_id:%(project_id)s)" + ), description="Allow access to a share snapshot.", scope_types=["system", "project"], operations=[{"method": "POST", "path": "/snapshots/{snapshot_id}/action"}], ), base.APIRule( name="manila:share_snapshot:deny_access", - check_str=("(rule:system-admin) or (rule:project-member)"), + check_str=( + "(role:admin and system_scope:all) or (role:member and project_id:%(project_id)s)" + ), description="Deny access to a share snapshot.", scope_types=["system", "project"], operations=[{"method": "POST", "path": "/snapshots/{snapshot_id}/action"}], ), base.APIRule( name="manila:share_snapshot_export_location:index", - check_str=("(rule:system-reader) or (rule:project-reader)"), + check_str=( + "(role:reader and system_scope:all) or (role:reader and project_id:%(project_id)s)" + ), description="List export locations of a share snapshot.", scope_types=["system", "project"], operations=[{"method": "GET", "path": "/snapshots/{snapshot_id}/export-locations/"}], ), base.APIRule( name="manila:share_snapshot_export_location:show", - check_str=("(rule:system-reader) or (rule:project-reader)"), + check_str=( + "(role:reader and system_scope:all) or (role:reader and project_id:%(project_id)s)" + ), description="Get details of a specified export location of a share snapshot.", scope_types=["system", "project"], operations=[ @@ -555,14 +631,14 @@ list_rules = ( ), base.APIRule( name="manila:share_snapshot_instance:show", - check_str=("rule:system-reader"), + check_str=("(role:reader and system_scope:all)"), description="Get share snapshot instance.", scope_types=["system"], operations=[{"method": "GET", "path": "/snapshot-instances/{snapshot_instance_id}"}], ), base.APIRule( name="manila:share_snapshot_instance:index", - check_str=("rule:system-reader"), + check_str=("(role:reader and system_scope:all)"), description="Get all share snapshot instances.", scope_types=["system"], operations=[ @@ -572,7 +648,7 @@ list_rules = ( ), base.APIRule( name="manila:share_snapshot_instance:detail", - check_str=("rule:system-reader"), + check_str=("(role:reader and system_scope:all)"), description="Get details of share snapshot instances.", scope_types=["system"], operations=[ @@ -582,7 +658,7 @@ list_rules = ( ), base.APIRule( name="manila:share_snapshot_instance:reset_status", - check_str=("rule:system-admin"), + check_str=("(role:admin and system_scope:all)"), description="Reset share snapshot instance's status.", scope_types=["system"], operations=[ @@ -591,7 +667,7 @@ list_rules = ( ), base.APIRule( name="manila:share_snapshot_instance_export_location:index", - check_str=("rule:system-reader"), + check_str=("(role:reader and system_scope:all)"), description="List export locations of a share snapshot instance.", scope_types=["system"], operations=[ @@ -603,7 +679,7 @@ list_rules = ( ), base.APIRule( name="manila:share_snapshot_instance_export_location:show", - check_str=("rule:system-reader"), + check_str=("(role:reader and system_scope:all)"), description="Show details of a specified export location of a share snapshot instance.", scope_types=["system"], operations=[ @@ -615,7 +691,7 @@ list_rules = ( ), base.APIRule( name="manila:share_server:index", - check_str=("rule:system-reader"), + check_str=("(role:reader and system_scope:all)"), description="Get share servers.", scope_types=["system"], operations=[ @@ -625,91 +701,91 @@ list_rules = ( ), base.APIRule( name="manila:share_server:show", - check_str=("rule:system-reader"), + check_str=("(role:reader and system_scope:all)"), description="Show share server.", scope_types=["system"], operations=[{"method": "GET", "path": "/share-servers/{server_id}"}], ), base.APIRule( name="manila:share_server:details", - check_str=("rule:system-reader"), + check_str=("(role:reader and system_scope:all)"), description="Get share server details.", scope_types=["system"], operations=[{"method": "GET", "path": "/share-servers/{server_id}/details"}], ), base.APIRule( name="manila:share_server:delete", - check_str=("rule:system-admin"), + check_str=("(role:admin and system_scope:all)"), description="Delete share server.", scope_types=["system"], operations=[{"method": "DELETE", "path": "/share-servers/{server_id}"}], ), base.APIRule( name="manila:share_server:manage_share_server", - check_str=("rule:system-admin"), + check_str=("(role:admin and system_scope:all)"), description="Manage share server.", scope_types=["system"], operations=[{"method": "POST", "path": "/share-servers/manage"}], ), base.APIRule( name="manila:share_server:unmanage_share_server", - check_str=("rule:system-admin"), + check_str=("(role:admin and system_scope:all)"), description="Unmanage share server.", scope_types=["system"], operations=[{"method": "POST", "path": "/share-servers/{share_server_id}/action"}], ), base.APIRule( name="manila:share_server:reset_status", - check_str=("rule:system-admin"), + check_str=("(role:admin and system_scope:all)"), description="Reset the status of a share server.", scope_types=["system"], operations=[{"method": "POST", "path": "/share-servers/{share_server_id}/action"}], ), base.APIRule( name="manila:share_server:share_server_migration_start", - check_str=("rule:system-admin"), + check_str=("(role:admin and system_scope:all)"), description="Migrates a share server to the specified host.", scope_types=["system"], operations=[{"method": "POST", "path": "/share-servers/{share_server_id}/action"}], ), base.APIRule( name="manila:share_server:share_server_migration_check", - check_str=("rule:system-reader"), + check_str=("(role:reader and system_scope:all)"), description="Check if can migrates a share server to the specified host.", scope_types=["system"], operations=[{"method": "POST", "path": "/share-servers/{share_server_id}/action"}], ), base.APIRule( name="manila:share_server:share_server_migration_complete", - check_str=("rule:system-admin"), + check_str=("(role:admin and system_scope:all)"), description="Invokes the 2nd phase of share server migration.", scope_types=["system"], operations=[{"method": "POST", "path": "/share-servers/{share_server_id}/action"}], ), base.APIRule( name="manila:share_server:share_server_migration_cancel", - check_str=("rule:system-admin"), + check_str=("(role:admin and system_scope:all)"), description="Attempts to cancel share server migration.", scope_types=["system"], operations=[{"method": "POST", "path": "/share-servers/{share_server_id}/action"}], ), base.APIRule( name="manila:share_server:share_server_migration_get_progress", - check_str=("rule:system-reader"), + check_str=("(role:reader and system_scope:all)"), description="Retrieves the share server migration progress for a given share server.", scope_types=["system"], operations=[{"method": "POST", "path": "/share-servers/{share_server_id}/action"}], ), base.APIRule( name="manila:share_server:share_server_reset_task_state", - check_str=("rule:system-admin"), + check_str=("(role:admin and system_scope:all)"), description="Resets task state.", scope_types=["system"], operations=[{"method": "POST", "path": "/share-servers/{share_server_id}/action"}], ), base.APIRule( name="manila:service:index", - check_str=("rule:system-reader"), + check_str=("(role:reader and system_scope:all)"), description="Return a list of all running services.", scope_types=["system"], operations=[ @@ -721,7 +797,7 @@ list_rules = ( ), base.APIRule( name="manila:service:update", - check_str=("rule:system-admin"), + check_str=("(role:admin and system_scope:all)"), description="Enable/Disable scheduling for a service.", scope_types=["system"], operations=[ @@ -733,7 +809,7 @@ list_rules = ( ), base.APIRule( name="manila:quota_set:update", - check_str=("rule:system-admin"), + check_str=("(role:admin and system_scope:all)"), description="Update the quotas for a project/user and/or share type.", scope_types=["system"], operations=[ @@ -746,7 +822,9 @@ list_rules = ( ), base.APIRule( name="manila:quota_set:show", - check_str=("(rule:system-reader) or (rule:project-reader)"), + check_str=( + "(role:reader and system_scope:all) or (role:reader and project_id:%(project_id)s)" + ), description="List the quotas for a tenant/user.", scope_types=["system", "project"], operations=[ @@ -756,7 +834,7 @@ list_rules = ( ), base.APIRule( name="manila:quota_set:delete", - check_str=("rule:system-admin"), + check_str=("(role:admin and system_scope:all)"), description="Delete quota for a tenant/user or tenant/share-type. The quota will revert back to default (Admin only).", # noqa scope_types=["system"], operations=[ @@ -769,7 +847,7 @@ list_rules = ( ), base.APIRule( name="manila:quota_class_set:update", - check_str=("rule:system-admin"), + check_str=("(role:admin and system_scope:all)"), description="Update quota class.", scope_types=["system"], operations=[ @@ -779,7 +857,9 @@ list_rules = ( ), base.APIRule( name="manila:quota_class_set:show", - check_str=("(rule:system-reader) or (rule:project-reader)"), + check_str=( + "(role:reader and system_scope:all) or (role:reader and project_id:%(project_id)s)" + ), description="Get quota class.", scope_types=["system", "project"], operations=[ @@ -789,7 +869,7 @@ list_rules = ( ), base.APIRule( name="manila:share_group_types_spec:create", - check_str=("rule:system-admin"), + check_str=("(role:admin and system_scope:all)"), description="Create share group type specs.", scope_types=["system"], operations=[ @@ -798,7 +878,7 @@ list_rules = ( ), base.APIRule( name="manila:share_group_types_spec:index", - check_str=("rule:system-reader"), + check_str=("(role:reader and system_scope:all)"), description="Get share group type specs.", scope_types=["system"], operations=[ @@ -807,7 +887,7 @@ list_rules = ( ), base.APIRule( name="manila:share_group_types_spec:show", - check_str=("rule:system-reader"), + check_str=("(role:reader and system_scope:all)"), description="Get details of a share group type spec.", scope_types=["system"], operations=[ @@ -819,7 +899,7 @@ list_rules = ( ), base.APIRule( name="manila:share_group_types_spec:update", - check_str=("rule:system-admin"), + check_str=("(role:admin and system_scope:all)"), description="Update a share group type spec.", scope_types=["system"], operations=[ @@ -831,7 +911,7 @@ list_rules = ( ), base.APIRule( name="manila:share_group_types_spec:delete", - check_str=("rule:system-admin"), + check_str=("(role:admin and system_scope:all)"), description="Delete a share group type spec.", scope_types=["system"], operations=[ @@ -843,14 +923,16 @@ list_rules = ( ), base.APIRule( name="manila:share_group_type:create", - check_str=("rule:system-admin"), + check_str=("(role:admin and system_scope:all)"), description="Create a new share group type.", scope_types=["system"], operations=[{"method": "POST", "path": "/share-group-types"}], ), base.APIRule( name="manila:share_group_type:index", - check_str=("(rule:system-reader) or (rule:project-reader)"), + check_str=( + "(role:reader and system_scope:all) or (role:reader and project_id:%(project_id)s)" + ), description="Get the list of share group types.", scope_types=["system", "project"], operations=[ @@ -860,35 +942,39 @@ list_rules = ( ), base.APIRule( name="manila:share_group_type:show", - check_str=("(rule:system-reader) or (rule:project-reader)"), + check_str=( + "(role:reader and system_scope:all) or (role:reader and project_id:%(project_id)s)" + ), description="Get details regarding the specified share group type.", scope_types=["system", "project"], operations=[{"method": "GET", "path": "/share-group-types/{share_group_type_id}"}], ), base.APIRule( name="manila:share_group_type:default", - check_str=("(rule:system-reader) or (rule:project-reader)"), + check_str=( + "(role:reader and system_scope:all) or (role:reader and project_id:%(project_id)s)" + ), description="Get the default share group type.", scope_types=["system", "project"], operations=[{"method": "GET", "path": "/share-group-types/default"}], ), base.APIRule( name="manila:share_group_type:delete", - check_str=("rule:system-admin"), + check_str=("(role:admin and system_scope:all)"), description="Delete an existing group type.", scope_types=["system"], operations=[{"method": "DELETE", "path": "/share-group-types/{share_group_type_id}"}], ), base.APIRule( name="manila:share_group_type:list_project_access", - check_str=("rule:system-reader"), + check_str=("(role:reader and system_scope:all)"), description="Get project access by share group type.", scope_types=["system"], operations=[{"method": "GET", "path": "/share-group-types/{share_group_type_id}/access"}], ), base.APIRule( name="manila:share_group_type:add_project_access", - check_str=("rule:system-admin"), + check_str=("(role:admin and system_scope:all)"), description="Allow project to use the share group type.", scope_types=["system"], operations=[ @@ -897,7 +983,7 @@ list_rules = ( ), base.APIRule( name="manila:share_group_type:remove_project_access", - check_str=("rule:system-admin"), + check_str=("(role:admin and system_scope:all)"), description="Deny project access to use the share group type.", scope_types=["system"], operations=[ @@ -906,14 +992,18 @@ list_rules = ( ), base.APIRule( name="manila:share_group_snapshot:create", - check_str=("(rule:system-admin) or (rule:project-member)"), + check_str=( + "(role:admin and system_scope:all) or (role:member and project_id:%(project_id)s)" + ), description="Create a new share group snapshot.", scope_types=["system", "project"], operations=[{"method": "POST", "path": "/share-group-snapshots"}], ), base.APIRule( name="manila:share_group_snapshot:get", - check_str=("(rule:system-reader) or (rule:project-reader)"), + check_str=( + "(role:reader and system_scope:all) or (role:reader and project_id:%(project_id)s)" + ), description="Get details of a share group snapshot.", scope_types=["system", "project"], operations=[ @@ -922,7 +1012,9 @@ list_rules = ( ), base.APIRule( name="manila:share_group_snapshot:get_all", - check_str=("(rule:system-reader) or (rule:project-reader)"), + check_str=( + "(role:reader and system_scope:all) or (role:reader and project_id:%(project_id)s)" + ), description="Get all share group snapshots.", scope_types=["system", "project"], operations=[ @@ -934,7 +1026,9 @@ list_rules = ( ), base.APIRule( name="manila:share_group_snapshot:update", - check_str=("(rule:system-admin) or (rule:project-member)"), + check_str=( + "(role:admin and system_scope:all) or (role:member and project_id:%(project_id)s)" + ), description="Update a share group snapshot.", scope_types=["system", "project"], operations=[ @@ -943,7 +1037,9 @@ list_rules = ( ), base.APIRule( name="manila:share_group_snapshot:delete", - check_str=("(rule:system-admin) or (rule:project-member)"), + check_str=( + "(role:admin and system_scope:all) or (role:member and project_id:%(project_id)s)" + ), description="Delete a share group snapshot.", scope_types=["system", "project"], operations=[ @@ -952,7 +1048,9 @@ list_rules = ( ), base.APIRule( name="manila:share_group_snapshot:force_delete", - check_str=("(rule:system-admin) or (rule:project-admin)"), + check_str=( + "(role:admin and system_scope:all) or (role:admin and project_id:%(project_id)s)" + ), description="Force delete a share group snapshot.", scope_types=["system", "project"], operations=[ @@ -961,7 +1059,9 @@ list_rules = ( ), base.APIRule( name="manila:share_group_snapshot:reset_status", - check_str=("(rule:system-admin) or (rule:project-admin)"), + check_str=( + "(role:admin and system_scope:all) or (role:admin and project_id:%(project_id)s)" + ), description="Reset a share group snapshot's status.", scope_types=["system", "project"], operations=[ @@ -970,21 +1070,27 @@ list_rules = ( ), base.APIRule( name="manila:share_group:create", - check_str=("(rule:system-admin) or (rule:project-member)"), + check_str=( + "(role:admin and system_scope:all) or (role:member and project_id:%(project_id)s)" + ), description="Create share group.", scope_types=["system", "project"], operations=[{"method": "POST", "path": "/share-groups"}], ), base.APIRule( name="manila:share_group:get", - check_str=("(rule:system-reader) or (rule:project-reader)"), + check_str=( + "(role:reader and system_scope:all) or (role:reader and project_id:%(project_id)s)" + ), description="Get details of a share group.", scope_types=["system", "project"], operations=[{"method": "GET", "path": "/share-groups/{share_group_id}"}], ), base.APIRule( name="manila:share_group:get_all", - check_str=("(rule:system-reader) or (rule:project-reader)"), + check_str=( + "(role:reader and system_scope:all) or (role:reader and project_id:%(project_id)s)" + ), description="Get all share groups.", scope_types=["system", "project"], operations=[ @@ -996,42 +1102,54 @@ list_rules = ( ), base.APIRule( name="manila:share_group:update", - check_str=("(rule:system-admin) or (rule:project-member)"), + check_str=( + "(role:admin and system_scope:all) or (role:member and project_id:%(project_id)s)" + ), description="Update share group.", scope_types=["system", "project"], operations=[{"method": "PUT", "path": "/share-groups/{share_group_id}"}], ), base.APIRule( name="manila:share_group:delete", - check_str=("(rule:system-admin) or (rule:project-member)"), + check_str=( + "(role:admin and system_scope:all) or (role:member and project_id:%(project_id)s)" + ), description="Delete share group.", scope_types=["system", "project"], operations=[{"method": "DELETE", "path": "/share-groups/{share_group_id}"}], ), base.APIRule( name="manila:share_group:force_delete", - check_str=("(rule:system-admin) or (rule:project-admin)"), + check_str=( + "(role:admin and system_scope:all) or (role:admin and project_id:%(project_id)s)" + ), description="Force delete a share group.", scope_types=["system", "project"], operations=[{"method": "POST", "path": "/share-groups/{share_group_id}/action"}], ), base.APIRule( name="manila:share_group:reset_status", - check_str=("(rule:system-admin) or (rule:project-admin)"), + check_str=( + "(role:admin and system_scope:all) or (role:admin and project_id:%(project_id)s)" + ), description="Reset share group's status.", scope_types=["system", "project"], operations=[{"method": "POST", "path": "/share-groups/{share_group_id}/action"}], ), base.APIRule( name="manila:share_replica:create", - check_str=("(rule:system-admin) or (rule:project-member)"), + check_str=( + "(role:admin and system_scope:all) or (role:member and project_id:%(project_id)s)" + ), description="Create share replica.", scope_types=["system", "project"], operations=[{"method": "POST", "path": "/share-replicas"}], ), base.APIRule( name="manila:share_replica:get_all", - check_str=("(rule:system-reader) or (rule:project-reader)"), + check_str=( + "(role:reader and system_scope:all) or (role:reader and project_id:%(project_id)s)" + ), description="Get all share replicas.", scope_types=["system", "project"], operations=[ @@ -1042,56 +1160,72 @@ list_rules = ( ), base.APIRule( name="manila:share_replica:show", - check_str=("(rule:system-reader) or (rule:project-reader)"), + check_str=( + "(role:reader and system_scope:all) or (role:reader and project_id:%(project_id)s)" + ), description="Get details of a share replica.", scope_types=["system", "project"], operations=[{"method": "GET", "path": "/share-replicas/{share_replica_id}"}], ), base.APIRule( name="manila:share_replica:delete", - check_str=("(rule:system-admin) or (rule:project-member)"), + check_str=( + "(role:admin and system_scope:all) or (role:member and project_id:%(project_id)s)" + ), description="Delete a share replica.", scope_types=["system", "project"], operations=[{"method": "DELETE", "path": "/share-replicas/{share_replica_id}"}], ), base.APIRule( name="manila:share_replica:force_delete", - check_str=("(rule:system-admin) or (rule:project-admin)"), + check_str=( + "(role:admin and system_scope:all) or (role:admin and project_id:%(project_id)s)" + ), description="Force delete a share replica.", scope_types=["system", "project"], operations=[{"method": "POST", "path": "/share-replicas/{share_replica_id}/action"}], ), base.APIRule( name="manila:share_replica:promote", - check_str=("(rule:system-admin) or (rule:project-member)"), + check_str=( + "(role:admin and system_scope:all) or (role:member and project_id:%(project_id)s)" + ), description="Promote a non-active share replica to active.", scope_types=["system", "project"], operations=[{"method": "POST", "path": "/share-replicas/{share_replica_id}/action"}], ), base.APIRule( name="manila:share_replica:resync", - check_str=("(rule:system-admin) or (rule:project-admin)"), + check_str=( + "(role:admin and system_scope:all) or (role:admin and project_id:%(project_id)s)" + ), description="Resync a share replica that is out of sync.", scope_types=["system", "project"], operations=[{"method": "POST", "path": "/share-replicas/{share_replica_id}/action"}], ), base.APIRule( name="manila:share_replica:reset_replica_state", - check_str=("(rule:system-admin) or (rule:project-admin)"), + check_str=( + "(role:admin and system_scope:all) or (role:admin and project_id:%(project_id)s)" + ), description="Reset share replica's replica_state attribute.", scope_types=["system", "project"], operations=[{"method": "POST", "path": "/share-replicas/{share_replica_id}/action"}], ), base.APIRule( name="manila:share_replica:reset_status", - check_str=("(rule:system-admin) or (rule:project-admin)"), + check_str=( + "(role:admin and system_scope:all) or (role:admin and project_id:%(project_id)s)" + ), description="Reset share replica's status.", scope_types=["system", "project"], operations=[{"method": "POST", "path": "/share-replicas/{share_replica_id}/action"}], ), base.APIRule( name="manila:share_replica_export_location:index", - check_str=("(rule:system-reader) or (rule:project-reader)"), + check_str=( + "(role:reader and system_scope:all) or (role:reader and project_id:%(project_id)s)" + ), description="Get all export locations of a given share replica.", scope_types=["system", "project"], operations=[ @@ -1100,7 +1234,9 @@ list_rules = ( ), base.APIRule( name="manila:share_replica_export_location:show", - check_str=("(rule:system-reader) or (rule:project-reader)"), + check_str=( + "(role:reader and system_scope:all) or (role:reader and project_id:%(project_id)s)" + ), description="Get details about the requested share replica export location.", scope_types=["system", "project"], operations=[ @@ -1112,21 +1248,27 @@ list_rules = ( ), base.APIRule( name="manila:share_network:create", - check_str=("(rule:system-admin) or (rule:project-member)"), + check_str=( + "(role:admin and system_scope:all) or (role:member and project_id:%(project_id)s)" + ), description="Create share network.", scope_types=["system", "project"], operations=[{"method": "POST", "path": "/share-networks"}], ), base.APIRule( name="manila:share_network:show", - check_str=("(rule:system-reader) or (rule:project-reader)"), + check_str=( + "(role:reader and system_scope:all) or (role:reader and project_id:%(project_id)s)" + ), description="Get details of a share network.", scope_types=["system", "project"], operations=[{"method": "GET", "path": "/share-networks/{share_network_id}"}], ), base.APIRule( name="manila:share_network:index", - check_str=("(rule:system-reader) or (rule:project-reader)"), + check_str=( + "(role:reader and system_scope:all) or (role:reader and project_id:%(project_id)s)" + ), description="Get all share networks.", scope_types=["system", "project"], operations=[ @@ -1136,7 +1278,9 @@ list_rules = ( ), base.APIRule( name="manila:share_network:detail", - check_str=("(rule:system-reader) or (rule:project-reader)"), + check_str=( + "(role:reader and system_scope:all) or (role:reader and project_id:%(project_id)s)" + ), description="Get details of share networks .", scope_types=["system", "project"], operations=[ @@ -1146,63 +1290,79 @@ list_rules = ( ), base.APIRule( name="manila:share_network:update", - check_str=("(rule:system-admin) or (rule:project-member)"), + check_str=( + "(role:admin and system_scope:all) or (role:member and project_id:%(project_id)s)" + ), description="Update a share network.", scope_types=["system", "project"], operations=[{"method": "PUT", "path": "/share-networks/{share_network_id}"}], ), base.APIRule( name="manila:share_network:delete", - check_str=("(rule:system-admin) or (rule:project-member)"), + check_str=( + "(role:admin and system_scope:all) or (role:member and project_id:%(project_id)s)" + ), description="Delete a share network.", scope_types=["system", "project"], operations=[{"method": "DELETE", "path": "/share-networks/{share_network_id}"}], ), base.APIRule( name="manila:share_network:add_security_service", - check_str=("(rule:system-admin) or (rule:project-member)"), + check_str=( + "(role:admin and system_scope:all) or (role:member and project_id:%(project_id)s)" + ), description="Add security service to share network.", scope_types=["system", "project"], operations=[{"method": "POST", "path": "/share-networks/{share_network_id}/action"}], ), base.APIRule( name="manila:share_network:add_security_service_check", - check_str=("(rule:system-admin) or (rule:project-member)"), + check_str=( + "(role:admin and system_scope:all) or (role:member and project_id:%(project_id)s)" + ), description="Check the feasibility of add security service to a share network.", scope_types=["system", "project"], operations=[{"method": "POST", "path": "/share-networks/{share_network_id}/action"}], ), base.APIRule( name="manila:share_network:remove_security_service", - check_str=("(rule:system-admin) or (rule:project-member)"), + check_str=( + "(role:admin and system_scope:all) or (role:member and project_id:%(project_id)s)" + ), description="Remove security service from share network.", scope_types=["system", "project"], operations=[{"method": "POST", "path": "/share-networks/{share_network_id}/action"}], ), base.APIRule( name="manila:share_network:update_security_service", - check_str=("(rule:system-admin) or (rule:project-member)"), + check_str=( + "(role:admin and system_scope:all) or (role:member and project_id:%(project_id)s)" + ), description="Update security service from share network.", scope_types=["system", "project"], operations=[{"method": "POST", "path": "/share-networks/{share_network_id}/action"}], ), base.APIRule( name="manila:share_network:update_security_service_check", - check_str=("(rule:system-admin) or (rule:project-member)"), + check_str=( + "(role:admin and system_scope:all) or (role:member and project_id:%(project_id)s)" + ), description="Check the feasibility of update a security service from share network.", scope_types=["system", "project"], operations=[{"method": "POST", "path": "/share-networks/{share_network_id}/action"}], ), base.APIRule( name="manila:share_network:reset_status", - check_str=("(rule:system-admin) or (rule:project-admin)"), + check_str=( + "(role:admin and system_scope:all) or (role:admin and project_id:%(project_id)s)" + ), description="Reset share network`s status.", scope_types=["system", "project"], operations=[{"method": "POST", "path": "/share-networks/{share_network_id}/action"}], ), base.APIRule( name="manila:share_network:get_all_share_networks", - check_str=("rule:system-reader"), + check_str=("(role:reader and system_scope:all)"), description="Get share networks belonging to all projects.", scope_types=["system"], operations=[ @@ -1212,21 +1372,27 @@ list_rules = ( ), base.APIRule( name="manila:share_network:subnet_create_check", - check_str=("(rule:system-admin) or (rule:project-member)"), + check_str=( + "(role:admin and system_scope:all) or (role:member and project_id:%(project_id)s)" + ), description="Check the feasibility of create a new share network subnet for share network.", # noqa scope_types=["system", "project"], operations=[{"method": "POST", "path": "/share-networks/{share_network_id}/action"}], ), base.APIRule( name="manila:share_network_subnet:create", - check_str=("(rule:system-admin) or (rule:project-member)"), + check_str=( + "(role:admin and system_scope:all) or (role:member and project_id:%(project_id)s)" + ), description="Create a new share network subnet.", scope_types=["system", "project"], operations=[{"method": "POST", "path": "/share-networks/{share_network_id}/subnets"}], ), base.APIRule( name="manila:share_network_subnet:delete", - check_str=("(rule:system-admin) or (rule:project-member)"), + check_str=( + "(role:admin and system_scope:all) or (role:member and project_id:%(project_id)s)" + ), description="Delete a share network subnet.", scope_types=["system", "project"], operations=[ @@ -1238,7 +1404,9 @@ list_rules = ( ), base.APIRule( name="manila:share_network_subnet:show", - check_str=("(rule:system-reader) or (rule:project-reader)"), + check_str=( + "(role:reader and system_scope:all) or (role:reader and project_id:%(project_id)s)" + ), description="Shows a share network subnet.", scope_types=["system", "project"], operations=[ @@ -1250,28 +1418,36 @@ list_rules = ( ), base.APIRule( name="manila:share_network_subnet:index", - check_str=("(rule:system-reader) or (rule:project-reader)"), + check_str=( + "(role:reader and system_scope:all) or (role:reader and project_id:%(project_id)s)" + ), description="Get all share network subnets.", scope_types=["system", "project"], operations=[{"method": "GET", "path": "/share-networks/{share_network_id}/subnets"}], ), base.APIRule( name="manila:security_service:create", - check_str=("(rule:system-admin) or (rule:project-member)"), + check_str=( + "(role:admin and system_scope:all) or (role:member and project_id:%(project_id)s)" + ), description="Create security service.", scope_types=["system", "project"], operations=[{"method": "POST", "path": "/security-services"}], ), base.APIRule( name="manila:security_service:show", - check_str=("(rule:system-reader) or (rule:project-reader)"), + check_str=( + "(role:reader and system_scope:all) or (role:reader and project_id:%(project_id)s)" + ), description="Get details of a security service.", scope_types=["system", "project"], operations=[{"method": "GET", "path": "/security-services/{security_service_id}"}], ), base.APIRule( name="manila:security_service:detail", - check_str=("(rule:system-reader) or (rule:project-reader)"), + check_str=( + "(role:reader and system_scope:all) or (role:reader and project_id:%(project_id)s)" + ), description="Get details of all security services.", scope_types=["system", "project"], operations=[ @@ -1281,7 +1457,9 @@ list_rules = ( ), base.APIRule( name="manila:security_service:index", - check_str=("(rule:system-reader) or (rule:project-reader)"), + check_str=( + "(role:reader and system_scope:all) or (role:reader and project_id:%(project_id)s)" + ), description="Get all security services.", scope_types=["system", "project"], operations=[ @@ -1291,21 +1469,25 @@ list_rules = ( ), base.APIRule( name="manila:security_service:update", - check_str=("(rule:system-admin) or (rule:project-member)"), + check_str=( + "(role:admin and system_scope:all) or (role:member and project_id:%(project_id)s)" + ), description="Update a security service.", scope_types=["system", "project"], operations=[{"method": "PUT", "path": "/security-services/{security_service_id}"}], ), base.APIRule( name="manila:security_service:delete", - check_str=("(rule:system-admin) or (rule:project-member)"), + check_str=( + "(role:admin and system_scope:all) or (role:member and project_id:%(project_id)s)" + ), description="Delete a security service.", scope_types=["system", "project"], operations=[{"method": "DELETE", "path": "/security-services/{security_service_id}"}], ), base.APIRule( name="manila:security_service:get_all_security_services", - check_str=("rule:system-reader"), + check_str=("(role:reader and system_scope:all)"), description="Get security services of all projects.", scope_types=["system"], operations=[ @@ -1315,14 +1497,18 @@ list_rules = ( ), base.APIRule( name="manila:share_export_location:index", - check_str=("(rule:system-reader) or (rule:project-reader)"), + check_str=( + "(role:reader and system_scope:all) or (role:reader and project_id:%(project_id)s)" + ), description="Get all export locations of a given share.", scope_types=["system", "project"], operations=[{"method": "GET", "path": "/shares/{share_id}/export_locations"}], ), base.APIRule( name="manila:share_export_location:show", - check_str=("(rule:system-reader) or (rule:project-reader)"), + check_str=( + "(role:reader and system_scope:all) or (role:reader and project_id:%(project_id)s)" + ), description="Get details about the requested export location.", scope_types=["system", "project"], operations=[ @@ -1331,7 +1517,7 @@ list_rules = ( ), base.APIRule( name="manila:share_instance:index", - check_str=("rule:system-reader"), + check_str=("(role:reader and system_scope:all)"), description="Get all share instances.", scope_types=["system"], operations=[ @@ -1341,35 +1527,39 @@ list_rules = ( ), base.APIRule( name="manila:share_instance:show", - check_str=("rule:system-reader"), + check_str=("(role:reader and system_scope:all)"), description="Get details of a share instance.", scope_types=["system"], operations=[{"method": "GET", "path": "/share_instances/{share_instance_id}"}], ), base.APIRule( name="manila:share_instance:force_delete", - check_str=("rule:system-admin"), + check_str=("(role:admin and system_scope:all)"), description="Force delete a share instance.", scope_types=["system"], operations=[{"method": "POST", "path": "/share_instances/{share_instance_id}/action"}], ), base.APIRule( name="manila:share_instance:reset_status", - check_str=("rule:system-admin"), + check_str=("(role:admin and system_scope:all)"), description="Reset share instance's status.", scope_types=["system"], operations=[{"method": "POST", "path": "/share_instances/{share_instance_id}/action"}], ), base.APIRule( name="manila:message:get", - check_str=("(rule:system-reader) or (rule:project-reader)"), + check_str=( + "(role:reader and system_scope:all) or (role:reader and project_id:%(project_id)s)" + ), description="Get details of a given message.", scope_types=["system", "project"], operations=[{"method": "GET", "path": "/messages/{message_id}"}], ), base.APIRule( name="manila:message:get_all", - check_str=("(rule:system-reader) or (rule:project-reader)"), + check_str=( + "(role:reader and system_scope:all) or (role:reader and project_id:%(project_id)s)" + ), description="Get all messages.", scope_types=["system", "project"], operations=[ @@ -1379,21 +1569,27 @@ list_rules = ( ), base.APIRule( name="manila:message:delete", - check_str=("(rule:system-admin) or (rule:project-member)"), + check_str=( + "(role:admin and system_scope:all) or (role:member and project_id:%(project_id)s)" + ), description="Delete a message.", scope_types=["system", "project"], operations=[{"method": "DELETE", "path": "/messages/{message_id}"}], ), base.APIRule( name="manila:share_access_rule:get", - check_str=("(rule:system-reader) or (rule:project-reader)"), + check_str=( + "(role:reader and system_scope:all) or (role:reader and project_id:%(project_id)s)" + ), description="Get details of a share access rule.", scope_types=["system", "project"], operations=[{"method": "GET", "path": "/share-access-rules/{share_access_id}"}], ), base.APIRule( name="manila:share_access_rule:index", - check_str=("(rule:system-reader) or (rule:project-reader)"), + check_str=( + "(role:reader and system_scope:all) or (role:reader and project_id:%(project_id)s)" + ), description="List access rules of a given share.", scope_types=["system", "project"], operations=[ @@ -1405,14 +1601,18 @@ list_rules = ( ), base.APIRule( name="manila:share_access_metadata:update", - check_str=("(rule:system-admin) or (rule:project-member)"), + check_str=( + "(role:admin and system_scope:all) or (role:member and project_id:%(project_id)s)" + ), description="Set metadata for a share access rule.", scope_types=["system", "project"], operations=[{"method": "PUT", "path": "/share-access-rules/{share_access_id}/metadata"}], ), base.APIRule( name="manila:share_access_metadata:delete", - check_str=("(rule:system-admin) or (rule:project-member)"), + check_str=( + "(role:admin and system_scope:all) or (role:member and project_id:%(project_id)s)" + ), description="Delete metadata for a share access rule.", scope_types=["system", "project"], operations=[ diff --git a/libs/skyline-policy-manager/skyline_policy_manager/policies/trove.py b/libs/skyline-policy-manager/skyline_policy_manager/policies/trove.py index 57c8562..c78928e 100644 --- a/libs/skyline-policy-manager/skyline_policy_manager/policies/trove.py +++ b/libs/skyline-policy-manager/skyline_policy_manager/policies/trove.py @@ -18,49 +18,49 @@ list_rules = ( ), base.APIRule( name="trove:instance:create", - check_str=("rule:admin_or_owner"), + check_str=("((role:admin or is_admin:True) or project_id:%(project_id)s)"), description="Create a database instance.", scope_types=["project"], operations=[{"method": "POST", "path": "/v1.0/{account_id}/instances"}], ), base.APIRule( name="trove:instance:delete", - check_str=("rule:admin_or_owner"), + check_str=("((role:admin or is_admin:True) or project_id:%(project_id)s)"), description="Delete a database instance.", scope_types=["project"], operations=[{"method": "DELETE", "path": "/v1.0/{account_id}/instances/{instance_id}"}], ), base.APIRule( name="trove:instance:force_delete", - check_str=("rule:admin_or_owner"), + check_str=("((role:admin or is_admin:True) or project_id:%(project_id)s)"), description="Forcibly delete a database instance.", scope_types=["project"], operations=[{"method": "DELETE", "path": "/v1.0/{account_id}/instances/{instance_id}"}], ), base.APIRule( name="trove:instance:index", - check_str=("rule:admin_or_owner"), + check_str=("((role:admin or is_admin:True) or project_id:%(project_id)s)"), description="List database instances.", scope_types=["project"], operations=[{"method": "GET", "path": "/v1.0/{account_id}/instances"}], ), base.APIRule( name="trove:instance:detail", - check_str=("rule:admin_or_owner"), + check_str=("((role:admin or is_admin:True) or project_id:%(project_id)s)"), description="List database instances with details.", scope_types=["project"], operations=[{"method": "GET", "path": "/v1.0/{account_id}/instances/detail"}], ), base.APIRule( name="trove:instance:show", - check_str=("rule:admin_or_owner"), + check_str=("((role:admin or is_admin:True) or project_id:%(project_id)s)"), description="Get details of a specific database instance.", scope_types=["project"], operations=[{"method": "GET", "path": "/v1.0/{account_id}/instances/{instance_id}"}], ), base.APIRule( name="trove:instance:update", - check_str=("rule:admin_or_owner"), + check_str=("((role:admin or is_admin:True) or project_id:%(project_id)s)"), description="Update a database instance to attach/detach configuration", scope_types=["project"], operations=[ @@ -70,14 +70,14 @@ list_rules = ( ), base.APIRule( name="trove:instance:edit", - check_str=("rule:admin_or_owner"), + check_str=("((role:admin or is_admin:True) or project_id:%(project_id)s)"), description="Updates the instance to set or unset one or more attributes.", scope_types=["project"], operations=[{"method": "PATCH", "path": "/v1.0/{account_id}/instances/{instance_id}"}], ), base.APIRule( name="trove:instance:restart", - check_str=("rule:admin_or_owner"), + check_str=("((role:admin or is_admin:True) or project_id:%(project_id)s)"), description="Restart a database instance.", scope_types=["project"], operations=[ @@ -89,7 +89,7 @@ list_rules = ( ), base.APIRule( name="trove:instance:resize_volume", - check_str=("rule:admin_or_owner"), + check_str=("((role:admin or is_admin:True) or project_id:%(project_id)s)"), description="Resize a database instance volume.", scope_types=["project"], operations=[ @@ -101,7 +101,7 @@ list_rules = ( ), base.APIRule( name="trove:instance:resize_flavor", - check_str=("rule:admin_or_owner"), + check_str=("((role:admin or is_admin:True) or project_id:%(project_id)s)"), description="Resize a database instance flavor.", scope_types=["project"], operations=[ @@ -113,7 +113,7 @@ list_rules = ( ), base.APIRule( name="trove:instance:reset_status", - check_str=("rule:admin"), + check_str=("(role:admin or is_admin:True)"), description="Reset the status of a database instance to ERROR.", scope_types=["project"], operations=[ @@ -125,7 +125,7 @@ list_rules = ( ), base.APIRule( name="trove:instance:promote_to_replica_source", - check_str=("rule:admin_or_owner"), + check_str=("((role:admin or is_admin:True) or project_id:%(project_id)s)"), description="Promote instance to replica source.", scope_types=["project"], operations=[ @@ -137,7 +137,7 @@ list_rules = ( ), base.APIRule( name="trove:instance:eject_replica_source", - check_str=("rule:admin_or_owner"), + check_str=("((role:admin or is_admin:True) or project_id:%(project_id)s)"), description="Eject the replica source from its replica set.", scope_types=["project"], operations=[ @@ -149,7 +149,7 @@ list_rules = ( ), base.APIRule( name="trove:instance:configuration", - check_str=("rule:admin_or_owner"), + check_str=("((role:admin or is_admin:True) or project_id:%(project_id)s)"), description="Get the default configuration template applied to the instance.", scope_types=["project"], operations=[ @@ -158,14 +158,14 @@ list_rules = ( ), base.APIRule( name="trove:instance:guest_log_list", - check_str=("rule:admin_or_owner"), + check_str=("((role:admin or is_admin:True) or project_id:%(project_id)s)"), description="Get all informations about all logs of a database instance.", scope_types=["project"], operations=[{"method": "GET", "path": "/v1.0/{account_id}/instances/{instance_id}/log"}], ), base.APIRule( name="trove:instance:backups", - check_str=("rule:admin_or_owner"), + check_str=("((role:admin or is_admin:True) or project_id:%(project_id)s)"), description="Get all backups of a database instance.", scope_types=["project"], operations=[ @@ -174,7 +174,7 @@ list_rules = ( ), base.APIRule( name="trove:instance:module_list", - check_str=("rule:admin_or_owner"), + check_str=("((role:admin or is_admin:True) or project_id:%(project_id)s)"), description="Get informations about modules on a database instance.", scope_types=["project"], operations=[ @@ -183,7 +183,7 @@ list_rules = ( ), base.APIRule( name="trove:instance:module_apply", - check_str=("rule:admin_or_owner"), + check_str=("((role:admin or is_admin:True) or project_id:%(project_id)s)"), description="Apply modules to a database instance.", scope_types=["project"], operations=[ @@ -193,7 +193,7 @@ list_rules = ( ), base.APIRule( name="trove:instance:module_remove", - check_str=("rule:admin_or_owner"), + check_str=("((role:admin or is_admin:True) or project_id:%(project_id)s)"), description="Remove a module from a database instance.", scope_types=["project"], operations=[ @@ -205,7 +205,7 @@ list_rules = ( ), base.APIRule( name="trove:instance:extension:root:create", - check_str=("rule:admin_or_owner"), + check_str=("((role:admin or is_admin:True) or project_id:%(project_id)s)"), description="Enable the root user of a database instance.", scope_types=["project"], operations=[ @@ -214,7 +214,7 @@ list_rules = ( ), base.APIRule( name="trove:instance:extension:root:delete", - check_str=("rule:admin_or_owner"), + check_str=("((role:admin or is_admin:True) or project_id:%(project_id)s)"), description="Disable the root user of a database instance.", scope_types=["project"], operations=[ @@ -223,35 +223,35 @@ list_rules = ( ), base.APIRule( name="trove:instance:extension:root:index", - check_str=("rule:admin_or_owner"), + check_str=("((role:admin or is_admin:True) or project_id:%(project_id)s)"), description="Show whether the root user of a database instance has been ever enabled.", scope_types=["project"], operations=[{"method": "GET", "path": "/v1.0/{account_id}/instances/{instance_id}/root"}], ), base.APIRule( name="trove:cluster:extension:root:create", - check_str=("rule:admin_or_owner"), + check_str=("((role:admin or is_admin:True) or project_id:%(project_id)s)"), description="Enable the root user of the instances in a cluster.", scope_types=["project"], operations=[{"method": "POST", "path": "/v1.0/{account_id}/clusters/{cluster}/root"}], ), base.APIRule( name="trove:cluster:extension:root:delete", - check_str=("rule:admin_or_owner"), + check_str=("((role:admin or is_admin:True) or project_id:%(project_id)s)"), description="Enable the root user of the instances in a cluster.", scope_types=["project"], operations=[{"method": "DELETE", "path": "/v1.0/{account_id}/clusters/{cluster}/root"}], ), base.APIRule( name="trove:cluster:extension:root:index", - check_str=("rule:admin_or_owner"), + check_str=("((role:admin or is_admin:True) or project_id:%(project_id)s)"), description="Disable the root of the instances in a cluster.", scope_types=["project"], operations=[{"method": "GET", "path": "/v1.0/{account_id}/clusters/{cluster}/root"}], ), base.APIRule( name="trove:instance:extension:user:create", - check_str=("rule:admin_or_owner"), + check_str=("((role:admin or is_admin:True) or project_id:%(project_id)s)"), description="Create users for a database instance.", scope_types=["project"], operations=[ @@ -261,7 +261,7 @@ list_rules = ( ), base.APIRule( name="trove:instance:extension:user:delete", - check_str=("rule:admin_or_owner"), + check_str=("((role:admin or is_admin:True) or project_id:%(project_id)s)"), description="Delete a user from a database instance.", scope_types=["project"], operations=[ @@ -273,7 +273,7 @@ list_rules = ( ), base.APIRule( name="trove:instance:extension:user:index", - check_str=("rule:admin_or_owner"), + check_str=("((role:admin or is_admin:True) or project_id:%(project_id)s)"), description="Get all users of a database instance.", scope_types=["project"], operations=[ @@ -282,7 +282,7 @@ list_rules = ( ), base.APIRule( name="trove:instance:extension:user:show", - check_str=("rule:admin_or_owner"), + check_str=("((role:admin or is_admin:True) or project_id:%(project_id)s)"), description="Get the information of a single user of a database instance.", scope_types=["project"], operations=[ @@ -291,7 +291,7 @@ list_rules = ( ), base.APIRule( name="trove:instance:extension:user:update", - check_str=("rule:admin_or_owner"), + check_str=("((role:admin or is_admin:True) or project_id:%(project_id)s)"), description="Update attributes for a user of a database instance.", scope_types=["project"], operations=[ @@ -300,7 +300,7 @@ list_rules = ( ), base.APIRule( name="trove:instance:extension:user:update_all", - check_str=("rule:admin_or_owner"), + check_str=("((role:admin or is_admin:True) or project_id:%(project_id)s)"), description="Update the password for one or more users a database instance.", scope_types=["project"], operations=[ @@ -309,7 +309,7 @@ list_rules = ( ), base.APIRule( name="trove:instance:extension:user_access:update", - check_str=("rule:admin_or_owner"), + check_str=("((role:admin or is_admin:True) or project_id:%(project_id)s)"), description="Grant access for a user to one or more databases.", scope_types=["project"], operations=[ @@ -321,7 +321,7 @@ list_rules = ( ), base.APIRule( name="trove:instance:extension:user_access:delete", - check_str=("rule:admin_or_owner"), + check_str=("((role:admin or is_admin:True) or project_id:%(project_id)s)"), description="Revoke access for a user to a databases.", scope_types=["project"], operations=[ @@ -333,7 +333,7 @@ list_rules = ( ), base.APIRule( name="trove:instance:extension:user_access:index", - check_str=("rule:admin_or_owner"), + check_str=("((role:admin or is_admin:True) or project_id:%(project_id)s)"), description="Get permissions of a user", scope_types=["project"], operations=[ @@ -345,7 +345,7 @@ list_rules = ( ), base.APIRule( name="trove:instance:extension:database:create", - check_str=("rule:admin_or_owner"), + check_str=("((role:admin or is_admin:True) or project_id:%(project_id)s)"), description="Create a set of Schemas", scope_types=["project"], operations=[ @@ -355,7 +355,7 @@ list_rules = ( ), base.APIRule( name="trove:instance:extension:database:delete", - check_str=("rule:admin_or_owner"), + check_str=("((role:admin or is_admin:True) or project_id:%(project_id)s)"), description="Delete a schema from a database.", scope_types=["project"], operations=[ @@ -367,7 +367,7 @@ list_rules = ( ), base.APIRule( name="trove:instance:extension:database:index", - check_str=("rule:admin_or_owner"), + check_str=("((role:admin or is_admin:True) or project_id:%(project_id)s)"), description="List all schemas from a database.", scope_types=["project"], operations=[ @@ -376,7 +376,7 @@ list_rules = ( ), base.APIRule( name="trove:instance:extension:database:show", - check_str=("rule:admin_or_owner"), + check_str=("((role:admin or is_admin:True) or project_id:%(project_id)s)"), description="Get informations of a schema(Currently Not Implemented).", scope_types=["project"], operations=[ @@ -388,21 +388,21 @@ list_rules = ( ), base.APIRule( name="trove:cluster:create", - check_str=("rule:admin_or_owner"), + check_str=("((role:admin or is_admin:True) or project_id:%(project_id)s)"), description="Create a cluster.", scope_types=["project"], operations=[{"method": "POST", "path": "/v1.0/{account_id}/clusters"}], ), base.APIRule( name="trove:cluster:delete", - check_str=("rule:admin_or_owner"), + check_str=("((role:admin or is_admin:True) or project_id:%(project_id)s)"), description="Delete a cluster.", scope_types=["project"], operations=[{"method": "DELETE", "path": "/v1.0/{account_id}/clusters/{cluster}"}], ), base.APIRule( name="trove:cluster:force_delete", - check_str=("rule:admin_or_owner"), + check_str=("((role:admin or is_admin:True) or project_id:%(project_id)s)"), description="Forcibly delete a cluster.", scope_types=["project"], operations=[ @@ -411,21 +411,21 @@ list_rules = ( ), base.APIRule( name="trove:cluster:index", - check_str=("rule:admin_or_owner"), + check_str=("((role:admin or is_admin:True) or project_id:%(project_id)s)"), description="List all clusters", scope_types=["project"], operations=[{"method": "GET", "path": "/v1.0/{account_id}/clusters"}], ), base.APIRule( name="trove:cluster:show", - check_str=("rule:admin_or_owner"), + check_str=("((role:admin or is_admin:True) or project_id:%(project_id)s)"), description="Get informations of a cluster.", scope_types=["project"], operations=[{"method": "GET", "path": "/v1.0/{account_id}/clusters/{cluster}"}], ), base.APIRule( name="trove:cluster:show_instance", - check_str=("rule:admin_or_owner"), + check_str=("((role:admin or is_admin:True) or project_id:%(project_id)s)"), description="Get informations of a instance in a cluster.", scope_types=["project"], operations=[ @@ -437,14 +437,14 @@ list_rules = ( ), base.APIRule( name="trove:cluster:action", - check_str=("rule:admin_or_owner"), + check_str=("((role:admin or is_admin:True) or project_id:%(project_id)s)"), description="Commit an action against a cluster", scope_types=["project"], operations=[{"method": "POST", "path": "/v1.0/{account_id}/clusters/{cluster}"}], ), base.APIRule( name="trove:cluster:reset-status", - check_str=("rule:admin"), + check_str=("(role:admin or is_admin:True)"), description="Reset the status of a cluster to NONE.", scope_types=["project"], operations=[ @@ -453,21 +453,21 @@ list_rules = ( ), base.APIRule( name="trove:backup:create", - check_str=("rule:admin_or_owner"), + check_str=("((role:admin or is_admin:True) or project_id:%(project_id)s)"), description="Create a backup of a database instance.", scope_types=["project"], operations=[{"method": "POST", "path": "/v1.0/{account_id}/backups"}], ), base.APIRule( name="trove:backup:delete", - check_str=("rule:admin_or_owner"), + check_str=("((role:admin or is_admin:True) or project_id:%(project_id)s)"), description="Delete a backup of a database instance.", scope_types=["project"], operations=[{"method": "DELETE", "path": "/v1.0/{account_id}/backups/{backup}"}], ), base.APIRule( name="trove:backup:index", - check_str=("rule:admin_or_owner"), + check_str=("((role:admin or is_admin:True) or project_id:%(project_id)s)"), description="List all backups.", scope_types=["project"], operations=[{"method": "GET", "path": "/v1.0/{account_id}/backups"}], @@ -481,63 +481,63 @@ list_rules = ( ), base.APIRule( name="trove:backup:show", - check_str=("rule:admin_or_owner"), + check_str=("((role:admin or is_admin:True) or project_id:%(project_id)s)"), description="Get informations of a backup.", scope_types=["project"], operations=[{"method": "GET", "path": "/v1.0/{account_id}/backups/{backup}"}], ), base.APIRule( name="trove:backup_strategy:create", - check_str=("rule:admin_or_owner"), + check_str=("((role:admin or is_admin:True) or project_id:%(project_id)s)"), description="Create a backup strategy.", scope_types=["project"], operations=[{"method": "POST", "path": "/v1.0/{account_id}/backup_strategies"}], ), base.APIRule( name="trove:backup_strategy:index", - check_str=("rule:admin_or_owner"), + check_str=("((role:admin or is_admin:True) or project_id:%(project_id)s)"), description="List all backup strategies.", scope_types=["project"], operations=[{"method": "GET", "path": "/v1.0/{account_id}/backup_strategies"}], ), base.APIRule( name="trove:backup_strategy:delete", - check_str=("rule:admin_or_owner"), + check_str=("((role:admin or is_admin:True) or project_id:%(project_id)s)"), description="Delete backup strategies.", scope_types=["project"], operations=[{"method": "DELETE", "path": "/v1.0/{account_id}/backup_strategies"}], ), base.APIRule( name="trove:configuration:create", - check_str=("rule:admin_or_owner"), + check_str=("((role:admin or is_admin:True) or project_id:%(project_id)s)"), description="Create a configuration group.", scope_types=["project"], operations=[{"method": "POST", "path": "/v1.0/{account_id}/configurations"}], ), base.APIRule( name="trove:configuration:delete", - check_str=("rule:admin_or_owner"), + check_str=("((role:admin or is_admin:True) or project_id:%(project_id)s)"), description="Delete a configuration group.", scope_types=["project"], operations=[{"method": "DELETE", "path": "/v1.0/{account_id}/configurations/{config}"}], ), base.APIRule( name="trove:configuration:index", - check_str=("rule:admin_or_owner"), + check_str=("((role:admin or is_admin:True) or project_id:%(project_id)s)"), description="List all configuration groups.", scope_types=["project"], operations=[{"method": "GET", "path": "/v1.0/{account_id}/configurations"}], ), base.APIRule( name="trove:configuration:show", - check_str=("rule:admin_or_owner"), + check_str=("((role:admin or is_admin:True) or project_id:%(project_id)s)"), description="Get informations of a configuration group.", scope_types=["project"], operations=[{"method": "GET", "path": "/v1.0/{account_id}/configurations/{config}"}], ), base.APIRule( name="trove:configuration:instances", - check_str=("rule:admin_or_owner"), + check_str=("((role:admin or is_admin:True) or project_id:%(project_id)s)"), description="List all instances which a configuration group has be assigned to.", scope_types=["project"], operations=[ @@ -546,21 +546,21 @@ list_rules = ( ), base.APIRule( name="trove:configuration:update", - check_str=("rule:admin_or_owner"), + check_str=("((role:admin or is_admin:True) or project_id:%(project_id)s)"), description="Update a configuration group(the configuration group will be replaced completely).", # noqa scope_types=["project"], operations=[{"method": "PUT", "path": "/v1.0/{account_id}/configurations/{config}"}], ), base.APIRule( name="trove:configuration:edit", - check_str=("rule:admin_or_owner"), + check_str=("((role:admin or is_admin:True) or project_id:%(project_id)s)"), description="Patch a configuration group.", scope_types=["project"], operations=[{"method": "PATCH", "path": "/v1.0/{account_id}/configurations/{config}"}], ), base.APIRule( name="trove:configuration-parameter:index", - check_str=("rule:admin_or_owner"), + check_str=("((role:admin or is_admin:True) or project_id:%(project_id)s)"), description="List all parameters bind to a datastore version.", scope_types=["project"], operations=[ @@ -572,7 +572,7 @@ list_rules = ( ), base.APIRule( name="trove:configuration-parameter:show", - check_str=("rule:admin_or_owner"), + check_str=("((role:admin or is_admin:True) or project_id:%(project_id)s)"), description="Get a paramter of a datastore version.", scope_types=["project"], operations=[ @@ -584,7 +584,7 @@ list_rules = ( ), base.APIRule( name="trove:configuration-parameter:index_by_version", - check_str=("rule:admin_or_owner"), + check_str=("((role:admin or is_admin:True) or project_id:%(project_id)s)"), description="List all paramters bind to a datastore version by the id of the version(datastore is not provided).", # noqa scope_types=["project"], operations=[ @@ -596,7 +596,7 @@ list_rules = ( ), base.APIRule( name="trove:configuration-parameter:show_by_version", - check_str=("rule:admin_or_owner"), + check_str=("((role:admin or is_admin:True) or project_id:%(project_id)s)"), description="Get a paramter of a datastore version by it names and the id of the version(datastore is not provided).", # noqa scope_types=["project"], operations=[ @@ -622,7 +622,7 @@ list_rules = ( ), base.APIRule( name="trove:datastore:delete", - check_str=("rule:admin"), + check_str=("(role:admin or is_admin:True)"), description="Delete a datastore.", scope_types=["project"], operations=[{"method": "DELETE", "path": "/v1.0/{account_id}/datastores/{datastore}"}], @@ -697,56 +697,56 @@ list_rules = ( ), base.APIRule( name="trove:limits:index", - check_str=("rule:admin_or_owner"), + check_str=("((role:admin or is_admin:True) or project_id:%(project_id)s)"), description="List all absolute and rate limit informations.", scope_types=["project"], operations=[{"method": "GET", "path": "/v1.0/{account_id}/limits"}], ), base.APIRule( name="trove:module:create", - check_str=("rule:admin_or_owner"), + check_str=("((role:admin or is_admin:True) or project_id:%(project_id)s)"), description="Create a module.", scope_types=["project"], operations=[{"method": "POST", "path": "/v1.0/{account_id}/modules"}], ), base.APIRule( name="trove:module:delete", - check_str=("rule:admin_or_owner"), + check_str=("((role:admin or is_admin:True) or project_id:%(project_id)s)"), description="Delete a module.", scope_types=["project"], operations=[{"method": "DELETE", "path": "/v1.0/{account_id}/modules/{module}"}], ), base.APIRule( name="trove:module:index", - check_str=("rule:admin_or_owner"), + check_str=("((role:admin or is_admin:True) or project_id:%(project_id)s)"), description="List all modules.", scope_types=["project"], operations=[{"method": "GET", "path": "/v1.0/{account_id}/modules"}], ), base.APIRule( name="trove:module:show", - check_str=("rule:admin_or_owner"), + check_str=("((role:admin or is_admin:True) or project_id:%(project_id)s)"), description="Get informations of a module.", scope_types=["project"], operations=[{"method": "GET", "path": "/v1.0/{account_id}/modules/{module}"}], ), base.APIRule( name="trove:module:instances", - check_str=("rule:admin_or_owner"), + check_str=("((role:admin or is_admin:True) or project_id:%(project_id)s)"), description="List all instances to which a module is applied.", scope_types=["project"], operations=[{"method": "GET", "path": "/v1.0/{account_id}/modules/{module}/instances"}], ), base.APIRule( name="trove:module:update", - check_str=("rule:admin_or_owner"), + check_str=("((role:admin or is_admin:True) or project_id:%(project_id)s)"), description="Update a module.", scope_types=["project"], operations=[{"method": "PUT", "path": "/v1.0/{account_id}/modules/{module}"}], ), base.APIRule( name="trove:module:reapply", - check_str=("rule:admin_or_owner"), + check_str=("((role:admin or is_admin:True) or project_id:%(project_id)s)"), description="Reapply a module to all instances.", scope_types=["project"], operations=[{"method": "PUT", "path": "/v1.0/{account_id}/modules/{module}/instances"}], diff --git a/poetry.lock b/poetry.lock index 52c786f..7753c24 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1880,7 +1880,7 @@ testing = ["pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-flake8", "pytest- [metadata] lock-version = "1.1" python-versions = "^3.8" -content-hash = "5a132cff93a77645045f30752e19bdb9531e0879a74d398ed20c998ad4212ac2" +content-hash = "5d559f245168ea3f166d49367a0bf4909e4efb4c9bcbbc9ce869be9430eb686c" [metadata.files] aiofiles = [ diff --git a/pyproject.toml b/pyproject.toml index 94efdb3..bae54e1 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -22,6 +22,7 @@ skyline-apiserver = {path = "libs/skyline-apiserver", develop = true} skyline-nginx = {path = "libs/skyline-nginx", develop = true} reno = {extras = ["sphinx"], version = "^3.5.0"} openstackdocstheme = "^2.4.0" +Sphinx = "4.5.0" [tool.black] line-length = 98