def METHOD_NAME(self, input_dict: dict, output_dict: dict, exec_properties: dict):  #pylint: disable=too-many-locals
    """Executes the minio upload process.
    Args:
        input_dict : a dict of inputs having source, destination etc.
        output_dict : dict of output containing destination paths,
                      source and bucket names
        exec_properties : a dict of execution properties,
                            having minio endpoint.
    Raises:
        ValueError : for invalid/unknonwn source path
    """
    source, bucket_name, folder_name, endpoint = self.get_fn_args(
        input_dict=input_dict, exec_properties=exec_properties)
    minio_config = self._read_minio_creds(endpoint=endpoint)
    client = self._initiate_minio_client(minio_config=minio_config)
    if not os.path.exists(source):
        raise ValueError("Input path - {} does not exists".format(source))
    if os.path.isfile(source):
        artifact_name = source.split("/")[-1]
        destination = os.path.join(folder_name, artifact_name)
        self.upload_artifacts_to_minio(
            client=client,
            source=source,
            destination=destination,
            bucket_name=bucket_name,
            output_dict=output_dict,
        )
    elif os.path.isdir(source):
        for root, dirs, files in os.walk(source):  #pylint: disable=unused-variable
            for file in files:
                source = os.path.join(root, file)
                artifact_name = source.split("/")[-1]
                destination = os.path.join(folder_name, artifact_name)
                self.upload_artifacts_to_minio(
                    client=client,
                    source=source,
                    destination=destination,
                    bucket_name=bucket_name,
                    output_dict=output_dict,
                )
    else:
        raise ValueError("Unknown source: {} ".format(source))