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.");
}
}