Browse Source
* Create getpath.py * Updated sharedfunctions.py to add getpath() * Create listmembers.py * getpath.py and listmemberswithpath.py in README.md * Tests for getpath.py and listmemberswithpath.py * Typo in headermaster
committed by
GitHub
5 changed files with 214 additions and 8 deletions
@ -0,0 +1,62 @@ |
|||||
|
#!/usr/bin/python |
||||
|
# -*- coding: utf-8 -*- |
||||
|
# |
||||
|
# getpath.py |
||||
|
# January 2019 |
||||
|
# |
||||
|
# Usage: |
||||
|
# getpath.py -u objectURI [-d] |
||||
|
# |
||||
|
# Examples: |
||||
|
# |
||||
|
# 1. Return path of folder identified by objectURI |
||||
|
# ./getpath.py -u /folders/folders/060c0ea4-07ee-43ea-aa79-a1696b7f8f52 |
||||
|
# |
||||
|
# 2. Return path of report identified by objectURI |
||||
|
# ./getpath.py -u /reports/reports/43de1f98-d7ef-4490-bb46-cc177f995052 |
||||
|
# |
||||
|
# Copyright © 2019, SAS Institute Inc., Cary, NC, USA. All Rights Reserved. |
||||
|
# |
||||
|
# Licensed under the Apache License, Version 2.0 (the License); |
||||
|
# you may not use this file except in compliance with the License. |
||||
|
# You may obtain a copy of the License at |
||||
|
# |
||||
|
# http://www.apache.org/licenses/LICENSE-2.0 |
||||
|
# |
||||
|
# Unless required by applicable law or agreed to in writing, software |
||||
|
# distributed under the License is distributed on an "AS IS" BASIS, |
||||
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
||||
|
# See the License for the specific language governing permissions and |
||||
|
# limitations under the License. |
||||
|
# |
||||
|
|
||||
|
|
||||
|
clidir='/opt/sas/viya/home/bin/' |
||||
|
debug=False |
||||
|
|
||||
|
# Import Python modules |
||||
|
import argparse |
||||
|
import sys |
||||
|
|
||||
|
from sharedfunctions import getpath |
||||
|
|
||||
|
# Define exception handler so that we only output trace info from errors when in debug mode |
||||
|
def exception_handler(exception_type, exception, traceback, debug_hook=sys.excepthook): |
||||
|
if debug: |
||||
|
debug_hook(exception_type, exception, traceback) |
||||
|
else: |
||||
|
print "%s: %s" % (exception_type.__name__, exception) |
||||
|
|
||||
|
sys.excepthook = exception_handler |
||||
|
|
||||
|
parser = argparse.ArgumentParser() |
||||
|
parser.add_argument("-u","--objecturi", help="Object URI of folder or other object that can be contained within a folder.", required=True) |
||||
|
parser.add_argument("-d","--debug", action='store_true', help="Debug") |
||||
|
args = parser.parse_args() |
||||
|
objecturi=args.objecturi |
||||
|
debug=args.debug |
||||
|
|
||||
|
path=getpath(objecturi) |
||||
|
|
||||
|
if path is not None: |
||||
|
print path |
||||
@ -0,0 +1,94 @@ |
|||||
|
#!/usr/bin/python |
||||
|
# -*- coding: utf-8 -*- |
||||
|
# |
||||
|
# listmemberswithpath.py |
||||
|
# January 2019 |
||||
|
# |
||||
|
# Usage: |
||||
|
# listmemberswithpath.py -u objectURI [-r] [-d] |
||||
|
# |
||||
|
# Examples: |
||||
|
# |
||||
|
# 1. Return list of members of a folder identified by objectURI |
||||
|
# ./listmemberswithpath.py -u /folders/folders/060c0ea4-07ee-43ea-aa79-a1696b7f8f52 |
||||
|
# |
||||
|
# 2. Return list of all members of a folder identified by objectURI, recursively searching subfolders |
||||
|
# ./listmemberswithpath.py -u /folders/folders/060c0ea4-07ee-43ea-aa79-a1696b7f8f52 -r |
||||
|
# |
||||
|
# Copyright © 2019, SAS Institute Inc., Cary, NC, USA. All Rights Reserved. |
||||
|
# |
||||
|
# Licensed under the Apache License, Version 2.0 (the License); |
||||
|
# you may not use this file except in compliance with the License. |
||||
|
# You may obtain a copy of the License at |
||||
|
# |
||||
|
# http://www.apache.org/licenses/LICENSE-2.0 |
||||
|
# |
||||
|
# Unless required by applicable law or agreed to in writing, software |
||||
|
# distributed under the License is distributed on an "AS IS" BASIS, |
||||
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
||||
|
# See the License for the specific language governing permissions and |
||||
|
# limitations under the License. |
||||
|
# |
||||
|
|
||||
|
|
||||
|
clidir='/opt/sas/viya/home/bin/' |
||||
|
debug=False |
||||
|
|
||||
|
# Import Python modules |
||||
|
import argparse |
||||
|
import sys |
||||
|
|
||||
|
from sharedfunctions import callrestapi,getpath |
||||
|
|
||||
|
# Define exception handler so that we only output trace info from errors when in debug mode |
||||
|
def exception_handler(exception_type, exception, traceback, debug_hook=sys.excepthook): |
||||
|
if debug: |
||||
|
debug_hook(exception_type, exception, traceback) |
||||
|
else: |
||||
|
print "%s: %s" % (exception_type.__name__, exception) |
||||
|
|
||||
|
sys.excepthook = exception_handler |
||||
|
|
||||
|
parser = argparse.ArgumentParser() |
||||
|
parser.add_argument("-u","--objecturi", help="Object URI of folder or other object that can be contained within a folder.", required=True) |
||||
|
parser.add_argument("-r","--recursive", action='store_true', help="Debug") |
||||
|
parser.add_argument("-d","--debug", action='store_true', help="Debug") |
||||
|
args = parser.parse_args() |
||||
|
objecturi=args.objecturi |
||||
|
recursive=args.recursive |
||||
|
debug=args.debug |
||||
|
|
||||
|
#We expect a URI, but if the objectURI does not begin with a /, assume it is a folder id. This may be nonsense, but it's much more likely to just fail than return data for the wrong object. |
||||
|
if not objecturi.startswith("/"): |
||||
|
objecturi='/folders/folders/'+objecturi |
||||
|
|
||||
|
#Exit if the objecURI is not a folder |
||||
|
if not objecturi.startswith("/folders/folders/"): |
||||
|
raise Exception('ObjectURI must be a folder, and should begin with /folders/folders/.') |
||||
|
|
||||
|
#First, use the /folders/{folderId}/members endpoint to ask for a list of objects which are in the folder passed in by objecturi |
||||
|
#See Folders API documentation in swagger at http://swagger.na.sas.com/apis/folders/v1/apidoc.html#op:getAncestors |
||||
|
endpoint=objecturi+'/members' |
||||
|
if recursive: |
||||
|
endpoint=endpoint+'?recursive=true' |
||||
|
method='get' |
||||
|
|
||||
|
#make the rest call |
||||
|
members_result_json=callrestapi(endpoint,method) |
||||
|
|
||||
|
if debug: |
||||
|
print(members_result_json) |
||||
|
#print('members_result_json is a '+type(members_result_json).__name__+' object') #members_result_json is a dict object |
||||
|
|
||||
|
members = members_result_json['items'] |
||||
|
|
||||
|
for member in members: |
||||
|
outstr='' |
||||
|
path=getpath(member['uri']) |
||||
|
outstr=outstr+path+','+member['id']+','+member['name']+','+member['type'] |
||||
|
if 'description' in member: |
||||
|
outstr=outstr+','+member['description'] |
||||
|
else: |
||||
|
outstr=outstr+',' |
||||
|
outstr=outstr+','+member['uri'] |
||||
|
print outstr |
||||
Loading…
Reference in new issue