public function editSubmit() { $tabName = ""; if (Input::get("cr-edit") == "resDesc") { $computeDescription = Utilities::get_compute_resource(Input::get("crId")); $computeDescription->hostName = trim(Input::get("hostname")); $computeDescription->hostAliases = array_unique(array_filter(Input::get("hostaliases"))); $computeDescription->ipAddresses = array_unique(array_filter(Input::get("ips"))); $computeDescription->resourceDescription = Input::get("description"); $computeDescription->maxMemoryPerNode = Input::get("maxMemoryPerNode"); //var_dump( $computeDescription); exit; $computeResource = CRUtilities::register_or_update_compute_resource($computeDescription, true); $tabName = "#tab-desc"; } if (Input::get("cr-edit") == "queue") { $queue = array("queueName" => Input::get("qname"), "queueDescription" => Input::get("qdesc"), "maxRunTime" => Input::get("qmaxruntime"), "maxNodes" => Input::get("qmaxnodes"), "maxProcessors" => Input::get("qmaxprocessors"), "maxJobsInQueue" => Input::get("qmaxjobsinqueue"), "maxMemory" => Input::get("qmaxmemoryinqueue")); $computeDescription = Utilities::get_compute_resource(Input::get("crId")); $computeDescription->batchQueues[] = CRUtilities::createQueueObject($queue); $computeResource = CRUtilities::register_or_update_compute_resource($computeDescription, true); //var_dump( $computeResource); exit; $tabName = "#tab-queues"; } else { if (Input::get("cr-edit") == "delete-queue") { CRUtilities::deleteQueue(Input::get("crId"), Input::get("queueName")); $tabName = "#tab-queues"; } else { if (Input::get("cr-edit") == "fileSystems") { $computeDescription = Utilities::get_compute_resource(Input::get("crId")); $computeDescription->fileSystems = array_filter(Input::get("fileSystems"), "trim"); $computeResource = CRUtilities::register_or_update_compute_resource($computeDescription, true); $tabName = "#tab-filesystem"; } else { if (Input::get("cr-edit") == "jsp" || Input::get("cr-edit") == "edit-jsp") { $update = false; if (Input::get("cr-edit") == "edit-jsp") { $update = true; } $jobSubmissionInterface = CRUtilities::create_or_update_JSIObject(Input::all(), $update); $tabName = "#tab-jobSubmission"; } else { if (Input::get("cr-edit") == "jsi-priority") { $inputs = Input::all(); $computeDescription = Utilities::get_compute_resource(Input::get("crId")); foreach ($computeDescription->jobSubmissionInterfaces as $index => $jsi) { foreach ($inputs["jsi-id"] as $idIndex => $jsiId) { if ($jsiId == $jsi->jobSubmissionInterfaceId) { $computeDescription->jobSubmissionInterfaces[$index]->priorityOrder = $inputs["jsi-priority"][$idIndex]; break; } } } $computeResource = CRUtilities::register_or_update_compute_resource($computeDescription, true); return 1; //currently done by ajax. } else { if (Input::get("cr-edit") == "dmp" || Input::get("cr-edit") == "edit-dmi") { $update = false; if (Input::get("cr-edit") == "edit-dmi") { $update = true; } $dataMovementInterface = CRUtilities::create_or_update_DMIObject(Input::all(), $update); $tabName = "#tab-dataMovement"; } else { if (Input::get("cr-edit") == "dmi-priority") { $inputs = Input::all(); $computeDescription = Utilities::get_compute_resource(Input::get("crId")); foreach ($computeDescription->dataMovementInterfaces as $index => $dmi) { foreach ($inputs["dmi-id"] as $idIndex => $dmiId) { if ($dmiId == $dmi->dataMovementInterfaceId) { $computeDescription->dataMovementInterfaces[$index]->priorityOrder = $inputs["dmi-priority"][$idIndex]; break; } } } $computeResource = CRUtilities::register_or_update_compute_resource($computeDescription, true); return 1; //currently done by ajax. } } } } } } } return Redirect::to("cr/edit?crId=" . Input::get("crId") . $tabName); }
public static function create_or_update_DMIObject( $inputs, $update = false){ $computeResource = Utilities::get_compute_resource( $inputs["crId"] ); if( $inputs["dataMovementProtocol"] == DataMovementProtocol::LOCAL) /* LOCAL */ { $localDataMovement = new LOCALDataMovement(); $localdmp = Airavata::addLocalDataMovementDetails( $computeResource->computeResourceId, 0, $localDataMovement); if( $localdmp) print_r( "The Local Data Movement has been added. Edit UI for the Local Data Movement Interface is yet to be made. Please click <a href='" . URL::to('/') . "/cr/edit'>here</a> to go back to edit page for compute resource."); } else if( $inputs["dataMovementProtocol"] == DataMovementProtocol::SCP) /* SCP */ { //var_dump( $inputs); exit; $scpDataMovement = new SCPDataMovement( array( "securityProtocol" => intval( $inputs["securityProtocol"] ), "alternativeSCPHostName" => $inputs["alternativeSSHHostName"], "sshPort" => intval( $inputs["sshPort"] ) ) ); if( $update) $scpdmp = Airavata::updateSCPDataMovementDetails( $inputs["dmiId"], $scpDataMovement); else $scpdmp = Airavata::addSCPDataMovementDetails( $computeResource->computeResourceId, 0, $scpDataMovement); } else if( $inputs["dataMovementProtocol"] == DataMovementProtocol::GridFTP) /* GridFTP */ { $gridFTPDataMovement = new GridFTPDataMovement( array( "securityProtocol" => $inputs["securityProtocol"], "gridFTPEndPoints" => $inputs["gridFTPEndPoints"] )); if( $update) $gridftpdmp = Airavata::updateGridFTPDataMovementDetails( $inputs["dmiId"], $gridFTPDataMovement); else $gridftpdmp = Airavata::addGridFTPDataMovementDetails( $computeResource->computeResourceId, 0, $gridFTPDataMovement); } else if( $inputs["dataMovementProtocol"] == DataMovementProtocol::UNICORE_STORAGE_SERVICE) /* Unicore Storage Service */ { $unicoreDataMovement = new UnicoreDataMovement( array ( "securityProtocol" => intval( $inputs["securityProtocol"]), "unicoreEndPointURL" => $inputs["unicoreEndPointURL"] ) ); if( $update) $unicoredmp = Airavata::updateUnicoreDataMovementDetails( $inputs["dmiId"], $unicoreDataMovement); else $unicoredmp = Airavata::addUnicoreDataMovementDetails( $computeResource->computeResourceId, 0, $unicoreDataMovement); } else /* other data movement protocols */ { print_r( "Whoops! We haven't coded for this Data Movement 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."); } }
public static function get_experiment_values( $experiment, $project, $forSearch = false) { $expVal = array(); $expVal["experimentStatusString"] = ""; $expVal["experimentTimeOfStateChange"] = ""; $expVal["experimentCreationTime"] = ""; if( $experiment->experimentStatus != null) { $experimentStatus = $experiment->experimentStatus; $experimentState = $experimentStatus->experimentState; $experimentStatusString = ExperimentState::$__names[$experimentState]; $expVal["experimentStatusString"] = $experimentStatusString; $expVal["experimentTimeOfStateChange"] = date('Y-m-d H:i:s', $experimentStatus->timeOfStateChange/1000); // divide by 1000 since timeOfStateChange is in ms $expVal["experimentCreationTime"] = date('Y-m-d H:i:s', $experiment->creationTime/1000); // divide by 1000 since creationTime is in ms } $jobStatus = Airavata::getJobStatuses($experiment->experimentID); if ($jobStatus) { $jobName = array_keys($jobStatus); $jobState = JobState::$__names[$jobStatus[$jobName[0]]->jobState]; } else { $jobState = null; } $expVal["jobState"] = $jobState; if(! $forSearch) { $userConfigData = $experiment->userConfigurationData; $scheduling = $userConfigData->computationalResourceScheduling; $expVal['scheduling'] = $scheduling; $expVal["computeResource"] = Utilities::get_compute_resource($scheduling->resourceHostId); } $expVal["applicationInterface"] = Utilities::get_application_interface($experiment->applicationId); switch ($experimentStatusString) { case 'CREATED': case 'VALIDATED': case 'SCHEDULED': case 'CANCELED': case 'FAILED': $expVal["editable"] = true; break; default: $expVal["editable"] = false; break; } switch ($experimentStatusString) { case 'CREATED': case 'VALIDATED': case 'SCHEDULED': case 'LAUNCHED': case 'EXECUTING': $expVal["cancelable"] = true; break; default: $expVal["cancelable"] = false; break; } return $expVal; }