diff --git a/application.properties b/application.properties index 816fa57..f7b0931 100644 --- a/application.properties +++ b/application.properties @@ -1,2 +1,2 @@ sascli.location=/opt/sas/viya/home/bin/ -sascli.executable=sas-admin +sascli.executable=sas-viya diff --git a/archivefiles.py b/archivefiles.py index 4b3a6eb..34aa816 100755 --- a/archivefiles.py +++ b/archivefiles.py @@ -31,7 +31,7 @@ # import argparse , datetime, os, time, json, sys -from sharedfunctions import callrestapi,printresult,getfolderid,getidsanduris +from sharedfunctions import callrestapi,printresult,getfolderid,getidsanduris,createdatefilter from datetime import datetime as dt, timedelta as td # get python version @@ -83,11 +83,8 @@ if dodelete: if areyousure !='Y': dodelete=False - # calculate time period for files -now=dt.today()-td(days=int(daysolder)) -subset_date=now.strftime("%Y-%m-%dT%H:%M:%S") -datefilter="le(creationTimeStamp,"+subset_date+")" +datefilter=createdatefilter(olderoryounger='older',datevar='creationTimeStamp',days=daysolder) # create a list for filter conditions filtercond=[] diff --git a/deletetransferpackages.py b/deletetransferpackages.py index e7dfb6a..9f49983 100755 --- a/deletetransferpackages.py +++ b/deletetransferpackages.py @@ -23,7 +23,7 @@ import argparse , datetime, sys, json from requests import delete -from sharedfunctions import callrestapi,printresult,getfolderid,getidsanduris +from sharedfunctions import callrestapi,printresult,getfolderid,getidsanduris,createdatefilter from datetime import datetime as dt, timedelta as td # setup command-line arguements. In this block which is common to all the tools you setup what parameters @@ -57,13 +57,8 @@ quietmode=args.quiet packagefile_result=None -# calculate time period for files -now=dt.today()-td(days=int(days)) -subset_date=now.strftime("%Y-%m-%dT%H:%M:%S") - -if olderoryounger=='older': - datefilter="le(creationTimeStamp,"+subset_date+")" -else: datefilter="ge(creationTimeStamp,"+subset_date+")" +# build the date filter +datefilter=createdatefilter(olderoryounger=olderoryounger,datevar='creationTimeStamp',days=days) # create a list for filter conditions filtercond=[] diff --git a/listfiles.py b/listfiles.py index b775700..8923d92 100755 --- a/listfiles.py +++ b/listfiles.py @@ -33,7 +33,7 @@ # import argparse , datetime, sys -from sharedfunctions import callrestapi,printresult,getfolderid,getidsanduris +from sharedfunctions import callrestapi,printresult,getfolderid,getidsanduris,createdatefilter from datetime import datetime as dt, timedelta as td # setup command-line arguements. In this block which is common to all the tools you setup what parameters @@ -78,12 +78,7 @@ if puri !=None and pfolder !=None: sys.exit() # calculate time period for files -now=dt.today()-td(days=int(days)) -subset_date=now.strftime("%Y-%m-%dT%H:%M:%S") - -if olderoryounger=='older': - datefilter="le(creationTimeStamp,"+subset_date+")" -else: datefilter="ge(creationTimeStamp,"+subset_date+")" +datefilter=createdatefilter(olderoryounger=olderoryounger,datevar='creationTimeStamp',days=days) # create a list for filter conditions filtercond=[] diff --git a/listmodelobjects.py b/listmodelobjects.py index cc78afd..16b8973 100755 --- a/listmodelobjects.py +++ b/listmodelobjects.py @@ -14,7 +14,7 @@ # import argparse , datetime, sys -from sharedfunctions import callrestapi,printresult,getfolderid,getidsanduris +from sharedfunctions import callrestapi,printresult,getfolderid,getidsanduris,createdatefilter from datetime import datetime as dt, timedelta as td # setup command-line arguments. In this block, which is common to all the tools, you setup what parameters @@ -29,6 +29,8 @@ parser.add_argument("-d","--days", help="List files older than this number of da parser.add_argument("-m","--modifiedby", help="Last modified id equals",default=None) parser.add_argument("-s","--sortby", help="Sort the output descending by this field",default='name') parser.add_argument("-o","--output", help="Output Style", choices=['csv','json','simple'],default='csv') +parser.add_argument("--debug", action='store_true', help="Debug") + args = parser.parse_args() output_style=args.output @@ -37,11 +39,14 @@ modby=args.modifiedby sortby=args.sortby nameval=args.name typeval=args.type +debug=args.debug # calculate time period for models -now=dt.today()-td(days=int(daysolder)) -subset_date=now.strftime("%Y-%m-%dT%H:%M:%S") -datefilter="le(creationTimeStamp,"+subset_date+")" +# now=dt.today()-td(days=int(daysolder)) +# subset_date=now.strftime("%Y-%m-%dT%H:%M:%S") +# datefilter="le(creationTimeStamp,"+subset_date+")" + +datefilter=createdatefilter(olderoryounger='older',datevar='creationTimeStamp',days=daysolder) # create a list for filter conditions filtercond=[] @@ -57,15 +62,21 @@ completefilter = 'and('+delimiter.join(filtercond)+')' # prepare the request according to content type reqtype='get' -if typeval=='model': reqval="/modelRepository/models?"+completefilter+"&sortBy="+sortby -if typeval=='project': reqval="/modelRepository/projects?"+completefilter+"&sortBy="+sortby -if typeval=='repository': reqval="/modelRepository/repositories?"+completefilter+"&sortBy="+sortby + +if typeval=='model': reqval="/modelRepository/models?filter="+completefilter+"&sortBy="+sortby +if typeval=='project': reqval="/modelRepository/projects?filter="+completefilter+"&sortBy="+sortby +if typeval=='repository': reqval="/modelRepository/repositories?filter="+completefilter+"&sortBy="+sortby + +if debug: print(reqval) # Make call, and process & print results files_result_json=callrestapi(reqval,reqtype) -print("-------------------------------------") -print("Listing "+typeval+" objects") -print("-------------------------------------") + +# remove not consistent with other tools +# print("-------------------------------------") +# print("Listing "+typeval+" objects") +# print("-------------------------------------") + printresult(files_result_json,output_style) diff --git a/listtransferpackages.py b/listtransferpackages.py index 22f9c6a..de270c6 100755 --- a/listtransferpackages.py +++ b/listtransferpackages.py @@ -21,7 +21,7 @@ # import argparse , datetime, sys -from sharedfunctions import callrestapi,printresult,getfolderid,getidsanduris +from sharedfunctions import callrestapi,printresult,getfolderid,getidsanduris,createdatefilter from datetime import datetime as dt, timedelta as td parser = argparse.ArgumentParser() @@ -50,14 +50,8 @@ olderoryounger=args.olderoryounger packagefile_resultn=None -# calculate time period for files -# calculate time period for files -now=dt.today()-td(days=int(days)) -subset_date=now.strftime("%Y-%m-%dT%H:%M:%S") - -if olderoryounger=='older': - datefilter="le(creationTimeStamp,"+subset_date+")" -else: datefilter="ge(creationTimeStamp,"+subset_date+")" +# build the date filter +datefilter=createdatefilter(olderoryounger=olderoryounger,datevar='creationTimeStamp',days=days) # create a list for filter conditions filtercond=[] diff --git a/sharedfunctions.py b/sharedfunctions.py index 4db7e1d..a78f52e 100755 --- a/sharedfunctions.py +++ b/sharedfunctions.py @@ -38,6 +38,7 @@ # 20Feb2022 Support patch # 28Feb2022 Added functionality to callrestapi optionally pass in etags, and to request they be returned, for API endpoints that use them # 08Sep2022 Catch Unicode error in get_valid_filename and remove string function if it happens +# 12OCT2022 Build date filter function # # Copyright © 2018, SAS Institute Inc., Cary, NC, USA. All Rights Reserved. # @@ -65,6 +66,7 @@ import os import collections import inspect import re +from datetime import datetime as dt, timedelta as td pp = pprint.PrettyPrinter(indent=4) @@ -747,4 +749,19 @@ def getapplicationproperties(): myparams=dict(line.strip().split('=') for line in open(prop_file) if line[0].isalpha()) return myparams +# build a date filter for the REST filter +def createdatefilter(days=0,datevar='creationTimeStamp',olderoryounger='older'): + + # what date is the filter based on + thedate=dt.today()-td(days=int(days)) + + # set the timestamp to be at the end of the day for younger and the begining for older + if olderoryounger=='older': + subset_date=thedate.replace(hour=23, minute=59, second=59, microsecond=999999).strftime("%Y-%m-%dT%H:%M:%S") + datefilter="le("+datevar+","+subset_date+")" + else: + subset_date=thedate.replace(hour=00, minute=00, second=00, microsecond=999999).strftime("%Y-%m-%dT%H:%M:%S") + datefilter="ge("+datevar+","+subset_date+")" + + return datefilter diff --git a/snapshotreports.py b/snapshotreports.py index f441735..6de7611 100755 --- a/snapshotreports.py +++ b/snapshotreports.py @@ -43,7 +43,7 @@ import re import argparse, sys, subprocess, uuid, time, os, glob from datetime import datetime as dt, timedelta as td -from sharedfunctions import getfolderid, callrestapi, getpath, getapplicationproperties, get_valid_filename +from sharedfunctions import getfolderid, callrestapi, getpath, getapplicationproperties, get_valid_filename, createdatefilter # get python version @@ -81,9 +81,11 @@ nameval=args.name folderpath=args.folderpath # calculate time period for files -now=dt.today()-td(days=int(changeddays)) -subset_date=now.strftime("%Y-%m-%dT%H:%M:%S") -datefilter="ge(modifiedTimeStamp,"+subset_date+")" +# now=dt.today()-td(days=int(changeddays)) +# subset_date=now.strftime("%Y-%m-%dT%H:%M:%S") +# datefilter="ge(modifiedTimeStamp,"+subset_date+")" + +datefilter=createdatefilter(olderoryounger='younger',datevar='modifiedTimeStamp',days=changeddays) # create a list for filter conditions filtercond=[]