diff --git a/Makefile b/Makefile index fc5e784a3022..b0cf88336a04 100644 --- a/Makefile +++ b/Makefile @@ -1,6 +1,6 @@ -include awx/ui_next/Makefile -PYTHON := $(notdir $(shell for i in python3.9 python3; do command -v $$i; done|sed 1q)) +PYTHON := $(notdir $(shell for i in python3.11 python3; do command -v $$i; done|sed 1q)) SHELL := bash DOCKER_COMPOSE ?= docker-compose OFFICIAL ?= no diff --git a/awx/main/credential_plugins/azure_kv.py b/awx/main/credential_plugins/azure_kv.py index eecfde65b193..8910a0726d2e 100644 --- a/awx/main/credential_plugins/azure_kv.py +++ b/awx/main/credential_plugins/azure_kv.py @@ -1,9 +1,10 @@ +from azure.keyvault.secrets import SecretClient +from azure.identity import ClientSecretCredential +from msrestazure import azure_cloud + from .plugin import CredentialPlugin from django.utils.translation import gettext_lazy as _ -from azure.keyvault import KeyVaultClient, KeyVaultAuthentication -from azure.common.credentials import ServicePrincipalCredentials -from msrestazure import azure_cloud # https://github.com/Azure/msrestazure-for-python/blob/master/msrestazure/azure_cloud.py @@ -54,22 +55,9 @@ def azure_keyvault_backend(**kwargs): - url = kwargs['url'] - [cloud] = [c for c in clouds if c.name == kwargs.get('cloud_name', default_cloud.name)] - - def auth_callback(server, resource, scope): - credentials = ServicePrincipalCredentials( - url=url, - client_id=kwargs['client'], - secret=kwargs['secret'], - tenant=kwargs['tenant'], - resource=f"https://{cloud.suffixes.keyvault_dns.split('.', 1).pop()}", - ) - token = credentials.token - return token['token_type'], token['access_token'] - - kv = KeyVaultClient(KeyVaultAuthentication(auth_callback)) - return kv.get_secret(url, kwargs['secret_field'], kwargs.get('secret_version', '')).value + csc = ClientSecretCredential(tenant_id=kwargs['tenant'], client_id=kwargs['client'], client_secret=kwargs['secret']) + kv = SecretClient(credential=csc, vault_url=kwargs['url']) + return kv.get_secret(name=kwargs['secret_field'], version=kwargs.get('secret_version', '')).value azure_keyvault_plugin = CredentialPlugin('Microsoft Azure Key Vault', inputs=azure_keyvault_inputs, backend=azure_keyvault_backend) diff --git a/awxkit/test/cli/test_options.py b/awxkit/test/cli/test_options.py index 2950b8b88de1..2830674712d9 100644 --- a/awxkit/test/cli/test_options.py +++ b/awxkit/test/cli/test_options.py @@ -175,9 +175,10 @@ def test_choices(self): assert '--verbosity {0,1,2,3,4,5}' in out.getvalue() def test_actions_with_primary_key(self): + page = OptionsPage.from_json({'actions': {'GET': {}, 'POST': {}}}) + ResourceOptionsParser(None, page, 'jobs', self.parser) + for method in ('get', 'modify', 'delete'): - page = OptionsPage.from_json({'actions': {'GET': {}, 'POST': {}}}) - ResourceOptionsParser(None, page, 'jobs', self.parser) assert method in self.parser.choices out = StringIO() diff --git a/awxkit/tox.ini b/awxkit/tox.ini index dc14051b7d8c..e5855d500ec2 100644 --- a/awxkit/tox.ini +++ b/awxkit/tox.ini @@ -8,7 +8,7 @@ skip_missing_interpreters = true # skipsdist = true [testenv] -basepython = python3.9 +basepython = python3.11 setenv = PYTHONPATH = {toxinidir}:{env:PYTHONPATH:}:. deps = diff --git a/licenses/deprecated.txt b/licenses/aiohttp-retry.txt similarity index 95% rename from licenses/deprecated.txt rename to licenses/aiohttp-retry.txt index b1073ca1c02e..b6364911784a 100644 --- a/licenses/deprecated.txt +++ b/licenses/aiohttp-retry.txt @@ -1,9 +1,8 @@ The MIT License (MIT) - -Copyright (c) 2017 Laurent LAPORTE +Copyright (c) 2020 aiohttp_retry Authors Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. \ No newline at end of file diff --git a/licenses/annotated-types.txt b/licenses/annotated-types.txt new file mode 100644 index 000000000000..2dc754cd1d3d --- /dev/null +++ b/licenses/annotated-types.txt @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2022 the contributors + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. \ No newline at end of file diff --git a/licenses/azure-identity.txt b/licenses/azure-identity.txt new file mode 100644 index 000000000000..63447fd8bbbf --- /dev/null +++ b/licenses/azure-identity.txt @@ -0,0 +1,21 @@ +Copyright (c) Microsoft Corporation. + +MIT License + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. \ No newline at end of file diff --git a/licenses/azure-keyvault-certificates.txt b/licenses/azure-keyvault-certificates.txt new file mode 100644 index 000000000000..63447fd8bbbf --- /dev/null +++ b/licenses/azure-keyvault-certificates.txt @@ -0,0 +1,21 @@ +Copyright (c) Microsoft Corporation. + +MIT License + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. \ No newline at end of file diff --git a/licenses/azure-keyvault-keys.txt b/licenses/azure-keyvault-keys.txt new file mode 100644 index 000000000000..63447fd8bbbf --- /dev/null +++ b/licenses/azure-keyvault-keys.txt @@ -0,0 +1,21 @@ +Copyright (c) Microsoft Corporation. + +MIT License + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. \ No newline at end of file diff --git a/licenses/azure-keyvault-secrets-4.8.0.tar.gz b/licenses/azure-keyvault-secrets-4.8.0.tar.gz new file mode 100644 index 000000000000..7b2c658dc899 Binary files /dev/null and b/licenses/azure-keyvault-secrets-4.8.0.tar.gz differ diff --git a/licenses/azure-keyvault-secrets.txt b/licenses/azure-keyvault-secrets.txt new file mode 100644 index 000000000000..63447fd8bbbf --- /dev/null +++ b/licenses/azure-keyvault-secrets.txt @@ -0,0 +1,21 @@ +Copyright (c) Microsoft Corporation. + +MIT License + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. \ No newline at end of file diff --git a/licenses/jaraco-classes.txt b/licenses/jaraco-classes.txt deleted file mode 100644 index 921ae9dd2b2f..000000000000 --- a/licenses/jaraco-classes.txt +++ /dev/null @@ -1,10 +0,0 @@ -# As listed on https://pypi.python.org/pypi/irc - -The MIT License (MIT) -Copyright (c) - -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/licenses/jsonschema-specifications.txt b/licenses/jsonschema-specifications.txt new file mode 100644 index 000000000000..c9e84a858df1 --- /dev/null +++ b/licenses/jsonschema-specifications.txt @@ -0,0 +1,19 @@ +Copyright (c) 2022 Julian Berman + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. \ No newline at end of file diff --git a/licenses/jwcrypto-1.4.2.tar.gz b/licenses/jwcrypto-1.4.2.tar.gz deleted file mode 100644 index bb75a22e6d2c..000000000000 Binary files a/licenses/jwcrypto-1.4.2.tar.gz and /dev/null differ diff --git a/licenses/jwcrypto-1.5.4.tar.gz b/licenses/jwcrypto-1.5.4.tar.gz new file mode 100644 index 000000000000..714a1cc41ef9 Binary files /dev/null and b/licenses/jwcrypto-1.5.4.tar.gz differ diff --git a/licenses/msal-extensions.txt b/licenses/msal-extensions.txt new file mode 100644 index 000000000000..d1ca00f20a89 --- /dev/null +++ b/licenses/msal-extensions.txt @@ -0,0 +1,21 @@ + MIT License + + Copyright (c) Microsoft Corporation. All rights reserved. + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all + copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + SOFTWARE \ No newline at end of file diff --git a/licenses/msal.txt b/licenses/msal.txt new file mode 100644 index 000000000000..51d89cb3a147 --- /dev/null +++ b/licenses/msal.txt @@ -0,0 +1,24 @@ +The MIT License (MIT) + +Copyright (c) Microsoft Corporation. +All rights reserved. + +This code is licensed under the MIT License. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files(the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and / or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions : + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. \ No newline at end of file diff --git a/licenses/portalocker.txt b/licenses/portalocker.txt new file mode 100644 index 000000000000..a3df241b2f25 --- /dev/null +++ b/licenses/portalocker.txt @@ -0,0 +1,11 @@ +Copyright 2022 Rick van Hattem + +Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: + +1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. + +3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. \ No newline at end of file diff --git a/licenses/psycopg-3.1.18.tar.gz b/licenses/psycopg-3.1.18.tar.gz new file mode 100644 index 000000000000..81ccd5fecdda Binary files /dev/null and b/licenses/psycopg-3.1.18.tar.gz differ diff --git a/licenses/psycopg-3.1.9.tar.gz b/licenses/psycopg-3.1.9.tar.gz deleted file mode 100644 index aaca5fa5fc87..000000000000 Binary files a/licenses/psycopg-3.1.9.tar.gz and /dev/null differ diff --git a/licenses/azure-nspkg.txt b/licenses/pydantic-core.txt similarity index 96% rename from licenses/azure-nspkg.txt rename to licenses/pydantic-core.txt index dc1cf39d1359..ff70984d6f9c 100644 --- a/licenses/azure-nspkg.txt +++ b/licenses/pydantic-core.txt @@ -1,6 +1,6 @@ The MIT License (MIT) -Copyright (c) 2016 Microsoft +Copyright (c) 2022 Samuel Colvin Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal @@ -18,4 +18,4 @@ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. +SOFTWARE. \ No newline at end of file diff --git a/licenses/pyrsistent.txt b/licenses/pyrsistent.txt deleted file mode 100644 index a3dd359f7cad..000000000000 --- a/licenses/pyrsistent.txt +++ /dev/null @@ -1,22 +0,0 @@ -Copyright (c) 2019 Tobias Gustafsson - -Permission is hereby granted, free of charge, to any person -obtaining a copy of this software and associated documentation -files (the "Software"), to deal in the Software without -restriction, including without limitation the rights to use, -copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the -Software is furnished to do so, subject to the following -conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES -OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -OTHER DEALINGS IN THE SOFTWARE. diff --git a/licenses/referencing.txt b/licenses/referencing.txt new file mode 100644 index 000000000000..c9e84a858df1 --- /dev/null +++ b/licenses/referencing.txt @@ -0,0 +1,19 @@ +Copyright (c) 2022 Julian Berman + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. \ No newline at end of file diff --git a/licenses/rpds-py.txt b/licenses/rpds-py.txt new file mode 100644 index 000000000000..1ecff201bda4 --- /dev/null +++ b/licenses/rpds-py.txt @@ -0,0 +1,19 @@ +Copyright (c) 2023 Julian Berman + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. \ No newline at end of file diff --git a/licenses/uwsgi-2.0.21.tar.gz b/licenses/uwsgi-2.0.21.tar.gz deleted file mode 100644 index e5929792a868..000000000000 Binary files a/licenses/uwsgi-2.0.21.tar.gz and /dev/null differ diff --git a/licenses/uwsgi-2.0.24.tar.gz b/licenses/uwsgi-2.0.24.tar.gz new file mode 100644 index 000000000000..f9fde78c52f1 Binary files /dev/null and b/licenses/uwsgi-2.0.24.tar.gz differ diff --git a/licenses/wrapt.txt b/licenses/wrapt.txt deleted file mode 100644 index bd8c7124a7ca..000000000000 --- a/licenses/wrapt.txt +++ /dev/null @@ -1,24 +0,0 @@ -Copyright (c) 2013-2023, Graham Dumpleton -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - -* Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. - -* Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE -LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF -SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN -CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) -ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE -POSSIBILITY OF SUCH DAMAGE. diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 000000000000..72093e486ef9 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,6 @@ +{ + "name": "awx", + "lockfileVersion": 3, + "requires": true, + "packages": {} +} diff --git a/requirements/README.md b/requirements/README.md index 62ad87fd208d..df3d0a3aaa7c 100644 --- a/requirements/README.md +++ b/requirements/README.md @@ -110,16 +110,6 @@ OpenID Connect work that was done in https://github.com/jazzband/django-oauth-toolkit/pull/915. This may be fixable by creating a migration on our end? -### azure-keyvault - -Upgrading to 4.0.0 causes error because imports changed. - -``` - File "/var/lib/awx/venv/awx/lib64/python3.6/site-packages/awx/main/credential_plugins/azure_kv.py", line 4, in - from azure.keyvault import KeyVaultClient, KeyVaultAuthentication -ImportError: cannot import name 'KeyVaultClient' -``` - ### pip, setuptools and setuptools_scm If modifying these libraries make sure testing with the offline build is performed to confirm they are functionally working. diff --git a/requirements/requirements.in b/requirements/requirements.in index 3601c4a07b2e..059f81743077 100644 --- a/requirements/requirements.in +++ b/requirements/requirements.in @@ -3,12 +3,13 @@ ansiconv==1.0.0 # UPGRADE BLOCKER: from 2013, consider replacing instead of upg asciichartpy asn1 asyncpg -azure-keyvault==1.1.0 # see UPGRADE BLOCKERs +azure-identity +azure-keyvault boto3 botocore channels channels-redis==3.4.1 # see UPGRADE BLOCKERs -cryptography>=41.0.6 # CVE-2023-49083 +cryptography>=41.0.7 # CVE-2023-49083 Cython<3 # this is needed as a build dependency, one day we may have separated build deps daphne distro @@ -33,6 +34,7 @@ jinja2>=3.1.3 # CVE-2024-22195 JSON-log-formatter jsonschema Markdown # used for formatting API help +msrestazure openshift pexpect==4.7.0 # see library notes prometheus_client diff --git a/requirements/requirements.txt b/requirements/requirements.txt index a23369eb2f33..bb2a7be0fdc2 100644 --- a/requirements/requirements.txt +++ b/requirements/requirements.txt @@ -2,66 +2,89 @@ adal==1.2.7 # via msrestazure aiohttp==3.9.3 # via -r /awx_devel/requirements/requirements.in + # aiohttp-retry + # twilio +aiohttp-retry==2.8.3 + # via twilio aioredis==1.3.1 # via channels-redis aiosignal==1.3.1 # via aiohttp +annotated-types==0.6.0 + # via pydantic # via -r /awx_devel/requirements/requirements_git.txt ansiconv==1.0.0 # via -r /awx_devel/requirements/requirements.in asciichartpy==1.5.25 # via -r /awx_devel/requirements/requirements.in -asgiref==3.6.0 +asgiref==3.7.2 # via # channels # channels-redis # daphne # django -asn1==2.6.0 + # django-cors-headers +asn1==2.7.0 # via -r /awx_devel/requirements/requirements.in -async-timeout==4.0.2 +async-timeout==4.0.3 # via # aiohttp # aioredis + # asyncpg # redis -asyncpg==0.27.0 +asyncpg==0.29.0 # via -r /awx_devel/requirements/requirements.in -attrs==22.1.0 +attrs==23.2.0 # via # aiohttp # automat # jsonschema + # referencing # service-identity # twisted -autobahn==22.7.1 +autobahn==23.6.2 # via daphne autocommand==2.2.2 # via jaraco-text automat==22.10.0 # via twisted azure-common==1.1.28 - # via azure-keyvault -azure-core==1.26.1 - # via msrest -azure-keyvault==1.1.0 + # via + # azure-keyvault-certificates + # azure-keyvault-keys + # azure-keyvault-secrets +azure-core==1.30.0 + # via + # azure-identity + # azure-keyvault-certificates + # azure-keyvault-keys + # azure-keyvault-secrets + # msrest +azure-identity==1.15.0 + # via -r /awx_devel/requirements/requirements.in +azure-keyvault==4.2.0 # via -r /awx_devel/requirements/requirements.in -azure-nspkg==3.0.2 +azure-keyvault-certificates==4.7.0 + # via azure-keyvault +azure-keyvault-keys==4.8.0 + # via azure-keyvault +azure-keyvault-secrets==4.7.0 # via azure-keyvault -boto3==1.26.102 +boto3==1.34.47 # via -r /awx_devel/requirements/requirements.in -botocore==1.29.102 +botocore==1.34.47 # via # -r /awx_devel/requirements/requirements.in # boto3 # s3transfer -cachetools==5.2.0 +cachetools==5.3.2 # via google-auth # via # -r /awx_devel/requirements/requirements_git.txt # kubernetes # msrest # requests -cffi==1.15.1 +cffi==1.16.0 # via cryptography channels==3.0.5 # via @@ -69,24 +92,27 @@ channels==3.0.5 # channels-redis channels-redis==3.4.1 # via -r /awx_devel/requirements/requirements.in -charset-normalizer==2.1.1 +charset-normalizer==3.3.2 # via requests -click==8.1.3 +click==8.1.7 # via receptorctl -constantly==15.1.0 +constantly==23.10.4 # via twisted cryptography==41.0.7 # via # -r /awx_devel/requirements/requirements.in # adal # autobahn - # azure-keyvault + # azure-identity + # azure-keyvault-keys # django-ansible-base # jwcrypto + # msal + # pyjwt # pyopenssl # service-identity # social-auth-core -cython==0.29.32 +cython==0.29.37 # via -r /awx_devel/requirements/requirements.in daphne==3.0.2 # via @@ -96,9 +122,7 @@ defusedxml==0.7.1 # via # python3-openid # social-auth-core -deprecated==1.2.13 - # via jwcrypto -distro==1.8.0 +distro==1.9.0 # via -r /awx_devel/requirements/requirements.in django==4.2.6 # via @@ -116,15 +140,15 @@ django==4.2.6 # djangorestframework # social-auth-app-django # via -r /awx_devel/requirements/requirements_git.txt -django-auth-ldap==4.1.0 +django-auth-ldap==4.6.0 # via -r /awx_devel/requirements/requirements.in -django-cors-headers==3.13.0 +django-cors-headers==4.3.1 # via -r /awx_devel/requirements/requirements.in django-crum==0.7.9 # via # -r /awx_devel/requirements/requirements.in # django-ansible-base -django-extensions==3.2.1 +django-extensions==3.2.3 # via -r /awx_devel/requirements/requirements.in django-guid==3.2.1 # via -r /awx_devel/requirements/requirements.in @@ -135,7 +159,7 @@ django-pglocks==1.0.4 django-polymorphic==3.1.0 # via -r /awx_devel/requirements/requirements.in # via -r /awx_devel/requirements/requirements_git.txt -django-solo==2.0.0 +django-solo==2.2.0 # via -r /awx_devel/requirements/requirements.in django-split-settings==1.0.0 # via @@ -147,23 +171,23 @@ djangorestframework==3.14.0 # django-ansible-base djangorestframework-yaml==2.0.0 # via -r /awx_devel/requirements/requirements.in -docutils==0.19 +docutils==0.20.1 # via python-daemon ecdsa==0.18.0 # via python-jose enum-compat==0.0.3 # via asn1 -filelock==3.8.0 +filelock==3.13.1 # via -r /awx_devel/requirements/requirements.in -frozenlist==1.3.3 +frozenlist==1.4.1 # via # aiohttp # aiosignal -gitdb==4.0.10 +gitdb==4.0.11 # via gitpython gitpython==3.1.42 # via -r /awx_devel/requirements/requirements.in -google-auth==2.14.1 +google-auth==2.28.1 # via kubernetes hiredis==2.0.0 # via @@ -173,44 +197,45 @@ hyperlink==21.0.0 # via # autobahn # twisted -idna==3.4 +idna==3.6 # via # hyperlink # requests # twisted # yarl -importlib-metadata==4.6.4 +importlib-metadata==6.2.1 # via # ansible-runner # markdown incremental==22.10.0 # via twisted -inflect==6.0.2 +inflect==7.0.0 # via jaraco-text inflection==0.5.1 # via django-ansible-base -irc==20.1.0 +irc==20.3.1 # via -r /awx_devel/requirements/requirements.in isodate==0.6.1 # via + # azure-keyvault-certificates + # azure-keyvault-keys + # azure-keyvault-secrets # msrest # python3-saml -jaraco-classes==3.2.3 - # via jaraco-collections -jaraco-collections==3.8.0 +jaraco-collections==5.0.0 # via irc -jaraco-context==4.2.0 +jaraco-context==4.3.0 # via jaraco-text -jaraco-functools==3.5.2 +jaraco-functools==4.0.0 # via # irc # jaraco-text # tempora -jaraco-logging==3.1.2 +jaraco-logging==3.3.0 # via irc jaraco-stream==3.0.3 # via irc -jaraco-text==3.11.0 +jaraco-text==3.12.0 # via # irc # jaraco-collections @@ -220,57 +245,63 @@ jmespath==1.0.1 # via # boto3 # botocore -json-log-formatter==0.5.1 +json-log-formatter==0.5.2 # via -r /awx_devel/requirements/requirements.in -jsonschema==4.17.3 +jsonschema==4.21.1 # via -r /awx_devel/requirements/requirements.in -jwcrypto==1.4.2 +jsonschema-specifications==2023.12.1 + # via jsonschema +jwcrypto==1.5.4 # via django-oauth-toolkit -kubernetes==25.3.0 +kubernetes==29.0.0 # via openshift lockfile==0.12.2 # via python-daemon -lxml==4.9.1 +lxml==4.9.4 # via # python3-saml # xmlsec -markdown==3.4.1 +markdown==3.5.2 # via -r /awx_devel/requirements/requirements.in -markupsafe==2.1.1 +markupsafe==2.1.5 # via jinja2 -more-itertools==9.0.0 +more-itertools==10.2.0 # via # irc - # jaraco-classes # jaraco-functools # jaraco-text -msgpack==1.0.4 +msal==1.26.0 + # via + # azure-identity + # msal-extensions +msal-extensions==1.1.0 + # via azure-identity +msgpack==1.0.7 # via channels-redis msrest==0.7.1 - # via - # azure-keyvault - # msrestazure + # via msrestazure msrestazure==0.6.4 - # via azure-keyvault -multidict==6.0.2 + # via -r /awx_devel/requirements/requirements.in +multidict==6.0.5 # via # aiohttp # yarl -netaddr==0.8.0 +netaddr==1.2.1 # via pyrad oauthlib==3.2.2 # via # django-oauth-toolkit + # kubernetes # requests-oauthlib # social-auth-core -openshift==0.13.1 +openshift==0.13.2 # via -r /awx_devel/requirements/requirements.in -packaging==21.3 +packaging==23.2 # via # ansible-runner - # redis + # msal-extensions # setuptools-scm -pbr==5.11.0 +pbr==6.0.0 # via -r /awx_devel/requirements/requirements.in pexpect==4.7.0 # via @@ -278,50 +309,51 @@ pexpect==4.7.0 # ansible-runner pkgconfig==1.5.5 # via -r /awx_devel/requirements/requirements.in -prometheus-client==0.15.0 +portalocker==2.8.2 + # via msal-extensions +prometheus-client==0.20.0 # via -r /awx_devel/requirements/requirements.in -psutil==5.9.4 +psutil==5.9.8 # via -r /awx_devel/requirements/requirements.in -psycopg==3.1.9 +psycopg==3.1.18 # via -r /awx_devel/requirements/requirements.in ptyprocess==0.7.0 # via pexpect -pyasn1==0.4.8 +pyasn1==0.5.1 # via # pyasn1-modules # python-jose # python-ldap # rsa # service-identity -pyasn1-modules==0.2.8 +pyasn1-modules==0.3.0 # via # google-auth # python-ldap # service-identity pycparser==2.21 # via cffi -pydantic==1.10.2 +pydantic==2.6.1 # via inflect +pydantic-core==2.16.2 + # via pydantic pygerduty==0.38.3 # via -r /awx_devel/requirements/requirements.in -pyjwt==2.6.0 +pyjwt[crypto]==2.8.0 # via # adal # django-ansible-base + # msal # social-auth-core # twilio -pyopenssl==23.2.0 +pyopenssl==24.0.0 # via # -r /awx_devel/requirements/requirements.in # twisted pyparsing==2.4.6 - # via - # -r /awx_devel/requirements/requirements.in - # packaging + # via -r /awx_devel/requirements/requirements.in pyrad==2.4 # via django-radius -pyrsistent==0.19.2 - # via jsonschema python-daemon==3.0.1 # via # -r /awx_devel/requirements/requirements.in @@ -336,23 +368,22 @@ python-dsv-sdk==1.0.4 # via -r /awx_devel/requirements/requirements.in python-jose==3.3.0 # via social-auth-core -python-ldap==3.4.3 +python-ldap==3.4.4 # via # -r /awx_devel/requirements/requirements.in # django-auth-ldap python-string-utils==1.0.0 # via openshift -python-tss-sdk==1.2.1 +python-tss-sdk==1.2.2 # via -r /awx_devel/requirements/requirements.in python3-openid==3.2.0 # via social-auth-core # via -r /awx_devel/requirements/requirements_git.txt -pytz==2022.6 +pytz==2024.1 # via # djangorestframework # irc # tempora - # twilio pyyaml==6.0.1 # via # -r /awx_devel/requirements/requirements.in @@ -362,17 +393,21 @@ pyyaml==6.0.1 # receptorctl receptorctl==1.4.4 # via -r /awx_devel/requirements/requirements.in -redis==4.3.5 +redis==5.0.1 # via -r /awx_devel/requirements/requirements.in -requests==2.28.1 +referencing==0.33.0 + # via + # jsonschema + # jsonschema-specifications +requests==2.31.0 # via # -r /awx_devel/requirements/requirements.in # adal # azure-core - # azure-keyvault # django-ansible-base # django-oauth-toolkit # kubernetes + # msal # msrest # python-dsv-sdk # python-tss-sdk @@ -384,17 +419,21 @@ requests-oauthlib==1.3.1 # kubernetes # msrest # social-auth-core +rpds-py==0.18.0 + # via + # jsonschema + # referencing rsa==4.9 # via # google-auth # python-jose -s3transfer==0.6.0 +s3transfer==0.10.0 # via boto3 semantic-version==2.10.0 # via setuptools-rust -service-identity==21.1.0 +service-identity==24.1.0 # via twisted -setuptools-rust==1.5.2 +setuptools-rust==1.8.1 # via -r /awx_devel/requirements/requirements.in setuptools-scm[toml]==8.0.4 # via -r /awx_devel/requirements/requirements.in @@ -404,7 +443,6 @@ six==1.16.0 # azure-core # django-pglocks # ecdsa - # google-auth # isodate # kubernetes # msrestazure @@ -412,11 +450,10 @@ six==1.16.0 # pygerduty # pyrad # python-dateutil - # service-identity # tacacs-plus -slack-sdk==3.19.4 +slack-sdk==3.27.0 # via -r /awx_devel/requirements/requirements.in -smmap==5.0.0 +smmap==5.0.1 # via gitdb social-auth-app-django==5.4.0 # via -r /awx_devel/requirements/requirements.in @@ -430,60 +467,66 @@ sqlparse==0.4.4 # django tacacs-plus==1.0 # via -r /awx_devel/requirements/requirements.in -tempora==5.1.0 +tempora==5.5.1 # via # irc # jaraco-logging tomli==2.0.1 - # via setuptools-scm -twilio==7.15.3 + # via + # setuptools-rust + # setuptools-scm +twilio==8.13.0 # via -r /awx_devel/requirements/requirements.in twisted[tls]==23.10.0 # via # -r /awx_devel/requirements/requirements.in # daphne -txaio==22.2.1 +txaio==23.1.1 # via autobahn -typing-extensions==4.4.0 +typing-extensions==4.9.0 # via + # asgiref # azure-core + # azure-keyvault-certificates + # azure-keyvault-keys + # azure-keyvault-secrets + # inflect + # jwcrypto # psycopg - # setuptools-rust + # pydantic + # pydantic-core # setuptools-scm # twisted -urllib3==1.26.17 +urllib3==1.26.18 # via # botocore # kubernetes # requests -uwsgi==2.0.21 +uwsgi==2.0.24 # via -r /awx_devel/requirements/requirements.in uwsgitop==0.11 # via -r /awx_devel/requirements/requirements.in -websocket-client==1.4.2 +websocket-client==1.7.0 # via kubernetes -wheel==0.38.4 +wheel==0.42.0 # via -r /awx_devel/requirements/requirements.in -wrapt==1.15.0 - # via deprecated xmlsec==1.3.13 # via python3-saml -yarl==1.8.1 +yarl==1.9.4 # via aiohttp -zipp==3.11.0 +zipp==3.17.0 # via importlib-metadata -zope-interface==5.5.2 +zope-interface==6.2 # via twisted # The following packages are considered to be unsafe in a requirements file: pip==21.2.4 # via -r /awx_devel/requirements/requirements.in -setuptools==65.6.3 +setuptools==69.1.0 # via # -r /awx_devel/requirements/requirements.in # asciichartpy # autobahn - # kubernetes # python-daemon # setuptools-rust # setuptools-scm diff --git a/tools/ansible/roles/dockerfile/templates/Dockerfile.j2 b/tools/ansible/roles/dockerfile/templates/Dockerfile.j2 index 7f84ccf454d7..12e791f07d62 100644 --- a/tools/ansible/roles/dockerfile/templates/Dockerfile.j2 +++ b/tools/ansible/roles/dockerfile/templates/Dockerfile.j2 @@ -39,15 +39,18 @@ RUN dnf -y update && dnf install -y 'dnf-command(config-manager)' && \ patch \ postgresql \ postgresql-devel \ - python3-devel \ - python3-pip \ - python3-setuptools \ + python3.11 \ + "python3.11-devel" \ + "python3.11-pip" \ + "python3.11-setuptools" \ + "python3.11-packaging" \ + "python3.11-psycopg2" \ swig \ unzip \ xmlsec1-devel \ xmlsec1-openssl-devel -RUN pip3 install virtualenv build psycopg +RUN pip3.11 install -vv build {% if image_architecture == 'ppc64le' %} RUN dnf -y update && dnf install -y wget && \ @@ -118,10 +121,12 @@ RUN dnf -y update && dnf install -y 'dnf-command(config-manager)' && \ nginx \ "openldap >= 2.6.2-3" \ postgresql \ - python3-devel \ - python3-libselinux \ - python3-pip \ - python3-setuptools \ + python3.11 \ + "python3.11-devel" \ + "python3.11-pip*" \ + "python3.11-setuptools" \ + "python3.11-packaging" \ + "python3.11-psycopg2" \ rsync \ rsyslog-8.2102.0-106.el9 \ subversion \ @@ -132,7 +137,7 @@ RUN dnf -y update && dnf install -y 'dnf-command(config-manager)' && \ xmlsec1-openssl && \ dnf -y clean all -RUN pip3 install virtualenv supervisor dumb-init psycopg +RUN pip3.11 install -vv virtualenv supervisor dumb-init build RUN rm -rf /root/.cache && rm -rf /tmp/* @@ -164,7 +169,8 @@ RUN dnf -y install \ unzip && \ npm install -g n && n 16.13.1 && npm install -g npm@8.5.0 && dnf remove -y nodejs -RUN pip3 install black git+https://github.com/coderanger/supervisor-stdout setuptools-scm +RUN pip3.11 install -vv git+https://github.com/coderanger/supervisor-stdout.git@973ba19967cdaf46d9c1634d1675fc65b9574f6e +RUN pip3.11 install -vv black setuptools-scm build # This package randomly fails to download. # It is nice to have in the dev env, but not necessary. @@ -235,7 +241,7 @@ ADD tools/scripts/awx-python /usr/bin/awx-python {% endif %} {% if (build_dev|bool) or (kube_dev|bool) %} -RUN echo /awx_devel > /var/lib/awx/venv/awx/lib/python3.9/site-packages/awx.egg-link +RUN echo /awx_devel > /var/lib/awx/venv/awx/lib/python3.11/site-packages/awx.egg-link ADD tools/docker-compose/awx-manage /usr/local/bin/awx-manage RUN ln -sf /awx_devel/tools/scripts/awx-python /usr/bin/awx-python RUN ln -sf /awx_devel/tools/scripts/rsyslog-4xx-recovery /usr/bin/rsyslog-4xx-recovery @@ -270,8 +276,8 @@ RUN for dir in \ /var/lib/awx/.local \ /var/lib/awx/venv \ /var/lib/awx/venv/awx/bin \ - /var/lib/awx/venv/awx/lib/python3.9 \ - /var/lib/awx/venv/awx/lib/python3.9/site-packages \ + /var/lib/awx/venv/awx/lib/python3.11 \ + /var/lib/awx/venv/awx/lib/python3.11/site-packages \ /var/lib/awx/projects \ /var/lib/awx/rsyslog \ /var/run/awx-rsyslog \