Subversion Repositories DevTools

Rev

Rev 6676 | Rev 7279 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
5357 dpurdie 1
<%@LANGUAGE="VBSCRIPT"%>
2
<%
3
'=====================================================
4
'|                                                   |
5
'|                   wAddDaemon                      |
6
'|                                                   |
7
'=====================================================
8
%>
9
<%
10
Option explicit
11
Response.Expires = 0
12
%>
13
<!--#include file="common/conf.asp"-->
14
<!--#include file="common/globals.asp"-->
15
<!--#include file="common/formating.asp"-->
16
<!--#include file="common/qstr.asp"-->
17
<!--#include file="common/common_subs.asp"-->
18
<!--#include file="common/_form_window_common.asp"-->
19
<%
20
'------------ ACCESS CONTROL ------------------
21
%>
22
<!--#include file="_access_control_general.asp"-->
23
<!--#include file="_access_control_login.asp"-->
24
<%
25
'------------ VARIABLE DEFINITION -------------
26
Dim rsQry, healthTag, cmdInterface, pkgOwner, isInterface, package, procDesc
27
Dim sMessage
28
Dim Query_String
29
Dim RecordCount
30
Dim bmcon_id
31
Dim daemon_mode
32
Dim gbe_buildfilter
33
Dim bShowEmpty
7278 dpurdie 34
Dim bAdd
5357 dpurdie 35
'------------ CONSTANTS DECLARATION -----------
36
'------------ VARIABLE INIT -------------------
37
sMessage = NULL
38
 
39
parRtag_id = Request("rtag_id")
5523 dpurdie 40
bmcon_id = RequestDefault("bmcon_id",Request("base_bmcon_id"))
7278 dpurdie 41
bAdd = (Request("rcon_id") = "")
5357 dpurdie 42
 
43
Set objFormCollector = CreateObject("Scripting.Dictionary")
44
'------------ CONDITIONS ----------------------
45
'----------------------------------------------
46
%>
47
<%
48
'--------------------------------------------------------------------------------------------------------------------------
7278 dpurdie 49
' Function:     GetData
50
' Description:  Determine the basic data for the edit session
51
Sub GetData
52
 
53
     '  Determine if any daemons have been configured in this release
54
     '  Will be used to determine if a new entry should be a MASTER or a SLAVE
55
     '
56
     Query_String = "select * " &_
57
    				" from release_config rc," &_
58
    				"      gbe_machtype gbe " &_
59
    				" where rc.rtag_id = "& parRtag_id &_
60
    				"   and gbe.gbe_id = rc.gbe_id"
61
 
62
     Set rsQry = OraDatabase.DbCreateDynaset( Query_String, cint(0))
63
 
64
     RecordCount = rsQry.RecordCount
65
     If RecordCount = 0 Then
66
    	daemon_mode = "M"
67
     else   
68
    	daemon_mode = "S"
69
     End If
70
     rsQry.Close()
71
     Set rsQry = Nothing
72
 
73
 
74
    ' Edit an existing entry
75
    '   May have a link into the build_machine_config - or it may not
76
    '   Check first
77
    bShowEmpty = TRUE
78
 
79
	If NOT bAdd Then
80
        Query_String = "SELECT * " &_
81
                       " FROM RELEASE_CONFIG rc," &_
82
                       "      gbe_machtype gb" &_
83
                       " WHERE rc.rcon_id = "& Request("rcon_id") &_
84
                       "   AND rc.gbe_id = gb.gbe_id"
85
 
86
        Set rsQry = OraDatabase.DbCreateDynaset( Query_String, cint(0))
87
 
88
        If rsQry.RecordCount > 0 Then
89
            bmcon_id        =  rsQry("bmcon_id")
90
            daemon_mode     =  rsQry("daemon_mode")
91
            gbe_buildfilter =  NiceCStr(rsQry("gbe_buildfilter"),"")
92
        End If
93
 
94
        rsQry.Close()
95
        Set rsQry = Nothing
96
    End If
97
 
98
    If NOT isNULL(bmcon_id) AND bmcon_id <> "" Then
99
 
100
    	'   Extract information from the machine config
101
    	Query_String = "SELECT * " &_
102
    				   " FROM build_machine_config bc, " &_
103
    				   "      gbe_machtype gb " &_
104
    				   "WHERE bc.bmcon_id = " & bmcon_id &_
105
    				   "  AND bc.gbe_id = gb.gbe_id"
106
 
107
    	Set rsQry = OraDatabase.DbCreateDynaset( Query_String, cint(0))
108
 
109
    	If rsQry.RecordCount > 0 Then
110
    		bmcon_id        =  rsQry("bmcon_id")
111
    		bShowEmpty      = FALSE
112
    	End If
113
 
114
    	rsQry.Close()
115
    	Set rsQry = Nothing
116
    End If
117
 
118
	' Cleanup gbe_buildfilter
119
    Dim regEx
120
    Set regEx = New RegExp
121
    regEx.Global = true
122
    regEx.IgnoreCase = True
123
 
124
    regEx.Pattern = "\s{2,}"
125
 
126
    gbe_buildfilter = Replace(gbe_buildfilter,","," ")
127
    gbe_buildfilter = Trim(regEx.Replace(gbe_buildfilter, " "))
128
End Sub
129
 
130
Sub InsertXrefData
131
	'
132
	'   Create a data structure (javascript) to map build machine (bmcon_id) to available platforms
133
	'
134
    Query_String = "SELECT bp.bp_name, bp.bp_id, bc2.bmcon_id" &_
135
            " FROM release_manager.build_platforms bp, release_manager.build_platforms_config2 bc2 " &_
136
            " WHERE bp.bp_id = bc2.bp_id " &_
137
            " ORDER BY upper(bp.bp_name)"
138
 
139
    Set rsQry = OraDatabase.DbCreateDynaset( Query_String, ORADYN_DEFAULT )
140
    While (NOT rsQry.BOF) AND (NOT rsQry.EOF)
141
        Response.Write "AddXrefEntry('" & rsQry("bp_name") &"',"& rsQry("bmcon_id") & ");" & vbCrLf
142
       rsQry.MoveNext
143
    Wend
144
    rsQry.Close()
145
    Set rsQry = Nothing
146
End Sub
147
 
148
 
5357 dpurdie 149
'-------------------------------------------------
150
' Function:     GetMachHost    
151
' Description:  Determine the current Display Host Information for a given BMCON_ID
152
'               Do not show build machines that are no longer 'allowed' unless
153
'               it is currently selected.
154
' Arguments:    abmcon_id   - A BMCON_ID
155
'
156
' Returns:      An array with 5 elements in it - to be used in creating a multicolum drop down list
157
'                   
158
Function GetMachHost (abmcon_id)
159
   Dim rsQry, query
160
 
5503 dpurdie 161
   OraDatabase.Parameters.Add "bmcon_id", abmcon_id,            ORAPARM_INPUT, ORATYPE_NUMBER
162
   OraDatabase.Parameters.Add "rtag_id",  Request("rtag_id"),   ORAPARM_INPUT, ORATYPE_NUMBER
5357 dpurdie 163
 
5503 dpurdie 164
   query = ReadFile( rootPath & "queries\available_build_machines.sql" )
5357 dpurdie 165
 
166
   Set rsQry = OraDatabase.DbCreateDynaset( query, ORADYN_DEFAULT )
167
   If (NOT rsQry.BOF) AND (NOT rsQry.EOF) Then
168
      GetMachHost = rsQry.GetRows()
169
   Else
170
      GetMachHost = NULL
171
   End If
172
 
173
   rsQry.Close()
174
   Set rsQry = Nothing
175
 
176
   OraDatabase.Parameters.Remove "bmcon_id"
5503 dpurdie 177
   OraDatabase.Parameters.Remove "rtag_id"
5357 dpurdie 178
End Function
179
'--------------------------------------------------------------------------------------------------------------------------
180
'------------ RUN BEFORE PAGE RENDER ----------
181
 
182
If CBool(Request("action")) Then
183
 
5523 dpurdie 184
    If  bmcon_id = "" Then
5357 dpurdie 185
        sMessage = "Select a Build Machine before updating the entry"
186
    Else
187
 
188
       '    Add or Update after the users edit session
189
       If Request("rcon_id") <> "" Then
190
 
191
          OraDatabase.Parameters.Add "RCON_ID",         Request("rcon_id"),         ORAPARM_INPUT, ORATYPE_NUMBER
5523 dpurdie 192
          OraDatabase.Parameters.Add "BMCON_ID",        bmcon_id,                   ORAPARM_INPUT, ORATYPE_NUMBER
5357 dpurdie 193
          OraDatabase.Parameters.Add "DAEMON_MODE",     Request("daemon_mode"),     ORAPARM_INPUT, ORATYPE_VARCHAR2
194
          OraDatabase.Parameters.Add "GBE_BUILDFILTER", Request("gbe_buildfilter"), ORAPARM_INPUT, ORATYPE_VARCHAR2
195
 
5590 dpurdie 196
          objEH.ErrorRedirect = FALSE
5357 dpurdie 197
          objEH.TryORA ( OraSession )
198
          On Error Resume Next
199
 
200
          OraDatabase.ExecuteSQL "BEGIN  PK_BUILDAPI.UPDATE_DAEMON_CONFIG(:RCON_ID, :BMCON_ID, :DAEMON_MODE, :GBE_BUILDFILTER);  END;"
201
          OraSession.CommitTrans
202
 
203
          objEH.CatchORA ( OraSession )
204
 
205
          OraDatabase.Parameters.Remove "RCON_ID"
206
          OraDatabase.Parameters.Remove "BMCON_ID"
207
          OraDatabase.Parameters.Remove "DAEMON_MODE"
208
          OraDatabase.Parameters.Remove "GBE_BUILDFILTER"
209
 
210
          If objEH.Finally Then
211
             Call OpenInParentWindow ("release_config.asp?rtag_id="&parRtag_id)
212
             Call CloseWindow()
213
          End If
214
 
215
          rsQry.Close
216
          Set rsQry = nothing
217
 
218
       Else
219
          OraDatabase.Parameters.Add "RTAG_ID",         Request("rtag_id"),         ORAPARM_INPUT, ORATYPE_NUMBER
5523 dpurdie 220
          OraDatabase.Parameters.Add "BMCON_ID",        bmcon_id,                   ORAPARM_INPUT, ORATYPE_NUMBER
5357 dpurdie 221
          OraDatabase.Parameters.Add "DAEMON_MODE",     Request("daemon_mode"),     ORAPARM_INPUT, ORATYPE_VARCHAR2
222
          OraDatabase.Parameters.Add "GBE_BUILDFILTER", Request("gbe_buildfilter"), ORAPARM_INPUT, ORATYPE_VARCHAR2
223
 
5590 dpurdie 224
          objEH.ErrorRedirect = FALSE
5357 dpurdie 225
          objEH.TryORA ( OraSession )
226
          On Error Resume Next
227
 
228
          OraDatabase.ExecuteSQL "BEGIN  PK_BUILDAPI.ADD_DAEMON_CONFIG(:RTAG_ID, :BMCON_ID, :DAEMON_MODE, :GBE_BUILDFILTER);  END;"
229
 
230
          objEH.CatchORA ( OraSession )
231
 
232
          OraDatabase.Parameters.Remove "RTAG_ID"
233
          OraDatabase.Parameters.Remove "BMCON_ID"
234
          OraDatabase.Parameters.Remove "DAEMON_MODE"
235
          OraDatabase.Parameters.Remove "GBE_BUILDFILTER"
236
 
237
          If objEH.Finally Then
238
             Call OpenInParentWindow ("release_config.asp?rtag_id="&parRtag_id)
239
             Call CloseWindow()
240
          End If
241
 
242
          rsQry.Close
243
          Set rsQry = nothing
244
 
245
       End If
246
    End If
247
End If
7278 dpurdie 248
call GetData
5357 dpurdie 249
'----------------------------------------------
7278 dpurdie 250
Sub InsertJavaScript %>
251
<script type="text/javascript" charset="utf-8">
252
    var platformXref = {};
253
    $(document).ready(function(){
254
 
255
        // Function to init Platform CrossRef Data
256
        // Create a two dimensional associative array
257
        //      First level - Platform Name
258
        //      Second Level - BMCONID
259
        //
260
        function AddXrefEntry(platform, bmconid){
261
            platform = platform.toUpperCase();
262
            if ( ! platformXref[platform] ) {
263
                platformXref[platform] = {};
264
            }
265
            platformXref[platform][bmconid] = 1;
266
        };
267
        //  Function calls generated by the ASP code to create a data structure
268
        <%Call InsertXrefData%>
269
 
270
        //  Add in two special platforms. NONE and TOOLSET
271
        AddXrefEntry('TOOLSET', 'ALL');
272
        AddXrefEntry('NONE', 'ALL');
273
 
274
        // Initial config of visible PLATFORMS
275
        setbmConId();
276
 
277
    	// Wire up the MachType selector to modify the available PLATFORMS
278
    	$('#selBmConId').change( setbmConId );
279
 
280
        // Wire up the GBE_BUILDFILTER so that user changes are represented
281
    	$('#gbe_buildfilter').change( setbmConId );
282
 
283
        // Update the available platforms when the user changes the GBE_MACHTYPE
284
        // Sanitise the value of GBE_BUILDFILTER
285
        // Operation relies on the fact that
286
        //      Hidden items will not be submitted as a part of the form
287
        //      Platforms supported on multiple machines will appear multiple times
288
        function setbmConId(  )
289
        {
290
			console.log("Doing stuff");
291
            var bmConId = $('#selBmConId').children("option:selected").val();
292
            var table = $('#selPlat');
293
			table.empty();
294
 
295
			//  Parse the existing GBE_BUILDFILTER so that we can determine any platforms that are not
296
            //  supported on the selected build machine
297
            //  Convert the GBE_BUILDFILTER into an object for easy processing
298
			var curFilter = {};
299
			var tmpStr = $('#gbe_buildfilter').val().trim().replace(/,/g, ' ').toUpperCase();
300
            if ( tmpStr.length <= 0 ) {
301
				tmpStr = 'NONE';
302
            }
303
			var curFilterArray = tmpStr.split(/\s+/);
304
            for ( i = 0; i < curFilterArray.length; i++ ) {
305
				curFilter[curFilterArray[i]] = 1;
306
			}
307
            $('#gbe_buildfilter').val(Object.keys(curFilter).sort().join(' '));
308
 
309
            // Insert platforms supported on selected machine
310
            Object.keys(platformXref).sort().forEach(platform => {
311
                if ( platformXref[platform][bmConId] ||  platformXref[platform]['ALL'] ){
312
                    table.append(createPlatformRow(platform, curFilter[platform], undefined));
313
					delete curFilter[platform]; 
314
                }
315
            });
316
 
317
            // Insert platforms NOT supported on selected machine
318
            // Prepend in reverse order
319
            Object.keys(curFilter).sort().reverse().forEach(platform => {
320
                if ( platform ) {
321
                    table.prepend(createPlatformRow(platform, true, 'err_alert'));
322
                }
323
            });
324
        }
325
 
326
        // Local function to create a platform row, with checkbox
327
        //
328
        function createPlatformRow(platform, state, eClass){
329
            var row = $("<tr/>").addClass('body_txt selPlat').addClass(eClass);
330
            var td = $("<td/>");
331
            var item = $("<input/>").attr('type', 'checkbox').css('margin','0px 3px').prop('checked', state).change(updateGbeFilter);
332
            var itemText = $("<span/>").text(platform);
333
            if ( eClass ) {
334
                itemText.append(' - Not available');
335
            }
336
            td.append(item);
337
            td.append(itemText);
338
            row.append(td);
339
            return row;
340
        }
341
 
342
        // Update GBE_BUILDFILTER as the user selects and deselects platforms
343
        function updateGbeFilter(){
344
			var state = this.checked;
345
			var platform = $(this).parent().text().trim();
346
			var idx = platform.indexOf(' - ');
347
            if ( idx >= 0 )
348
                platform = platform.substring(0, idx );
349
 
350
            // Add or remove item
351
            //  Split the string into an array
352
            //  Always remove the item
353
            //  Append the platform - if adding
354
            //  Sort and reform a space-seperated string
355
            //
356
			var gbeFilter = $('#gbe_buildfilter').val().trim().split(/\s+/);
357
            gbeFilter = gbeFilter.filter(e => e !== platform);
358
            if ( state ) {
359
                gbeFilter.push(platform);
360
            }
361
 
362
            gbeFilter = gbeFilter.sort();
363
            $('#gbe_buildfilter').val(gbeFilter.join(' '));
364
        }
365
    });
366
</script>
367
<%End Sub
368
'-------------------------------------------------
5357 dpurdie 369
%>
370
<html>
371
<head>
372
<title>Release Manager</title>
373
<link rel="shortcut icon" href="<%=FavIcon%>"/>
374
<meta HTTP-EQUIV="Pragma" CONTENT="no-cache">
375
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
6579 dpurdie 376
<link href="images/release_manager_style.css?ver=<%=VixVerNum%>" rel="stylesheet" type="text/css">
6676 dpurdie 377
<script language="JavaScript" src="scripts/common.js?ver=<%=VixVerNum%>"></script>
7278 dpurdie 378
<!--#include file="_jquery_includes.asp"-->
379
<%Call InsertJavaScript %>
5357 dpurdie 380
</head>
381
 
382
<body background="images/bg_bage_0.gif" leftmargin="0" topmargin="0" onLoad="self.focus();FormName.bmcon_id.focus();">
383
<table width="100%"  border="0" cellspacing="0" cellpadding="10">
384
   <tr>
5590 dpurdie 385
      <td bgcolor="#FFFFFF" class="body_txt">
7278 dpurdie 386
		<%If bAdd Then%>
387
         Add a new DAEMON
388
		<%Else%>
389
         Edit an existing DAEMON
390
		<%End If%>
5357 dpurdie 391
      </td>
392
   </tr>
393
 
394
   <%
395
   '-- FROM START --------------------------------------------------------------------------------------------------------------
396
   objFormComponent.FormName = "FormName"
5590 dpurdie 397
   objFormComponent.FormClass = "form_tight"
5357 dpurdie 398
   objFormComponent.Action = ScriptName
399
   objFormComponent.OnSubmit = "ShowProgress();"
400
   Call objFormComponent.FormStart()
401
   %>
402
   <tr>
403
      <td>
5590 dpurdie 404
         <!-- LOCAL ERROR +++++++++++++++++++++++++++++++++++++++++++++++ -->
5357 dpurdie 405
         <%Call Messenger ( sMessage , 3, "100%" )%>
406
         <!-- MESSAGE +++++++++++++++++++++++++++++++++++++++++++++++++++ -->
407
         <!--#include file="messages/_msg_inline.asp"-->
408
         <table width="50%" border="0">
409
            <tr>
410
               <td><span class="body_txt">Daemon Host</span></td>
411
               <td>
7278 dpurdie 412
                  <%=objFormComponent.Combo_Multi ( "bmcon_id", GetMachHost(bmcon_id), bShowEmpty, "id=selBmConId class='body_txt'",3,"20,20,50")%>
5357 dpurdie 413
               </td>
414
            </tr>
415
            <tr>
416
               <td><span class="body_txt">Daemon Mode</span></td>
417
               <td>
418
                 <select name="daemon_mode" class='body_txt'>
7278 dpurdie 419
                   <option value=M <%=iif(daemon_mode="M","selected","")%>>Master</option>
420
                   <option value=S <%=iif(daemon_mode="S","selected","")%>>Slave</option>
5357 dpurdie 421
                 </select>
422
               </td>
423
            </tr>
424
            <tr>
425
               <tr>
426
                  <td><span class="body_txt">GBE_BUILDFILTER</span></td>
7278 dpurdie 427
                  <td><input id=gbe_buildfilter name="gbe_buildfilter" type="text" class="body_txt" size="120" spellcheck="false" value="<%=gbe_buildfilter%>"></td>
5357 dpurdie 428
               </tr>
429
            </tr>
7278 dpurdie 430
            <tr>
431
               <td><span class="body_txt nowrap">Platforms</span></td>
432
               <td style="border: darkgrey 1px solid">
433
				<div style="overflow-y: scroll;height: 20em;">
434
					<table id=selPlat></table>
435
				</div>
436
               </td>
437
            </tr>
5590 dpurdie 438
         </table>
439
      </td>
440
   </tr>
441
   <tr>
442
      <td bgcolor=#FFFFFF>
443
         <table class="full_table">
5357 dpurdie 444
            <tr>
5590 dpurdie 445
               <td><%=ProgressBar()%></td>
446
               <td align="right">
447
                  <input name="btn" type="submit" class="form_btn" value="Add/Update">
448
                  <input name="btn" type="reset" class="form_btn" value="Cancel" onclick="parent.closeIFrame();">
449
               </td>
5357 dpurdie 450
            </tr>
451
         </table>
452
      </td>
453
   </tr>
454
   <%=objPMod.ComposeHiddenTags()%>
455
   <input type="hidden" name="action" value="true">
5523 dpurdie 456
   <input type="hidden" name="base_bmcon_id" value="<%=bmcon_id%>">
7278 dpurdie 457
 <%If NOT bAdd Then%>
458
	 <input type="hidden" name="rcon_id" value="<%=Request("rcon_id")%>">
459
 <% End If %>
5357 dpurdie 460
   <%
461
   Call objFormComponent.FormEnd()
462
   '-- FROM END ----------------------------------------------------------------------------------------------------------------
463
   %>
464
</table>
465
</body>
466
</html>
467
<%
468
'------------ RUN AFTER PAGE RENDER -----------
469
Set objFormCollector = Nothing
470
'----------------------------------------------
471
Call Destroy_All_Objects
472
%>