Security updates

This PS updates Openstack modules to Caracal
2024.1, updates base ubuntu  image to
quay.io/airshipit, Helm to v3.15.2 and Kubectl to
1.32.0

Change-Id: I0c4f16443ae88e4cfbc54e23222eaf84264580b5
This commit is contained in:
Sergiy Markin 2024-12-23 23:57:51 +00:00
parent fef241da50
commit e2b4199c4c
24 changed files with 209 additions and 116 deletions

View File

@ -1,4 +1,4 @@
ARG FROM=docker.io/ubuntu:jammy
ARG FROM=quay.io/airshipit/ubuntu:jammy
ARG DOCKER_REGISTRY=quay.io
ARG CALICOCTL_IMAGE_PREFIX=calico/ctl
ARG CALICOCTL_VERSION=v3.28.1
@ -33,7 +33,7 @@ RUN set -xe \
python3-pip \
&& curl -s https://bootstrap.pypa.io/get-pip.py | python3 \
&& pip3 install --no-cache-dir \
oslo.rootwrap==7.0.1 \
oslo.rootwrap==7.2.0 \
&& rm -rf /var/lib/apt/lists/*
RUN PYTHON_LOCATION=$(pip3 show oslo.rootwrap|grep Location|awk '{print $2}') \

View File

@ -1,4 +1,4 @@
ARG FROM=docker.io/ubuntu:jammy
ARG FROM=quay.io/airshipit/ubuntu:jammy
ARG DOCKER_REGISTRY=quay.io
ARG CALICOCTL_IMAGE_PREFIX=tigera/calicoctl
ARG CALICOCTL_VERSION=v3.28.1

View File

@ -1,4 +1,4 @@
ARG FROM=docker.io/ubuntu:jammy
ARG FROM=quay.io/airshipit/ubuntu:jammy
FROM ${FROM}
LABEL org.opencontainers.image.authors='airship-discuss@lists.airshipit.org, irc://#airshipit@freenode' \
@ -11,7 +11,7 @@ LABEL org.opencontainers.image.authors='airship-discuss@lists.airshipit.org, irc
# Reef 18.2.2
ARG CEPH_RELEASE=reef
ARG CEPH_RELEASE_TAG=18.2.2-1~jammy
ARG KUBE_VERSION=1.31.0
ARG KUBE_VERSION=1.32.0
ARG CEPH_REPO=https://mirror.mirantis.com/acicd/ceph/debian-18.2.2.patch1/jammy/
ARG CEPH_KEY=https://mirror.mirantis.com/acicd/ceph/debian-18.2.2.patch1/jammy/release.asc
@ -51,7 +51,7 @@ RUN set -xe \
orphan-sysvinit-scripts \
&& curl -s https://bootstrap.pypa.io/get-pip.py | python3 \
&& pip3 install --no-cache-dir \
oslo.rootwrap==7.0.1 \
oslo.rootwrap==7.2.0 \
&& curl --silent -L https://dl.k8s.io/v${KUBE_VERSION}/kubernetes-client-linux-amd64.tar.gz \
| tar -zC /usr/bin --strip-components=3 --wildcards -x "*/*/*/kubectl" \
&& rm -rf /var/lib/apt/lists/*

View File

@ -1,4 +1,4 @@
ARG FROM=docker.io/ubuntu:jammy
ARG FROM=quay.io/airshipit/ubuntu:jammy
FROM ${FROM}
LABEL org.opencontainers.image.authors='airship-discuss@lists.airshipit.org, irc://#airshipit@freenode' \
@ -8,7 +8,7 @@ LABEL org.opencontainers.image.authors='airship-discuss@lists.airshipit.org, irc
org.opencontainers.image.vendor='The Airship Authors' \
org.opencontainers.image.licenses='Apache-2.0'
ARG KUBE_VERSION=1.31.0
ARG KUBE_VERSION=1.32.0
ARG DEBIAN_FRONTEND=noninteractive
@ -38,7 +38,7 @@ RUN set -xe \
orphan-sysvinit-scripts \
&& curl -s https://bootstrap.pypa.io/get-pip.py | python3 \
&& pip3 install --no-cache-dir \
oslo.rootwrap==7.0.1 \
oslo.rootwrap==7.2.0 \
&& curl --silent -L https://dl.k8s.io/v${KUBE_VERSION}/kubernetes-client-linux-amd64.tar.gz \
| tar -zC /usr/bin --strip-components=3 --wildcards -x "*/*/*/kubectl" \
&& rm -rf /var/lib/apt/lists/*

View File

@ -1,4 +1,4 @@
ARG FROM=docker.io/ubuntu:jammy
ARG FROM=quay.io/airshipit/ubuntu:jammy
FROM ${FROM}
LABEL org.opencontainers.image.authors='airship-discuss@lists.airshipit.org, irc://#airshipit@freenode' \
@ -9,7 +9,7 @@ LABEL org.opencontainers.image.authors='airship-discuss@lists.airshipit.org, irc
org.opencontainers.image.licenses='Apache-2.0'
ARG ETCDCTL_VERSION=3.5.12
ARG KUBE_VERSION=1.31.0
ARG KUBE_VERSION=1.32.0
ENV GOOGLE_URL=https://storage.googleapis.com/etcd
ENV GITHUB_URL=https://github.com/etcd-io/etcd/releases/download
@ -39,9 +39,9 @@ RUN set -xe \
&& pip3 install --no-cache-dir \
munch \
simplejson \
oslo.rootwrap==7.0.1 \
python-openstackclient==6.2.0 \
python-swiftclient==4.2.0 \
oslo.rootwrap==7.2.0 \
python-openstackclient==6.6.1 \
python-swiftclient==4.5.0 \
&& curl --silent -L "${DOWNLOAD_URL}/v${ETCDCTL_VERSION}/etcd-v${ETCDCTL_VERSION}-linux-amd64.tar.gz" \
| tar -zC /usr/local/bin --strip-components=1 --wildcards -x "*/etcdctl" \
&& curl --silent -L https://dl.k8s.io/v${KUBE_VERSION}/kubernetes-client-linux-amd64.tar.gz \

View File

@ -1,4 +1,4 @@
ARG FROM=docker.io/ubuntu:jammy
ARG FROM=quay.io/airshipit/ubuntu:jammy
FROM ${FROM}
LABEL org.opencontainers.image.authors='airship-discuss@lists.airshipit.org, irc://#airshipit@freenode' \
@ -8,7 +8,7 @@ LABEL org.opencontainers.image.authors='airship-discuss@lists.airshipit.org, irc
org.opencontainers.image.vendor='The Airship Authors' \
org.opencontainers.image.licenses='Apache-2.0'
ARG KUBE_VERSION=1.31.0
ARG KUBE_VERSION=1.32.0
ARG MARIADB_VERSION=10.6
ARG PERCONA_TOOLKIT_VERSION=3.5.7
@ -45,9 +45,9 @@ RUN set -xe \
&& pip3 install --no-cache-dir \
munch \
simplejson \
oslo.rootwrap==7.0.1 \
python-openstackclient==6.2.0 \
python-swiftclient==4.2.0 \
oslo.rootwrap==7.2.0 \
python-openstackclient==6.6.1 \
python-swiftclient==4.5.0 \
&& sed -i 's/$PrivDropToUser syslog/$PrivDropToUser nobody/' /etc/rsyslog.conf \
&& curl --silent -L https://dl.k8s.io/v${KUBE_VERSION}/kubernetes-client-linux-amd64.tar.gz \
| tar -zC /usr/bin --strip-components=3 --wildcards -x "*/*/*/kubectl" \

View File

@ -1,4 +1,4 @@
ARG FROM=docker.io/ubuntu:jammy
ARG FROM=quay.io/airshipit/ubuntu:jammy
FROM ${FROM}
LABEL org.opencontainers.image.authors='airship-discuss@lists.airshipit.org, irc://#airshipit@freenode' \
@ -27,15 +27,15 @@ RUN set -xe \
&& pip3 install --no-cache-dir \
munch \
simplejson \
oslo.rootwrap==7.0.1 \
python-openstackclient==6.2.0 \
python-glanceclient==4.3.0 \
python-novaclient==18.3.0 \
python-neutronclient==9.0.0 \
python-cinderclient==9.3.0 \
python-heatclient==3.2.0 \
python-swiftclient==4.2.0 \
osc-placement \
oslo.rootwrap==7.2.0 \
python-openstackclient==6.6.1 \
python-swiftclient==4.5.0 \
python-glanceclient==4.5.0 \
python-novaclient==18.6.0 \
python-neutronclient==11.2.0 \
python-cinderclient==9.5.0 \
python-heatclient==3.5.0 \
osc-placement==4.3.0 \
&& rm -rf /var/lib/apt/lists/*
RUN PYTHON_LOCATION=$(pip3 show oslo.rootwrap|grep Location|awk '{print $2}') \

View File

@ -1,4 +1,4 @@
ARG FROM=docker.io/ubuntu:jammy
ARG FROM=quay.io/airshipit/ubuntu:jammy
FROM ${FROM}
LABEL org.opencontainers.image.authors='airship-discuss@lists.airshipit.org, irc://#airshipit@freenode' \
@ -8,7 +8,7 @@ LABEL org.opencontainers.image.authors='airship-discuss@lists.airshipit.org, irc
org.opencontainers.image.vendor='The Airship Authors' \
org.opencontainers.image.licenses='Apache-2.0'
ARG KUBE_VERSION=1.31.0
ARG KUBE_VERSION=1.32.0
ARG DEBIAN_FRONTEND=noninteractive
@ -40,9 +40,9 @@ RUN set -xe \
&& pip3 install --no-cache-dir \
munch \
simplejson \
oslo.rootwrap==7.0.1 \
python-openstackclient==6.2.0 \
python-swiftclient==4.2.0 \
oslo.rootwrap==7.2.0 \
python-openstackclient==6.6.1 \
python-swiftclient==4.5.0 \
&& curl --silent -L https://dl.k8s.io/v${KUBE_VERSION}/kubernetes-client-linux-amd64.tar.gz \
| tar -zC /usr/bin --strip-components=3 --wildcards -x "*/*/*/kubectl" \
&& curl -o /tmp/rclone.deb https://downloads.rclone.org/rclone-current-linux-amd64.deb \

View File

@ -109,19 +109,17 @@ class UtilityContainerClient(object):
raise KubeEnvVarException(kube_server_key)
if os.environ.get(region_key) is not None:
conf.set_cluster(
name=os.environ.get(region_key),
server=server,
insecure_skip_tls_verify=True)
conf.set_cluster(name=os.environ.get(region_key),
server=server,
insecure_skip_tls_verify=True)
else:
raise KubeEnvVarException(region_key)
username_key = 'OS_USERNAME'
if os.environ.get(username_key) is not None:
conf.set_context(
name='context_uc',
user=os.environ.get(username_key),
namespace='utility',
cluster=os.environ.get(region_key))
conf.set_context(name='context_uc',
user=os.environ.get(username_key),
namespace='utility',
cluster=os.environ.get(region_key))
else:
raise KubeEnvVarException(username_key)
conf.use_context('context_uc')
@ -158,8 +156,8 @@ class UtilityContainerClient(object):
# Get the selectors from the deployment object returned.
selector_dict = deployment[0].spec.selector.match_labels
# Convert the selector dictionary to a string object.
selectors = ', '.join(
"{!s}={!s}".format(k, v) for (k, v) in selector_dict.items())
selectors = ', '.join("{!s}={!s}".format(k, v)
for (k, v) in selector_dict.items())
return selectors
else:
raise KubeDeploymentNotFoundException(

View File

@ -36,17 +36,14 @@ class TestUtilityContainerClient(unittest.TestCase):
@patch('kube_utility_container.services.utility_container_client.'
'UtilityContainerClient._get_exec_cmd_output')
def test_exec_cmd(self, mock_get_exec_cmd_output, mock_utility_container):
v1_container_obj = Mock(
spec=client.V1Container(
name='ceph_utility', image='sha', image_pull_policy='Always'))
v1_container_obj = Mock(spec=client.V1Container(
name='ceph_utility', image='sha', image_pull_policy='Always'))
v1_spec_obj = Mock(spec=client.V1PodSpec(containers=v1_container_obj))
v1_meta_obj = Mock(
spec=client.V1ObjectMeta(
name='clcp-ceph-utility-5454794df8-xqwj5', labels='app=ceph'))
v1_meta_obj = Mock(spec=client.V1ObjectMeta(
name='clcp-ceph-utility-5454794df8-xqwj5', labels='app=ceph'))
v1_pod_obj = Mock(
spec=client.V1Pod(
api_version='v1', metadata=v1_meta_obj, spec=v1_spec_obj))
v1_pod_obj = Mock(spec=client.V1Pod(
api_version='v1', metadata=v1_meta_obj, spec=v1_spec_obj))
mock_utility_container.return_value = v1_pod_obj
mock_get_exec_cmd_output.return_value = "Health OK"
@ -58,9 +55,10 @@ class TestUtilityContainerClient(unittest.TestCase):
self.assertIsInstance(response, str)
self.assertEqual(response, mock_get_exec_cmd_output.return_value)
@patch('kube_utility_container.services.utility_container_client.'
'UtilityContainerClient._get_utility_container',
side_effect=KubePodNotFoundException('utility'))
@patch(
'kube_utility_container.services.utility_container_client.'
'UtilityContainerClient._get_utility_container',
side_effect=KubePodNotFoundException('utility'))
def test_exec_cmd_no_utility_pods_returned(self, mock_list_pods):
mock_list_pods.return_value = []
utility_container_client = UtilityContainerClient()
@ -68,9 +66,10 @@ class TestUtilityContainerClient(unittest.TestCase):
utility_container_client.exec_cmd('clcp-utility',
['utilscli', 'ceph', 'status'])
@patch('kube_utility_container.services.utility_container_client.'
'UtilityContainerClient._get_deployment_selectors',
side_effect=KubeDeploymentNotFoundException('utility'))
@patch(
'kube_utility_container.services.utility_container_client.'
'UtilityContainerClient._get_deployment_selectors',
side_effect=KubeDeploymentNotFoundException('utility'))
@patch('kube_utility_container.services.utility_container_client.'
'UtilityContainerClient._corev1api_api_client')
def test_exec_cmd_no_deployments_returned(self, deployment, api_client):
@ -81,12 +80,14 @@ class TestUtilityContainerClient(unittest.TestCase):
utility_container_client.exec_cmd('clcp-ceph-utility',
['utilscli', 'ceph', 'status'])
@patch('kube_utility_container.services.utility_container_client.'
'UtilityContainerClient._get_deployment_selectors',
side_effect=KubeEnvVarException('utility'))
@patch('kube_utility_container.services.utility_container_client.'
'UtilityContainerClient._appsv1api_api_client',
side_effect=KubeEnvVarException('KUBECONFIG'))
@patch(
'kube_utility_container.services.utility_container_client.'
'UtilityContainerClient._get_deployment_selectors',
side_effect=KubeEnvVarException('utility'))
@patch(
'kube_utility_container.services.utility_container_client.'
'UtilityContainerClient._appsv1api_api_client',
side_effect=KubeEnvVarException('KUBECONFIG'))
def test_env_var_kubeconfig_not_set_raises_exception(
self, deployment, api_client):
deployment.return_value = []

View File

@ -21,6 +21,7 @@ from kube_utility_container.services.dataloader import \
class TestBase(unittest.TestCase):
@classmethod
def setUpClass(cls):
cls.client = UtilityContainerClient()

View File

@ -23,6 +23,7 @@ from kube_utility_container.tests.utility.base import TestBase
class TestCalicoUtilityContainer(TestBase):
@classmethod
def setUpClass(cls):
cls.deployment_name = cls._get_deployment_name("calicoctl-utility")
@ -88,9 +89,10 @@ class TestCalicoUtilityContainer(TestBase):
f"is not having expected apparmor profile set")
self.assertEqual(0, len(failures), failures)
@patch('kube_utility_container.services.utility_container_client.'
'UtilityContainerClient._get_utility_container',
side_effect=KubePodNotFoundException('utility'))
@patch(
'kube_utility_container.services.utility_container_client.'
'UtilityContainerClient._get_utility_container',
side_effect=KubePodNotFoundException('utility'))
def test_exec_cmd_no_calicoctl_utility_pods_returned(self, mock_list_pods):
mock_list_pods.return_value = []
utility_container_client = UtilityContainerClient()

View File

@ -16,6 +16,7 @@ from kube_utility_container.tests.utility.base import TestBase
class TestCephUtilityContainer(TestBase):
@classmethod
def setUpClass(cls):
cls.deployment_name = cls._get_deployment_name("ceph-utility")

View File

@ -27,6 +27,7 @@ node = os.uname().nodename
class TestComputeUtilityContainer(TestBase):
@classmethod
def setUpClass(cls):
cls.deployment_name = cls._get_deployment_name("compute-utility")
@ -105,9 +106,10 @@ class TestComputeUtilityContainer(TestBase):
f"is not having expected apparmor profile set")
self.assertEqual(0, len(failures), failures)
@patch('kube_utility_container.services.utility_container_client.'
'UtilityContainerClient._get_utility_container',
side_effect=KubePodNotFoundException('utility'))
@patch(
'kube_utility_container.services.utility_container_client.'
'UtilityContainerClient._get_utility_container',
side_effect=KubePodNotFoundException('utility'))
def test_exec_cmd_no_compute_utility_pods_returned(self, mock_list_pods):
mock_list_pods.return_value = []
utility_container_client = UtilityContainerClient()

View File

@ -25,6 +25,7 @@ from kube_utility_container.tests.utility.base import TestBase
class TestEtcdUtilityContainer(TestBase):
@classmethod
def setUpClass(cls):
cls.deployment_name = cls._get_deployment_name("etcdctl-utility")
@ -100,9 +101,10 @@ class TestEtcdUtilityContainer(TestBase):
self.assertNotEqual(0, len(latest_pod_logs),
"Not able to get the latest logs")
@patch('kube_utility_container.services.utility_container_client.'
'UtilityContainerClient._get_utility_container',
side_effect=KubePodNotFoundException('utility'))
@patch(
'kube_utility_container.services.utility_container_client.'
'UtilityContainerClient._get_utility_container',
side_effect=KubePodNotFoundException('utility'))
def test_exec_cmd_no_etcdctl_utility_pods_returned(self, mock_list_pods):
mock_list_pods.return_value = []
utility_container_client = UtilityContainerClient()

View File

@ -17,6 +17,7 @@ from kube_utility_container.tests.utility.base import TestBase
class TestMysqlclientUtilityContainer(TestBase):
@classmethod
def setUpClass(cls):
cls.deployment_name = cls._get_deployment_name("mysqlclient-utility")

View File

@ -23,6 +23,7 @@ from kube_utility_container.tests.utility.base import TestBase
class TestOpenstackUtilityContainer(TestBase):
@classmethod
def setUpClass(cls):
cls.deployment_name = cls._get_deployment_name("openstack-utility")
@ -88,9 +89,10 @@ class TestOpenstackUtilityContainer(TestBase):
f"is not having expected apparmor profile set")
self.assertEqual(0, len(failures), failures)
@patch('kube_utility_container.services.utility_container_client.'
'UtilityContainerClient._get_utility_container',
side_effect=KubePodNotFoundException('utility'))
@patch(
'kube_utility_container.services.utility_container_client.'
'UtilityContainerClient._get_utility_container',
side_effect=KubePodNotFoundException('utility'))
def test_exec_cmd_no_openstack_utility_pods_returned(self, mock_list_pods):
mock_list_pods.return_value = []
utility_container_client = UtilityContainerClient()

View File

@ -18,6 +18,7 @@ from kube_utility_container.tests.utility.base import TestBase
class TestPostgresqlUtilityContainer(TestBase):
@classmethod
def setUpClass(cls):
cls.deployment_name = cls._get_deployment_name("postgresql-utility")

View File

@ -16,12 +16,29 @@ urllib3
# chardet>=3.0.2,<3.1.0
# urllib3>=1.21.1,<=1.25
# Openstack Antelope 2023.1
# https://releases.openstack.org/antelope/index.html
# Openstack Caracal 2024.1
# https://releases.openstack.org/caracal/index.html
barbican==18.0.0
oslo.config==9.1.1
oslo.context==5.1.1
oslo.i18n==6.0.0
oslo.log==5.2.0
oslo.serialization==5.1.1
oslo.utils==6.1.0
python-barbicanclient==5.7.0
python-keystoneclient==5.4.0
keystoneauth1==5.6.0
keystonemiddleware==10.6.0
oslo.cache==3.7.0
oslo.concurrency==6.0.0
oslo.config==9.4.0
oslo.context==5.5.0
oslo.db==15.0.0
oslo.i18n==6.3.0
oslo.log==5.5.1
oslo.messaging==14.7.2
oslo.metrics==0.8.0
oslo.middleware==6.1.0
oslo.policy==4.3.0
oslo.serialization==5.4.1
oslo.service==3.4.1
oslo.upgradecheck==2.3.0
oslo.utils==7.1.0
oslo.versionedobjects==3.3.0

View File

@ -1,41 +1,108 @@
alembic==1.14.0
amqp==5.3.1
attrs==24.3.0
autopage==0.5.2
barbican==18.0.0
bcrypt==4.2.1
cachetools==5.5.0
certifi==2024.8.30
castellan==5.2.0
certifi==2024.12.14
cffi==1.17.1
chardet==5.2.0
charset-normalizer==3.3.2
charset-normalizer==3.4.0
cliff==4.8.0
cmd2==2.5.8
cryptography==44.0.0
debtcollector==3.0.0
durationpy==0.7
google-auth==2.35.0
decorator==5.1.1
dnspython==2.7.0
dogpile.cache==1.3.3
durationpy==0.9
eventlet==0.38.2
fasteners==0.19
futurist==3.0.0
google-auth==2.37.0
greenlet==3.1.1
idna==3.10
iso8601==2.1.0
Jinja2==3.1.5
jsonschema==4.23.0
jsonschema-specifications==2024.10.1
keystoneauth1==5.6.0
keystonemiddleware==10.6.0
kombu==5.4.2
kubeconfig==1.1.1
kubernetes==31.0.0
ldap3==2.9.1
logutils==0.3.5
Mako==1.3.8
MarkupSafe==3.0.2
microversion-parse==2.0.0
msgpack==1.1.0
netaddr==1.3.0
netifaces==0.11.0
oauthlib==3.2.2
oslo.config==9.1.1
oslo.context==5.1.1
oslo.i18n==6.0.0
oslo.log==5.2.0
oslo.serialization==5.1.1
oslo.utils==6.1.0
packaging==24.1
os-service-types==1.7.0
oslo.cache==3.7.0
oslo.concurrency==6.0.0
oslo.config==9.4.0
oslo.context==5.5.0
oslo.db==15.0.0
oslo.i18n==6.3.0
oslo.log==5.5.1
oslo.messaging==14.7.2
oslo.metrics==0.8.0
oslo.middleware==6.1.0
oslo.policy==4.3.0
oslo.serialization==5.4.1
oslo.service==3.4.1
oslo.upgradecheck==2.3.0
oslo.utils==7.1.0
oslo.versionedobjects==3.3.0
packaging==24.2
Paste==3.10.1
PasteDeploy==3.1.0
pbr==6.1.0
pecan==1.5.1
pip==24.1
prettytable==3.12.0
prometheus_client==0.21.1
pyasn1==0.6.1
pyasn1_modules==0.4.1
pyparsing==3.1.4
pycadf==4.0.0
pycparser==2.22
PyJWT==2.10.1
pyOpenSSL==24.3.0
pyparsing==3.2.0
pyperclip==1.9.0
python-barbicanclient==5.7.0
python-dateutil==2.9.0.post0
python-keystoneclient==5.4.0
pytz==2024.2
PyYAML==6.0.2
referencing==0.35.1
repoze.lru==0.7
requests==2.32.3
requests-oauthlib==2.0.0
rfc3986==2.0.0
Routes==2.5.1
rpds-py==0.22.3
rsa==4.9
setuptools==70.1.0
six==1.16.0
stevedore==5.3.0
urllib3==2.2.3
six==1.17.0
SQLAlchemy==2.0.36
statsd==4.0.1
stevedore==5.4.0
testresources==2.0.1
testscenarios==0.5.0
testtools==2.7.2
typing_extensions==4.12.2
tzdata==2024.2
urllib3==2.3.0
vine==5.1.0
wcwidth==0.2.13
WebOb==1.8.9
websocket-client==1.8.0
wheel==0.43.0
wrapt==1.16.0
wrapt==1.17.0
yappi==1.6.10

View File

@ -4,22 +4,20 @@
# When modifying this file `tox -e freeze-testreq` must be run to regenerate the test-requirements-frozen.txt.
astroid==2.11.7
astroid
bandit==1.6.0
flake8==3.8.4
hacking==4.1.0
flake8
hacking
pylint==2.14.5
pylint
python-subunit==1.4.0 # Apache-2.0/BSD
oslotest==3.7.0 # Apache-2.0
stestr==3.2.1 # Apache-2.0
testtools==2.5.0
mock==5.0.2
stestr
mock
nose==1.3.7
yapf==0.24.0
pytest >= 3.0
pytest-cov==4.0.0
yapf
pytest
pytest-cov
chardet
# chardet==3.0.4

View File

@ -35,7 +35,7 @@
FEATURE_GATES: "{{ osh_params.feature_gates | default('') }}"
RUN_HELM_TESTS: "{{ run_helm_tests | default('yes') }}"
PL_SITE: "{{ site | default('airskiff') }}"
HELM_ARTIFACT_URL: "{{ HELM_ARTIFACT_URL | default('https://get.helm.sh/helm-v3.13.2-linux-amd64.tar.gz') }}"
HELM_ARTIFACT_URL: "{{ HELM_ARTIFACT_URL | default('https://get.helm.sh/helm-v3.15.2-linux-amd64.tar.gz') }}"
HTK_COMMIT: "{{ HTK_COMMIT | default('cfff60ec10a6c386f38db79bb9f59a552c2b032f') }}"
OSH_INFRA_COMMIT: "{{ OSH_INFRA_COMMIT | default('cfff60ec10a6c386f38db79bb9f59a552c2b032f') }}"
OSH_COMMIT: "{{ OSH_COMMIT | default('2d9457e34ca4200ed631466bd87569b0214c92e7') }}"

View File

@ -33,7 +33,7 @@
FEATURE_GATES: "{{ osh_params.feature_gates | default('') }}"
RUN_HELM_TESTS: "{{ run_helm_tests | default('yes') }}"
PL_SITE: "{{ site | default('airskiff') }}"
HELM_ARTIFACT_URL: "{{ HELM_ARTIFACT_URL | default('https://get.helm.sh/helm-v3.13.2-linux-amd64.tar.gz') }}"
HELM_ARTIFACT_URL: "{{ HELM_ARTIFACT_URL | default('https://get.helm.sh/helm-v3.15.2-linux-amd64.tar.gz') }}"
HTK_COMMIT: "{{ HTK_COMMIT | default('cfff60ec10a6c386f38db79bb9f59a552c2b032f') }}"
OSH_INFRA_COMMIT: "{{ OSH_INFRA_COMMIT | default('cfff60ec10a6c386f38db79bb9f59a552c2b032f') }}"
OSH_COMMIT: "{{ OSH_COMMIT | default('2d9457e34ca4200ed631466bd87569b0214c92e7') }}"

View File

@ -17,7 +17,7 @@
set -x
HELM=$1
HELM_ARTIFACT_URL=${HELM_ARTIFACT_URL:-"https://get.helm.sh/helm-v3.13.2-linux-amd64.tar.gz"}
HELM_ARTIFACT_URL=${HELM_ARTIFACT_URL:-"https://get.helm.sh/helm-v3.15.2-linux-amd64.tar.gz"}
function install_helm_binary {