diff --git a/resources/sql/autopatches/20180827.drydock.01.acquired.sql b/resources/sql/autopatches/20180827.drydock.01.acquired.sql new file mode 100644 --- /dev/null +++ b/resources/sql/autopatches/20180827.drydock.01.acquired.sql @@ -0,0 +1,2 @@ +ALTER TABLE {$NAMESPACE}_drydock.drydock_lease + ADD acquiredEpoch INT UNSIGNED; diff --git a/resources/sql/autopatches/20180827.drydock.02.activated.sql b/resources/sql/autopatches/20180827.drydock.02.activated.sql new file mode 100644 --- /dev/null +++ b/resources/sql/autopatches/20180827.drydock.02.activated.sql @@ -0,0 +1,2 @@ +ALTER TABLE {$NAMESPACE}_drydock.drydock_lease + ADD activatedEpoch INT UNSIGNED; diff --git a/src/applications/drydock/controller/DrydockLeaseViewController.php b/src/applications/drydock/controller/DrydockLeaseViewController.php --- a/src/applications/drydock/controller/DrydockLeaseViewController.php +++ b/src/applications/drydock/controller/DrydockLeaseViewController.php @@ -163,6 +163,30 @@ } $view->addProperty(pht('Expires'), $until_display); + $acquired_epoch = $lease->getAcquiredEpoch(); + $activated_epoch = $lease->getActivatedEpoch(); + + if ($acquired_epoch) { + $acquired_display = phabricator_datetime($acquired_epoch, $viewer); + } else { + if ($activated_epoch) { + $acquired_display = phutil_tag( + 'em', + array(), + pht('Activated on Acquisition')); + } else { + $acquired_display = phutil_tag('em', array(), pht('Not Acquired')); + } + } + $view->addProperty(pht('Acquired'), $acquired_display); + + if ($activated_epoch) { + $activated_display = phabricator_datetime($activated_epoch, $viewer); + } else { + $activated_display = phutil_tag('em', array(), pht('Not Activated')); + } + $view->addProperty(pht('Activated'), $activated_display); + $attributes = $lease->getAttributes(); if ($attributes) { $view->addSectionHeader( diff --git a/src/applications/drydock/storage/DrydockLease.php b/src/applications/drydock/storage/DrydockLease.php --- a/src/applications/drydock/storage/DrydockLease.php +++ b/src/applications/drydock/storage/DrydockLease.php @@ -10,6 +10,8 @@ protected $authorizingPHID; protected $attributes = array(); protected $status = DrydockLeaseStatus::STATUS_PENDING; + protected $acquiredEpoch; + protected $activatedEpoch; private $resource = self::ATTACHABLE; private $unconsumedCommands = self::ATTACHABLE; @@ -62,6 +64,22 @@ $this->scheduleUpdate(); } + public function setStatus($status) { + if ($status == DrydockLeaseStatus::STATUS_ACQUIRED) { + if (!$this->getAcquiredEpoch()) { + $this->setAcquiredEpoch(PhabricatorTime::getNow()); + } + } + + if ($status == DrydockLeaseStatus::STATUS_ACTIVE) { + if (!$this->getActivatedEpoch()) { + $this->setActivatedEpoch(PhabricatorTime::getNow()); + } + } + + return parent::setStatus($status); + } + public function getLeaseName() { return pht('Lease %d', $this->getID()); } @@ -78,6 +96,8 @@ 'resourceType' => 'text128', 'ownerPHID' => 'phid?', 'resourcePHID' => 'phid?', + 'acquiredEpoch' => 'epoch?', + 'activatedEpoch' => 'epoch?', ), self::CONFIG_KEY_SCHEMA => array( 'key_resource' => array(