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