Differential D14144 Diff 34181 src/applications/drydock/blueprint/DrydockBlueprintImplementation.php
Changeset View
Changeset View
Standalone View
Standalone View
src/applications/drydock/blueprint/DrydockBlueprintImplementation.php
Show First 20 Lines • Show All 61 Lines • ▼ Show 20 Lines | /* -( Lease Acquisition )-------------------------------------------------- */ | ||||
* @return void | * @return void | ||||
* @task lease | * @task lease | ||||
*/ | */ | ||||
abstract public function acquireLease( | abstract public function acquireLease( | ||||
DrydockBlueprint $blueprint, | DrydockBlueprint $blueprint, | ||||
DrydockResource $resource, | DrydockResource $resource, | ||||
DrydockLease $lease); | DrydockLease $lease); | ||||
/** | |||||
* @return void | |||||
* @task lease | |||||
*/ | |||||
public function activateLease( | public function activateLease( | ||||
DrydockBlueprint $blueprint, | DrydockBlueprint $blueprint, | ||||
DrydockResource $resource, | DrydockResource $resource, | ||||
DrydockLease $lease) { | DrydockLease $lease) { | ||||
throw new PhutilMethodNotImplementedException(); | throw new PhutilMethodNotImplementedException(); | ||||
} | } | ||||
final public function releaseLease( | |||||
/** | |||||
* React to a lease being released. | |||||
* | |||||
* This callback is primarily useful for automatically releasing resources | |||||
* once all leases are released. | |||||
* | |||||
* @param DrydockBlueprint Blueprint which built the resource. | |||||
* @param DrydockResource Resource a lease was released on. | |||||
* @param DrydockLease Recently released lease. | |||||
* @return void | |||||
* @task lease | |||||
*/ | |||||
abstract public function didReleaseLease( | |||||
DrydockBlueprint $blueprint, | DrydockBlueprint $blueprint, | ||||
DrydockResource $resource, | DrydockResource $resource, | ||||
DrydockLease $lease) { | DrydockLease $lease); | ||||
// TODO: This is all broken nonsense. | |||||
$scope = $this->pushActiveScope(null, $lease); | |||||
$released = false; | |||||
$lease->openTransaction(); | |||||
$lease->beginReadLocking(); | |||||
$lease->reload(); | |||||
if ($lease->getStatus() == DrydockLeaseStatus::STATUS_ACTIVE) { | |||||
$lease->release(); | |||||
$lease->setStatus(DrydockLeaseStatus::STATUS_RELEASED); | |||||
$lease->save(); | |||||
$released = true; | |||||
} | |||||
$lease->endReadLocking(); | |||||
$lease->saveTransaction(); | |||||
if (!$released) { | |||||
throw new Exception(pht('Unable to release lease: lease not active!')); | |||||
} | |||||
} | |||||
/** | |||||
* Destroy any temporary data associated with a lease. | |||||
* | |||||
* If a lease creates temporary state while held, destroy it here. | |||||
* | |||||
* @param DrydockBlueprint Blueprint which built the resource. | |||||
* @param DrydockResource Resource the lease is acquired on. | |||||
* @param DrydockLease The lease being destroyed. | |||||
* @return void | |||||
* @task lease | |||||
*/ | |||||
abstract public function destroyLease( | |||||
DrydockBlueprint $blueprint, | |||||
DrydockResource $resource, | |||||
DrydockLease $lease); | |||||
/* -( Resource Allocation )------------------------------------------------ */ | /* -( Resource Allocation )------------------------------------------------ */ | ||||
/** | /** | ||||
* Enforce fundamental implementation/lease checks. Allows implementations to | * Enforce fundamental implementation/lease checks. Allows implementations to | ||||
* reject a lease which no concrete blueprint can ever satisfy. | * reject a lease which no concrete blueprint can ever satisfy. | ||||
▲ Show 20 Lines • Show All 83 Lines • ▼ Show 20 Lines | /* -( Resource Allocation )------------------------------------------------ */ | ||||
* @param DrydockLease Requested lease. | * @param DrydockLease Requested lease. | ||||
* @return DrydockResource Allocated resource. | * @return DrydockResource Allocated resource. | ||||
* @task resource | * @task resource | ||||
*/ | */ | ||||
abstract public function allocateResource( | abstract public function allocateResource( | ||||
DrydockBlueprint $blueprint, | DrydockBlueprint $blueprint, | ||||
DrydockLease $lease); | DrydockLease $lease); | ||||
/** | |||||
* @task resource | |||||
*/ | |||||
public function activateResource( | public function activateResource( | ||||
DrydockBlueprint $blueprint, | DrydockBlueprint $blueprint, | ||||
DrydockResource $resource) { | DrydockResource $resource) { | ||||
throw new PhutilMethodNotImplementedException(); | throw new PhutilMethodNotImplementedException(); | ||||
} | } | ||||
/** | |||||
* Destroy any temporary data associated with a resource. | |||||
* | |||||
* If a resource creates temporary state when allocated, destroy that state | |||||
* here. For example, you might shut down a virtual host or destroy a working | |||||
* copy on disk. | |||||
* | |||||
* @param DrydockBlueprint Blueprint which built the resource. | |||||
* @param DrydockResource Resource being destroyed. | |||||
* @return void | |||||
* @task resource | |||||
*/ | |||||
abstract public function destroyResource( | |||||
DrydockBlueprint $blueprint, | |||||
DrydockResource $resource); | |||||
/* -( Resource Interfaces )------------------------------------------------ */ | /* -( Resource Interfaces )------------------------------------------------ */ | ||||
abstract public function getInterface( | abstract public function getInterface( | ||||
DrydockBlueprint $blueprint, | DrydockBlueprint $blueprint, | ||||
DrydockResource $resource, | DrydockResource $resource, | ||||
DrydockLease $lease, | DrydockLease $lease, | ||||
$type); | $type); | ||||
▲ Show 20 Lines • Show All 122 Lines • Show Last 20 Lines |