If stablerepourl is not set, Helm will skip adding the stablerepo.
Depends on:
- https://osm.etsi.org/gerrit/#/c/osm/devops/+/10915
Change-Id: I11f10fdfba24ec274d463f12c07d7b0247b37068
Signed-off-by: David Garcia <david.garcia@canonical.com>
helm_command: str = "/usr/bin/helm3",
log: object = None,
on_update_db=None,
- vca_config: dict = None,
):
"""
Initializes helm connector for helm v3
kubectl_command=kubectl_command,
helm_command=helm_command,
on_update_db=on_update_db,
- vca_config=vca_config,
)
self.log.info("K8S Helm3 connector initialized")
# If default repo is not included add
cluster_uuid = "{}:{}".format(namespace, cluster_id)
repo_list = await self.repo_list(cluster_uuid)
- for repo in repo_list:
- self.log.debug("repo")
- if repo["name"] == "stable":
- self.log.debug("Default repo already present")
- break
- else:
+ stable_repo = [repo for repo in repo_list if repo["name"] == "stable"]
+ if not stable_repo and self._stable_repo_url:
await self.repo_add(cluster_uuid, "stable", self._stable_repo_url)
# Returns False as no software needs to be uninstalled
import yaml
from uuid import uuid4
+from n2vc.config import EnvironConfig
from n2vc.exceptions import K8sException
from n2vc.k8s_conn import K8sConnector
"""
service_account = "osm"
- _STABLE_REPO_URL = "https://charts.helm.sh/stable"
def __init__(
self,
helm_command: str = "/usr/bin/helm",
log: object = None,
on_update_db=None,
- vca_config: dict = None,
):
"""
self.log.info("Initializing K8S Helm connector")
+ self.config = EnvironConfig()
# random numbers for release name generation
random.seed(time.time())
self._check_file_exists(filename=helm_command, exception_if_not_exists=True)
# obtain stable repo url from config or apply default
- if not vca_config or not vca_config.get("stablerepourl"):
- self._stable_repo_url = self._STABLE_REPO_URL
- else:
- self._stable_repo_url = vca_config.get("stablerepourl")
+ self._stable_repo_url = self.config.get("stablerepourl")
+ if self._stable_repo_url == "None":
+ self._stable_repo_url = None
@staticmethod
def _get_namespace_cluster_id(cluster_uuid: str) -> (str, str):
of dictionaries
"""
new_list = []
- for dictionary in input_list:
- new_dict = dict((k.lower(), v) for k, v in dictionary.items())
- new_list.append(new_dict)
+ if input_list:
+ for dictionary in input_list:
+ new_dict = dict((k.lower(), v) for k, v in dictionary.items())
+ new_list.append(new_dict)
return new_list
def _local_exec(self, command: str) -> (str, int):
helm_command: str = "/usr/bin/helm",
log: object = None,
on_update_db=None,
- vca_config: dict = None,
):
"""
Initializes helm connector for helm v2
kubectl_command=kubectl_command,
helm_command=helm_command,
on_update_db=on_update_db,
- vca_config=vca_config,
)
self.log.info("Initializing K8S Helm2 connector")
# initialize helm client-only
self.log.debug("Initializing helm client-only...")
- command = "{} init --client-only --stable-repo-url {} ".format(
- self._helm_command, self._stable_repo_url
+ command = "{} init --client-only {} ".format(
+ self._helm_command,
+ "--stable-repo-url {}".format(self._stable_repo_url)
+ if self._stable_repo_url
+ else "--skip-repos",
)
try:
asyncio.ensure_future(
command = (
"{} --kubeconfig={} --tiller-namespace={} --home={} --service-account {} "
- " --stable-repo-url {} init"
+ " {} init"
).format(
self._helm_command,
paths["kube_config"],
namespace,
paths["helm_dir"],
self.service_account,
- self._stable_repo_url,
+ "--stable-repo-url {}".format(self._stable_repo_url)
+ if self._stable_repo_url
+ else "--skip-repos",
)
_, _rc = await self._local_async_exec(
command=command, raise_exception_on_error=True, env=env
self.log.info("Initializing helm in client: {}".format(cluster_id))
command = (
"{} --kubeconfig={} --tiller-namespace={} "
- "--home={} init --client-only --stable-repo-url {} "
+ "--home={} init --client-only {} "
).format(
self._helm_command,
paths["kube_config"],
namespace,
paths["helm_dir"],
- self._stable_repo_url,
+ "--stable-repo-url {}".format(self._stable_repo_url)
+ if self._stable_repo_url
+ else "--skip-repos",
)
output, _rc = await self._local_async_exec(
command=command, raise_exception_on_error=True, env=env
if repo["name"] == "stable" and repo["url"] != self._stable_repo_url:
self.log.debug("Add new stable repo url: {}")
await self.repo_remove(cluster_uuid, "stable")
- await self.repo_add(cluster_uuid, "stable", self._stable_repo_url)
+ if self._stable_repo_url:
+ await self.repo_add(cluster_uuid, "stable", self._stable_repo_url)
break
return n2vc_installed_sw
import asynctest
import logging
-from asynctest.mock import Mock
+from asynctest.mock import Mock, patch
from osm_common.dbmemory import DbMemory
from osm_common.fslocal import FsLocal
from n2vc.k8s_helm3_conn import K8sHelm3Connector
logger = logging.getLogger(__name__)
logger.setLevel(logging.DEBUG)
- async def setUp(self):
+ @patch("n2vc.k8s_helm_base_conn.EnvironConfig")
+ async def setUp(self, mock_env):
+ mock_env.return_value = {
+ "stablerepourl": "https://charts.helm.sh/stable"
+ }
self.db = Mock(DbMemory())
self.fs = asynctest.Mock(FsLocal())
self.fs.path = "./tmp/"