def parse_helm_list_output(helm_list_output):
    """
    Function will perform a manipulation on a string output from the 'helm list' command

    Returns an array of dicts with installed chart names and namespaces as strings
    as [{'chart_name': 'some_chart_name', 'name_space': 'some_name_space'}]

    by validating the first line, splitting by the tab delimiter,
    and checking that the first (0) value is 'NAME' and seventh (6) value is 'NAMESPACE'
    an exception will be raised if the structure was change by HELM developers

    :param helm_list_output: 'helm list' output as String
    :return: list of dicts
    """
    installed_charts = []

    # split helm_list_output by 'new line'
    installed_helm_stdout = helm_list_output.split("\n")

    # Perform validation on stdout of first (0) line
    first_line_stdout = installed_helm_stdout[0].split("\t")
    if first_line_stdout[0].strip() != 'NAME' or first_line_stdout[6].strip() != 'NAMESPACE':
        raise Exception("'helm list' command output changed, probably due to helm version update, "
                        "code change is needed to resolve this issue, "
                        "contact the developer.")

    # for every line in installed charts, excluding the headers line (Name, Revision, Updated etc...)
    for line in installed_helm_stdout[1:]:
        # each stdout 'helm list' line composed by tabs delimiter, split it
        chart_details = line.split("\t")

        temp_dictionary = {}
        if chart_details[0] != "":
            # Add current line chart values to dict
            temp_dictionary.update({'chart_name': chart_details[0].strip()})
            temp_dictionary.update({'name_space': chart_details[6].strip()})
            # Update final array with the temp array of dicts of current helm deployment
            installed_charts.append(temp_dictionary)

    return installed_charts