Пример #1
0
 def _kubectl(
     self,
     cmd: typing.List,
     namespace: typing.AnyStr = None,
     input: typing.IO = None,
 ) -> typing.Mapping:
     cmd = list(cmd)
     cmd.extend(["-o", "yaml"])
     return yaml.safe_load(self._kubectl_str(cmd, namespace=namespace, input=input))
Пример #2
0
def _fill_parameter(
        parameter: str or dict,
        filter_by_keys: dict,
        read_keys: typing.List
) -> typing.Tuple[typing.Dict, typing.List]:
    if isinstance(parameter, str):
        filter_by_keys["shortName"] = parameter
    elif isinstance(parameter, typing.Dict):
        filter_by_keys.update(parameter)
        read_keys.extend(parameter.keys())
    else:
        raise ValueError(f"parameter is not supported: {parameter}")
    return filter_by_keys, read_keys
Пример #3
0
def _fill_level_type(
        level_type: str or dict,
        filter_by_keys: typing.Dict,
        read_keys: typing.List
) -> typing.Tuple[typing.Dict, typing.List]:
    if isinstance(level_type, dict):
        filter_by_keys.update(level_type)
        read_keys.extend([key for key in level_type if key not in read_keys])
    else:
        filter_by_keys.update({
            "typeOfLevel": level_type,
        })
    return filter_by_keys, read_keys
Пример #4
0
    def value_set(self, values: typing.List, nullable: bool = True):
        """
        Building valid value check closure.
        :param values: typing.List
            Set of valid values for this column.
        :param nullable: bool
            If set to `True` then empty string and None will be treated as valid value,
             along with the provided value list.
            By default, `True`
        :return: FieldParser
            self
        """
        dtypes = set(type(v) for v in values)
        if len(dtypes) > 1 or list(dtypes)[0] != self.TYPE:
            raise UnsupportedDatatypeException(f"Provided valid values are not fit for"
                                               f" {self.TYPE} type column. Please provide valid values of"
                                               f" {self.TYPE} type.")
        if self.enforce_type:
            values = [self.TYPE(value) for value in values]

        if nullable:
            values.extend(['', None])

        def valid_value_check(data: any):
            """
            Valid value check closure.
            :param data: any
                Column data.
            :return: any
                Column value
            """
            try:
                if data not in values:
                    raise ValidValueCheckException(
                        "Provided value - '{}' is not part of valid value list - {}.".format(data, values))
                else:
                    return data
            except Exception as e:
                logging.error('~' * 100)
                logging.exception("Value set check exception:")
                logging.error('~' * 100)
                raise e

        return self.add_func(valid_value_check)
Пример #5
0
    def _kubectl_str(
        self,
        cmd: typing.List,
        namespace: typing.AnyStr = None,
        input: typing.IO = None,
    ) -> typing.AnyStr:

        cmd = list(cmd)
        cmd.insert(0, "kubectl")

        if namespace is not None and "-n" not in cmd:
            cmd.extend(["-n", namespace])

        proc = subprocess.run(cmd, input=input, capture_output=True)
        try:
            proc.check_returncode()
        except:
            print(proc.stderr.decode("utf8"))
            raise

        return proc.stdout
Пример #6
0
def merge(list: typing.List, elm):
    return list.extend(elm)
Пример #7
0
def merge(elems: typing.List, elm):
    return elems.extend(elm)