Skip to content

Commit 144dc6e

Browse files
Adding external plugin for ACLP-MR service
1 parent 4d94db1 commit 144dc6e

File tree

1 file changed

+91
-0
lines changed

1 file changed

+91
-0
lines changed

linodecli/plugins/aclp_mr.py

Lines changed: 91 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,91 @@
1+
#!/usr/bin/env python3
2+
from argparse import ArgumentParser
3+
from linodecli.help_formatter import SortingHelpFormatter
4+
import requests
5+
from linodecli.helpers import register_debug_arg
6+
import json
7+
import sys
8+
9+
PLUGIN_BASE = "linode-cli aclp_mr"
10+
MANDATORY_HEADER = ["Authorization"]
11+
MANDATORY_DATA = ["metrics","time_granularity"]
12+
13+
def get_metadata_parser():
14+
"""
15+
Builds argparser for Metadata plug-in
16+
"""
17+
parser = ArgumentParser(
18+
PLUGIN_BASE, add_help=False, formatter_class=SortingHelpFormatter, description="Python CLI to make HTTP GET requests to ACLP Metric Read Service"
19+
)
20+
21+
register_debug_arg(parser)
22+
23+
parser.add_argument("--url", "-u", required=True, help="URL to send GET request to")
24+
parser.add_argument(
25+
"--header", "-H",
26+
action="append",
27+
required=True,
28+
help="Add custom headers (format: Key:Value)",
29+
default=[]
30+
)
31+
32+
parser.add_argument(
33+
"--cacert", "-c",
34+
type=str,
35+
help="Add ca certificate to validate server",
36+
default=False
37+
)
38+
39+
parser.add_argument(
40+
"--data", "-d",
41+
type=json.loads,
42+
required=True,
43+
help="payload for MR requests"
44+
)
45+
46+
parser.add_argument(
47+
"--timeout", "-t",
48+
type=int,
49+
default=10,
50+
help="Request timeout in seconds (default: 10)"
51+
)
52+
53+
return parser
54+
55+
def header_parser(args):
56+
headers = {}
57+
print(args.header)
58+
for h in args.header:
59+
if ":" in h:
60+
key, value = h.split(":", 1)
61+
headers[key.strip()] = value.strip()
62+
63+
64+
return headers
65+
66+
def data_parser(args):
67+
return args.data
68+
69+
def call(args, context):
70+
"""
71+
The entrypoint for this plugin
72+
"""
73+
parser = get_metadata_parser()
74+
parsed, args = parser.parse_known_args(args)
75+
76+
# parse headers
77+
headers = header_parser(parsed)
78+
data = data_parser(parsed)
79+
print(data)
80+
81+
try:
82+
response = requests.post(parsed.url, headers=headers, json=data, timeout=parsed.timeout, verify=parsed.cacert)
83+
#for k, v in response.headers.items():
84+
# print(f" {k}: {v}")
85+
86+
print(response.text)
87+
88+
except requests.exceptions.RequestException as e:
89+
print(f"Error: {e}")
90+
sys.exit(1)
91+

0 commit comments

Comments
 (0)