diff --git a/src/__phutil_library_map__.php b/src/__phutil_library_map__.php --- a/src/__phutil_library_map__.php +++ b/src/__phutil_library_map__.php @@ -913,6 +913,7 @@ 'FundInitiativeTransactionQuery' => 'applications/fund/query/FundInitiativeTransactionQuery.php', 'FundInitiativeViewController' => 'applications/fund/controller/FundInitiativeViewController.php', 'FundSchemaSpec' => 'applications/fund/storage/FundSchemaSpec.php', + 'HarbormasterAppendLogConduitAPIMethod' => 'applications/harbormaster/conduit/HarbormasterAppendLogConduitAPIMethod.php', 'HarbormasterArcLintBuildStepImplementation' => 'applications/harbormaster/step/HarbormasterArcLintBuildStepImplementation.php', 'HarbormasterArcUnitBuildStepImplementation' => 'applications/harbormaster/step/HarbormasterArcUnitBuildStepImplementation.php', 'HarbormasterAutotargetsTestCase' => 'applications/harbormaster/__tests__/HarbormasterAutotargetsTestCase.php', @@ -982,6 +983,7 @@ 'HarbormasterController' => 'applications/harbormaster/controller/HarbormasterController.php', 'HarbormasterDAO' => 'applications/harbormaster/storage/HarbormasterDAO.php', 'HarbormasterExternalBuildStepGroup' => 'applications/harbormaster/stepgroup/HarbormasterExternalBuildStepGroup.php', + 'HarbormasterFinalizeLogConduitAPIMethod' => 'applications/harbormaster/conduit/HarbormasterFinalizeLogConduitAPIMethod.php', 'HarbormasterHTTPRequestBuildStepImplementation' => 'applications/harbormaster/step/HarbormasterHTTPRequestBuildStepImplementation.php', 'HarbormasterLeaseHostBuildStepImplementation' => 'applications/harbormaster/step/HarbormasterLeaseHostBuildStepImplementation.php', 'HarbormasterLintMessagesController' => 'applications/harbormaster/controller/HarbormasterLintMessagesController.php', @@ -1010,6 +1012,7 @@ 'HarbormasterScratchTable' => 'applications/harbormaster/storage/HarbormasterScratchTable.php', 'HarbormasterSendMessageConduitAPIMethod' => 'applications/harbormaster/conduit/HarbormasterSendMessageConduitAPIMethod.php', 'HarbormasterSleepBuildStepImplementation' => 'applications/harbormaster/step/HarbormasterSleepBuildStepImplementation.php', + 'HarbormasterStartLogConduitAPIMethod' => 'applications/harbormaster/conduit/HarbormasterStartLogConduitAPIMethod.php', 'HarbormasterStepAddController' => 'applications/harbormaster/controller/HarbormasterStepAddController.php', 'HarbormasterStepDeleteController' => 'applications/harbormaster/controller/HarbormasterStepDeleteController.php', 'HarbormasterStepEditController' => 'applications/harbormaster/controller/HarbormasterStepEditController.php', @@ -4600,6 +4603,7 @@ 'FundInitiativeTransactionQuery' => 'PhabricatorApplicationTransactionQuery', 'FundInitiativeViewController' => 'FundController', 'FundSchemaSpec' => 'PhabricatorConfigSchemaSpec', + 'HarbormasterAppendLogConduitAPIMethod' => 'HarbormasterConduitAPIMethod', 'HarbormasterArcLintBuildStepImplementation' => 'HarbormasterBuildStepImplementation', 'HarbormasterArcUnitBuildStepImplementation' => 'HarbormasterBuildStepImplementation', 'HarbormasterAutotargetsTestCase' => 'PhabricatorTestCase', @@ -4701,6 +4705,7 @@ 'HarbormasterController' => 'PhabricatorController', 'HarbormasterDAO' => 'PhabricatorLiskDAO', 'HarbormasterExternalBuildStepGroup' => 'HarbormasterBuildStepGroup', + 'HarbormasterFinalizeLogConduitAPIMethod' => 'HarbormasterConduitAPIMethod', 'HarbormasterHTTPRequestBuildStepImplementation' => 'HarbormasterBuildStepImplementation', 'HarbormasterLeaseHostBuildStepImplementation' => 'HarbormasterBuildStepImplementation', 'HarbormasterLintMessagesController' => 'HarbormasterController', @@ -4729,6 +4734,7 @@ 'HarbormasterScratchTable' => 'HarbormasterDAO', 'HarbormasterSendMessageConduitAPIMethod' => 'HarbormasterConduitAPIMethod', 'HarbormasterSleepBuildStepImplementation' => 'HarbormasterBuildStepImplementation', + 'HarbormasterStartLogConduitAPIMethod' => 'HarbormasterConduitAPIMethod', 'HarbormasterStepAddController' => 'HarbormasterController', 'HarbormasterStepDeleteController' => 'HarbormasterController', 'HarbormasterStepEditController' => 'HarbormasterController', diff --git a/src/applications/harbormaster/conduit/HarbormasterAppendLogConduitAPIMethod.php b/src/applications/harbormaster/conduit/HarbormasterAppendLogConduitAPIMethod.php new file mode 100644 --- /dev/null +++ b/src/applications/harbormaster/conduit/HarbormasterAppendLogConduitAPIMethod.php @@ -0,0 +1,46 @@ + 'required phid', + 'data' => 'required string', + ); + } + + protected function defineReturnType() { + return 'void'; + } + + protected function execute(ConduitAPIRequest $request) { + $viewer = $request->getUser(); + + $build_log_phid = $request->getValue('buildLogPHID'); + $data = $request->getValue('data'); + + $build_log = id(new HarbormasterBuildLogQuery()) + ->setViewer($viewer) + ->withPHIDs(array($build_log_phid)) + ->executeOne(); + if (!$build_log) { + throw new Exception(pht('No such build log!')); + } + + $build_log->append($data); + + return null; + } + +} diff --git a/src/applications/harbormaster/conduit/HarbormasterFinalizeLogConduitAPIMethod.php b/src/applications/harbormaster/conduit/HarbormasterFinalizeLogConduitAPIMethod.php new file mode 100644 --- /dev/null +++ b/src/applications/harbormaster/conduit/HarbormasterFinalizeLogConduitAPIMethod.php @@ -0,0 +1,46 @@ + 'required phid', + 'startTimestamp' => 'required int', + ); + } + + protected function defineReturnType() { + return 'void'; + } + + protected function execute(ConduitAPIRequest $request) { + $viewer = $request->getUser(); + + $build_log_phid = $request->getValue('buildLogPHID'); + $start = $request->getValue('startTimestamp'); + + $build_log = id(new HarbormasterBuildLogQuery()) + ->setViewer($viewer) + ->withPHIDs(array($build_log_phid)) + ->executeOne(); + if (!$build_log) { + throw new Exception(pht('No such build log!')); + } + + $build_log->finalize($start); + + return null; + } + +} diff --git a/src/applications/harbormaster/conduit/HarbormasterStartLogConduitAPIMethod.php b/src/applications/harbormaster/conduit/HarbormasterStartLogConduitAPIMethod.php new file mode 100644 --- /dev/null +++ b/src/applications/harbormaster/conduit/HarbormasterStartLogConduitAPIMethod.php @@ -0,0 +1,54 @@ + 'required phid', + 'logSource' => 'required string', + 'logType' => 'required string', + ); + } + + protected function defineReturnType() { + return 'array'; + } + + protected function execute(ConduitAPIRequest $request) { + $viewer = $request->getUser(); + + $build_target_phid = $request->getValue('buildTargetPHID'); + $log_source = $request->getValue('logSource'); + $log_type = $request->getValue('logType'); + + $build_target = id(new HarbormasterBuildTargetQuery()) + ->setViewer($viewer) + ->withPHIDs(array($build_target_phid)) + ->executeOne(); + if (!$build_target) { + throw new Exception(pht('No such build target!')); + } + + $build = $build_target->getBuild(); + $log = $build->createLog($build_target, $log_source, $log_type); + + $start = $log->start(); + + return array( + 'buildLogPHID' => $log->getPHID(), + 'startTimestamp' => $start, + ); + } + +}