You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
119 lines
3.2 KiB
119 lines
3.2 KiB
#!/usr/bin/python
|
|
# -*- coding: utf-8 -*-
|
|
#
|
|
# exportcustomgroups.py
|
|
# Feb 2021
|
|
#
|
|
# Pass in a customgroups and this tool will export the customgroups to a apcakge
|
|
#
|
|
#
|
|
# Change History
|
|
#
|
|
#
|
|
# 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.
|
|
#
|
|
|
|
# Import Python modules
|
|
import argparse, sys, subprocess, uuid, time, os, glob, json, tempfile
|
|
|
|
from sharedfunctions import getfolderid, callrestapi, getapplicationproperties, printresult
|
|
|
|
# get python version
|
|
version=int(str(sys.version_info[0]))
|
|
|
|
# get cli location from properties
|
|
propertylist=getapplicationproperties()
|
|
|
|
clidir=propertylist["sascli.location"]
|
|
cliexe=propertylist["sascli.executable"]
|
|
|
|
clicommand=os.path.join(clidir,cliexe)
|
|
|
|
tempdir=tempfile.gettempdir()
|
|
|
|
# get input parameters
|
|
parser = argparse.ArgumentParser(description="Export Custom Groups to a Package")
|
|
|
|
parser.add_argument("-f","--filename", help="Full path to file. (No extension)",default="/tmp/customgroups")
|
|
parser.add_argument("-d","--debug", action='store_true', help="Debug")
|
|
|
|
|
|
args= parser.parse_args()
|
|
|
|
filename=args.filename
|
|
debug=args.debug
|
|
|
|
# create the requests file of the custom groups
|
|
|
|
# get all groups that are custom
|
|
reqtype='get'
|
|
reqval='/identities/groups/?filter=eq(providerId,"local")&limit=10000'
|
|
groupslist_result_json=callrestapi(reqval,reqtype)
|
|
|
|
groups = groupslist_result_json['items']
|
|
|
|
#if debug: print(json.dumps(groups,indent=2))
|
|
|
|
""" This is the json format {
|
|
"version": 1,
|
|
"name": "Modelers",
|
|
"description": "Modelers",
|
|
"items": [ "/identities/groups/SalesModelers",
|
|
"/identities/groups/HRModelers"
|
|
]
|
|
} """
|
|
|
|
basename = os.path.basename(filename)
|
|
|
|
requests_dict={"version":1}
|
|
requests_dict["name"]=basename
|
|
requests_dict["description"]="Custom Groups from pyviyatools "+basename
|
|
|
|
grouplist=[]
|
|
|
|
# create a dictionary that will generate the requests file
|
|
for group in groups:
|
|
|
|
group_uri="/identities/groups/"+group['id']
|
|
grouplist.append(group_uri)
|
|
|
|
requests_dict["items"]=grouplist
|
|
|
|
if debug: print(json.dumps(requests_dict,indent=2))
|
|
|
|
# build the requests file from the list
|
|
|
|
request_file=os.path.join(tempdir,filename+"_requests.json")
|
|
|
|
with open(request_file, "w") as outfile:
|
|
json.dump(requests_dict, outfile)
|
|
|
|
# export the groups to a package file
|
|
|
|
command=clicommand+' transfer export -r @'+request_file+' --name "'+basename+'"'
|
|
|
|
print(command)
|
|
subprocess.call(command, shell=True)
|
|
|
|
reqtype='get'
|
|
reqval='/transfer/packages?filter=eq(name,"'+basename+'")'
|
|
package_info=callrestapi(reqval,reqtype)
|
|
package_id=package_info['items'][0]['id']
|
|
|
|
completefile=os.path.join(filename+'.json')
|
|
command=clicommand+' transfer download --file '+completefile+' --id '+package_id
|
|
|
|
print(command)
|
|
subprocess.call(command, shell=True)
|
|
|