Uploaded image for project: 'Jenkins'
  1. Jenkins
  2. JENKINS-74609

[nutanix-calm] Extract inline script block and event handlers in com/calm/Descriptors/RunApplicationAction/config.jelly

      Problems

      == Inline Script Block
      Line: 31
      ----
      <script>
                    function applicationsChange(id){
                       actions = document.getElementById("applicationActions-" + id);
                       runtimeVariables = document.getElementById("actionRuntimeVariables-" + id);
                       actions.innerHTML = null;
                       runtimeVariables.value = null;
                       actions.appendChild(document.createElement('option'));
                    }
      
                    function getApplications(id){
                          var sel = document.getElementById(id);
                          var apps;
                          applicationNames = document.querySelectorAll(".applicationName");
                          runApplicationAction.fetchApplications(function(obj){
                                apps = obj.responseObject();
                                if(apps === null){
                                  alert("ERROR occurred while fetching the applications")
                                  return;
                                }
                                sel.innerHTML = null;
                                if(applicationNames !== null){
                                  var opt = document.createElement('option');
                                  opt.innerHTML = "Applications created in Jenkins Blueprint Launch build step";
                                  opt.value = "Applications created in Jenkins Blueprint Launch build step";
                                  opt.setAttribute('disabled','disabled');
                                  opt.setAttribute('selected','true');
                                  sel.appendChild(opt);
                                  applicationNames.forEach(function(appObj){
                                       var opt = document.createElement('option');
                                       opt.innerHTML = appObj.value;
                                       opt.value = appObj.value;
                                       sel.appendChild(opt);
                                  });
                                }
                                if(apps.length &gt; 0){
                                  var opt = document.createElement('option');
                                  opt.innerHTML = "Existing Applications in Nutanix Calm";
                                  opt.value = "Existing Applications in Nutanix Calm";
                                  opt.setAttribute('disabled','disabled');
                                  sel.appendChild(opt);
                                  var i;
                                  for(i = 0; i &lt; apps.length; i++){
                                         var opt = document.createElement('option');
                                         opt.innerHTML = apps[i];
                                         opt.value = apps[i];
                                         sel.appendChild(opt);
                                  }
                                }
      
                          });
                    }
      
                    function appActionsChange(id){
                          runtimeVariables = document.getElementById("actionRuntimeVariables-" + id);
                          runtimeVariables.value = "Fetching run time variables";
                          addActionRuntimeVariables(id);
                    }
      
                    function getApplicationActions(id, editorId){
                           console.log("logging the editorId: "+ editorId);
                           appName = document.getElementById("applications-" + editorId).value;
                           var applicationNames = [];
                           var i = 0;
                           var sel = document.getElementById("applicationActions-" + editorId);
                           blueprintLaunchApps = document.querySelectorAll(".applicationName");
                           i = 0;
                           blueprintLaunchApps.forEach(function(appObj){
                               applicationNames[i] = appObj.value;
                               i++;
                           });
                           if(applicationNames.indexOf(appName) >= 0){
                                var bpName = "";
                                var appProfile = "";
                                blueprintLaunchApps.forEach(function(appObj){
                                     if(appName === appObj.value){
                                          var parentObject = appObj.parentElement.parentElement.parentElement;
                                          bpName = parentObject.querySelector(".blueprint").value;
                                          appProfile = parentObject.querySelector(".appProfile").value;
                                          return true;
                                     }
                                });
                                runApplicationAction.getProfileActionsFromBlueprint(bpName, appProfile, function(obj){
                                    actions = obj.responseObject();
                                    if(actions === null){
                                          alert("ERROR occurred while fetching the actions");
                                          return;
                                    }
                                    console.log("values "+actions);
                                    var i;
                                    sel.innerHTML = null;
                                    var opt = document.createElement('option');
                                    opt.innerHTML = "Please select one";
                                    opt.value = "Please select one";
                                    opt.setAttribute('disabled','disabled');
                                    opt.setAttribute('selected','true');
                                    sel.appendChild(opt);
                                    for(i = 0; i &lt; actions.length; i++){
                                         var opt = document.createElement('option');
                                         console.log("value "+actions[i]);
                                         opt.innerHTML = actions[i];
                                         opt.value = actions[i];
                                         sel.appendChild(opt);
                                    }
                                });
                           }
                           else{
                             runApplicationAction.fetchApplicationActions(appName, function(obj){
                               actions = obj.responseObject();
                               if(actions === null){
                                    alert("ERROR occurred while fetching the actions");
                                    return;
                               }
                               sel.innerHTML = null;
                               var opt = document.createElement('option');
                               opt.innerHTML = "Please select one";
                               opt.value = "Please select one";
                               opt.setAttribute('disabled','disabled');
                               opt.setAttribute('selected','true');
                               sel.appendChild(opt);
                               actions.forEach(function(key){
                                   var opt = document.createElement('option');
                                   opt.innerHTML = key;
                                   opt.value = key;
                                   sel.appendChild(opt);
                               });
                             });
                           }
                    }
      
      
                    function addActionRuntimeVariables(editorId){
                        appname = document.getElementById("applications-" + editorId).value;
                        action = document.getElementById("applicationActions-" + editorId).value;
                        var applicationNames = [];
                        console.log("inside runtime" + action )
                        blueprintLaunchApps = document.querySelectorAll(".applicationName");
                        var i = 0;
                        blueprintLaunchApps.forEach(function(appObj){
                            applicationNames[i] = appObj.value;
                            i++;
                        });
                        if(applicationNames.indexOf(appName) >= 0){
                             var bpName = "";
                             var appProfile = "";
                             blueprintLaunchApps.forEach(function(appObj){
                                  if(appName === appObj.value){
                                       var parentObject = appObj.parentElement.parentElement.parentElement;
                                       bpName = parentObject.querySelector(".blueprint").value;
                                       appProfile = parentObject.querySelector(".appProfile").value;
                                       return true;
                                  }
                             });
                             runApplicationAction.getProfileActionsVariablesFromBlueprint(bpName, appProfile, action, function(obj){
                                 runtimeVaraibles = obj.responseObject();
                                 if(runtimeVaraibles === null){
                                      alert("ERROR occurred while fetching runtime variables")
                                      return;
                                 }
                                 var json = JSON.parse(runtimeVaraibles);
                                 var runtimeElement = document.getElementById("actionRuntimeVariables-" + editorId);
                                 runtimeElement.value = JSON.stringify(json, undefined,4);
                                 console.log("value added");
                             });
                        }
                        else{
                          runApplicationAction.fetchRuntimeProfileActionVariables(appname, action, function(obj){
                              runtimeVaraibles = obj.responseObject();
                              if(runtimeVaraibles === null){
                                     alert("ERROR occurred while fetching runtime variables")
                                     return;
                              }
                              var json = JSON.parse(runtimeVaraibles);
                              var runtimeElement = document.getElementById("actionRuntimeVariables-" + editorId);
                              runtimeElement.value = JSON.stringify(json, undefined,4);
                              console.log("value added");
                          });
                        }
                    }
          </script>
      ----
      
      == Inline Event Handler
      Line: 15
      ----
      <f:select id="applications-${editorId}" onmousedown="getApplications(this.id)" onchange="applicationsChange(${editorId});"/>
      ----
      
      == Inline Event Handler
      Line: 20
      ----
      <f:select id="applicationActions-${editorId}" onmousedown="getApplicationActions(this.id, ${editorId})" onchange="appActionsChange(${editorId});"
                  class="select"/>
      ----
      

      Solutions

      https://www.jenkins.io/doc/developer/security/csp/#inline-javascript-blocks
      https://www.jenkins.io/doc/developer/security/csp/#inline-event-handlers

          [JENKINS-74609] [nutanix-calm] Extract inline script block and event handlers in com/calm/Descriptors/RunApplicationAction/config.jelly

          Basil Crow created issue -
          Basil Crow made changes -
          Assignee Original: Nutanix Calm [ nutanix_calm ]
          Basil Crow made changes -
          Description Original: h4. Problems

          {noformat}
          == Inline Event Handler
          Line: 15
          ----
          <f:select id="applications-${editorId}" onmousedown="getApplications(this.id)" onchange="applicationsChange(${editorId});"/>
          ----

          == Inline Event Handler
          Line: 20
          ----
          <f:select id="applicationActions-${editorId}" onmousedown="getApplicationActions(this.id, ${editorId})" onchange="appActionsChange(${editorId});"
                      class="select"/>
          ----

          == Inline Script Block
          Line: 31
          ----
          <script>
                        function applicationsChange(id){
                           actions = document.getElementById("applicationActions-" + id);
                           runtimeVariables = document.getElementById("actionRuntimeVariables-" + id);
                           actions.innerHTML = null;
                           runtimeVariables.value = null;
                           actions.appendChild(document.createElement('option'));
                        }

                        function getApplications(id){
                              var sel = document.getElementById(id);
                              var apps;
                              applicationNames = document.querySelectorAll(".applicationName");
                              runApplicationAction.fetchApplications(function(obj){
                                    apps = obj.responseObject();
                                    if(apps === null){
                                      alert("ERROR occurred while fetching the applications")
                                      return;
                                    }
                                    sel.innerHTML = null;
                                    if(applicationNames !== null){
                                      var opt = document.createElement('option');
                                      opt.innerHTML = "Applications created in Jenkins Blueprint Launch build step";
                                      opt.value = "Applications created in Jenkins Blueprint Launch build step";
                                      opt.setAttribute('disabled','disabled');
                                      opt.setAttribute('selected','true');
                                      sel.appendChild(opt);
                                      applicationNames.forEach(function(appObj){
                                           var opt = document.createElement('option');
                                           opt.innerHTML = appObj.value;
                                           opt.value = appObj.value;
                                           sel.appendChild(opt);
                                      });
                                    }
                                    if(apps.length &gt; 0){
                                      var opt = document.createElement('option');
                                      opt.innerHTML = "Existing Applications in Nutanix Calm";
                                      opt.value = "Existing Applications in Nutanix Calm";
                                      opt.setAttribute('disabled','disabled');
                                      sel.appendChild(opt);
                                      var i;
                                      for(i = 0; i &lt; apps.length; i++){
                                             var opt = document.createElement('option');
                                             opt.innerHTML = apps[i];
                                             opt.value = apps[i];
                                             sel.appendChild(opt);
                                      }
                                    }

                              });
                        }

                        function appActionsChange(id){
                              runtimeVariables = document.getElementById("actionRuntimeVariables-" + id);
                              runtimeVariables.value = "Fetching run time variables";
                              addActionRuntimeVariables(id);
                        }

                        function getApplicationActions(id, editorId){
                               console.log("logging the editorId: "+ editorId);
                               appName = document.getElementById("applications-" + editorId).value;
                               var applicationNames = [];
                               var i = 0;
                               var sel = document.getElementById("applicationActions-" + editorId);
                               blueprintLaunchApps = document.querySelectorAll(".applicationName");
                               i = 0;
                               blueprintLaunchApps.forEach(function(appObj){
                                   applicationNames[i] = appObj.value;
                                   i++;
                               });
                               if(applicationNames.indexOf(appName) >= 0){
                                    var bpName = "";
                                    var appProfile = "";
                                    blueprintLaunchApps.forEach(function(appObj){
                                         if(appName === appObj.value){
                                              var parentObject = appObj.parentElement.parentElement.parentElement;
                                              bpName = parentObject.querySelector(".blueprint").value;
                                              appProfile = parentObject.querySelector(".appProfile").value;
                                              return true;
                                         }
                                    });
                                    runApplicationAction.getProfileActionsFromBlueprint(bpName, appProfile, function(obj){
                                        actions = obj.responseObject();
                                        if(actions === null){
                                              alert("ERROR occurred while fetching the actions");
                                              return;
                                        }
                                        console.log("values "+actions);
                                        var i;
                                        sel.innerHTML = null;
                                        var opt = document.createElement('option');
                                        opt.innerHTML = "Please select one";
                                        opt.value = "Please select one";
                                        opt.setAttribute('disabled','disabled');
                                        opt.setAttribute('selected','true');
                                        sel.appendChild(opt);
                                        for(i = 0; i &lt; actions.length; i++){
                                             var opt = document.createElement('option');
                                             console.log("value "+actions[i]);
                                             opt.innerHTML = actions[i];
                                             opt.value = actions[i];
                                             sel.appendChild(opt);
                                        }
                                    });
                               }
                               else{
                                 runApplicationAction.fetchApplicationActions(appName, function(obj){
                                   actions = obj.responseObject();
                                   if(actions === null){
                                        alert("ERROR occurred while fetching the actions");
                                        return;
                                   }
                                   sel.innerHTML = null;
                                   var opt = document.createElement('option');
                                   opt.innerHTML = "Please select one";
                                   opt.value = "Please select one";
                                   opt.setAttribute('disabled','disabled');
                                   opt.setAttribute('selected','true');
                                   sel.appendChild(opt);
                                   actions.forEach(function(key){
                                       var opt = document.createElement('option');
                                       opt.innerHTML = key;
                                       opt.value = key;
                                       sel.appendChild(opt);
                                   });
                                 });
                               }
                        }


                        function addActionRuntimeVariables(editorId){
                            appname = document.getElementById("applications-" + editorId).value;
                            action = document.getElementById("applicationActions-" + editorId).value;
                            var applicationNames = [];
                            console.log("inside runtime" + action )
                            blueprintLaunchApps = document.querySelectorAll(".applicationName");
                            var i = 0;
                            blueprintLaunchApps.forEach(function(appObj){
                                applicationNames[i] = appObj.value;
                                i++;
                            });
                            if(applicationNames.indexOf(appName) >= 0){
                                 var bpName = "";
                                 var appProfile = "";
                                 blueprintLaunchApps.forEach(function(appObj){
                                      if(appName === appObj.value){
                                           var parentObject = appObj.parentElement.parentElement.parentElement;
                                           bpName = parentObject.querySelector(".blueprint").value;
                                           appProfile = parentObject.querySelector(".appProfile").value;
                                           return true;
                                      }
                                 });
                                 runApplicationAction.getProfileActionsVariablesFromBlueprint(bpName, appProfile, action, function(obj){
                                     runtimeVaraibles = obj.responseObject();
                                     if(runtimeVaraibles === null){
                                          alert("ERROR occurred while fetching runtime variables")
                                          return;
                                     }
                                     var json = JSON.parse(runtimeVaraibles);
                                     var runtimeElement = document.getElementById("actionRuntimeVariables-" + editorId);
                                     runtimeElement.value = JSON.stringify(json, undefined,4);
                                     console.log("value added");
                                 });
                            }
                            else{
                              runApplicationAction.fetchRuntimeProfileActionVariables(appname, action, function(obj){
                                  runtimeVaraibles = obj.responseObject();
                                  if(runtimeVaraibles === null){
                                         alert("ERROR occurred while fetching runtime variables")
                                         return;
                                  }
                                  var json = JSON.parse(runtimeVaraibles);
                                  var runtimeElement = document.getElementById("actionRuntimeVariables-" + editorId);
                                  runtimeElement.value = JSON.stringify(json, undefined,4);
                                  console.log("value added");
                              });
                            }
                        }
              </script>
          ----

          == Inline Event Handler
          Line: 15
          ----
          <f:select id="applications-${editorId}" onmousedown="getApplications(this.id)" onchange="applicationsChange(${editorId});"/>
          ----

          == Inline Event Handler
          Line: 20
          ----
          <f:select id="applicationActions-${editorId}" onmousedown="getApplicationActions(this.id, ${editorId})" onchange="appActionsChange(${editorId});"
                      class="select"/>
          ----

          == Inline Script Block
          Line: 31
          ----
          <script>
                        function applicationsChange(id){
                           actions = document.getElementById("applicationActions-" + id);
                           runtimeVariables = document.getElementById("actionRuntimeVariables-" + id);
                           actions.innerHTML = null;
                           runtimeVariables.value = null;
                           actions.appendChild(document.createElement('option'));
                        }

                        function getApplications(id){
                              var sel = document.getElementById(id);
                              var apps;
                              applicationNames = document.querySelectorAll(".applicationName");
                              runApplicationAction.fetchApplications(function(obj){
                                    apps = obj.responseObject();
                                    if(apps === null){
                                      alert("ERROR occurred while fetching the applications")
                                      return;
                                    }
                                    sel.innerHTML = null;
                                    if(applicationNames !== null){
                                      var opt = document.createElement('option');
                                      opt.innerHTML = "Applications created in Jenkins Blueprint Launch build step";
                                      opt.value = "Applications created in Jenkins Blueprint Launch build step";
                                      opt.setAttribute('disabled','disabled');
                                      opt.setAttribute('selected','true');
                                      sel.appendChild(opt);
                                      applicationNames.forEach(function(appObj){
                                           var opt = document.createElement('option');
                                           opt.innerHTML = appObj.value;
                                           opt.value = appObj.value;
                                           sel.appendChild(opt);
                                      });
                                    }
                                    if(apps.length &gt; 0){
                                      var opt = document.createElement('option');
                                      opt.innerHTML = "Existing Applications in Nutanix Calm";
                                      opt.value = "Existing Applications in Nutanix Calm";
                                      opt.setAttribute('disabled','disabled');
                                      sel.appendChild(opt);
                                      var i;
                                      for(i = 0; i &lt; apps.length; i++){
                                             var opt = document.createElement('option');
                                             opt.innerHTML = apps[i];
                                             opt.value = apps[i];
                                             sel.appendChild(opt);
                                      }
                                    }

                              });
                        }

                        function appActionsChange(id){
                              runtimeVariables = document.getElementById("actionRuntimeVariables-" + id);
                              runtimeVariables.value = "Fetching run time variables";
                              addActionRuntimeVariables(id);
                        }

                        function getApplicationActions(id, editorId){
                               console.log("logging the editorId: "+ editorId);
                               appName = document.getElementById("applications-" + editorId).value;
                               var applicationNames = [];
                               var i = 0;
                               var sel = document.getElementById("applicationActions-" + editorId);
                               blueprintLaunchApps = document.querySelectorAll(".applicationName");
                               i = 0;
                               blueprintLaunchApps.forEach(function(appObj){
                                   applicationNames[i] = appObj.value;
                                   i++;
                               });
                               if(applicationNames.indexOf(appName) >= 0){
                                    var bpName = "";
                                    var appProfile = "";
                                    blueprintLaunchApps.forEach(function(appObj){
                                         if(appName === appObj.value){
                                              var parentObject = appObj.parentElement.parentElement.parentElement;
                                              bpName = parentObject.querySelector(".blueprint").value;
                                              appProfile = parentObject.querySelector(".appProfile").value;
                                              return true;
                                         }
                                    });
                                    runApplicationAction.getProfileActionsFromBlueprint(bpName, appProfile, function(obj){
                                        actions = obj.responseObject();
                                        if(actions === null){
                                              alert("ERROR occurred while fetching the actions");
                                              return;
                                        }
                                        console.log("values "+actions);
                                        var i;
                                        sel.innerHTML = null;
                                        var opt = document.createElement('option');
                                        opt.innerHTML = "Please select one";
                                        opt.value = "Please select one";
                                        opt.setAttribute('disabled','disabled');
                                        opt.setAttribute('selected','true');
                                        sel.appendChild(opt);
                                        for(i = 0; i &lt; actions.length; i++){
                                             var opt = document.createElement('option');
                                             console.log("value "+actions[i]);
                                             opt.innerHTML = actions[i];
                                             opt.value = actions[i];
                                             sel.appendChild(opt);
                                        }
                                    });
                               }
                               else{
                                 runApplicationAction.fetchApplicationActions(appName, function(obj){
                                   actions = obj.responseObject();
                                   if(actions === null){
                                        alert("ERROR occurred while fetching the actions");
                                        return;
                                   }
                                   sel.innerHTML = null;
                                   var opt = document.createElement('option');
                                   opt.innerHTML = "Please select one";
                                   opt.value = "Please select one";
                                   opt.setAttribute('disabled','disabled');
                                   opt.setAttribute('selected','true');
                                   sel.appendChild(opt);
                                   actions.forEach(function(key){
                                       var opt = document.createElement('option');
                                       opt.innerHTML = key;
                                       opt.value = key;
                                       sel.appendChild(opt);
                                   });
                                 });
                               }
                        }


                        function addActionRuntimeVariables(editorId){
                            appname = document.getElementById("applications-" + editorId).value;
                            action = document.getElementById("applicationActions-" + editorId).value;
                            var applicationNames = [];
                            console.log("inside runtime" + action )
                            blueprintLaunchApps = document.querySelectorAll(".applicationName");
                            var i = 0;
                            blueprintLaunchApps.forEach(function(appObj){
                                applicationNames[i] = appObj.value;
                                i++;
                            });
                            if(applicationNames.indexOf(appName) >= 0){
                                 var bpName = "";
                                 var appProfile = "";
                                 blueprintLaunchApps.forEach(function(appObj){
                                      if(appName === appObj.value){
                                           var parentObject = appObj.parentElement.parentElement.parentElement;
                                           bpName = parentObject.querySelector(".blueprint").value;
                                           appProfile = parentObject.querySelector(".appProfile").value;
                                           return true;
                                      }
                                 });
                                 runApplicationAction.getProfileActionsVariablesFromBlueprint(bpName, appProfile, action, function(obj){
                                     runtimeVaraibles = obj.responseObject();
                                     if(runtimeVaraibles === null){
                                          alert("ERROR occurred while fetching runtime variables")
                                          return;
                                     }
                                     var json = JSON.parse(runtimeVaraibles);
                                     var runtimeElement = document.getElementById("actionRuntimeVariables-" + editorId);
                                     runtimeElement.value = JSON.stringify(json, undefined,4);
                                     console.log("value added");
                                 });
                            }
                            else{
                              runApplicationAction.fetchRuntimeProfileActionVariables(appname, action, function(obj){
                                  runtimeVaraibles = obj.responseObject();
                                  if(runtimeVaraibles === null){
                                         alert("ERROR occurred while fetching runtime variables")
                                         return;
                                  }
                                  var json = JSON.parse(runtimeVaraibles);
                                  var runtimeElement = document.getElementById("actionRuntimeVariables-" + editorId);
                                  runtimeElement.value = JSON.stringify(json, undefined,4);
                                  console.log("value added");
                              });
                            }
                        }
              </script>
          ----
          {noformat}

          h4. Solutions

          [https://www.jenkins.io/doc/developer/security/csp/#inline-javascript-blocks]
          [https://www.jenkins.io/doc/developer/security/csp/#inline-event-handlers]
          New: h4. Problems

          {noformat}
          == Inline Script Block
          Line: 31
          ----
          <script>
                        function applicationsChange(id){
                           actions = document.getElementById("applicationActions-" + id);
                           runtimeVariables = document.getElementById("actionRuntimeVariables-" + id);
                           actions.innerHTML = null;
                           runtimeVariables.value = null;
                           actions.appendChild(document.createElement('option'));
                        }

                        function getApplications(id){
                              var sel = document.getElementById(id);
                              var apps;
                              applicationNames = document.querySelectorAll(".applicationName");
                              runApplicationAction.fetchApplications(function(obj){
                                    apps = obj.responseObject();
                                    if(apps === null){
                                      alert("ERROR occurred while fetching the applications")
                                      return;
                                    }
                                    sel.innerHTML = null;
                                    if(applicationNames !== null){
                                      var opt = document.createElement('option');
                                      opt.innerHTML = "Applications created in Jenkins Blueprint Launch build step";
                                      opt.value = "Applications created in Jenkins Blueprint Launch build step";
                                      opt.setAttribute('disabled','disabled');
                                      opt.setAttribute('selected','true');
                                      sel.appendChild(opt);
                                      applicationNames.forEach(function(appObj){
                                           var opt = document.createElement('option');
                                           opt.innerHTML = appObj.value;
                                           opt.value = appObj.value;
                                           sel.appendChild(opt);
                                      });
                                    }
                                    if(apps.length &gt; 0){
                                      var opt = document.createElement('option');
                                      opt.innerHTML = "Existing Applications in Nutanix Calm";
                                      opt.value = "Existing Applications in Nutanix Calm";
                                      opt.setAttribute('disabled','disabled');
                                      sel.appendChild(opt);
                                      var i;
                                      for(i = 0; i &lt; apps.length; i++){
                                             var opt = document.createElement('option');
                                             opt.innerHTML = apps[i];
                                             opt.value = apps[i];
                                             sel.appendChild(opt);
                                      }
                                    }

                              });
                        }

                        function appActionsChange(id){
                              runtimeVariables = document.getElementById("actionRuntimeVariables-" + id);
                              runtimeVariables.value = "Fetching run time variables";
                              addActionRuntimeVariables(id);
                        }

                        function getApplicationActions(id, editorId){
                               console.log("logging the editorId: "+ editorId);
                               appName = document.getElementById("applications-" + editorId).value;
                               var applicationNames = [];
                               var i = 0;
                               var sel = document.getElementById("applicationActions-" + editorId);
                               blueprintLaunchApps = document.querySelectorAll(".applicationName");
                               i = 0;
                               blueprintLaunchApps.forEach(function(appObj){
                                   applicationNames[i] = appObj.value;
                                   i++;
                               });
                               if(applicationNames.indexOf(appName) >= 0){
                                    var bpName = "";
                                    var appProfile = "";
                                    blueprintLaunchApps.forEach(function(appObj){
                                         if(appName === appObj.value){
                                              var parentObject = appObj.parentElement.parentElement.parentElement;
                                              bpName = parentObject.querySelector(".blueprint").value;
                                              appProfile = parentObject.querySelector(".appProfile").value;
                                              return true;
                                         }
                                    });
                                    runApplicationAction.getProfileActionsFromBlueprint(bpName, appProfile, function(obj){
                                        actions = obj.responseObject();
                                        if(actions === null){
                                              alert("ERROR occurred while fetching the actions");
                                              return;
                                        }
                                        console.log("values "+actions);
                                        var i;
                                        sel.innerHTML = null;
                                        var opt = document.createElement('option');
                                        opt.innerHTML = "Please select one";
                                        opt.value = "Please select one";
                                        opt.setAttribute('disabled','disabled');
                                        opt.setAttribute('selected','true');
                                        sel.appendChild(opt);
                                        for(i = 0; i &lt; actions.length; i++){
                                             var opt = document.createElement('option');
                                             console.log("value "+actions[i]);
                                             opt.innerHTML = actions[i];
                                             opt.value = actions[i];
                                             sel.appendChild(opt);
                                        }
                                    });
                               }
                               else{
                                 runApplicationAction.fetchApplicationActions(appName, function(obj){
                                   actions = obj.responseObject();
                                   if(actions === null){
                                        alert("ERROR occurred while fetching the actions");
                                        return;
                                   }
                                   sel.innerHTML = null;
                                   var opt = document.createElement('option');
                                   opt.innerHTML = "Please select one";
                                   opt.value = "Please select one";
                                   opt.setAttribute('disabled','disabled');
                                   opt.setAttribute('selected','true');
                                   sel.appendChild(opt);
                                   actions.forEach(function(key){
                                       var opt = document.createElement('option');
                                       opt.innerHTML = key;
                                       opt.value = key;
                                       sel.appendChild(opt);
                                   });
                                 });
                               }
                        }


                        function addActionRuntimeVariables(editorId){
                            appname = document.getElementById("applications-" + editorId).value;
                            action = document.getElementById("applicationActions-" + editorId).value;
                            var applicationNames = [];
                            console.log("inside runtime" + action )
                            blueprintLaunchApps = document.querySelectorAll(".applicationName");
                            var i = 0;
                            blueprintLaunchApps.forEach(function(appObj){
                                applicationNames[i] = appObj.value;
                                i++;
                            });
                            if(applicationNames.indexOf(appName) >= 0){
                                 var bpName = "";
                                 var appProfile = "";
                                 blueprintLaunchApps.forEach(function(appObj){
                                      if(appName === appObj.value){
                                           var parentObject = appObj.parentElement.parentElement.parentElement;
                                           bpName = parentObject.querySelector(".blueprint").value;
                                           appProfile = parentObject.querySelector(".appProfile").value;
                                           return true;
                                      }
                                 });
                                 runApplicationAction.getProfileActionsVariablesFromBlueprint(bpName, appProfile, action, function(obj){
                                     runtimeVaraibles = obj.responseObject();
                                     if(runtimeVaraibles === null){
                                          alert("ERROR occurred while fetching runtime variables")
                                          return;
                                     }
                                     var json = JSON.parse(runtimeVaraibles);
                                     var runtimeElement = document.getElementById("actionRuntimeVariables-" + editorId);
                                     runtimeElement.value = JSON.stringify(json, undefined,4);
                                     console.log("value added");
                                 });
                            }
                            else{
                              runApplicationAction.fetchRuntimeProfileActionVariables(appname, action, function(obj){
                                  runtimeVaraibles = obj.responseObject();
                                  if(runtimeVaraibles === null){
                                         alert("ERROR occurred while fetching runtime variables")
                                         return;
                                  }
                                  var json = JSON.parse(runtimeVaraibles);
                                  var runtimeElement = document.getElementById("actionRuntimeVariables-" + editorId);
                                  runtimeElement.value = JSON.stringify(json, undefined,4);
                                  console.log("value added");
                              });
                            }
                        }
              </script>
          ----

          == Inline Event Handler
          Line: 15
          ----
          <f:select id="applications-${editorId}" onmousedown="getApplications(this.id)" onchange="applicationsChange(${editorId});"/>
          ----

          == Inline Event Handler
          Line: 20
          ----
          <f:select id="applicationActions-${editorId}" onmousedown="getApplicationActions(this.id, ${editorId})" onchange="appActionsChange(${editorId});"
                      class="select"/>
          ----
          {noformat}

          h4. Solutions

          [https://www.jenkins.io/doc/developer/security/csp/#inline-javascript-blocks]
          [https://www.jenkins.io/doc/developer/security/csp/#inline-event-handlers]
          Summary Original: [nutanix-calm] Extract inline script blocks and event handlers in com/calm/Descriptors/RunApplicationAction/config.jelly New: [nutanix-calm] Extract inline script block and event handlers in com/calm/Descriptors/RunApplicationAction/config.jelly

            Unassigned Unassigned
            basil Basil Crow
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

              Created:
              Updated: