def __init__(self, url_onevizion='', login_onevizion='', pass_onevizion='', trackor_type='', report_name=''): self.url_onevizion = self.url_setting(url_onevizion) self.trackor_type = trackor_type self.report_name = report_name self.headers = { 'Content-type': 'application/json', 'Content-Encoding': 'utf-8' } self.auth_onevizion = HTTPBasicAuth(login_onevizion, pass_onevizion) self.case_list_request = onevizion.Trackor( trackorType=self.trackor_type, URL=self.url_onevizion, userName=login_onevizion, password=pass_onevizion) self.user_list_request = onevizion.Trackor(trackorType='User', URL=self.url_onevizion, userName=login_onevizion, password=pass_onevizion) self.check_case_status()
def __init__(self, process_id="", url_onevizion="", login_onevizion="", pass_onevizion="", url_ike="", login_ike="", pass_ike=""): self.url_onevizion = self.url_setting(url_onevizion) self.login_onevizion = login_onevizion self.pass_onevizion = pass_onevizion self.auth_onevizion = HTTPBasicAuth(login_onevizion, pass_onevizion) self.url_ike = self.url_setting(url_ike) self.login_ike = login_ike self.pass_ike = pass_ike self.fm_list_request = onevizion.Trackor( trackorType='ike_field_mapping', URL=self.url_onevizion, userName=login_onevizion, password=pass_onevizion) self.headers = { 'Content-type': 'application/json', 'Content-Encoding': 'utf-8' } self.process_id = process_id self.start_integration()
def VersionInfo(GivenVersion): ThisVersion = {} if 'RC' in GivenVersion: QueryVersion = GivenVersion.split('-RC')[0] VerType = 'UAT' else: QueryVersion = GivenVersion VerType = 'Production' # Find the Release Date for Prod Version VersionRequest = onevizion.Trackor( trackorType='Version', URL='trackor.onevizion.com', userName=PasswordData["trackor.onevizion.com"]["UserName"], password=PasswordData["trackor.onevizion.com"]["Password"]) VersionRequest.read(filters={ "TRACKOR_KEY": QueryVersion, "Product.TRACKOR_KEY": Product }, fields=['TRACKOR_KEY', 'VER_REL_DATE']) if len(VersionRequest.errors) == 0: ThisVersion['Version'] = cleanVersionNumber( VersionRequest.jsonData[0]['TRACKOR_KEY']) ThisVersion['ReleaseDate'] = datetime.datetime.strptime( VersionRequest.jsonData[0]['VER_REL_DATE'], '%Y-%m-%d') ThisVersion['Type'] = VerType return ThisVersion
def __init__(self, url_onevizion, login_onevizion, pass_onevizion, issue_trackor_type, issue_statuses, issue_fields): self.issue_statuses = IssueStatuses(issue_statuses) self.issue_fields = IssueFields(issue_fields) self.issue_service = onevizion.Trackor(trackorType=issue_trackor_type, URL=url_onevizion, userName=login_onevizion, password=pass_onevizion)
def __init__(self, ov_auth, trackor_type, field_mappings, trackor_filter): self._ov_auth = ov_auth self._trackor = onevizion.Trackor(trackor_type, ov_auth.url, ov_auth.access_key, ov_auth.secret_key, isTokenAuth=ov_auth.is_token_auth) self._field_mappings = field_mappings self._trackor_filter = trackor_filter
def GetVersionsList(VersionsStr, VersionDate): AllVers = [] VersionRequest = onevizion.Trackor(trackorType='Version', paramToken='trackor.onevizion.com') VersionRequest.read( search= "equal(TRACKOR_KEY, 8.*) and equal(Product.TRACKOR_KEY, OneVizion) and is_not_null(VER_REL_DATE)", fields=['TRACKOR_KEY', 'VER_REL_DATE'], sort={'TRACKOR_KEY': 'asc'}) for Version in VersionRequest.jsonData: AllVers.append(VersionSplit(cleanVersionNumber( Version['TRACKOR_KEY']))) VersionDate[Version['TRACKOR_KEY']] = Version['VER_REL_DATE'] VersionRequest.read( search= "equal(TRACKOR_KEY, 19.*) and equal(Product.TRACKOR_KEY, OneVizion) and is_not_null(VER_REL_DATE)", fields=['TRACKOR_KEY', 'VER_REL_DATE'], sort={'TRACKOR_KEY': 'asc'}) for Version in VersionRequest.jsonData: AllVers.append(VersionSplit(cleanVersionNumber( Version['TRACKOR_KEY']))) VersionDate[Version['TRACKOR_KEY']] = Version['VER_REL_DATE'] for Version in VersionRequest.jsonData: AllVers.append(VersionSplit(cleanVersionNumber( Version['TRACKOR_KEY']))) VersionDate[Version['TRACKOR_KEY']] = Version['VER_REL_DATE'] VersionRequest.read( search= "equal(TRACKOR_KEY, 2*) and equal(Product.TRACKOR_KEY, OneVizion) and is_not_null(VER_REL_DATE)", fields=['TRACKOR_KEY', 'VER_REL_DATE'], sort={'TRACKOR_KEY': 'asc'}) for Version in VersionRequest.jsonData: AllVers.append(VersionSplit(cleanVersionNumber( Version['TRACKOR_KEY']))) VersionDate[Version['TRACKOR_KEY']] = Version['VER_REL_DATE'] AllVers.sort(key=operator.itemgetter(0, 1, 2)) Message(json.dumps(AllVers, indent=2), 2) for Version in AllVers: if "%d.%d.%d" % (Version[0], Version[1], Version[2]) not in VersionsStr: VersionsStr.append("%d.%d.%d" % (Version[0], Version[1], Version[2])) Message(json.dumps(VersionsStr, indent=2), 2)
import onevizion # Having a parameters file is just an easy way to not have you passwords stored in a script PasswordData = onevizion.GetParameters('Parameters.json') # This enables some automatic messaging within the onveizion library. Can be 0, 1, or 2. the higher the number, the more messages you get. onevizion.Config["Verbosity"] = 1 #Let's create some Trackor object for later use in the script #Trackor object to get a list of Needed "Casees" CaseRequest = onevizion.Trackor( trackorType='Case', URL='trackor.onevizion.com', userName=PasswordData["trackor.onevizion.com"]["UserName"], password=PasswordData["trackor.onevizion.com"]["Password"]) #Trackor object to pull individual "Cases" from Production CasePuller = onevizion.Trackor( trackorType='Case', URL='trackor.onevizion.com', userName=PasswordData["trackor.onevizion.com"]["UserName"], password=PasswordData["trackor.onevizion.com"]["Password"]) #Trackor object to Push "Cases" into UAT CaseMaker = onevizion.Trackor( trackorType='Case', URL='uat-trackor.onevizion.com', userName=PasswordData["uat-trackor.onevizion.com"]["UserName"], password=PasswordData["uat-trackor.onevizion.com"]["Password"]) # Since some of the fields are EFiles, let's first get a list, then do the records one at a time to # reduce the memory required for the total transfer and reduce the chances of failure. CaseRequest.read( search=
TempRoot = "Temp" if not os.path.exists(TempRoot): os.makedirs(TempRoot) for row in ParamFile: # TrackorID = row['TRACKOR_ID'] FieldName = row['FIELD_NAME'] TrackorKey = row['TRACKOR_KEY'] FileName = row['FILE_NAME'] Path = row['PATH'] FilePath = Path + '/' + FileName EFileReq = onevizion.Trackor(URL=URL, userName=OVUserName, password=OVPassword) tmpFileName = EFileReq.GetFile(trackorId=TrackorID, fieldName=FieldName) i = i + 1 LogRow = "Row %d - %s - %s - %s" % (i, TrackorID, TrackorKey, FieldName) print(LogRow) LogFile.write(LogRow + "\n") if not EFileReq.request.ok or len(EFileReq.errors) > 0: #handle errors Errors[FilePath + '-DownloadErrors'] = str(EFileReq.errors) ErrorCSV.writerow(row) LogError = 'Error: Row: ' + str(i) + " => " + str(EFileReq.errors) print(LogError) LogFile.write(LogError + "\n") else:
cnopts.compression = False cnopts.ciphers = None cnopts.hostkeys = None sftp = pysftp.Connection(SftpHost, username=SftpUN, password=SftpPWD, cnopts=cnopts) except: Message('could not connect') Message(sys.exc_info()) quit(1) # make sure api user has RE on the tab with checkbox and the field list of blobs and RE for the trackor type(sometimes Checklist) and R for WEB_SERVICES Req = onevizion.Trackor(trackorType='SPMSINTERFACE', URL=OvUrl, userName=OvUserName, password=OvPassword) Req.read(filters={'SI_READY_FOR_DELIVERY': 1}, fields=['TRACKOR_KEY', 'SI_READY_FOR_DELIVERY', 'SI_INTERFACE_FILE'], sort={'TRACKOR_KEY': 'ASC'}, page=1, perPage=1000) if len(Req.errors) > 0: # If can not read list of efiles then must be upgrade or something. Quit and try again later. print(Req.errors) quit(1) # send files to Inbound directory for f in Req.jsonData: f1 = open(f['TRACKOR_KEY'], 'w')
Message('ERROR: Import took too long') return False if process_data["status"] in [ 'EXECUTED', 'EXECUTED_WITHOUT_WARNINGS', 'EXECUTED_WITH_WARNINGS' ]: return True class MyCnOpts: #used by sftp connection pass ##### Main section Req = onevizion.Trackor(trackorType='SFTP_TO_OV', URL=OvUrl, userName=OvUserName, password=OvPassword) Req.read(filters={'SOI_ENABLED': '1'}, fields=[ 'TRACKOR_KEY', 'SOI_SFTP_HOST', 'SOI_SFTP_USER_NAME', 'SOI_ORDER_TO_PROCESS', 'SOI_SFTP_FOLDER', 'SOI_FILE_MASK', 'SOI_IMPORT_NAME', 'SOI_ACTION', 'SOI_IMPORT_ID', 'SOI_SFTP_ARCHIVE_FOLDER', 'SOI_DAYS_TO_KEEP_IN_ARCHIVE', 'SOI_DATE_PORTION_OF_FILE_NAME', 'SOI_DATE_CRUFT_TO_REMOVE', 'SOI_DATE_FORMAT', 'SOI_PREPROCESSOR_SCRIPT', 'SOI_EXTRA_SFTP_COMMAND', 'SOI_PREPROCESSOR_COMMAND', 'SOI_MAX_RUNTIME_IN_MINUTES' ], sort={'SOI_ORDER_TO_PROCESS': 'ASC'}, page=1, perPage=1000)
AllVersions.index(NewerVersion['Version']) + 1): NeededVersions.append(AllVersions[i]) Message("{NumVers} versions to list.".format(NumVers=len(NeededVersions))) Message(json.dumps(NeededVersions, indent=2), 1) NeededVersions.reverse() for Ver in NeededVersions: VersionList[Ver] = datetime.datetime.strptime(VersionDates[Ver], '%Y-%m-%d') Versions = [] # Get Issues for any Versions attached to this Email IssueList = onevizion.Trackor( trackorType='Issue', URL='trackor.onevizion.com', userName=PasswordData["trackor.onevizion.com"]["UserName"], password=PasswordData["trackor.onevizion.com"]["Password"]) for Version, RelDate in VersionList.items(): Ver = {} IssueList.read(filters={ "Version.TRACKOR_KEY": Version, "Product.TRACKOR_KEY": "OneVizion", "VQS_IT_DONT_INCLUDE_IN_REL_NOTES": "0" }, fields=[ 'TRACKOR_KEY', 'VQS_IT_XITOR_NAME', 'VQS_IT_RELEASE_NOTES', 'TRACKOR_CLASS_ID' ], sort={ 'TRACKOR_CLASS_ID': 'desc',
# copy_from will pitch a 403/404 error if file is not in s3 yet obj.copy_from( CopySource={ 'Bucket': SourceBucket, 'Key': fileName }, MetadataDirective='REPLACE', ContentType=head['ResponseMetadata']['HTTPHeaders']['content-type'], ContentDisposition=head['ResponseMetadata']['HTTPHeaders'] ['content-disposition']) # make sure api user has RE on the tab with checkbox and list of blobs(ADMIN_CHECKLIST) and RE for the trackor type(Checklist) and R for WEB_SERVICES Req = onevizion.Trackor(trackorType='Checklist', URL=OvUrl, userName=OvUserName, password=OvPassword) Req.read(filters={ReadyCheckbox: '1'}, fields=[ReadyCheckbox, BlobIdList, 'TRACKOR_KEY'], sort={'TRACKOR_KEY': 'ASC'}, page=1, perPage=1000) if len(Req.errors) > 0: print(Req.errors) quit(1) for cl in Req.jsonData: #print(cl['TRACKOR_KEY']) hasErrors = False if cl[BlobIdList] is None:
Imp = onevizion.Import(paramToken=ConfigToken, impSpecId=Params["ImportID"], action='UPDATE', file=filename + "2") if len(Imp.errors) > 0 or Imp.processId is None: Message(filename + " failed to Import from TalonView.") Err = True continue else: ProcID = Imp.processId Message( "{File} import successfully started. ProcessID={ProcID}".format( File=filename, ProcID=ProcID), 1) # c) Get List of TrackorIDs of COP-Lines with this associated COP as lookup COPLineRequest = onevizion.Trackor( trackorType=Params["COPLineTrackorType"], paramToken=ConfigToken) COPLineRequest.read( filters={Params["COPTrackorType"] + ".TRACKOR_KEY": COP}, fields=['TRACKOR_KEY']) COPLines = {} for COPLine in COPLineRequest.jsonData: COPLines[COPLine["TRACKOR_KEY"]] = COPLine["TRACKOR_ID"] # d) Go through each document from zip file for docname in glob.glob(Params["InboundFolder"] + "/" + COP + "/*.*"): # Remove extension Message("Processing File {File}".format(File=docname), 1) # DocData is the FileName with the folder part and extension stripped off DocData = ".".join(docname.split("/")[-1].split(".")[:-1]) # Remove last hyphen section , which is the file number and join the rest back up, remove the extra whitespace off the ends
</get:AuthInfo> <get:msg> <get:_LHASH_KEY_>E001|oDlpS4ZiwZEd5giUkMSxKXBIb9bOafcOJOBXRnzuVyepiReYCylXFRL4qz9gV</get:_LHASH_KEY_> <get:TIN>""" + str(INN) + """</get:TIN> </get:msg> </get:GetFullLegalEntityInfo> </x:Body> </x:Envelope>""" response = requests.post(urlx, data=body, headers=headers, verify=False) my_dict = xmltodict.parse(response.content) myvars = my_dict['env:Envelope']['env:Body']['n1:LEGAL_ENTITY_INFORMATION'] cbu_list_request = onevizion.Trackor(trackorType='VEDOMSTVO', URL=url, userName=login, password=password) cbu_list_request.create( fields={ 'VED_OKPO': myvars['OKPO'][1], 'VED_INN': myvars['TIN'][1], 'VED_KFS_CD': myvars['KFS_CD'][1], 'VED_KOPF_CD': myvars['KOPF_CD'][1], 'VED_SOATO': myvars['SOATO_CD'][1], 'VED_OKONH': myvars['OKONH_CD'][1], 'VED_OKED': myvars['OKED_CD'][1], 'VED_SOOGU': myvars['SOOGU_CD'][1], 'VED_SHORT_NAME': myvars['LE_NM_UZ'][1], 'VED_NAME': myvars['LE_NM_UZ'][1], #'VED_REG_DATE':myvars['REG_DATE'][1],
ErrorCSV.writerow(row) LogError = 'Error: Row: ' + str(i) + " => " + "Empty file" print(LogError) LogFile.write(LogError + "\n") continue except: Errors[FullFilePath + '-ReadErrors'] = str(sys.exc_info()[0]) ErrorCSV.writerow(row) LogError = 'Error: Row: ' + str(i) + " => Cannot read file" print(LogError) LogFile.write(LogError + "\n") continue OVCall = onevizion.Trackor(trackorType=TrackorType, URL=URL, userName=OVUserName, password=OVPassword) # Create Parent Set connections for this Row parents = {} for key, value in Configuration["mappings"]["parent"].items(): if len(row[key]) > 0: parents[value] = {"TRACKOR_KEY": row[key]} #Create Fields mapping for this Row fields = {} for key, value in Configuration["mappings"]["this"].items(): if len(row[key]) > 0: fields[value] = row[key] # Attach Document fields[FieldName] = {'file_name': NewFileName, 'data': B64Data}
args = parser.parse_args() ParametersFile = args.parameters WebUser = args.user WebKeyFile = os.path.expanduser(args.key) TunnelUser = args.tunneluser TunnelKeyFile = os.path.expanduser(args.tunnelkey) # FInd Home Folder of user HomeFolder = os.path.expanduser('~') # Load in Passwords from protected file. ParameterData = onevizion.GetParameters(ParametersFile) ServerListRequest = onevizion.Trackor(trackorType = 'server', paramToken = 'trackor.onevizion.com') ServerListRequest.read( filters={ 'VQS_SVR_LOCATION':'AWS', 'EC2_PRIVATE_DNS':'not null' }, fields=[ 'TRACKOR_KEY', 'EC2_PRIVATE_IP', 'EC2_PRIVATE_DNS', 'EC2_CLIENT_TAG' ] ) if len(ServerListRequest.errors) > 0: print str(ServerListRequest.errors) quit()
ReadyStatus = params['ReadyStatus'] BlobIdList = params['BlobIdList'] ZipFieldName = params['ZipFieldName'] ZipFieldFileName = params['ZipFieldFileName'] ZipErrorField = params['ZipErrorField'] except Exception as e: raise "Please check settings" if ZipFieldFileName is None or ZipFieldFileName == "": fields = [ReadyStatus, BlobIdList, 'TRACKOR_KEY'] else: fields = [ReadyStatus, BlobIdList, ZipFieldFileName, 'TRACKOR_KEY'] # make sure api user has RE on the tab with checkbox and the field list of blobs and RE for the trackor type(sometimes Checklist) and R for WEB_SERVICES Req = onevizion.Trackor(trackorType=TrackorType, URL=OvUrl, userName=OvUserName, password=OvPassword) Req.read(filters={ReadyStatus: 'Queued'}, fields=fields, sort={'TRACKOR_KEY': 'ASC'}, page=1, perPage=1000) if len(Req.errors) > 0: # If can not read list of efiles then must be upgrade or something. Quit and try again later. print(Req.errors) quit(1) print("Found {x} records".format(x=len(Req.jsonData))) for cl in Req.jsonData: print('Starting ' + cl['TRACKOR_KEY'])