public static function create_or_update_JSIObject()

in app/libraries/CRUtilities.php [130:299]


    public static function create_or_update_JSIObject($inputs, $update = false)
    {

        $computeResource = CRUtilities::get_compute_resource($inputs["crId"]);

        if (Config::get('pga_config.airavata')['enable-app-catalog-cache']) {
            if (Cache::has('CR-' . $inputs["crId"])) {
                Cache::forget('CR-' . $inputs["crId"]);
            }
        }

        $jsiId = null;
        if (isset($inputs["jsiId"]))
            $jsiId = $inputs["jsiId"];

        if ($inputs["jobSubmissionProtocol"] == JobSubmissionProtocol::LOCAL) {

            //print_r( $jsiObject->resourceJobManager->resourceJobManagerId);
            $resourceManager = new ResourceJobManager(array(
                "resourceJobManagerType" => $inputs["resourceJobManagerType"],
                "pushMonitoringEndpoint" => $inputs["pushMonitoringEndpoint"],
                "jobManagerBinPath" => $inputs["jobManagerBinPath"],
                "jobManagerCommands" => $inputs["jobManagerCommands"],
                "parallelismPrefix" => $inputs["parallelismPrefix"]
            ));

            //$rmId = $jsiObject->resourceJobManager->resourceJobManagerId;
            //$rm = $airavataclient->updateResourceJobManager($rmId, $resourceManager);
            //print_r( $rm); exit;
            $localJobSubmission = new LOCALSubmission(array(
                    "securityProtocol" => SecurityProtocol::LOCAL,
                    "resourceJobManager" => $resourceManager
                )
            );

            if ($update) //update Local JSP
            {
                $jsiObject = Airavata::getLocalJobSubmission(Session::get('authz-token'), $jsiId);
                $localSub = Airavata::updateResourceJobManager(Session::get('authz-token'), $jsiObject->resourceJobManager->resourceJobManagerId, $resourceManager);
                //$localSub = $airavataclient->updateLocalSubmissionDetails( $jsiId, $localJobSubmission);
            } else // create Local JSP
            {
                $localSub = Airavata::addLocalSubmissionDetails(Session::get('authz-token'), $computeResource->computeResourceId, 0, $localJobSubmission);
                return $localSub;
            }
        } else if ($inputs["jobSubmissionProtocol"] == JobSubmissionProtocol::SSH) {
            $resourceManager = new ResourceJobManager(array(
                "resourceJobManagerType" => $inputs["resourceJobManagerType"],
                "pushMonitoringEndpoint" => $inputs["pushMonitoringEndpoint"],
                "jobManagerBinPath" => $inputs["jobManagerBinPath"],
                "jobManagerCommands" => $inputs["jobManagerCommands"],
                "parallelismPrefix" => $inputs["parallelismPrefix"]
            ));
            $sshJobSubmission = new SSHJobSubmission(array
                (
                    "securityProtocol" => intval($inputs["securityProtocol"]),
                    "resourceJobManager" => $resourceManager,
                    "alternativeSSHHostName" => $inputs["alternativeSSHHostName"],
                    "sshPort" => intval($inputs["sshPort"]),
                    "monitorMode" => MonitorMode::JOB_EMAIL_NOTIFICATION_MONITOR
                )
            );
            //var_dump( $sshJobSubmission); exit;
            if ($update) //update Local JSP
            {
                $jsiObject = Airavata::getSSHJobSubmission(Session::get('authz-token'), $jsiId);

                //first update resource job manager
                $rmjId = $jsiObject->resourceJobManager->resourceJobManagerId;
                Airavata::updateResourceJobManager(Session::get('authz-token'), $rmjId, $resourceManager);
                $jsiObject = Airavata::getSSHJobSubmission(Session::get('authz-token'), $jsiId);

                $jsiObject->securityProtocol = intval($inputs["securityProtocol"]);
                $jsiObject->alternativeSSHHostName = $inputs["alternativeSSHHostName"];
                $jsiObject->sshPort = intval($inputs["sshPort"]);
                $jsiObject->monitorMode = intval($inputs["monitorMode"]);
                $jsiObject->resourceJobManager = Airavata::getresourceJobManager(Session::get('authz-token'), $rmjId);
                //var_dump( $jsiObject); exit;
                //add updated resource job manager to ssh job submission object.
                //$sshJobSubmission->resourceJobManager->resourceJobManagerId = $rmjId;
                $localSub = Airavata::updateSSHJobSubmissionDetails(Session::get('authz-token'), $jsiId, $jsiObject);
            } else {
                $sshSub = Airavata::addSSHJobSubmissionDetails(Session::get('authz-token'), $computeResource->computeResourceId, 0, $sshJobSubmission);
            }
            return;
        } else if ($inputs["jobSubmissionProtocol"] == JobSubmissionProtocol::SSH_FORK) {
            $resourceManager = new ResourceJobManager(array(
                "resourceJobManagerType" => $inputs["resourceJobManagerType"],
                "pushMonitoringEndpoint" => $inputs["pushMonitoringEndpoint"],
                "jobManagerBinPath" => $inputs["jobManagerBinPath"],
                "jobManagerCommands" => $inputs["jobManagerCommands"],
                "parallelismPrefix" => $inputs["parallelismPrefix"]
            ));
            $sshJobSubmission = new SSHJobSubmission(array
                (
                    "securityProtocol" => intval($inputs["securityProtocol"]),
                    "resourceJobManager" => $resourceManager,
                    "alternativeSSHHostName" => $inputs["alternativeSSHHostName"],
                    "sshPort" => intval($inputs["sshPort"]),
                    "monitorMode" => MonitorMode::FORK
                )
            );
            //var_dump( $sshJobSubmission); exit;
            if ($update) //update Local JSP
            {
                $jsiObject = Airavata::getSSHJobSubmission(Session::get('authz-token'), $jsiId);

                //first update resource job manager
                $rmjId = $jsiObject->resourceJobManager->resourceJobManagerId;
                Airavata::updateResourceJobManager(Session::get('authz-token'), $rmjId, $resourceManager);
                $jsiObject = Airavata::getSSHJobSubmission(Session::get('authz-token'), $jsiId);

                $jsiObject->securityProtocol = intval($inputs["securityProtocol"]);
                $jsiObject->alternativeSSHHostName = $inputs["alternativeSSHHostName"];
                $jsiObject->sshPort = intval($inputs["sshPort"]);
                $jsiObject->monitorMode = intval($inputs["monitorMode"]);
                $jsiObject->resourceJobManager = Airavata::getresourceJobManager(Session::get('authz-token'), $rmjId);
                //var_dump( $jsiObject); exit;
                //add updated resource job manager to ssh job submission object.
                //$sshJobSubmission->resourceJobManager->resourceJobManagerId = $rmjId;
                $localSub = Airavata::updateSSHJobSubmissionDetails(Session::get('authz-token'), $jsiId, $jsiObject);
            } else {
                $sshSub = Airavata::addSSHForkJobSubmissionDetails(Session::get('authz-token'), $computeResource->computeResourceId, 0, $sshJobSubmission);
            }
            return;
        } else if ($inputs["jobSubmissionProtocol"] == JobSubmissionProtocol::UNICORE) {
            $unicoreJobSubmission = new UnicoreJobSubmission(array
                (
                    "securityProtocol" => intval($inputs["securityProtocol"]),
                    "unicoreEndPointURL" => $inputs["unicoreEndPointURL"]
                )
            );
            if ($update) {
                $jsiObject = Airavata::getUnicoreJobSubmission(Session::get('authz-token'), $jsiId);
                $jsiObject->securityProtocol = intval($inputs["securityProtocol"]);
                $jsiObject->unicoreEndPointURL = $inputs["unicoreEndPointURL"];

                $unicoreSub = Airavata::updateUnicoreJobSubmissionDetails(Session::get('authz-token'), $jsiId, $jsiObject);
            } else {
                $unicoreSub = Airavata::addUNICOREJobSubmissionDetails(Session::get('authz-token'), $computeResource->computeResourceId, 0, $unicoreJobSubmission);
            }
            return;
        } else if ($inputs["jobSubmissionProtocol"] == JobSubmissionProtocol::CLOUD) {
            $cloudJobSubmission = new CloudJobSubmission(array
                (
                    "securityProtocol" => intval($inputs["securityProtocol"]),
                    "nodeId" => $inputs["nodeId"],
                    "executableType" => $inputs["executableType"],
                    "providerName" => intval( $inputs["providerName"]),
                    "userAccountName" => $inputs["userAccountName"]
                )
            );
            if ($update) {
                $jsiObject = Airavata::getCloudJobSubmission(Session::get('authz-token'), $jsiId);
                $jsiObject->securityProtocol = intval($inputs["securityProtocol"]);
                $jsiObject->nodeId = $inputs["nodeId"];
                $jsiObject->executableType = $inputs["executableType"];
                $jsiObject->providerName = intval( $inputs["providerName"]);
                $jsiObject->userAccountName = $inputs["userAccountName"];

                $cloudSub = Airavata::updateCloudJobSubmissionDetails(Session::get('authz-token'), $jsiId, $jsiObject);
            } else {
                $cloudSub = Airavata::addCloudJobSubmissionDetails(Session::get('authz-token'), $computeResource->computeResourceId, 0, $cloudJobSubmission);
            }
            return;
        }
        else /* Globus does not work currently */ {
            print_r("Whoops! We haven't coded for this Job Submission Protocol yet. Still working on it. Please click <a href='" . URL::to('/') . "/cr/edit'>here</a> to go back to edit page for compute resource.");
        }
    }