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))
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
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
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)
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
def merge(list: typing.List, elm): return list.extend(elm)
def merge(elems: typing.List, elm): return elems.extend(elm)