Skip to content
Snippets Groups Projects
Commit 9b2a1cd5 authored by garciadeblas's avatar garciadeblas
Browse files

Feature 11053: Support of jsonpath expressions in kubectl format


Change-Id: I68dd66320a11ed03028e12cc0266a248fc7e85a1
Signed-off-by: default avatargarciadeblas <gerardo.garciadeblas@telefonica.com>
parent 6852de30
No related branches found
No related tags found
No related merge requests found
......@@ -53,6 +53,22 @@ literal_option = click.option(
)
def normalize_jsonpath(json_path_expression):
"""
Normalizes JSONPath expressions from kubectl format to jsonpath_ng format.
Example:
- '{.name}' becomes 'name'
- '{.items[0].metadata.name}' becomes 'items[0].metadata.name'
"""
# Remove braces at the beginning and end
if json_path_expression.startswith("{") and json_path_expression.endswith("}"):
json_path_expression = json_path_expression[1:-1]
# Remove the leading '.'
if json_path_expression.startswith("."):
json_path_expression = json_path_expression[1:]
return json_path_expression
def print_output(format="table", headers=["field", "value"], rows=None, data=None):
"""
Prints content in specified format.
......@@ -96,7 +112,14 @@ def print_output(format="table", headers=["field", "value"], rows=None, data=Non
elif format.startswith("jsonpath="):
# JSONPath expression
json_path_expression = format.partition("=")[-1]
logger.debug(f"Jsonpath expression: {json_path_expression}")
logger.debug(f"Received jsonpath expression: {json_path_expression}")
# Support kubectl format
if json_path_expression.startswith("{") and json_path_expression.endswith(
"}"
):
logger.debug("Detected kubectl JSONPath format")
json_path_expression = normalize_jsonpath(json_path_expression)
logger.debug(f"Final jsonpath expression: {json_path_expression}")
json_path = parse(json_path_expression)
# Apply JSONPath expression on the JSON object
results = [match.value for match in json_path.find(data)]
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment