����JFIF��x�x����'
Server IP : 78.140.185.180 / Your IP : 3.14.249.46 Web Server : LiteSpeed System : Linux cpanel13.v.fozzy.com 4.18.0-513.11.1.lve.el8.x86_64 #1 SMP Thu Jan 18 16:21:02 UTC 2024 x86_64 User : builderbox ( 1072) PHP Version : 7.3.33 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : OFF | Pkexec : OFF Directory : /opt/dell/srvadmin/var/lib/openmanage/xslroot/sm/template/common/ |
Upload File : |
<?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format"> <!--The code below includes Utils.xsl which contains commonly called templates to get layout, read policy, write policy etc which can be resused/--> <xsl:include href="Utils.xsl"/> <xsl:include href="cvdutils.xsl"/> <xsl:key name="ADsForCandidate" match="//ArrayDisks" use="@CandidateName"/> <xsl:key name="ADsForChannel" match="//ArrayDisks" use="@EnclosureName"/> <!--main entry point into this XSL, this XSL is loaded three times by the webplugin containing this XSL /--> <xsl:template match="/"> <xsl:choose> <xsl:when test="//Table='Selection'"> <!--the template below is applied the when the webplugin containing this XSL is loaded for the second time /--> <!--the template below renders the selection data in the selection table/--> <xsl:call-template name="SelectionData"/> </xsl:when> <xsl:when test="//Table='Result'"> <!--the template below is applied the when the webplugin containing this XSL is loaded for the third time /--> <!--the template below renders the result data in the result table/--> <xsl:call-template name="ResultData"/> </xsl:when> <xsl:otherwise> <!--the template below is applied the when the webplugin containing this XSL is loaded for the first time /--> <!-- But wait! Must do some error checking. If there's a problem render error frame. --> <xsl:choose> <xsl:when test="/OMA/GetCapsResp/DCStorageObject"> <xsl:choose> <xsl:when test="/OMA/GetCapsResp/DCStorageObject/MinDisksAdded <= /OMA/GetCapsResp/DCStorageObject/MaxDisksAdded"> <!-- No errors, rendor main frame --> <xsl:call-template name="RenderMainFrame"/> </xsl:when> <xsl:otherwise> <xsl:call-template name="RenderErrorFrame"/> </xsl:otherwise> </xsl:choose> </xsl:when> <xsl:when test="//ManageSSC = '1'"> <!-- No errors, rendor main frame --> <xsl:choose> <xsl:when test="count(//ArrayDisks[@EnclosureName]//DCStorageObject) = 1 and count(//ArrayDisks[@LDN]//DCStorageObject)= 1"> <xsl:call-template name="RenderErrorFrame"/> </xsl:when> <xsl:otherwise> <xsl:call-template name="RenderMainFrame"/> </xsl:otherwise> </xsl:choose> </xsl:when> <xsl:otherwise> <xsl:call-template name="RenderErrorFrame"/> </xsl:otherwise> </xsl:choose> </xsl:otherwise> </xsl:choose> </xsl:template> <xsl:template name="RenderErrorFrame"> <!--Error page --> <DataArea validate="false" Refresh="false"> <AlertMessage alert="true" status="4"> <xsl:attribute name="display"><xsl:value-of select="//VirtualDisks/DCStorageObject/Name"/> <xsl:choose><xsl:when test="//ManageSSC = '1'"><xsl:value-of select="$strResizeErr"/></xsl:when><xsl:otherwise><xsl:value-of select="$strReconfigureErr"/></xsl:otherwise></xsl:choose> </xsl:attribute> </AlertMessage> <SubHeader> <xsl:attribute name="display"><xsl:value-of select="$strNoReconfig"/></xsl:attribute> </SubHeader> <ListData> <Data> <xsl:attribute name="display">-</xsl:attribute> <xsl:attribute name="value"><xsl:value-of select="$strReason1"/></xsl:attribute> </Data> <Data> <xsl:attribute name="display">-</xsl:attribute> <xsl:attribute name="value"><xsl:value-of select="$strReason2"/></xsl:attribute> </Data> <Data> <xsl:attribute name="display">-</xsl:attribute> <xsl:attribute name="value"><xsl:value-of select="$strReason3"/></xsl:attribute> </Data> <Data> <xsl:attribute name="display">-</xsl:attribute> <xsl:attribute name="value"><xsl:value-of select="$strReason4"/></xsl:attribute> </Data> </ListData> <BottomCustomButton> <Data> <xsl:attribute name="href">./DataArea?plugin=com.dell.sm.webplugins.VDInfoWebPlugin&ControllerOID=<xsl:value-of select="//ControllerOID"/>&ControllerName=<xsl:value-of select="//ControllerName"/>&Action=blank&help=vdprin&ManageSSC=<xsl:value-of select="//ManageSSC"/></xsl:attribute> <xsl:attribute name="display"><xsl:value-of select="$strExitWizard"/></xsl:attribute> </Data> </BottomCustomButton> </DataArea> </xsl:template> <xsl:template name="RenderMainFrame"> <!--the code below is rendered first/--> <!--Contains code to render the Data Area minus the Selection and Result Table/--> <DataArea exportdata="false" printable="false" email="false"> <!--xsl:attribute name="submit">javascript:submitReconfigureVD()</xsl:attribute> <xsl:attribute name="submitdisplay"><xsl:value-of select="$strContinue"/></xsl:attribute--> <xsl:variable name="isAdaptec"> <xsl:choose> <xsl:when test="/OMA/GetCapsResp/DCStorageObject/ReConfigDiskDelFlag">1</xsl:when> <xsl:otherwise>0</xsl:otherwise> </xsl:choose> </xsl:variable> <xsl:variable name="isVDOCEPossible"> <xsl:choose> <xsl:when test="/OMA/GetCapsResp/DCStorageObject/IsVDOCEPossible">1</xsl:when> <xsl:otherwise>0</xsl:otherwise> </xsl:choose> </xsl:variable> <xsl:variable name="PARAM_Layout"><xsl:value-of select="/OMA/VirtualDisks/DCStorageObject/Layout"/></xsl:variable> <script language="javascript"> <xsl:call-template name="getCommonScripts"/> </script> <script language="javascript"> function isValidNumDisks(num, numdisksinVD, expandcapacity) { var layoutValue='<xsl:value-of select="$PARAM_Layout"/>'; if(layoutValue=="512") { // check for uneven number of disks if(num %2 != 0) { alert("<xsl:value-of select="$strError"/>" + "<xsl:value-of select="$strUnevenDisksError"/>"); return false; } } // mindisk is the min amount of disk that you must add. var mindisk =0; <xsl:if test="//GetCapsResp/DCStorageObject/MinDisksAdded"> mindisk = <xsl:value-of select="//GetCapsResp/DCStorageObject/MinDisksAdded"/>; </xsl:if> // Checks if there are no disks at all in result table OR // if there are no additional disks added and you must add at least one disk if( (num == 0) || ( ( (num - numdisksinVD) == 0) && mindisk > 0 && !expandcapacity) ) { // Must select at least one disk alert("<xsl:value-of select="$strError"/>" + "<xsl:value-of select="$strAddDisk"/>"); return false; } else { // max disks possible in VD var maxdisk =1; <xsl:if test="//GetCapsResp/DCStorageObject/MaxDisksAdded"> maxdisk = <xsl:value-of select="//GetCapsResp/DCStorageObject/MaxDisksAdded"/>; </xsl:if> var allowedmax = maxdisk - numdisksinVD; var newlyaddeddisks = num - numdisksinVD; // Check if selected disk is greater then the allowed if(newlyaddeddisks > allowedmax) { alert("<xsl:value-of select="$strError"/>" + "<xsl:value-of select="$strDiskAdded"/> " + newlyaddeddisks + "\n<xsl:value-of select="$strMaxAllowed"/> " + allowedmax); return false; } } return true; } function submitReconfigureVD(expandcapacity) { var numDisks = frames["RESULT_TABLE"].getSelectedArrayDisksObjIDsArray().length; var IDList = frames["RESULT_TABLE"].getSelectedArrayDisksObjIDs(); <xsl:if test="//ManageSSC = '1'"> var OldIDList = new Array(); var IDListArray = new Array(); IDListArray= IDList.split(":"); var MaxDisksAllowedInSSC = 32; if(IDListArray.length > MaxDisksAllowedInSSC) { alert("<xsl:value-of select="$strMaxAllowedSSC"/>"+MaxDisksAllowedInSSC ); return; } var num =0; <xsl:for-each select="//ArrayDisks[@LDN]/DCStorageObject"> OldIDList[num++] = '<xsl:value-of select="ObjID"/>'; </xsl:for-each> var noPrevDisk=0; for( var i=0;i<OldIDList.length;i++) { for(var j=0;j<IDListArray.length;j++) { if(OldIDList[i]== IDListArray[j]) { noPrevDisk++; } } } if ((OldIDList.length ==noPrevDisk ) && (IDListArray.length==noPrevDisk)) { alert("<xsl:value-of select="$strNoChange"/>"); return; } if(noPrevDisk == 0) { alert("<xsl:value-of select="$strNoOldDisk"/>"); return; } </xsl:if> var rulesVal = ""; // number of disks in the VD minus DHS var numdisksinVD = <xsl:value-of select="count(//ArrayDisks[@LDN]/DCStorageObject/AttributesMask[substring(.,24,1)='0'])" />; var isReallyAdaptec = "<xsl:value-of select="$isAdaptec"/>"; var isReallyVDOCEPossible = "<xsl:value-of select="$isVDOCEPossible"/>"; var numNewDisk = numDisks - numdisksinVD; <xsl:if test="//ManageSSC != '1'"> if(isValidNumDisks(numDisks, numdisksinVD, expandcapacity)) { if((numNewDisk > 0) || (isReallyAdaptec == 1)) { if (expandcapacity) { //If disk is selected then expand capacity is not applicable alert("<xsl:value-of select="$strExpCapNotApplicable"/>"); return; } else { //If adaptec or if disks were added. rulesVal="4"; } } else { if (expandcapacity && isReallyVDOCEPossible == 1) { // no disks were added, and not adaptec, VDOCEP possible and user has clicked on it. rulesVal="6"; } else { // no disks were added, and not adaptec and user not clicked on VDOCE. rulesVal="5"; } } var PDsel = frames["SELECTION_TABLE"].getSelectedPDInfo(IDList); if(frames["SELECTION_TABLE"].getPowerStateCount(IDList)) { alert("<xsl:value-of select="$strDataWarningLevel3"/>" + "\n" +PDsel); } } else { return; } </xsl:if> <xsl:choose> <xsl:when test="//ManageSSC = '1'"> document.dataarea.action = top.gnv.appendVID("./SubmitForm?plugin=com.dell.sm.webplugins.SubmitReconfigureVDSummaryWebPlugin&ControllerOID=<xsl:value-of select="//ControllerOID"/>&ControllerName=<xsl:value-of select="//ControllerName"/>&Length=<xsl:value-of select="/OMA/Length"/>&IDList="+IDList+"&VirtualDiskOID=<xsl:value-of select="/OMA/VirtualDiskOID"/>&URL=<xsl:value-of select="//BackTo"/>&ManageSSC=<xsl:value-of select="//ManageSSC"/>"); document.dataarea.submit(); </xsl:when> <xsl:otherwise> document.location.href = top.gnv.appendVID("./DataArea?plugin=com.dell.sm.webplugins.ReconfigureVDSizeWebPlugin&ControllerOID=<xsl:value-of select="//ControllerOID"/>&ControllerName=<xsl:value-of select="//ControllerName"/>&VirtualDiskOID=<xsl:value-of select="/OMA/VirtualDiskOID"/>&VDName=<xsl:value-of select="//VirtualDisks/DCStorageObject/Name"/>&VDiskName=<xsl:value-of select="//VDiskName"/>&VDeviceName=<xsl:value-of select="//DeviceName"/>&IDList="+IDList+"&Rules="+rulesVal+"&ExpandCapacity="+expandcapacity+"&help=vdtkrcn2"); </xsl:otherwise> </xsl:choose> } </script> <PageTitle> <xsl:attribute name="display"><xsl:choose><xsl:when test="//ManageSSC = '1'"><xsl:value-of select="$strResizeEC"/></xsl:when><xsl:otherwise><xsl:value-of select="$strReconfigure"/></xsl:otherwise></xsl:choose><xsl:value-of select="//VirtualDisks/DCStorageObject/Name"/><xsl:value-of select="$strSpace"/><xsl:if test="//ManageSSC!='1'"><xsl:value-of select="$strStep1"/></xsl:if></xsl:attribute> </PageTitle> <PromptText><xsl:choose><xsl:when test="//ManageSSC = '1'"><xsl:value-of select="$strSubTitleEC"/></xsl:when><xsl:otherwise><xsl:value-of select="$strSubTitleVD"/></xsl:otherwise></xsl:choose></PromptText> <xsl:if test="$isVDOCEPossible = 1 and //ManageSSC != '1'"> <PromptText><xsl:value-of select="$strExpandCapacityDescription"/></PromptText> </xsl:if> <CustomButton> <Data> <xsl:attribute name="display"><xsl:value-of select="$strRefresh"/></xsl:attribute> <xsl:attribute name="href">./DataArea?plugin=com.dell.sm.webplugins.ReconfigureVDWebPlugin&ControllerOID=<xsl:value-of select="//ControllerOID"/>&ControllerName=<xsl:value-of select="//ControllerName"/>&VirtualDiskOID=<xsl:value-of select="/OMA/VirtualDiskOID"/>&help=vdtkrcn1</xsl:attribute> </Data> </CustomButton> <BottomCustomButton> <Data formSubmit="true" id="submitbuttoncontent"> <xsl:attribute name="name">contdbutton</xsl:attribute> <xsl:attribute name="href">javascript:submitReconfigureVD(false)</xsl:attribute> <xsl:attribute name="display"><xsl:choose><xsl:when test="//ManageSSC = '1'"><xsl:value-of select="$strFinish"/></xsl:when><xsl:otherwise><xsl:value-of select="$strContinue"/></xsl:otherwise></xsl:choose></xsl:attribute> </Data> </BottomCustomButton> <xsl:if test="$isVDOCEPossible = 1 and //ManageSSC != '1'"> <BottomCustomButton> <Data formSubmit="true"> <xsl:attribute name="name">expcapbutton</xsl:attribute> <xsl:attribute name="href">javascript:submitReconfigureVD(true)</xsl:attribute> <xsl:attribute name="display"><xsl:value-of select="$strExpandCapacity"/></xsl:attribute> </Data> </BottomCustomButton> </xsl:if> <BottomCustomButton> <Data> <xsl:attribute name="href">./DataArea?plugin=com.dell.sm.webplugins.VDInfoWebPlugin&ControllerOID=<xsl:value-of select="//ControllerOID"/>&ControllerName=<xsl:value-of select="//ControllerName"/>&Action=blank&help=vdprin&ManageSSC=<xsl:value-of select="//ManageSSC"/></xsl:attribute> <xsl:attribute name="display"><xsl:value-of select="$strExitWizard"/></xsl:attribute> </Data> </BottomCustomButton> <SelectionDataUI> <SelectionTableUI id="SELECTION_TABLE" height="95%" width="90%"> <xsl:attribute name="href">./DataArea?plugin=com.dell.sm.webplugins.ReconfigureVDWebPlugin&ControllerOID=<xsl:value-of select="//ControllerOID"/>&ControllerName=<xsl:value-of select="//ControllerName"/>&VirtualDiskOID=<xsl:value-of select="/OMA/VirtualDiskOID"/>&Table=Selection&ManageSSC=<xsl:value-of select="/OMA/ManageSSC"/></xsl:attribute> </SelectionTableUI> <ResultTableUI id="RESULT_TABLE" height="95%" width="90%"> <xsl:attribute name="href">./DataArea?plugin=com.dell.sm.webplugins.ReconfigureVDWebPlugin&ControllerOID=<xsl:value-of select="//ControllerOID"/>&ControllerName=<xsl:value-of select="//ControllerName"/>&VirtualDiskOID=<xsl:value-of select="/OMA/VirtualDiskOID"/>&Table=Result&ManageSSC=<xsl:value-of select="/OMA/ManageSSC"/></xsl:attribute> </ResultTableUI> </SelectionDataUI> </DataArea> </xsl:template> <!--**************************************************************************Code for Selection Table/**************************************************************************************************************************--> <xsl:template name="SelectionData"> <!--the code below is rendered second/--> <DataArea printable="false" email="false" exportdata="false" onLoad="true" nographics="true"> <xsl:variable name="isAdaptec"> <xsl:choose> <xsl:when test="/OMA/GetCapsResp/DCStorageObject/ReConfigDiskDelFlag">1</xsl:when> <xsl:otherwise>0</xsl:otherwise> </xsl:choose> </xsl:variable> <script language="javascript"> var JS_GLOBAL_MaxNumEnclosures = 9; <!--This routine is called when the page is first loaded--> function initializationRoutine() { <!--this function is called when the Selection table page is first loaded/--> hideSelectionTable(); <!--get the first channel that has enclosure attached to it--> var channelNum = getDefaultChannelSelectionRadioButtonIndex(); <!--show selection table with array disks attached to default channel identified--> if(channelNum!=-1) showSelectionTable(channelNum); <!--Below set the default channel selection radio button--> setDefaultChannelSelectionRadioButton(); <!--Below disable the Channel radio buttons that do not contain ArrayDisks--> disableChannelSelectionRadioButtonsWithNoArrayDisks(); CheckAndDisableAdisksOfVdisk(); } <!--This function returns the index of the default channel selected from the array of channels--> function getDefaultChannelSelectionRadioButtonIndex() { var RadioArray = document.getElementsByName("Channel"); for(var i=0;i<RadioArray.length;i++) { for(var e=0;e<JS_GLOBAL_MaxNumEnclosures;e++) { var elemName="parentrow_"+"Sel"+i.toString()+e.toString(); if(document.getElementById(elemName) != null) { return i; } } } return -1;<!--failure--> } <!--This function selects and sets the default channel--> function setDefaultChannelSelectionRadioButton() { var found=false; var RadioArray = document.getElementsByName("Channel"); for(var i=0;i<RadioArray.length;i++) { if(found == false) { for(var e=0;e<RadioArray.length;e++) { var elemName="parentrow_"+"Sel"+i.toString()+e.toString(); if(document.getElementById(elemName) != null) { RadioArray[i].checked=true; found=true; break; } } } else { break; } } } <!--This function disables the channel radio buttons that do not have any array disks attached--> function disableChannelSelectionRadioButtonsWithNoArrayDisks() { var RadioArray = document.getElementsByName("Channel"); var numTargets = 32; for(var i=0;i<RadioArray.length;i++) { var ArrayDisks = 0; for(var e=0;e<JS_GLOBAL_MaxNumEnclosures;e++) { for(var k=0;k<numTargets;k++) { var elemName="parentrow_"+"Sel"+i.toString()+e.toString()+k.toString(); if(document.getElementById(elemName) != null) { ArrayDisks = 1; } } } if (ArrayDisks == 0) { RadioArray[i].disabled=true; } } } <!--This function hides all the rows in the selection table--> function hideSelectionTable() { var numChannels=4; var numTargets = 32; var elemName="" for(var i=0;i<numChannels;i++) { if(document.getElementById("parentrow_"+"Sel"+i.toString())!=null) { document.getElementById("parentrow_"+"Sel"+i.toString()).style.display="none"; } for(var e=0;e<JS_GLOBAL_MaxNumEnclosures;e++) { elemName = "parentrow_"+"Sel"+i.toString()+e.toString(); if(document.getElementById(elemName) != null) { document.getElementById(elemName).style.display="none" } for(var j=0;j<numTargets;j++) { elemName = "parentrow_"+"Sel"+i.toString()+e.toString()+j.toString(); if(document.getElementById(elemName) != null) { document.getElementById(elemName).style.display="none" } } } } } <!--This funtion displays all the rows associated with channel 'i'--> function showSelectionTable(i) { var numTargets=32; var elemName; for(var e=0;e<JS_GLOBAL_MaxNumEnclosures;e++) { for(var j=0;j<numTargets;j++) { elemName="parentrow_"+"Sel"+i.toString()+e.toString()+j.toString(); if(document.getElementById(elemName) != null) { document.getElementById("parentrow_"+"Sel"+i.toString()+e.toString()).style.display=""; document.getElementById("parentrow_"+"Sel"+i.toString()+e.toString()+j.toString()).style.display=""; } } } } <!--This function is a handler that is called in response to a channel selection--> function OnChannelSelected() { hideSelectionTable(); var RadioArray = document.getElementsByName("Channel"); for(var i=0;i<RadioArray.length;i++) { if(RadioArray [i].checked) { showSelectionTable(i); break; } } } <!--This function disables all array disk selection check boxes--> function disableAllCheckBoxes() { var numChannels=4; var numTargets = 32; var elemName=""; for(var i=0;i<numChannels;i++) { for(var e=0;e<JS_GLOBAL_MaxNumEnclosures;e++) { for(var j=0;j<numTargets;j++) { elemName="Sel"+i.toString()+":"+e.toString()+":"+j.toString(); if(document.getElementById(elemName) != null) { document.getElementById(elemName).disabled=true; } } } } } <!--This function enables all array disk selection check boxes--> function enableAllCheckBoxes() { var numChannels=4; var numTargets = 32; var elemName=""; for(var i=0;i<numChannels;i++) { for(var e=0;e<JS_GLOBAL_MaxNumEnclosures;e++) { for(var j=0;j<numTargets;j++) { elemName="Sel"+i.toString()+":"+e.toString()+":"+j.toString(); if(document.getElementById(elemName) != null) { document.getElementById(elemName).disabled=false; } } } } } <!--This function returns the count of selected array disks--> function GetSelectedArrayDisksCount() { var numChannels=4; var numTargets = 32; var count=0; var chkBxName=""; for(var i=0;i<numChannels;i++) { for(var e=0;e<JS_GLOBAL_MaxNumEnclosures;e++) { for(var j=0;j<numTargets;j++) { chkBxName="Sel"+i.toString()+":"+e.toString()+":"+j.toString(); if(document.getElementById(chkBxName) != null && document.getElementById(chkBxName).checked==true) { count=count+1; } } } } return count; } <!--This function checks and disables disks of vdisk automatically--> function CheckAndDisableAdisksOfVdisk() { var numChannels=4; var numTargets = 32; var chkBxName; var isReallyAdaptec = "<xsl:value-of select="$isAdaptec"/>"; var ManageSSC = "<xsl:value-of select="//ManageSSC"/>"; for(var i=0;i<numChannels;i++) { for(var e=0;e<JS_GLOBAL_MaxNumEnclosures;e++) { for(var j=0;j<numTargets;j++) { chkBxName="adisk"+i.toString()+e.toString()+j.toString(); if(document.getElementById(chkBxName) != null ) { var str="Sel"+i.toString()+":"+e.toString()+ ":"+ j.toString(); document.getElementById(str).checked=true; <!-- if(isReallyAdaptec == 0) { --> document.getElementById(str).disabled=true; if(ManageSSC == 1) { document.getElementById(str).disabled=false; } <!--}--> } } } } } <!--This function is an handler that is called whenever an array disk is selected in the selection table--> function OnArrayDiskSelected(channel,encl, target) { var chkBxName = "Sel" + channel+":"+encl+":"+target; parent.frames["RESULT_TABLE"].hideResultTable(); parent.frames["RESULT_TABLE"].showResultTable(); } function getPowerStateCount(IDList) { var elemName=""; var pdstateflag =false; var ObjIDArray = IDList.split(":"); for(var i=0; i<ObjIDArray.length; i++) { elemName = "PDPower"+ObjIDArray[i]; if(document.getElementById(elemName) != null && document.getElementById(elemName).value == 1) { pdstateflag = true; } } return pdstateflag; } function getSelectedPDInfo(IDList) { var elemName = ""; var ObjIDArray = IDList.split(":"); var counter =0; var resval=""; var displayString=""; var powerstate=""; for(var i=0; i<ObjIDArray.length; i++) { elemName = "OBJID"+ObjIDArray[i]; powerstate = "PDPower"+ObjIDArray[i]; if(document.getElementById(powerstate) != null && document.getElementById(powerstate).value == 1) { resval = document.getElementById(elemName).value; resval = resval.replace("::",":"); // This is a temp fix for JIT-202883. needs a re-look. if(counter == 0) { displayString = resval; } else { displayString = displayString + ", "+resval; } counter++; } } return displayString; } </script> <SelectionData> <SelectionTable> <Header> <xsl:for-each select="//Channels/DCStorageObject"> <xsl:sort select="Channel" data-type="number" order="ascending"/> <xsl:call-template name="RenderChannelSelectionRadioButtons"/> </xsl:for-each> </Header> <xsl:for-each select="//ArrayDisks[@EnclosureName]"> <xsl:if test="count(DCStorageObject)!=0 "> <xsl:choose> <xsl:when test="DCStorageObject/EnclosureID"> <!-- SAS or SATA --> <xsl:message>reconfig: Sel<xsl:value-of select="DCStorageObject/Channel"/><xsl:value-of select="DCStorageObject/EnclosureID"/> targetid <xsl:value-of select="DCStorageObject/TargetID"/> enclosurename is - <xsl:value-of select="@EnclosureName"/> </xsl:message> <xsl:call-template name="RenderSelectionTableParentRow"> <xsl:with-param name="PARENT_NAME">Sel<xsl:value-of select="DCStorageObject/Channel"/><xsl:value-of select="DCStorageObject/EnclosureID"/></xsl:with-param> <xsl:with-param name="CHILD_NAME_PREFIX">Sel</xsl:with-param> <xsl:with-param name="DISPLAY_NAME"> <xsl:call-template name="GetEnclosureDisplayName"> <xsl:with-param name="EnclosureType" select="@EnclosureType"/> <xsl:with-param name="productid" select="@ProductID"/> <xsl:with-param name="Channel" select="DCStorageObject/Channel"/> <xsl:with-param name="EnclosureID" select="DCStorageObject/EnclosureID"/> <xsl:with-param name="FormFactor" select="DCStorageObject/FormFactor"/> <xsl:with-param name="SAS">True</xsl:with-param></xsl:call-template></xsl:with-param> <xsl:with-param name="RULES"><xsl:value-of select="//Rules"/></xsl:with-param> <xsl:with-param name="KEY_NAME">ADsForChannel</xsl:with-param> <xsl:with-param name="KEY_MATCH"><xsl:value-of select="@EnclosureName"/></xsl:with-param> <xsl:with-param name="DISPLAY_ZERO_FREESPACE_AD">1</xsl:with-param> <xsl:with-param name="HIDE_DHS">1</xsl:with-param> <xsl:with-param name="ALLDISKS">1</xsl:with-param> </xsl:call-template> </xsl:when> <xsl:otherwise> <!-- non SAS --> <xsl:message>non sas</xsl:message> <xsl:call-template name="RenderSelectionTableParentRow"> <!-- JIT-88706, JIT-61216: Updating dummy enclosure ID to 8 from 0, for direct attached & HHHL. --> <xsl:with-param name="PARENT_NAME">Sel<xsl:value-of select="DCStorageObject/Channel"/>8</xsl:with-param> <xsl:with-param name="CHILD_NAME_PREFIX">Sel</xsl:with-param> <xsl:with-param name="DISPLAY_NAME"> <xsl:call-template name="GetEnclosureDisplayName"> <xsl:with-param name="EnclosureType" select="@EnclosureType"/><xsl:with-param name="productid" select="@ProductID"/> <xsl:with-param name="Channel" select="DCStorageObject/Channel"/> <xsl:with-param name="EnclosureID">NULL</xsl:with-param> <xsl:with-param name="FormFactor" select="DCStorageObject/FormFactor"/> <xsl:with-param name="SAS">NULL</xsl:with-param></xsl:call-template></xsl:with-param> <xsl:with-param name="RULES"><xsl:value-of select="//Rules"/></xsl:with-param> <xsl:with-param name="KEY_NAME">ADsForChannel</xsl:with-param> <xsl:with-param name="KEY_MATCH"><xsl:value-of select="@EnclosureName"/></xsl:with-param> <xsl:with-param name="DISPLAY_ZERO_FREESPACE_AD">1</xsl:with-param> <xsl:with-param name="HIDE_DHS">1</xsl:with-param> <xsl:with-param name="ALLDISKS">1</xsl:with-param> </xsl:call-template> </xsl:otherwise> </xsl:choose> </xsl:if> </xsl:for-each> </SelectionTable> </SelectionData> <HiddenTable> <xsl:for-each select="//ArrayDisks/DCStorageObject"> <xsl:call-template name="getArrayDiskObjIDs_HIDDEN_SELECTION_TABLE"/> <xsl:call-template name="getPowerStateForArrayDisks_HIDDEN_SELECTION_TABLE"/> <xsl:call-template name="getChTgtIDGivenObjIDForArrayDisks_HIDDEN_SELECTION_TABLE"/> </xsl:for-each> <xsl:for-each select="//ArrayDisks[@LDN]/DCStorageObject"> <!-- test if this is a DHS, need to check here as well --> <xsl:variable name="isDHS"> <!-- check to see if current disk is DHS --> <xsl:call-template name="IsDedicatedHotSpare"> <xsl:with-param name="AttributesMask"> <xsl:value-of select="AttributesMask"/> </xsl:with-param> </xsl:call-template> </xsl:variable> <xsl:if test="$isDHS='0'"> <Data> <xsl:attribute name="name"> <xsl:choose> <xsl:when test="EnclosureID">adisk<xsl:value-of select="Channel"/><xsl:value-of select="EnclosureID"/><xsl:value-of select="TargetID"/> </xsl:when> <xsl:otherwise>adisk<xsl:value-of select="Channel"/>8<xsl:value-of select="TargetID"/> </xsl:otherwise> </xsl:choose> </xsl:attribute> <!--check return value --> <xsl:attribute name="returnvalue"> <xsl:choose> <xsl:when test="EnclosureID">Sel<xsl:value-of select="Channel"/><xsl:text>:</xsl:text><xsl:value-of select="EnclosureID"/><xsl:text>:</xsl:text><xsl:value-of select="TargetID"/></xsl:when> <xsl:otherwise>Sel<xsl:value-of select="Channel"/><xsl:text>:8:</xsl:text><xsl:value-of select="TargetID"/></xsl:otherwise> </xsl:choose> </xsl:attribute> </Data> </xsl:if> </xsl:for-each> </HiddenTable> </DataArea> </xsl:template> <xsl:template name="getPowerStateForArrayDisks_HIDDEN_SELECTION_TABLE"> <Data> <xsl:attribute name="name">PDPower<xsl:value-of select="ObjID"/></xsl:attribute> <xsl:attribute name="returnvalue"><xsl:value-of select="PDPowerState"/></xsl:attribute> </Data> </xsl:template> <xsl:template name="getChTgtIDGivenObjIDForArrayDisks_HIDDEN_SELECTION_TABLE"> <Data> <xsl:attribute name="name">OBJID<xsl:value-of select="ObjID"/></xsl:attribute> <xsl:attribute name="returnvalue"><xsl:value-of select="Channel"/>:<xsl:value-of select="EnclosureID"/>:<xsl:value-of select="TargetID"/></xsl:attribute> </Data> </xsl:template> <xsl:template name="getArrayDiskObjIDs_HIDDEN_SELECTION_TABLE"> <!-- test if this is a DHS --> <xsl:variable name="isDHS"> <!-- check to see if current disk is DHS --> <xsl:call-template name="IsDedicatedHotSpare"> <xsl:with-param name="AttributesMask"> <xsl:value-of select="AttributesMask"/> </xsl:with-param> </xsl:call-template> </xsl:variable> <xsl:if test="$isDHS='0'"> <!--This template creates a table that correlates ArrayDisk to their ObjIDs/--> <Data> <xsl:attribute name="name"> <xsl:choose> <xsl:when test="EnclosureID">Sel<xsl:value-of select="Channel"/><xsl:value-of select="EnclosureID"/><xsl:value-of select="TargetID"/></xsl:when> <xsl:otherwise>Sel<xsl:value-of select="Channel"/>8<xsl:value-of select="TargetID"/></xsl:otherwise> </xsl:choose> </xsl:attribute> <xsl:attribute name="returnvalue"><xsl:value-of select="ObjID"/></xsl:attribute> </Data> </xsl:if> </xsl:template> <xsl:template name="RenderChannelSelectionRadioButtons"> <xsl:choose> <xsl:when test="(//CtrlStashSlot or //CtrlStashSlot !='')"> <Data name="Channel" type="radio" handler="OnChannelSelected()" event="onclick" state="1"> <xsl:attribute name="value"><xsl:value-of select="$strChannel"/> <xsl:value-of select="Channel"/></xsl:attribute> <xsl:attribute name="returnvalue"><xsl:value-of select="Channel"/></xsl:attribute> </Data> </xsl:when> <xsl:otherwise> <Data name="Channel" type="radio" handler="OnChannelSelected()" event="onclick" state="0"> <xsl:attribute name="value"><xsl:value-of select="$strChannel"/> <xsl:value-of select="Channel"/></xsl:attribute> <xsl:attribute name="returnvalue"><xsl:value-of select="Channel"/></xsl:attribute> </Data> </xsl:otherwise> </xsl:choose> </xsl:template> <!--**************************************************************************Code for Result Table/**************************************************************************************************************************--> <xsl:template name="ResultData"> <!--the code below is rendered third/--> <DataArea printable="false" email="false" onLoad="true" exportdata="false" nographics="true"> <xsl:variable name="isAdaptec"> <xsl:choose> <xsl:when test="/OMA/GetCapsResp/DCStorageObject/ReConfigDiskDelFlag">1</xsl:when> <xsl:otherwise>0</xsl:otherwise> </xsl:choose> </xsl:variable> <script language="javascript"> var JS_GLOBAL_MaxNumEnclosures = 9; function initializationRoutine() { showInitialResultTable(); } function hideResultTable() { var numChannels=4; var numTargets = 32; var elemName="" for(var i=0;i<numChannels;i++) { for(var e=0;e<JS_GLOBAL_MaxNumEnclosures;e++) { elemName = "parentrow_"+"Res"+i.toString()+e.toString(); if(document.getElementById(elemName) != null) { document.getElementById(elemName).style.display="none" } for(var j=0;j<numTargets;j++) { elemName = "parentrow_"+"Res"+i.toString()+e.toString()+j.toString(); if(document.getElementById(elemName) != null) { document.getElementById("parentrow_"+"Res"+i.toString()+e.toString()).style.display="none" document.getElementById(elemName).style.display="none"; } } } } } // Initial function to draw Result table. The drawResultTable below actually draws off the // selection table which may not be completely drawn while this table is being drawn. // So this function is to stem off timing issues. function showInitialResultTable() { hideResultTable(); var elemName=""; var chkBxName=""; var numChannels=4; var numTargets=32; var resval=""; var counter=0; var isReallyAdaptec = "<xsl:value-of select="$isAdaptec"/>"; for(var i=0;i<numChannels;i++) { for(var e=0;e<JS_GLOBAL_MaxNumEnclosures;e++) { for(var j=0;j<numTargets;j++) { elemName="Sel"+i.toString()+":"+e.toString()+":"+j.toString(); chkBxName="dsk"+i.toString()+e.toString()+j.toString(); if ((parent.frames["SELECTION_TABLE"].document.getElementById(elemName) != null && parent.frames["SELECTION_TABLE"].document.getElementById(elemName).checked == true) || (document.getElementById(chkBxName) != null)) { document.getElementById("parentrow_"+"Res"+i.toString()+e.toString()).style.display=""; document.getElementById("parentrow_Res"+i.toString()+e.toString()+j.toString()).style.display=""; document.getElementById("Res"+i.toString()+":"+e.toString()+":"+j.toString()).checked = true; if ((document.getElementById("dsk"+i.toString()+e.toString()+j.toString()) != null) <!--&& (isReallyAdaptec == 0)-->) { document.getElementById("Res"+i.toString()+":"+e.toString()+":"+j.toString()).disabled=true; } counter=counter+1; } } } } } function showResultTable() { hideResultTable(); var elemName=""; var numChannels=4; var numTargets=32; var resval=""; var counter=0; var isReallyAdaptec = "<xsl:value-of select="$isAdaptec"/>"; for(var i=0;i<numChannels;i++) { for(var e=0;e<JS_GLOBAL_MaxNumEnclosures;e++) { for(var j=0;j<numTargets;j++) { elemName="Sel"+i.toString()+":"+e.toString()+":"+j.toString(); // chkbxname for extra check during initialization, because just // keying of Selection Table.checked may result in false when the table // isn't drawn fast enough. if (parent.frames["SELECTION_TABLE"].document.getElementById(elemName) != null && parent.frames["SELECTION_TABLE"].document.getElementById(elemName).checked == true) { document.getElementById("parentrow_"+"Res"+i.toString()+e.toString()).style.display=""; document.getElementById("parentrow_Res"+i.toString()+e.toString()+j.toString()).style.display=""; document.getElementById("Res"+i.toString()+":"+e.toString()+":"+j.toString()).checked = true; if ((document.getElementById("dsk"+i.toString()+e.toString()+j.toString()) != null) && (isReallyAdaptec == 0)) { document.getElementById("Res"+i.toString()+":"+e.toString()+":"+j.toString()).disabled=true; } counter=counter+1; } } } } } function OnDelete(ChannelNum,Encl,TargetId) { parent.frames["SELECTION_TABLE"].document.getElementById("Sel"+ChannelNum+":"+Encl+":"+TargetId).checked =false; parent.frames["SELECTION_TABLE"].OnArrayDiskSelected(ChannelNum,Encl,TargetId); document.getElementById("Res"+ChannelNum+":"+Encl+":"+TargetId).checked = false; showResultTable(); } function getSelectedArrayDisksAndSizeString() { alert("UI Error. Function should not be called."); var numChannels=4; var numTargets = 32; var elemName=""; var reval=""; for(var i=0;i<numChannels;i++) { for(var e=0;e<JS_GLOBAL_MaxNumEnclosures;e++) { for(var j=0;j<numTargets;j++) { elemName = "parentrow_"+"Res"+i.toString()+e.toString()+j.toString(); if(document.getElementById(elemName) != null && document.getElementById(elemName).style.display!="none") { reval +="<ArrayDisks>"; reval +="<Channel>"+i.toString()+"</Channel>"; reval +="<TargetID>"+j.toString()+"</TargetID>"; reval +="<Length>"+document.getElementById("SIZE"+i.toString()+j.toString()).value+"</Length>"; reval +="</ArrayDisks>"; } } } } return reval; } function getSelectedArrayDisksObjIDsArray() { var ObjIDsArray = new Array(); var numChannels=4; var numTargets=32; var elemName=""; var index=0; for(var i=0;i<numChannels;i++) { for(var e=0;e<JS_GLOBAL_MaxNumEnclosures;e++) { for(var j=0;j<numTargets;j++) { elemName = "parentrow_"+"Res"+i.toString()+e.toString()+j.toString(); if(document.getElementById(elemName) != null && document.getElementById(elemName).style.display!="none") { elemName="OBJID"+i.toString()+e.toString()+j.toString(); ObjIDsArray[index++]=document.getElementById(elemName).value; } } } } return ObjIDsArray; } function getSelectedArrayDisksObjIDs() { var elemName=""; var numChannels=4; var numTargets=32; var resval=""; var displayString=""; var counter =0; for(var i=0;i<numChannels;i++) { for(var e=0;e<JS_GLOBAL_MaxNumEnclosures;e++) { for(var j=0;j<numTargets;j++) { elemName = "parentrow_"+"Res"+i.toString()+e.toString()+j.toString(); if(document.getElementById(elemName) != null && document.getElementById(elemName).style.display!="none") { elemName="OBJID"+i.toString()+e.toString()+j.toString(); resval = document.getElementById(elemName).value; if(counter == 0) { displayString = resval; } else { displayString = displayString + ":"+resval; } counter++; } } } } return displayString; } <!--This function checks and disables disks of vdisk automatically--> function HideAdisksOfVdisk() { var numChannels=4; var numTargets = 32; for(var i=0;i<numChannels;i++) { for(var e=0;e<JS_GLOBAL_MaxNumEnclosures;e++) { for(var j=0;j<numTargets;j++) { chkBxName="dsk"+i.toString()+e.toString()+j.toString(); if(document.getElementById(chkBxName) != null ) { document.getElementById("parentrow_Res"+i.toString()+e.toString()+j.toString()).style.display="none"; } } } } } </script> <SelectionData> <SelectionTable> <Header> <Data> <xsl:attribute name="value"><xsl:value-of select="$strSelArray"/></xsl:attribute> </Data> </Header> <xsl:for-each select="//ArrayDisks[@EnclosureName]"> <xsl:if test="count(DCStorageObject)!=0 "> <xsl:choose> <xsl:when test="DCStorageObject/EnclosureID"> <!-- SAS or SATA --> <xsl:message> SAS: Res<xsl:value-of select="DCStorageObject/Channel"/><xsl:value-of select="DCStorageObject/EnclosureID"/> </xsl:message> <xsl:call-template name="RenderResultTableParentRow"> <xsl:with-param name="PARENT_NAME">Res<xsl:value-of select="DCStorageObject/Channel"/><xsl:value-of select="DCStorageObject/EnclosureID"/></xsl:with-param> <xsl:with-param name="CHILD_NAME_PREFIX">Res</xsl:with-param> <xsl:with-param name="DISPLAY_NAME"> <xsl:call-template name="GetEnclosureDisplayName"> <xsl:with-param name="EnclosureType" select="@EnclosureType"/> <xsl:with-param name="productid" select="@ProductID"/> <xsl:with-param name="Channel" select="DCStorageObject/Channel"/> <xsl:with-param name="EnclosureID" select="DCStorageObject/EnclosureID"/> <xsl:with-param name="FormFactor" select="DCStorageObject/FormFactor"/> <xsl:with-param name="SAS">True</xsl:with-param></xsl:call-template></xsl:with-param> <xsl:with-param name="RULES"><xsl:value-of select="//Rules"/></xsl:with-param> <xsl:with-param name="KEY_NAME">ADsForChannel</xsl:with-param> <xsl:with-param name="KEY_MATCH"><xsl:value-of select="@EnclosureName"/></xsl:with-param> <xsl:with-param name="DISPLAY_ZERO_FREESPACE_AD">1</xsl:with-param> <xsl:with-param name="HIDE_DHS">1</xsl:with-param> <xsl:with-param name="ALLDISKS">1</xsl:with-param> </xsl:call-template> </xsl:when> <xsl:otherwise> <!-- non SAS --> <xsl:message> NOTSAS: Res<xsl:value-of select="DCStorageObject/Channel"/></xsl:message> <xsl:call-template name="RenderResultTableParentRow"> <xsl:with-param name="PARENT_NAME">Res<xsl:value-of select="DCStorageObject/Channel"/>8</xsl:with-param> <xsl:with-param name="CHILD_NAME_PREFIX">Res</xsl:with-param> <xsl:with-param name="DISPLAY_NAME"> <xsl:call-template name="GetEnclosureDisplayName"> <xsl:with-param name="EnclosureType" select="@EnclosureType"/><xsl:with-param name="productid" select="@ProductID"/> <xsl:with-param name="Channel" select="DCStorageObject/Channel"/> <xsl:with-param name="EnclosureID">NULL</xsl:with-param> <xsl:with-param name="FormFactor" select="DCStorageObject/FormFactor"/> <xsl:with-param name="SAS">NULL</xsl:with-param></xsl:call-template></xsl:with-param> <xsl:with-param name="RULES"><xsl:value-of select="//Rules"/></xsl:with-param> <xsl:with-param name="KEY_NAME">ADsForChannel</xsl:with-param> <xsl:with-param name="KEY_MATCH"><xsl:value-of select="@EnclosureName"/></xsl:with-param> <xsl:with-param name="DISPLAY_ZERO_FREESPACE_AD">1</xsl:with-param> <xsl:with-param name="HIDE_DHS">1</xsl:with-param> <xsl:with-param name="ALLDISKS">1</xsl:with-param> </xsl:call-template> </xsl:otherwise> </xsl:choose> </xsl:if> </xsl:for-each> </SelectionTable> </SelectionData> <HiddenTable> <xsl:apply-templates select="//ArrayDisks/DCStorageObject" mode="ObjIDsForArrayDisks_HIDDEN_TABLE"/> <xsl:for-each select="//ArrayDisks[@LDN]/DCStorageObject"> <!-- test if this is a DHS, need to check here as well --> <xsl:variable name="isDHS"> <!-- check to see if current disk is DHS --> <xsl:call-template name="IsDedicatedHotSpare"> <xsl:with-param name="AttributesMask"> <xsl:value-of select="AttributesMask"/> </xsl:with-param> </xsl:call-template> </xsl:variable> <xsl:if test="$isDHS='0'"> <Data> <xsl:attribute name="name"> <xsl:choose> <xsl:when test="EnclosureID">dsk<xsl:value-of select="Channel"/><xsl:value-of select="EnclosureID"/><xsl:value-of select="TargetID"/></xsl:when> <xsl:otherwise>dsk<xsl:value-of select="Channel"/>8<xsl:value-of select="TargetID"/></xsl:otherwise> </xsl:choose> </xsl:attribute> <xsl:attribute name="returnvalue"> <xsl:choose> <xsl:when test="EnclosureID">Res<xsl:value-of select="Channel"/><xsl:value-of select="EnclosureID"/><xsl:value-of select="TargetID"/></xsl:when><xsl:otherwise>Res<xsl:value-of select="Channel"/>0<xsl:value-of select="TargetID"/></xsl:otherwise> </xsl:choose> </xsl:attribute> </Data> </xsl:if> </xsl:for-each> </HiddenTable> </DataArea> </xsl:template> <xsl:template match="ArrayDisks/DCStorageObject" mode="ObjIDsForArrayDisks_HIDDEN_TABLE"> <!--This template creates a table that correlates ArrayDisk to their ObjIDs/--> <!-- test if this is a DHS --> <xsl:variable name="isDHS"> <!-- check to see if current disk is DHS --> <xsl:call-template name="IsDedicatedHotSpare"> <xsl:with-param name="AttributesMask"> <xsl:value-of select="AttributesMask"/> </xsl:with-param> </xsl:call-template> </xsl:variable> <xsl:if test="$isDHS='0'"> <Data> <xsl:attribute name="name"> <xsl:choose> <xsl:when test="EnclosureID">OBJID<xsl:value-of select="Channel"/><xsl:value-of select="EnclosureID"/><xsl:value-of select="TargetID"/></xsl:when> <xsl:otherwise>OBJID<xsl:value-of select="Channel"/>8<xsl:value-of select="TargetID"/></xsl:otherwise> </xsl:choose> </xsl:attribute> <xsl:attribute name="returnvalue"><xsl:value-of select="ObjID"/></xsl:attribute> </Data> </xsl:if> </xsl:template> <xsl:template name="GetEnclosureDisplayName"> <xsl:param name="EnclosureType"/> <xsl:param name="Channel"/> <xsl:param name="EnclosureID"/> <xsl:param name="FormFactor"/> <xsl:param name="SAS"/> <xsl:choose> <xsl:when test="$EnclosureType=''"> <!-- no enclosures, direct attached disks --> <xsl:choose> <xsl:when test="$FormFactor = '17'"> <xsl:value-of select="$strPCIeSSD"/> </xsl:when> <xsl:otherwise> <xsl:value-of select="$strChannel"/><xsl:value-of select="$Channel"/> </xsl:otherwise> </xsl:choose> </xsl:when> <xsl:otherwise> <xsl:choose> <xsl:when test="$SAS='True'"> <!-- SAS/SATA disks in enclosure --> <xsl:call-template name="GetEnclosureType"><xsl:with-param name="type" select="$EnclosureType" /><xsl:with-param name="productid" select="@ProductID"/></xsl:call-template> (<xsl:value-of select="$Channel"/>:<xsl:value-of select="$EnclosureID"/>) </xsl:when> <xsl:otherwise> <!-- SCSI disks in enclosure --> <xsl:call-template name="GetEnclosureType"><xsl:with-param name="type" select="$EnclosureType" /><xsl:with-param name="productid" select="@ProductID"/></xsl:call-template> (<xsl:value-of select="$strChannel"/><xsl:value-of select="$Channel"/>) </xsl:otherwise> </xsl:choose> </xsl:otherwise> </xsl:choose> </xsl:template> </xsl:stylesheet>