open-insight/LSL2/STPROC/ENVIRONMENT_SERVICES.txt
Infineon\StieberD 9d4ae3c5b3 added intrusive maintenance flow logic
updated headers for nica order request

Added reactor type support to nica checklists. Refactored flow logic to just use NICA_CHECKLISTS table.

added feature flag support

gated Feature Flags menu item to supervisors

removed debug

added auto comment for intr maint flows on reactor log, intr maint flow id to react servs form, and cancel order on unsign reactor log

added exceptions for lamp and tc services, added control to edit flow id on react servs form, added auto-reactor log comment, added cancel order on unsign event

removed debug

modified NicaOrdersServices to use env variables for group resource name

added logic to filter out service flow ids for servics with is_intrusive set to false, modified security group for feature flag menu, added ability to clear intr main flow id to react serv form

removed unused equates
2025-03-12 16:28:52 -07:00

560 lines
22 KiB
Plaintext

Function Environment_Services(@Service, @Params)
/***********************************************************************************************************************
This program is proprietary and is not to be used by or disclosed to others, nor is it to be copied without written
permission from SRP Computer Solutions, Inc.
Name : Environment_Services
Description : Handler program for all module related services.
Notes : Service module to support environmental state issues. Environmental refers to the state of the
operating system, which includes version, client vs. server, and path to critical systems.
Parameters :
Service [in] -- Name of the service being requested
Param1-10 [in/out] -- Additional request parameter holders
Response [out] -- Response to be sent back to the Controller (MCP) or requesting procedure
Metadata :
History : (Date, Initials, Notes)
11/18/17 dmb Original programmer.
06/21/18 dmb Update various services to support the MESSA005 server (Application Server). Refactor
various services to use the GetServer service instead of parsing @STATION and to use the
GetLocalRootPath service instead of hardcoding the drive letter. - [IREPIOI-50]
06/21/18 dmb Update various services to support the MESST1002 and MESST1003 terminal servers.
- [IREPIOI-50]
06/22/18 dmb Update GetLocalRootPath service to use V: for the terminal servers. - [IREPIOI-50]
06/22/18 dmb Update GetApplicationRootPath service to use the GetApplicationRootIP service.
- [IREPIOI-50]
07/03/18 dmb Add GetLabelPrintMethod service. - [IREPIOI-54]
08/06/19 fdr Added GetMetrologyProductionPath
09/25/23 djs Updated services to support Stealth migration.
***********************************************************************************************************************/
#pragma precomp SRP_PreCompiler
$insert LOGICAL
$insert SERVICE_SETUP
$insert SRPMail_Inserts
Common /EnvironmentServices/ Unused1@, Unused2@, Unused3@, Unused4@, Unused5@, Unused6@, Unused7@, Unused8@, Unused9@, Unused10@
Declare function Environment_Services, Memory_Services, SRP_List, SRP_FastArray, SRP_Array, Database_Services
Declare function Active_Directory_Services, SRP_Send_Mail, RTI_GetNetworkUserName, Utility
Declare subroutine Environment_Services, Memory_Services, SRP_List, SRP_FastArray, Database_Services, GetTempPath
Declare function GetEnvironmentVariable
GoToService else
Error_Services('Add', Service : ' is not a valid service request within the ' : ServiceModule : ' services module.')
end
Return Response OR ''
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Service Parameter Options
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
Options BOOLEAN = True$, False$
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Services
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//----------------------------------------------------------------------------------------------------------------------
// GetServer
//
// Returns the current server name. Note: this assumes that the current Process ID has been apended to @STATION.
// Therefore, this will be removed before returning to the caller.
//----------------------------------------------------------------------------------------------------------------------
Service GetServer()
NumFields = DCount(@Station, '_')
Server = Field(@Station, '_', 1, NumFields - 1)
Response = Server
end service
Service IsProd()
Machine = Environment_Services('GetServer')
IsProd = False$
If Machine _NEC "messa012" and Machine _NEC "mestsa01ec" and Machine _NEC "mestsa09ec" and Machine _NEC "mestsa010ec" and Machine _NEC "mestsa011ec" and Machine _NEC "mestsa012ec" and Machine _NEC "MESTST1010" and Machine _NEC "MESTST1009" then
IsProd = True$
end
Response = IsProd
end service
//----------------------------------------------------------------------------------------------------------------------
// GetApplicationRootPath
//
// Returns the application's root path. If this is a server, the shared folder will be included.
//----------------------------------------------------------------------------------------------------------------------
Service GetApplicationRootPath()
RootIP = Environment_Services('GetApplicationRootIP')
ApplicationRootPath = RootIP : '\Apps'
Response = ApplicationRootPath
end service
//----------------------------------------------------------------------------------------------------------------------
// GetApplicationRootIP
//
// Returns the application's root IP.
//----------------------------------------------------------------------------------------------------------------------
Service GetApplicationRootIP()
Machine = Environment_Services('GetServer')
Begin Case
Case Machine EQ 'MESSA005' ; ApplicationRootIP = '\\messa005.infineon.com'
Case Machine EQ 'MESTSA01EC' ; ApplicationRootIP = '\\10.95.140.13'
Case Machine EQ 'MESTSA09EC' ; ApplicationRootIP = '\\10.95.140.62'
Case Machine EQ 'MESTSA010EC' ; ApplicationRootIP = '\\10.95.140.63'
Case Machine EQ 'MESTSA011EC' ; ApplicationRootIP = '\\10.95.140.64'
Case Machine EQ 'MESTSA012EC' ; ApplicationRootIP = '\\10.95.140.65'
Case Machine EQ 'MESSA012' ; ApplicationRootIP = '\\10.95.176.50'
Case Machine EQ 'MESST5201' ; ApplicationRootIP = '\\10.95.140.14'
Case Machine EQ 'MESST5202' ; ApplicationRootIP = '\\10.95.140.14'
Case Machine EQ 'MESTST1009' ; ApplicationRootIP = '\\10.95.140.13'
Case Machine EQ 'MESTST1010' ; ApplicationRootIP = '\\10.95.140.13'
Case Otherwise$ ; ApplicationRootIP = '\\10.95.140.14'
End Case
Response = ApplicationRootIP
end service
//----------------------------------------------------------------------------------------------------------------------
// GetFTPRootPath
//
// Returns the FTP root path. This is where the scripts and FTP transfer files will be located.
//----------------------------------------------------------------------------------------------------------------------
Service GetFTPRootPath()
Machine = Environment_Services('GetServer')
RootPath = Environment_Services('GetLocalRootPath')
Begin Case
Case Machine EQ 'MESIRWAP001' ; FTPRootPath = RootPath
Case Machine EQ 'MESSA005' ; FTPRootPath = RootPath : '\FTP'
Case Machine EQ 'MESSA01EC' ; FTPRootPath = RootPath : '\FTP'
Case Machine EQ 'MESST6501' ; FTPRootPath = RootPath : '\FTP'
Case Machine EQ 'MESST6502' ; FTPRootPath = RootPath : '\FTP'
Case Otherwise$ ; FTPRootPath = RootPath : '\FTP'
End Case
Response = FTPRootPath
end service
//----------------------------------------------------------------------------------------------------------------------
// GetReportsRootPath
//
// Returns the Reports root path. This is where various reports will be located.
//----------------------------------------------------------------------------------------------------------------------
Service GetReportsRootPath()
RootPath = Environment_Services('GetLocalRootPath')
Response = RootPath : '\OIReports'
end service
//----------------------------------------------------------------------------------------------------------------------
// GetUserDataRootPath
//
// Returns the user data root path. This is where various reports will be located.
//----------------------------------------------------------------------------------------------------------------------
Service GetUserDataRootPath()
UserDataRootPath = '\\messdv002.na.infineon.com'
Response = UserDataRootPath
end service
//----------------------------------------------------------------------------------------------------------------------
// GetUserDataProductionPath
//
// Returns the user data production path. This is where various reports will be located.
//----------------------------------------------------------------------------------------------------------------------
Service GetUserDataProductionPath()
ProductionPath = Environment_Services('GetUserDataRootPath') : '\IT'
Response = ProductionPath
end service
//----------------------------------------------------------------------------------------------------------------------
// GetSpcFilesharePath
//
// Returns the SPC data path.
//----------------------------------------------------------------------------------------------------------------------
Service GetSpcFilesharePath()
IsProd = Environment_Services("IsProd")
If IsProd EQ True$ then
Response = '\\mesfs.infineon.com\EC_SPC_Si_Import\TXT'
end else
Path = Environment_Services('GetApplicationRootPath'):'\SPC_Data'
MakeDirSuccess = Utility("MAKEDIR", Path)
Response = Path
end
end service
//----------------------------------------------------------------------------------------------------------------------
// GetSPCDataPath
//
// Returns the SPC data path.
//----------------------------------------------------------------------------------------------------------------------
Service GetSPCDataPath()
IsProd = Environment_Services("IsProd")
If IsProd EQ True$ then
Response = '\\messa04ec.infineon.com\OI_SPC_Data_Transfer'
end else
Path = Environment_Services('GetApplicationRootPath'):'\SPC_Data'
MakeDirSuccess = Utility("MAKEDIR", Path)
Response = Path
end
end service
//----------------------------------------------------------------------------------------------------------------------
// GetMetrologyViewerURL
//
// Returns the Metrology Viewer URL.
//----------------------------------------------------------------------------------------------------------------------
Service GetMetrologyViewerURL()
ProductionPath = 'http://messa010ec.infineon.com/'
Response = ProductionPath
end service
//----------------------------------------------------------------------------------------------------------------------
// GetWaferMapProductionPath
//
// Returns the wafer map production path.
//----------------------------------------------------------------------------------------------------------------------
Service GetWaferMapProductionPath()
ProductionPath = '\\mesfs.infineon.com\EC_Metrology_Si\MetrologyAttachments\TencorRunData'
Response = ProductionPath
end service
//----------------------------------------------------------------------------------------------------------------------
// GetMetrologyProductionPath
//
// Returns the Metrology data production path.
//----------------------------------------------------------------------------------------------------------------------
Service GetMetrologyProductionPath()
ProductionPath = 'messqlec1.infineon.com\PROD1,53959'
Response = ProductionPath
end service
//----------------------------------------------------------------------------------------------------------------------
// GetControlPlanProductionPath
//
// Returns the Control Plan production path.
//----------------------------------------------------------------------------------------------------------------------
Service GetControlPlanProductionPath()
ProductionPath = 'iqsdms1'
Response = ProductionPath
end service
//----------------------------------------------------------------------------------------------------------------------
// GetWaferTrackProductionPath
//
// Returns the Wafer Track data production path.
//----------------------------------------------------------------------------------------------------------------------
Service GetWaferTrackProductionPath()
ProductionPath = 'IQSDMS1'
Response = ProductionPath
end service
//----------------------------------------------------------------------------------------------------------------------
// GetLocalRootPath
//
// Returns the local root path. This is where the scripts and FTP transfer files will be located.
//----------------------------------------------------------------------------------------------------------------------
Service GetLocalRootPath()
Machine = Environment_Services('GetServer')
Begin Case
Case Machine EQ 'MESIRWAP001' ; LocalRootPath = 'C:'
Case Machine EQ 'MESSA005' ; LocalRootPath = 'D:'
Case Machine EQ 'MESSA012' ; LocalRootPath = 'D:'
Case Machine EQ 'MESSA01EC' ; LocalRootPath = 'D:'
Case Machine EQ 'MESTSA01EC' ; LocalRootPath = 'D:'
Case Machine EQ 'MESTSA09EC' ; LocalRootPath = 'D:'
Case Machine EQ 'MESTSA010EC' ; LocalRootPath = 'D:'
Case Machine EQ 'MESTSA011EC' ; LocalRootPath = 'D:'
Case Machine EQ 'MESTSA012EC' ; LocalRootPath = 'D:'
Case Machine EQ 'MESST6501' ; LocalRootPath = 'C:' ; // This is a map to the user's actual C drive.
Case Machine EQ 'MESST6502' ; LocalRootPath = 'C:' ; // This is a map to the user's actual C drive.
Case Machine EQ 'MESTST1006' ; LocalRootPath = 'C:' ; // This is a map to the user's actual C drive.
Case Machine EQ 'MESTST1007' ; LocalRootPath = 'C:' ; // This is a map to the user's actual C drive.
Case Otherwise$ ; LocalRootPath = 'C:'
End Case
Response = LocalRootPath
end service
//----------------------------------------------------------------------------------------------------------------------
// GetLabelPrintMethod
//
// Returns the method that label programs should use for printing (i.e., OIPI or DirectPrint).
//----------------------------------------------------------------------------------------------------------------------
Service GetLabelPrintMethod()
LabelPrintMethod = Database_Services('ReadDataRow', 'APP_INFO', 'LABEL_PRINT_METHOD')<1>
Locate LabelPrintMethod in 'OIPI,DirectPrint' using ',' setting cPos else LabelPrintMethod = 'OIPI'
Response = LabelPrintMethod
end service
//----------------------------------------------------------------------------------------------------------------------
// GetDispositionReportPath
//
// Returns the path to where disposition reports are stored. This is used for GaN Run Data Sheets.
//----------------------------------------------------------------------------------------------------------------------
Service GetDispositionReportPath()
! Deprecated - GaN
ReportPath = '\\messdv002.na.infineon.com\Characterization\Disposition Reports'
Response = ReportPath
end service
//----------------------------------------------------------------------------------------------------------------------
// GetPrintServerPath
//
// Returns printer server UNC path.
//----------------------------------------------------------------------------------------------------------------------
Service GetPrintServerPath()
ServerPath = '\\messp1002.na.infineon.com\'
Response = ServerPath
end service
//----------------------------------------------------------------------------------------------------------------------
// GetDispositionReportPath
//
// Returns the path to where GaN reactor schedule excel spreadsheets are stored.
//----------------------------------------------------------------------------------------------------------------------
Service GetGaNSchedulePath()
! Deprecated - GaN
ReportPath = '\\messv02ecc1.ec.local\EC_MOCVD\Aixtron Reactor Schedulers'
Response = ReportPath
end service
//----------------------------------------------------------------------------------------------------------------------
// SetServerCanary
//
// Sets a datetime stamp into the APP_INFO table and the canary.txt file to establish the last time it was successful in
// accessing the database.
//----------------------------------------------------------------------------------------------------------------------
Service SetServerCanary()
hSysLists = Database_Services('GetTableHandle', 'SYSLISTS')
Lock hSysLists, ServiceKeyID then
DateTimeStamp = Oconv(Date(), 'D4/') : ' - ' : Oconv(Time(), 'MTHS')
Database_Services('WriteDataRow', 'APP_INFO', 'CANARY', DateTimeStamp, True$, False$, True$)
If Error_Services('NoError') then
OSWrite DateTimeStamp to Environment_Services('GetApplicationRootPath') : '\LogFiles\Canary\Canary.txt'
// Call SRP Send Mail to make sure it is already cached.
Result = SRP_Send_Mail('', '')
end else
Error = Error_Services('GetMessage')
Message = ''
Message<1> = 'Message from the ' : Service : ' service.'
Message<2> = 'oinotify@infineon.com'
Message<3> = 'dstieber@srpcs.com,dbakke@srpcs.com,Dan.Crisp@infineon.com,4805890050@vtext.com,7143924402@tmomail.net,jonathan.ouellette@infineon.com'
Message<7> = 'TEXT'
Message<8> = 'Error in ' : Service : ' service. Message: ' : Error
Message<9> = ''
Config = ''
Config<1> = SendUsing_Port$
Config<3> = 25
Config<4> = 'mailrelay-external.infineon.com' ; //'appmail.eu.infineon.com'
Config<5> = True$
Config<6> = 'oinotify@infineon.com'
Config<7> = 'oinotify1'
Config<8> = False$
Result = SRP_Send_Mail(Message, Config)
end
Unlock hSysLists, ServiceKeyID else Null
end
end service
Service GetSAPPath()
Machine = Environment_Services('GetServer')
Environment = 'QA'
Begin Case
Case Machine EQ 'MESSA005' ; Environment = 'PRD'
Case Machine EQ 'MESSA01EC' ; Environment = 'PRD'
End Case
Response = Environment
end service
Service GetSQLScrapeConnectionString()
Machine = Environment_Services('GetServer')
Begin Case
Case Machine = 'MESSA01EC'
// PROD SQL Servers
ConnectionString = 'Provider=MSOLEDBSQL.1;Password=0okm9ijn;Persist Security Info=True;User ID=srpadmin;Initial Catalog=LSL2SQL;Data Source=MESSQLEC1.infineon.com\PROD1,53959;Initial File Name="";Trust Server Certificate=True;Server SPN="";Authentication="";Access Token=""'
Case ( (Machine = 'MESTSA01EC') or (Machine = 'MESTSA09EC') or (Machine = 'MESTSA010EC') or (Machine = 'MESTSA011EC') or (Machine = 'MESTSA012EC') )
// DEV SQL Servers
ConnectionString = 'Provider=MSOLEDBSQL.1;Password=Fisql2023!;Persist Security Info=True;User ID=fisql;Initial Catalog=LSL2SQL;Data Source=10.95.140.27\TEST1,50572;Initial File Name="";Trust Server Certificate=True;Server SPN="";Authentication="";Access Token=""'
Case Otherwise$
// Default to DEV SQL Servers just in case
ConnectionString = 'Provider=MSOLEDBSQL.1;Password=Fisql2023!;Persist Security Info=True;User ID=fisql;Initial Catalog=LSL2SQL;Data Source=10.95.140.27\TEST1,50572;Initial File Name="";Trust Server Certificate=True;Server SPN="";Authentication="";Access Token=""'
End Case
Response = ConnectionString
end service
Service GetUserDesktopPath()
Response = ''
UserRootPath = ''
UserName = RTI_GetNetworkUserName()
Machine = Environment_Services('GetServer')
If Machine EQ 'MESST5201' OR Machine EQ 'MESST5202' OR Machine EQ 'MESTST1009' OR Machine EQ 'MESTST1010' then
RootPath = '\\tsclient\C\Users\'
end else
RootPath = 'C:\Users\'
end
If UserName NE '' then
Response = RootPath : UserName : '\Desktop\'
end
end service
Service GetTempPath()
TempDirectory = Str(\00\, 1024)
GetTempPath(Len(TempDirectory), TempDirectory)
Convert \00\ to '' in TempDirectory
Response = TempDirectory
end service
Service GetMonaResource()
If Environment_Services("IsProd") then
Response = "OPENINSIGHT_MES_OP_FE"
end else
Response = "OPENINSIGHT_MES_OP_FE_DEV"
end
end service
Service GetMonInBufferedWorkerApiUrl()
If Environment_Services("IsProd") then
Response = "https://messa014.infineon.com:7851"
end else
Response = "https://mestsa008.infineon.com:7851"
end
end service
Service GetProveInApiUrl()
If Environment_Services("IsProd") then
Response = "https://messa014.infineon.com:8851"
end else
Response = "https://mestsa008.infineon.com:8851"
end
end service
Service GetIfxEmailServer()
Response = 'smtp.intra.infineon.com'
end service
Service GetEnvironmentVariable(VariableName)
If VariableName NE '' then
VarLength = GetEnvironmentVariable(VariableName, "", 0) + 1
VarValue = space(VarLength+1)
VarLength = GetEnvironmentVariable(VariableName, VarValue, VarLength)
VarValue = VarValue[1, VarLength]
Response = VarValue
end else
Error_Services('Add', 'Error in service ':Service:'. Null VariableName passed in')
end
end service
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Internal GoSubs
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////