Skip to content

Commit bd87e4a

Browse files
authored
Helm Charts are skipped (and issue a warning) if Helm is not installed (#419)
* Helm Charts are skipped (and issue a warning) if Helm is not installed * linting fixed * small fix * linting...
1 parent dbce448 commit bd87e4a

File tree

5 files changed

+34
-3
lines changed

5 files changed

+34
-3
lines changed

nca/FileScanners/DirScanner.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,9 @@ def _scan_dir_for_yamls(self, dir_path, recursive):
4848
for file in files:
4949
try:
5050
if self.is_helm_chart(file):
51+
if not self.helm_path:
52+
print(f'HELM is not installed - Skipping {os.path.abspath(os.path.join(root, file))}', file=stderr)
53+
continue
5154
file_name, file_content = self.parse_chart(root)
5255
file_stream = io.StringIO(file_content)
5356
yield from self._yield_yaml_file(file_name, file_stream)

nca/FileScanners/HelmScanner.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99

1010
import os
1111
import re
12+
import shutil
1213
from nca.Utils.CmdlineRunner import CmdlineRunner
1314

1415

@@ -19,6 +20,7 @@ class HelmScanner:
1920

2021
def __init__(self):
2122
self.template_files = []
23+
self.helm_path = shutil.which('helm')
2224

2325
def parse_chart(self, chart_dir):
2426
"""

nca/NetworkConfig/ResourcesHandler.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -101,6 +101,9 @@ def analyze_livesim(policy_finder):
101101
"""
102102
livesim_configuration_addons = []
103103

104+
# stop collecting messages when pre-processing and analyzing livesim yaml files.
105+
NcaLogger().dont_collect_msgs()
106+
104107
# find kube-dns reference
105108
dns_added_resources = ResourcesHandler.get_relevant_livesim_resources_paths_by_labels_matching(
106109
LiveSimPaths.DnsCfgPath, policy_finder.missing_dns_pods_with_labels)
@@ -121,6 +124,7 @@ def analyze_livesim(policy_finder):
121124
livesim_configuration_addons += istio_gateway_added_resources
122125
ResourcesHandler.livesim_information_message('Istio-ingress-gateway')
123126

127+
NcaLogger().collect_msgs()
124128
return livesim_configuration_addons
125129

126130
def parse_elements(self, ns_list, pod_list, resource_list, config_name, save_flag, np_list):
@@ -169,9 +173,9 @@ def get_network_config(self, np_list, ns_list, pod_list, resource_list, config_n
169173
save_flag,
170174
np_list
171175
)
172-
NcaLogger().unmute()
173176
# check if LiveSim can add anything.
174177
livesim_addons = self.analyze_livesim(resources_parser.policies_finder)
178+
NcaLogger().unmute()
175179
if livesim_addons:
176180
NcaLogger().flush_messages(silent=True)
177181
if ns_list:

nca/NetworkConfig/TopologyObjectsFinder.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
from nca.CoreDS.Peer import PeerSet, Pod, IpBlock, HostEP
1010
from nca.Resources.K8sNamespace import K8sNamespace
1111
from nca.Parsers.K8sServiceYamlParser import K8sServiceYamlParser
12+
from nca.Utils.NcaLogger import NcaLogger
1213

1314

1415
class PodsFinder:
@@ -301,7 +302,7 @@ def get_or_update_namespace(self, ns_name):
301302
:rtype: K8sNamespace
302303
"""
303304
if ns_name not in self.namespaces:
304-
print('Namespace', ns_name, 'is missing from the peer container', file=stderr)
305+
NcaLogger().log_message(msg=f'Namespace {ns_name} is missing from the peer container', file=stderr)
305306
namespace = K8sNamespace(ns_name)
306307
self.namespaces[ns_name] = namespace
307308
return self.namespaces[ns_name]

nca/Utils/NcaLogger.py

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@ class NcaLogger(metaclass=Singleton):
4343
def __init__(self):
4444
self._is_mute = False
4545
self._collected_messages = []
46+
self._is_collecting_msgs = True
4647

4748
def mute(self):
4849
"""
@@ -63,6 +64,25 @@ def is_mute(self):
6364
"""
6465
return self._is_mute
6566

67+
def collect_msgs(self):
68+
"""
69+
collect muted messages
70+
"""
71+
self._is_collecting_msgs = True
72+
73+
def dont_collect_msgs(self):
74+
"""
75+
dont collect muted messages
76+
"""
77+
self._is_collecting_msgs = False
78+
79+
def is_collecting_msgs(self):
80+
"""
81+
Return are muted messages being collected?
82+
:return: bool: True for collecting messages, False for not collecting messages.
83+
"""
84+
return self._is_collecting_msgs
85+
6686
def log_message(self, msg, file=None, level=None):
6787
"""
6888
Log a message
@@ -78,7 +98,8 @@ def log_message(self, msg, file=None, level=None):
7898
file = sys.stderr
7999

80100
if self.is_mute():
81-
self._collected_messages.append(msg)
101+
if self._is_collecting_msgs:
102+
self._collected_messages.append(msg)
82103
else:
83104
print(msg, file=file)
84105

0 commit comments

Comments
 (0)