Subversion Repositories DevTools

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
165 brianf 1
<%
2
'=====================================================
3
'                release_changed.asp
4
'=====================================================
5
%>
6
<%
7
' Release Change Mode
5097 dpurdie 8
Const enumRELEASE_CHANGE_MODE_PKG_ADDED = 1     'Package added to release
9
Const enumRELEASE_CHANGE_MODE_PKG_REMOVED = 2   'Package removed from release
10
Const enumRELEASE_CHANGE_MODE_PKG_RELEASED = 3  'Package released
165 brianf 11
 
12
 
13
Class ReleaseChanged
14
 
15
private m_pkg_name
16
private m_pkg_version
17
private m_pkg_id
18
private m_proj_id
5168 dpurdie 19
Private m_data_collected
165 brianf 20
 
5097 dpurdie 21
Public last_resultCode
5168 dpurdie 22
Public last_errorMsg
5097 dpurdie 23
 
165 brianf 24
'-----------------------------------------------------------------------------------------------------------------
5168 dpurdie 25
' Init class variables
26
Private Sub Class_Initialize()
27
    m_data_collected = false
28
    last_resultCode = -1
29
    last_errorMsg = ""
5097 dpurdie 30
End Sub
31
 
32
'-----------------------------------------------------------------------------------------------------------------
165 brianf 33
' Retrieves package infomation for the specified package version
34
' This information is required for the make_release_changed script
35
Public Sub Get_Package_Info (artag_id,apv_id)
167 brianf 36
   Dim ssql, rsTemp
5168 dpurdie 37
   On Error Resume Next
38
   m_data_collected = false
165 brianf 39
 
40
   ' Get package information   
41
   ssql = _
42
   " SELECT pv.pkg_id,pk.pkg_name,pv.pkg_version,rt.proj_id"&_
43
   " FROM package_versions pv, packages pk, release_tags rt"&_
44
   " WHERE" &_
45
   "     pv.pv_id = " & apv_id &_
46
   " AND pv.pkg_id = pk.pkg_id" &_
47
   " AND rt.rtag_id = " & artag_id
48
 
49
   Set rsTemp = OraDatabase.CreateDynaset( ssql, cint(0))
5168 dpurdie 50
   If Err.Number <> 0 Then
51
      last_resultCode = Err.Number
52
      last_errorMsg = Err.Description
53
      Exit Sub
54
   End If
165 brianf 55
 
56
   If ((NOT rsTemp.BOF) AND (NOT rsTemp.EOF)) Then
57
      m_pkg_name = rsTemp("pkg_name")
58
      m_pkg_version = rsTemp("pkg_version")
59
      m_pkg_id = rsTemp("pkg_id")
60
      m_proj_id = rsTemp("proj_id")
5168 dpurdie 61
      m_data_collected = true
165 brianf 62
   Else
5168 dpurdie 63
      last_resultCode = 8
64
      last_errorMsg = "Error getting package information.  PV_ID:" & APV_ID & " not found in. RTAG_ID:" & artag_id
65
      Err.Raise 8, "release_changed.asp", last_errorMsg
66
      'Call RaiseMsg ( enum_MSG_ERROR, Err.description )
165 brianf 67
   End If
68
   rsTemp.Close
69
   Set rsTemp = Nothing
70
End Sub
71
 
72
'-----------------------------------------------------------------------------------------------------------------
73
' Run script job, ReleaseChanged, of script, on_Make_Official.wsf for the specified list of package versions.
74
' apv_id_list is a comma separated list of pv_id's
75
Sub Run_ReleaseChanged_List(artag_id,apv_id_list,amode_id)
76
  Dim pv_id, idArr
77
 
78
  idArr = Split(apv_id_list,",")
79
  For Each pv_id in idArr
167 brianf 80
    If IsReleased(artag_id,pv_id) Then
81
      Call Run_ReleaseChanged(artag_id,pv_id,amode_id,true)
82
    End If
165 brianf 83
  Next
84
End Sub
85
 
86
'-----------------------------------------------------------------------------------------------------------------
5168 dpurdie 87
'   Run a job on the package server to indicate that a package has been
88
'   released. The primary purpose of this is to trigger a BLAT package transfer
89
'
90
'   Perhaps it could be done via the RM Database
91
'   ie: Have a table of blat requests. Then we have no need to perform this slow
92
'       operation.
93
'
94
'   Uses ssh to communicate with the archive server and run the unix script, make_release_changed
95
'
96
'   Args:   artag_id    - Release Identifier
97
'           apv_id      - Package Identifier
98
'           amode_id    - Mode of indication. One of enumRELEASE_CHANGE_MODE_*
99
'           aget_info   - Boolean: true if we need to populate the glabls with pkg info
100
'
165 brianf 101
Sub Run_ReleaseChanged(artag_id,apv_id,amode_id,aget_info)
5168 dpurdie 102
    Dim pArchive_Path, sudoCmd, plinkPath, plinkCmd, wCmdLine
165 brianf 103
 
5168 dpurdie 104
    pArchive_Path = "dpkg_archive"
105
    last_resultCode = -1
165 brianf 106
 
5168 dpurdie 107
    if aget_info then
108
        Call Get_Package_Info (artag_id,apv_id)
109
        If Err.Number <> 0 Then
110
            Report_Event enumEVENT_ERROR, "make_release_changed", "", "Get_Package_Info:" & Err.Description
111
            Exit Sub
112
        End If
113
    end if
165 brianf 114
 
5168 dpurdie 115
    ' Ensure that we have some data
116
    If not m_data_collected Then
117
        Report_Event enumEVENT_ERROR, "make_release_changed", "", "Package Info not present"
118
        Exit Sub
119
    End If
5097 dpurdie 120
 
5168 dpurdie 121
    ' Build up the command line to the target script
122
    ' Note: DoubleQuotes quotes will be escaped \"
123
    '       Double space will be process as <ret> for error reporting
124
    ' Chr(92) == \
125
    ' Chr(34) == "
126
    ' Chr(39) = '
5097 dpurdie 127
    sudoCmd = "~/sbin/make_release_changed" &_
5168 dpurdie 128
         "  archive=" & pArchive_Path &_
129
         "  pkg_name='" & Chr(34) & m_pkg_name & Chr(34) & "'" &_
130
         "  pkg_version='" & Chr(34) & m_pkg_version & Chr(34) & "'" &_
131
         "  rtag_id="& artag_id &_
132
         "  pkg_id=" & m_pkg_id &_
133
         "  pv_id="& apv_id &_
134
         "  proj_id="& m_proj_id &_
135
         "  mode_id="& amode_id
5097 dpurdie 136
 
5168 dpurdie 137
    Dim pkgCredentails, uname, upasswd
138
    pkgCredentails = split(PKGARCHIVE_CREDENTIALS,":")
139
    uname = pkgCredentails(0)
140
    upasswd = pkgCredentails(1)
141
 
5097 dpurdie 142
    plinkPath = Request.ServerVariables("APPL_PHYSICAL_PATH") & "Release_Manager\scripts\bin\plink.exe"
5168 dpurdie 143
    plinkCmd =  "-ssh -batch " & uname & "@" & archive_server & " -pw " & upasswd & " ""sudo " & Replace(sudoCmd,Chr(34),Chr(92)&Chr(34)) & ";"""
5097 dpurdie 144
    wCmdLine =  plinkPath & " " & plinkCmd
5168 dpurdie 145
 
146
    Dim objWSH, rv
5097 dpurdie 147
    Set objWSH = Server.CreateObject("WScript.Shell")
5168 dpurdie 148
    rv = objWSH.Run (wCmdLine, 0, TRUE)
5097 dpurdie 149
    Set objWSH = Nothing
150
 
5168 dpurdie 151
    '
152
    '   Report Errors
5169 dpurdie 153
    '   105 - Package not in archive. Not a real issue
154
    If rv = 0 OR rv = 105 Then
5168 dpurdie 155
        last_resultCode = 0
156
    Else
157
        last_resultCode = 1
158
        Report_Event enumEVENT_ERROR, "make_release_changed", Replace(sudoCmd,"  ", VBNewLine), "Remote command on pkg server reported:"  & rv
159
    End If
160
 
5097 dpurdie 161
End Sub
162
 
167 brianf 163
'-----------------------------------------------------------------------------------------------------------------------------
164
' Get the package are in which the package version resides (ie wip, planned, released)
165
Function Get_Pkg_Area (artagId, apvId)
166
   OraDatabase.Parameters.Add "RTAG_ID",        artagId,                 ORAPARM_INPUT, ORATYPE_NUMBER
167
   OraDatabase.Parameters.Add "PV_ID",          apvId,                   ORAPARM_INPUT, ORATYPE_NUMBER
168
   OraDatabase.Parameters.Add "PKG_AREA",       -1,                      ORAPARM_OUTPUT,ORATYPE_NUMBER
169
 
170
   OraDatabase.ExecuteSQL _
171
   "BEGIN "&_
172
   " :PKG_AREA := PK_ENVIRONMENT.GET_PACKAGE_AREA ( :PV_ID, :RTAG_ID ); "&_
173
   "END; "
174
   Get_Pkg_Area = OraDatabase.Parameters("PKG_AREA").Value
175
 
176
   OraDatabase.Parameters.Remove "RTAG_ID"
177
   OraDatabase.Parameters.Remove "PV_ID"
178
   OraDatabase.Parameters.Remove "PKG_AREA"
179
End Function
180
 
181
'-----------------------------------------------------------------------------------------------------------------------------
182
' Returns TRUE if the specified package is released
183
Function IsReleased (artagId, apvId)
184
  IsReleased = (CInt(Get_Pkg_Area(artagId, apvId)) = CInt(enum_PKG_AREA_RELEASED))
185
End Function
186
 
165 brianf 187
End Class
188
%>