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:
parent
fef241da50
commit
e2b4199c4c
@ -1,4 +1,4 @@
|
|||||||
ARG FROM=docker.io/ubuntu:jammy
|
ARG FROM=quay.io/airshipit/ubuntu:jammy
|
||||||
ARG DOCKER_REGISTRY=quay.io
|
ARG DOCKER_REGISTRY=quay.io
|
||||||
ARG CALICOCTL_IMAGE_PREFIX=calico/ctl
|
ARG CALICOCTL_IMAGE_PREFIX=calico/ctl
|
||||||
ARG CALICOCTL_VERSION=v3.28.1
|
ARG CALICOCTL_VERSION=v3.28.1
|
||||||
@ -33,7 +33,7 @@ RUN set -xe \
|
|||||||
python3-pip \
|
python3-pip \
|
||||||
&& curl -s https://bootstrap.pypa.io/get-pip.py | python3 \
|
&& curl -s https://bootstrap.pypa.io/get-pip.py | python3 \
|
||||||
&& pip3 install --no-cache-dir \
|
&& pip3 install --no-cache-dir \
|
||||||
oslo.rootwrap==7.0.1 \
|
oslo.rootwrap==7.2.0 \
|
||||||
&& rm -rf /var/lib/apt/lists/*
|
&& rm -rf /var/lib/apt/lists/*
|
||||||
|
|
||||||
RUN PYTHON_LOCATION=$(pip3 show oslo.rootwrap|grep Location|awk '{print $2}') \
|
RUN PYTHON_LOCATION=$(pip3 show oslo.rootwrap|grep Location|awk '{print $2}') \
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
ARG FROM=docker.io/ubuntu:jammy
|
ARG FROM=quay.io/airshipit/ubuntu:jammy
|
||||||
ARG DOCKER_REGISTRY=quay.io
|
ARG DOCKER_REGISTRY=quay.io
|
||||||
ARG CALICOCTL_IMAGE_PREFIX=tigera/calicoctl
|
ARG CALICOCTL_IMAGE_PREFIX=tigera/calicoctl
|
||||||
ARG CALICOCTL_VERSION=v3.28.1
|
ARG CALICOCTL_VERSION=v3.28.1
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
ARG FROM=docker.io/ubuntu:jammy
|
ARG FROM=quay.io/airshipit/ubuntu:jammy
|
||||||
FROM ${FROM}
|
FROM ${FROM}
|
||||||
|
|
||||||
LABEL org.opencontainers.image.authors='airship-discuss@lists.airshipit.org, irc://#airshipit@freenode' \
|
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
|
# Reef 18.2.2
|
||||||
ARG CEPH_RELEASE=reef
|
ARG CEPH_RELEASE=reef
|
||||||
ARG CEPH_RELEASE_TAG=18.2.2-1~jammy
|
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_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
|
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 \
|
orphan-sysvinit-scripts \
|
||||||
&& curl -s https://bootstrap.pypa.io/get-pip.py | python3 \
|
&& curl -s https://bootstrap.pypa.io/get-pip.py | python3 \
|
||||||
&& pip3 install --no-cache-dir \
|
&& 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 \
|
&& 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" \
|
| tar -zC /usr/bin --strip-components=3 --wildcards -x "*/*/*/kubectl" \
|
||||||
&& rm -rf /var/lib/apt/lists/*
|
&& rm -rf /var/lib/apt/lists/*
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
ARG FROM=docker.io/ubuntu:jammy
|
ARG FROM=quay.io/airshipit/ubuntu:jammy
|
||||||
FROM ${FROM}
|
FROM ${FROM}
|
||||||
|
|
||||||
LABEL org.opencontainers.image.authors='airship-discuss@lists.airshipit.org, irc://#airshipit@freenode' \
|
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.vendor='The Airship Authors' \
|
||||||
org.opencontainers.image.licenses='Apache-2.0'
|
org.opencontainers.image.licenses='Apache-2.0'
|
||||||
|
|
||||||
ARG KUBE_VERSION=1.31.0
|
ARG KUBE_VERSION=1.32.0
|
||||||
|
|
||||||
ARG DEBIAN_FRONTEND=noninteractive
|
ARG DEBIAN_FRONTEND=noninteractive
|
||||||
|
|
||||||
@ -38,7 +38,7 @@ RUN set -xe \
|
|||||||
orphan-sysvinit-scripts \
|
orphan-sysvinit-scripts \
|
||||||
&& curl -s https://bootstrap.pypa.io/get-pip.py | python3 \
|
&& curl -s https://bootstrap.pypa.io/get-pip.py | python3 \
|
||||||
&& pip3 install --no-cache-dir \
|
&& 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 \
|
&& 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" \
|
| tar -zC /usr/bin --strip-components=3 --wildcards -x "*/*/*/kubectl" \
|
||||||
&& rm -rf /var/lib/apt/lists/*
|
&& rm -rf /var/lib/apt/lists/*
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
ARG FROM=docker.io/ubuntu:jammy
|
ARG FROM=quay.io/airshipit/ubuntu:jammy
|
||||||
FROM ${FROM}
|
FROM ${FROM}
|
||||||
|
|
||||||
LABEL org.opencontainers.image.authors='airship-discuss@lists.airshipit.org, irc://#airshipit@freenode' \
|
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'
|
org.opencontainers.image.licenses='Apache-2.0'
|
||||||
|
|
||||||
ARG ETCDCTL_VERSION=3.5.12
|
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 GOOGLE_URL=https://storage.googleapis.com/etcd
|
||||||
ENV GITHUB_URL=https://github.com/etcd-io/etcd/releases/download
|
ENV GITHUB_URL=https://github.com/etcd-io/etcd/releases/download
|
||||||
@ -39,9 +39,9 @@ RUN set -xe \
|
|||||||
&& pip3 install --no-cache-dir \
|
&& pip3 install --no-cache-dir \
|
||||||
munch \
|
munch \
|
||||||
simplejson \
|
simplejson \
|
||||||
oslo.rootwrap==7.0.1 \
|
oslo.rootwrap==7.2.0 \
|
||||||
python-openstackclient==6.2.0 \
|
python-openstackclient==6.6.1 \
|
||||||
python-swiftclient==4.2.0 \
|
python-swiftclient==4.5.0 \
|
||||||
&& curl --silent -L "${DOWNLOAD_URL}/v${ETCDCTL_VERSION}/etcd-v${ETCDCTL_VERSION}-linux-amd64.tar.gz" \
|
&& 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" \
|
| 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 \
|
&& curl --silent -L https://dl.k8s.io/v${KUBE_VERSION}/kubernetes-client-linux-amd64.tar.gz \
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
ARG FROM=docker.io/ubuntu:jammy
|
ARG FROM=quay.io/airshipit/ubuntu:jammy
|
||||||
FROM ${FROM}
|
FROM ${FROM}
|
||||||
|
|
||||||
LABEL org.opencontainers.image.authors='airship-discuss@lists.airshipit.org, irc://#airshipit@freenode' \
|
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.vendor='The Airship Authors' \
|
||||||
org.opencontainers.image.licenses='Apache-2.0'
|
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 MARIADB_VERSION=10.6
|
||||||
ARG PERCONA_TOOLKIT_VERSION=3.5.7
|
ARG PERCONA_TOOLKIT_VERSION=3.5.7
|
||||||
|
|
||||||
@ -45,9 +45,9 @@ RUN set -xe \
|
|||||||
&& pip3 install --no-cache-dir \
|
&& pip3 install --no-cache-dir \
|
||||||
munch \
|
munch \
|
||||||
simplejson \
|
simplejson \
|
||||||
oslo.rootwrap==7.0.1 \
|
oslo.rootwrap==7.2.0 \
|
||||||
python-openstackclient==6.2.0 \
|
python-openstackclient==6.6.1 \
|
||||||
python-swiftclient==4.2.0 \
|
python-swiftclient==4.5.0 \
|
||||||
&& sed -i 's/$PrivDropToUser syslog/$PrivDropToUser nobody/' /etc/rsyslog.conf \
|
&& 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 \
|
&& 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" \
|
| tar -zC /usr/bin --strip-components=3 --wildcards -x "*/*/*/kubectl" \
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
ARG FROM=docker.io/ubuntu:jammy
|
ARG FROM=quay.io/airshipit/ubuntu:jammy
|
||||||
FROM ${FROM}
|
FROM ${FROM}
|
||||||
|
|
||||||
LABEL org.opencontainers.image.authors='airship-discuss@lists.airshipit.org, irc://#airshipit@freenode' \
|
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 \
|
&& pip3 install --no-cache-dir \
|
||||||
munch \
|
munch \
|
||||||
simplejson \
|
simplejson \
|
||||||
oslo.rootwrap==7.0.1 \
|
oslo.rootwrap==7.2.0 \
|
||||||
python-openstackclient==6.2.0 \
|
python-openstackclient==6.6.1 \
|
||||||
python-glanceclient==4.3.0 \
|
python-swiftclient==4.5.0 \
|
||||||
python-novaclient==18.3.0 \
|
python-glanceclient==4.5.0 \
|
||||||
python-neutronclient==9.0.0 \
|
python-novaclient==18.6.0 \
|
||||||
python-cinderclient==9.3.0 \
|
python-neutronclient==11.2.0 \
|
||||||
python-heatclient==3.2.0 \
|
python-cinderclient==9.5.0 \
|
||||||
python-swiftclient==4.2.0 \
|
python-heatclient==3.5.0 \
|
||||||
osc-placement \
|
osc-placement==4.3.0 \
|
||||||
&& rm -rf /var/lib/apt/lists/*
|
&& rm -rf /var/lib/apt/lists/*
|
||||||
|
|
||||||
RUN PYTHON_LOCATION=$(pip3 show oslo.rootwrap|grep Location|awk '{print $2}') \
|
RUN PYTHON_LOCATION=$(pip3 show oslo.rootwrap|grep Location|awk '{print $2}') \
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
ARG FROM=docker.io/ubuntu:jammy
|
ARG FROM=quay.io/airshipit/ubuntu:jammy
|
||||||
FROM ${FROM}
|
FROM ${FROM}
|
||||||
|
|
||||||
LABEL org.opencontainers.image.authors='airship-discuss@lists.airshipit.org, irc://#airshipit@freenode' \
|
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.vendor='The Airship Authors' \
|
||||||
org.opencontainers.image.licenses='Apache-2.0'
|
org.opencontainers.image.licenses='Apache-2.0'
|
||||||
|
|
||||||
ARG KUBE_VERSION=1.31.0
|
ARG KUBE_VERSION=1.32.0
|
||||||
|
|
||||||
ARG DEBIAN_FRONTEND=noninteractive
|
ARG DEBIAN_FRONTEND=noninteractive
|
||||||
|
|
||||||
@ -40,9 +40,9 @@ RUN set -xe \
|
|||||||
&& pip3 install --no-cache-dir \
|
&& pip3 install --no-cache-dir \
|
||||||
munch \
|
munch \
|
||||||
simplejson \
|
simplejson \
|
||||||
oslo.rootwrap==7.0.1 \
|
oslo.rootwrap==7.2.0 \
|
||||||
python-openstackclient==6.2.0 \
|
python-openstackclient==6.6.1 \
|
||||||
python-swiftclient==4.2.0 \
|
python-swiftclient==4.5.0 \
|
||||||
&& curl --silent -L https://dl.k8s.io/v${KUBE_VERSION}/kubernetes-client-linux-amd64.tar.gz \
|
&& 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" \
|
| tar -zC /usr/bin --strip-components=3 --wildcards -x "*/*/*/kubectl" \
|
||||||
&& curl -o /tmp/rclone.deb https://downloads.rclone.org/rclone-current-linux-amd64.deb \
|
&& curl -o /tmp/rclone.deb https://downloads.rclone.org/rclone-current-linux-amd64.deb \
|
||||||
|
@ -109,16 +109,14 @@ class UtilityContainerClient(object):
|
|||||||
raise KubeEnvVarException(kube_server_key)
|
raise KubeEnvVarException(kube_server_key)
|
||||||
|
|
||||||
if os.environ.get(region_key) is not None:
|
if os.environ.get(region_key) is not None:
|
||||||
conf.set_cluster(
|
conf.set_cluster(name=os.environ.get(region_key),
|
||||||
name=os.environ.get(region_key),
|
|
||||||
server=server,
|
server=server,
|
||||||
insecure_skip_tls_verify=True)
|
insecure_skip_tls_verify=True)
|
||||||
else:
|
else:
|
||||||
raise KubeEnvVarException(region_key)
|
raise KubeEnvVarException(region_key)
|
||||||
username_key = 'OS_USERNAME'
|
username_key = 'OS_USERNAME'
|
||||||
if os.environ.get(username_key) is not None:
|
if os.environ.get(username_key) is not None:
|
||||||
conf.set_context(
|
conf.set_context(name='context_uc',
|
||||||
name='context_uc',
|
|
||||||
user=os.environ.get(username_key),
|
user=os.environ.get(username_key),
|
||||||
namespace='utility',
|
namespace='utility',
|
||||||
cluster=os.environ.get(region_key))
|
cluster=os.environ.get(region_key))
|
||||||
@ -158,8 +156,8 @@ class UtilityContainerClient(object):
|
|||||||
# Get the selectors from the deployment object returned.
|
# Get the selectors from the deployment object returned.
|
||||||
selector_dict = deployment[0].spec.selector.match_labels
|
selector_dict = deployment[0].spec.selector.match_labels
|
||||||
# Convert the selector dictionary to a string object.
|
# Convert the selector dictionary to a string object.
|
||||||
selectors = ', '.join(
|
selectors = ', '.join("{!s}={!s}".format(k, v)
|
||||||
"{!s}={!s}".format(k, v) for (k, v) in selector_dict.items())
|
for (k, v) in selector_dict.items())
|
||||||
return selectors
|
return selectors
|
||||||
else:
|
else:
|
||||||
raise KubeDeploymentNotFoundException(
|
raise KubeDeploymentNotFoundException(
|
||||||
|
@ -36,16 +36,13 @@ class TestUtilityContainerClient(unittest.TestCase):
|
|||||||
@patch('kube_utility_container.services.utility_container_client.'
|
@patch('kube_utility_container.services.utility_container_client.'
|
||||||
'UtilityContainerClient._get_exec_cmd_output')
|
'UtilityContainerClient._get_exec_cmd_output')
|
||||||
def test_exec_cmd(self, mock_get_exec_cmd_output, mock_utility_container):
|
def test_exec_cmd(self, mock_get_exec_cmd_output, mock_utility_container):
|
||||||
v1_container_obj = Mock(
|
v1_container_obj = Mock(spec=client.V1Container(
|
||||||
spec=client.V1Container(
|
|
||||||
name='ceph_utility', image='sha', image_pull_policy='Always'))
|
name='ceph_utility', image='sha', image_pull_policy='Always'))
|
||||||
v1_spec_obj = Mock(spec=client.V1PodSpec(containers=v1_container_obj))
|
v1_spec_obj = Mock(spec=client.V1PodSpec(containers=v1_container_obj))
|
||||||
v1_meta_obj = Mock(
|
v1_meta_obj = Mock(spec=client.V1ObjectMeta(
|
||||||
spec=client.V1ObjectMeta(
|
|
||||||
name='clcp-ceph-utility-5454794df8-xqwj5', labels='app=ceph'))
|
name='clcp-ceph-utility-5454794df8-xqwj5', labels='app=ceph'))
|
||||||
|
|
||||||
v1_pod_obj = Mock(
|
v1_pod_obj = Mock(spec=client.V1Pod(
|
||||||
spec=client.V1Pod(
|
|
||||||
api_version='v1', metadata=v1_meta_obj, spec=v1_spec_obj))
|
api_version='v1', metadata=v1_meta_obj, spec=v1_spec_obj))
|
||||||
mock_utility_container.return_value = v1_pod_obj
|
mock_utility_container.return_value = v1_pod_obj
|
||||||
mock_get_exec_cmd_output.return_value = "Health OK"
|
mock_get_exec_cmd_output.return_value = "Health OK"
|
||||||
@ -58,7 +55,8 @@ class TestUtilityContainerClient(unittest.TestCase):
|
|||||||
self.assertIsInstance(response, str)
|
self.assertIsInstance(response, str)
|
||||||
self.assertEqual(response, mock_get_exec_cmd_output.return_value)
|
self.assertEqual(response, mock_get_exec_cmd_output.return_value)
|
||||||
|
|
||||||
@patch('kube_utility_container.services.utility_container_client.'
|
@patch(
|
||||||
|
'kube_utility_container.services.utility_container_client.'
|
||||||
'UtilityContainerClient._get_utility_container',
|
'UtilityContainerClient._get_utility_container',
|
||||||
side_effect=KubePodNotFoundException('utility'))
|
side_effect=KubePodNotFoundException('utility'))
|
||||||
def test_exec_cmd_no_utility_pods_returned(self, mock_list_pods):
|
def test_exec_cmd_no_utility_pods_returned(self, mock_list_pods):
|
||||||
@ -68,7 +66,8 @@ class TestUtilityContainerClient(unittest.TestCase):
|
|||||||
utility_container_client.exec_cmd('clcp-utility',
|
utility_container_client.exec_cmd('clcp-utility',
|
||||||
['utilscli', 'ceph', 'status'])
|
['utilscli', 'ceph', 'status'])
|
||||||
|
|
||||||
@patch('kube_utility_container.services.utility_container_client.'
|
@patch(
|
||||||
|
'kube_utility_container.services.utility_container_client.'
|
||||||
'UtilityContainerClient._get_deployment_selectors',
|
'UtilityContainerClient._get_deployment_selectors',
|
||||||
side_effect=KubeDeploymentNotFoundException('utility'))
|
side_effect=KubeDeploymentNotFoundException('utility'))
|
||||||
@patch('kube_utility_container.services.utility_container_client.'
|
@patch('kube_utility_container.services.utility_container_client.'
|
||||||
@ -81,10 +80,12 @@ class TestUtilityContainerClient(unittest.TestCase):
|
|||||||
utility_container_client.exec_cmd('clcp-ceph-utility',
|
utility_container_client.exec_cmd('clcp-ceph-utility',
|
||||||
['utilscli', 'ceph', 'status'])
|
['utilscli', 'ceph', 'status'])
|
||||||
|
|
||||||
@patch('kube_utility_container.services.utility_container_client.'
|
@patch(
|
||||||
|
'kube_utility_container.services.utility_container_client.'
|
||||||
'UtilityContainerClient._get_deployment_selectors',
|
'UtilityContainerClient._get_deployment_selectors',
|
||||||
side_effect=KubeEnvVarException('utility'))
|
side_effect=KubeEnvVarException('utility'))
|
||||||
@patch('kube_utility_container.services.utility_container_client.'
|
@patch(
|
||||||
|
'kube_utility_container.services.utility_container_client.'
|
||||||
'UtilityContainerClient._appsv1api_api_client',
|
'UtilityContainerClient._appsv1api_api_client',
|
||||||
side_effect=KubeEnvVarException('KUBECONFIG'))
|
side_effect=KubeEnvVarException('KUBECONFIG'))
|
||||||
def test_env_var_kubeconfig_not_set_raises_exception(
|
def test_env_var_kubeconfig_not_set_raises_exception(
|
||||||
|
@ -21,6 +21,7 @@ from kube_utility_container.services.dataloader import \
|
|||||||
|
|
||||||
|
|
||||||
class TestBase(unittest.TestCase):
|
class TestBase(unittest.TestCase):
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def setUpClass(cls):
|
def setUpClass(cls):
|
||||||
cls.client = UtilityContainerClient()
|
cls.client = UtilityContainerClient()
|
||||||
|
@ -23,6 +23,7 @@ from kube_utility_container.tests.utility.base import TestBase
|
|||||||
|
|
||||||
|
|
||||||
class TestCalicoUtilityContainer(TestBase):
|
class TestCalicoUtilityContainer(TestBase):
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def setUpClass(cls):
|
def setUpClass(cls):
|
||||||
cls.deployment_name = cls._get_deployment_name("calicoctl-utility")
|
cls.deployment_name = cls._get_deployment_name("calicoctl-utility")
|
||||||
@ -88,7 +89,8 @@ class TestCalicoUtilityContainer(TestBase):
|
|||||||
f"is not having expected apparmor profile set")
|
f"is not having expected apparmor profile set")
|
||||||
self.assertEqual(0, len(failures), failures)
|
self.assertEqual(0, len(failures), failures)
|
||||||
|
|
||||||
@patch('kube_utility_container.services.utility_container_client.'
|
@patch(
|
||||||
|
'kube_utility_container.services.utility_container_client.'
|
||||||
'UtilityContainerClient._get_utility_container',
|
'UtilityContainerClient._get_utility_container',
|
||||||
side_effect=KubePodNotFoundException('utility'))
|
side_effect=KubePodNotFoundException('utility'))
|
||||||
def test_exec_cmd_no_calicoctl_utility_pods_returned(self, mock_list_pods):
|
def test_exec_cmd_no_calicoctl_utility_pods_returned(self, mock_list_pods):
|
||||||
|
@ -16,6 +16,7 @@ from kube_utility_container.tests.utility.base import TestBase
|
|||||||
|
|
||||||
|
|
||||||
class TestCephUtilityContainer(TestBase):
|
class TestCephUtilityContainer(TestBase):
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def setUpClass(cls):
|
def setUpClass(cls):
|
||||||
cls.deployment_name = cls._get_deployment_name("ceph-utility")
|
cls.deployment_name = cls._get_deployment_name("ceph-utility")
|
||||||
|
@ -27,6 +27,7 @@ node = os.uname().nodename
|
|||||||
|
|
||||||
|
|
||||||
class TestComputeUtilityContainer(TestBase):
|
class TestComputeUtilityContainer(TestBase):
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def setUpClass(cls):
|
def setUpClass(cls):
|
||||||
cls.deployment_name = cls._get_deployment_name("compute-utility")
|
cls.deployment_name = cls._get_deployment_name("compute-utility")
|
||||||
@ -105,7 +106,8 @@ class TestComputeUtilityContainer(TestBase):
|
|||||||
f"is not having expected apparmor profile set")
|
f"is not having expected apparmor profile set")
|
||||||
self.assertEqual(0, len(failures), failures)
|
self.assertEqual(0, len(failures), failures)
|
||||||
|
|
||||||
@patch('kube_utility_container.services.utility_container_client.'
|
@patch(
|
||||||
|
'kube_utility_container.services.utility_container_client.'
|
||||||
'UtilityContainerClient._get_utility_container',
|
'UtilityContainerClient._get_utility_container',
|
||||||
side_effect=KubePodNotFoundException('utility'))
|
side_effect=KubePodNotFoundException('utility'))
|
||||||
def test_exec_cmd_no_compute_utility_pods_returned(self, mock_list_pods):
|
def test_exec_cmd_no_compute_utility_pods_returned(self, mock_list_pods):
|
||||||
|
@ -25,6 +25,7 @@ from kube_utility_container.tests.utility.base import TestBase
|
|||||||
|
|
||||||
|
|
||||||
class TestEtcdUtilityContainer(TestBase):
|
class TestEtcdUtilityContainer(TestBase):
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def setUpClass(cls):
|
def setUpClass(cls):
|
||||||
cls.deployment_name = cls._get_deployment_name("etcdctl-utility")
|
cls.deployment_name = cls._get_deployment_name("etcdctl-utility")
|
||||||
@ -100,7 +101,8 @@ class TestEtcdUtilityContainer(TestBase):
|
|||||||
self.assertNotEqual(0, len(latest_pod_logs),
|
self.assertNotEqual(0, len(latest_pod_logs),
|
||||||
"Not able to get the latest logs")
|
"Not able to get the latest logs")
|
||||||
|
|
||||||
@patch('kube_utility_container.services.utility_container_client.'
|
@patch(
|
||||||
|
'kube_utility_container.services.utility_container_client.'
|
||||||
'UtilityContainerClient._get_utility_container',
|
'UtilityContainerClient._get_utility_container',
|
||||||
side_effect=KubePodNotFoundException('utility'))
|
side_effect=KubePodNotFoundException('utility'))
|
||||||
def test_exec_cmd_no_etcdctl_utility_pods_returned(self, mock_list_pods):
|
def test_exec_cmd_no_etcdctl_utility_pods_returned(self, mock_list_pods):
|
||||||
|
@ -17,6 +17,7 @@ from kube_utility_container.tests.utility.base import TestBase
|
|||||||
|
|
||||||
|
|
||||||
class TestMysqlclientUtilityContainer(TestBase):
|
class TestMysqlclientUtilityContainer(TestBase):
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def setUpClass(cls):
|
def setUpClass(cls):
|
||||||
cls.deployment_name = cls._get_deployment_name("mysqlclient-utility")
|
cls.deployment_name = cls._get_deployment_name("mysqlclient-utility")
|
||||||
|
@ -23,6 +23,7 @@ from kube_utility_container.tests.utility.base import TestBase
|
|||||||
|
|
||||||
|
|
||||||
class TestOpenstackUtilityContainer(TestBase):
|
class TestOpenstackUtilityContainer(TestBase):
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def setUpClass(cls):
|
def setUpClass(cls):
|
||||||
cls.deployment_name = cls._get_deployment_name("openstack-utility")
|
cls.deployment_name = cls._get_deployment_name("openstack-utility")
|
||||||
@ -88,7 +89,8 @@ class TestOpenstackUtilityContainer(TestBase):
|
|||||||
f"is not having expected apparmor profile set")
|
f"is not having expected apparmor profile set")
|
||||||
self.assertEqual(0, len(failures), failures)
|
self.assertEqual(0, len(failures), failures)
|
||||||
|
|
||||||
@patch('kube_utility_container.services.utility_container_client.'
|
@patch(
|
||||||
|
'kube_utility_container.services.utility_container_client.'
|
||||||
'UtilityContainerClient._get_utility_container',
|
'UtilityContainerClient._get_utility_container',
|
||||||
side_effect=KubePodNotFoundException('utility'))
|
side_effect=KubePodNotFoundException('utility'))
|
||||||
def test_exec_cmd_no_openstack_utility_pods_returned(self, mock_list_pods):
|
def test_exec_cmd_no_openstack_utility_pods_returned(self, mock_list_pods):
|
||||||
|
@ -18,6 +18,7 @@ from kube_utility_container.tests.utility.base import TestBase
|
|||||||
|
|
||||||
|
|
||||||
class TestPostgresqlUtilityContainer(TestBase):
|
class TestPostgresqlUtilityContainer(TestBase):
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def setUpClass(cls):
|
def setUpClass(cls):
|
||||||
cls.deployment_name = cls._get_deployment_name("postgresql-utility")
|
cls.deployment_name = cls._get_deployment_name("postgresql-utility")
|
||||||
|
@ -16,12 +16,29 @@ urllib3
|
|||||||
# chardet>=3.0.2,<3.1.0
|
# chardet>=3.0.2,<3.1.0
|
||||||
# urllib3>=1.21.1,<=1.25
|
# urllib3>=1.21.1,<=1.25
|
||||||
|
|
||||||
# Openstack Antelope 2023.1
|
# Openstack Caracal 2024.1
|
||||||
# https://releases.openstack.org/antelope/index.html
|
# https://releases.openstack.org/caracal/index.html
|
||||||
|
barbican==18.0.0
|
||||||
|
|
||||||
oslo.config==9.1.1
|
python-barbicanclient==5.7.0
|
||||||
oslo.context==5.1.1
|
python-keystoneclient==5.4.0
|
||||||
oslo.i18n==6.0.0
|
|
||||||
oslo.log==5.2.0
|
keystoneauth1==5.6.0
|
||||||
oslo.serialization==5.1.1
|
keystonemiddleware==10.6.0
|
||||||
oslo.utils==6.1.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
|
||||||
|
@ -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
|
cachetools==5.5.0
|
||||||
certifi==2024.8.30
|
castellan==5.2.0
|
||||||
|
certifi==2024.12.14
|
||||||
|
cffi==1.17.1
|
||||||
chardet==5.2.0
|
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
|
debtcollector==3.0.0
|
||||||
durationpy==0.7
|
decorator==5.1.1
|
||||||
google-auth==2.35.0
|
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
|
idna==3.10
|
||||||
iso8601==2.1.0
|
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
|
kubeconfig==1.1.1
|
||||||
kubernetes==31.0.0
|
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
|
msgpack==1.1.0
|
||||||
netaddr==1.3.0
|
netaddr==1.3.0
|
||||||
netifaces==0.11.0
|
netifaces==0.11.0
|
||||||
oauthlib==3.2.2
|
oauthlib==3.2.2
|
||||||
oslo.config==9.1.1
|
os-service-types==1.7.0
|
||||||
oslo.context==5.1.1
|
oslo.cache==3.7.0
|
||||||
oslo.i18n==6.0.0
|
oslo.concurrency==6.0.0
|
||||||
oslo.log==5.2.0
|
oslo.config==9.4.0
|
||||||
oslo.serialization==5.1.1
|
oslo.context==5.5.0
|
||||||
oslo.utils==6.1.0
|
oslo.db==15.0.0
|
||||||
packaging==24.1
|
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
|
pbr==6.1.0
|
||||||
|
pecan==1.5.1
|
||||||
pip==24.1
|
pip==24.1
|
||||||
|
prettytable==3.12.0
|
||||||
|
prometheus_client==0.21.1
|
||||||
pyasn1==0.6.1
|
pyasn1==0.6.1
|
||||||
pyasn1_modules==0.4.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-dateutil==2.9.0.post0
|
||||||
|
python-keystoneclient==5.4.0
|
||||||
pytz==2024.2
|
pytz==2024.2
|
||||||
PyYAML==6.0.2
|
PyYAML==6.0.2
|
||||||
|
referencing==0.35.1
|
||||||
|
repoze.lru==0.7
|
||||||
requests==2.32.3
|
requests==2.32.3
|
||||||
requests-oauthlib==2.0.0
|
requests-oauthlib==2.0.0
|
||||||
rfc3986==2.0.0
|
rfc3986==2.0.0
|
||||||
|
Routes==2.5.1
|
||||||
|
rpds-py==0.22.3
|
||||||
rsa==4.9
|
rsa==4.9
|
||||||
setuptools==70.1.0
|
setuptools==70.1.0
|
||||||
six==1.16.0
|
six==1.17.0
|
||||||
stevedore==5.3.0
|
SQLAlchemy==2.0.36
|
||||||
urllib3==2.2.3
|
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
|
websocket-client==1.8.0
|
||||||
wheel==0.43.0
|
wheel==0.43.0
|
||||||
wrapt==1.16.0
|
wrapt==1.17.0
|
||||||
|
yappi==1.6.10
|
||||||
|
@ -4,22 +4,20 @@
|
|||||||
|
|
||||||
# When modifying this file `tox -e freeze-testreq` must be run to regenerate the test-requirements-frozen.txt.
|
# 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
|
bandit==1.6.0
|
||||||
|
|
||||||
flake8==3.8.4
|
flake8
|
||||||
hacking==4.1.0
|
hacking
|
||||||
|
|
||||||
|
|
||||||
pylint==2.14.5
|
pylint
|
||||||
python-subunit==1.4.0 # Apache-2.0/BSD
|
python-subunit==1.4.0 # Apache-2.0/BSD
|
||||||
oslotest==3.7.0 # Apache-2.0
|
oslotest==3.7.0 # Apache-2.0
|
||||||
stestr==3.2.1 # Apache-2.0
|
stestr
|
||||||
testtools==2.5.0
|
mock
|
||||||
mock==5.0.2
|
|
||||||
nose==1.3.7
|
nose==1.3.7
|
||||||
yapf==0.24.0
|
yapf
|
||||||
pytest >= 3.0
|
pytest
|
||||||
pytest-cov==4.0.0
|
pytest-cov
|
||||||
chardet
|
chardet
|
||||||
# chardet==3.0.4
|
|
@ -35,7 +35,7 @@
|
|||||||
FEATURE_GATES: "{{ osh_params.feature_gates | default('') }}"
|
FEATURE_GATES: "{{ osh_params.feature_gates | default('') }}"
|
||||||
RUN_HELM_TESTS: "{{ run_helm_tests | default('yes') }}"
|
RUN_HELM_TESTS: "{{ run_helm_tests | default('yes') }}"
|
||||||
PL_SITE: "{{ site | default('airskiff') }}"
|
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') }}"
|
HTK_COMMIT: "{{ HTK_COMMIT | default('cfff60ec10a6c386f38db79bb9f59a552c2b032f') }}"
|
||||||
OSH_INFRA_COMMIT: "{{ OSH_INFRA_COMMIT | default('cfff60ec10a6c386f38db79bb9f59a552c2b032f') }}"
|
OSH_INFRA_COMMIT: "{{ OSH_INFRA_COMMIT | default('cfff60ec10a6c386f38db79bb9f59a552c2b032f') }}"
|
||||||
OSH_COMMIT: "{{ OSH_COMMIT | default('2d9457e34ca4200ed631466bd87569b0214c92e7') }}"
|
OSH_COMMIT: "{{ OSH_COMMIT | default('2d9457e34ca4200ed631466bd87569b0214c92e7') }}"
|
||||||
|
@ -33,7 +33,7 @@
|
|||||||
FEATURE_GATES: "{{ osh_params.feature_gates | default('') }}"
|
FEATURE_GATES: "{{ osh_params.feature_gates | default('') }}"
|
||||||
RUN_HELM_TESTS: "{{ run_helm_tests | default('yes') }}"
|
RUN_HELM_TESTS: "{{ run_helm_tests | default('yes') }}"
|
||||||
PL_SITE: "{{ site | default('airskiff') }}"
|
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') }}"
|
HTK_COMMIT: "{{ HTK_COMMIT | default('cfff60ec10a6c386f38db79bb9f59a552c2b032f') }}"
|
||||||
OSH_INFRA_COMMIT: "{{ OSH_INFRA_COMMIT | default('cfff60ec10a6c386f38db79bb9f59a552c2b032f') }}"
|
OSH_INFRA_COMMIT: "{{ OSH_INFRA_COMMIT | default('cfff60ec10a6c386f38db79bb9f59a552c2b032f') }}"
|
||||||
OSH_COMMIT: "{{ OSH_COMMIT | default('2d9457e34ca4200ed631466bd87569b0214c92e7') }}"
|
OSH_COMMIT: "{{ OSH_COMMIT | default('2d9457e34ca4200ed631466bd87569b0214c92e7') }}"
|
||||||
|
@ -17,7 +17,7 @@
|
|||||||
set -x
|
set -x
|
||||||
|
|
||||||
HELM=$1
|
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 {
|
function install_helm_binary {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user