Skip to content

Commit 1a99503

Browse files
committed
Added option to cat node with --version parameter.
1 parent e77abb8 commit 1a99503

1 file changed

Lines changed: 34 additions & 8 deletions

File tree

bin/osdf

Lines changed: 34 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
#!/usr/bin/env python
1+
#!/usr/bin/env/python
22

33
import argparse
44
import json
@@ -17,6 +17,10 @@ def parse_config():
1717
home = os.path.expanduser("~")
1818
config_file = os.path.join(home, ".osdf")
1919

20+
if not os.path.isfile(config_file):
21+
sys.stderr.write("No configuration file. Please execute 'osdf init'.\n")
22+
sys.exit(1)
23+
2024
perms = oct(os.stat(config_file).st_mode & 0777)
2125
if perms != '0400':
2226
msg = "Permissions on config {} are too loose. Should be 0400."
@@ -309,14 +313,33 @@ def cat(args):
309313
"""
310314
# TODO: Honor multiple node IDs?
311315
node_id = args.node
316+
version = args.version
312317

313-
try:
314-
client = get_client()
315-
data = client.get_node(node_id)
316-
print(json.dumps(data, indent=2, sort_keys=True))
317-
except Exception as e:
318-
sys.stderr.write("Unable to retrieve node \"{}\".\n".format(node_id))
319-
sys.exit(1)
318+
def node_getter(node_id, version):
319+
data = None
320+
321+
try:
322+
client = get_client()
323+
324+
if version is None:
325+
data = client.get_node(node_id)
326+
else:
327+
data = client.get_node_by_version(node_id, version)
328+
except Exception as e:
329+
if version is not None:
330+
msg = "Unable to retrieve node \"{}\" version {}.\n"
331+
sys.stderr.write(msg.format(node_id, version))
332+
else:
333+
msg = "Unable to retrieve node \"{}\".\n"
334+
sys.stderr.write(msg.format(node_id))
335+
336+
sys.exit(1)
337+
338+
return data;
339+
340+
data = node_getter(node_id, version)
341+
342+
print(json.dumps(data, indent=2, sort_keys=True))
320343

321344
def delete(args):
322345
"""
@@ -345,6 +368,9 @@ def main():
345368
# Create the parser for the "cat" command
346369
parser_cat = subparsers.add_parser('cat', help='Dump a node to STDOUT.')
347370
parser_cat.add_argument('node', type=str, help='A node ID.')
371+
parser_cat.add_argument('-v', '--version', type=str,
372+
help="Specify a specific version of the node to retrieve. " +
373+
"Defaults to the latest version if not provided.")
348374
parser_cat.set_defaults(func=cat)
349375

350376
parser_info = subparsers.add_parser('info',

0 commit comments

Comments
 (0)