Page MenuHomePhabricator

D7695.diff
No OneTemporary

D7695.diff

Index: src/applications/drydock/blueprint/DrydockPreallocatedHostBlueprintImplementation.php
===================================================================
--- src/applications/drydock/blueprint/DrydockPreallocatedHostBlueprintImplementation.php
+++ src/applications/drydock/blueprint/DrydockPreallocatedHostBlueprintImplementation.php
@@ -37,6 +37,21 @@
DrydockResource $resource,
DrydockLease $lease) {
+ // Because preallocated resources are manually created, we should verify
+ // we have all the information we need.
+ PhutilTypeSpec::checkMap(
+ $resource->getAttributesForTypeSpec(
+ array('platform', 'host', 'port', 'user', 'path')),
+ array(
+ 'platform' => 'string',
+ 'host' => 'string',
+ 'port' => 'string', // Value is a string from the command line
+ 'user' => 'string',
+ 'path' => 'string',
+ ));
+ $v_platform = $resource->getAttribute('platform');
+ $v_path = $resource->getAttribute('path');
+
// Similar to DrydockLocalHostBlueprint, we create a folder
// on the remote host that the lease can use.
@@ -46,18 +61,18 @@
// the platform we're currently running on, not the platform we are
// remoting to.
$separator = '/';
- if ($lease->getAttribute('platform') === 'windows') {
+ if ($v_platform === 'windows') {
$separator = '\\';
}
// Clean up the directory path a little.
- $base_path = rtrim($resource->getAttribute('path'), '/');
+ $base_path = rtrim($v_path, '/');
$base_path = rtrim($base_path, '\\');
$full_path = $base_path.$separator.$lease_id;
$cmd = $lease->getInterface('command');
- if ($lease->getAttribute('platform') !== 'windows') {
+ if ($v_platform !== 'windows') {
$cmd->execx('mkdir %s', $full_path);
} else {
// Windows is terrible. The mkdir command doesn't even support putting
Index: src/applications/drydock/storage/DrydockResource.php
===================================================================
--- src/applications/drydock/storage/DrydockResource.php
+++ src/applications/drydock/storage/DrydockResource.php
@@ -35,6 +35,10 @@
return idx($this->attributes, $key, $default);
}
+ public function getAttributesForTypeSpec(array $attribute_names) {
+ return array_select_keys($this->attributes, $attribute_names);
+ }
+
public function setAttribute($key, $value) {
$this->attributes[$key] = $value;
return $this;

File Metadata

Mime Type
text/plain
Expires
Sat, Nov 16, 10:06 AM (4 d, 4 h ago)
Storage Engine
blob
Storage Format
Encrypted (AES-256-CBC)
Storage Handle
6732186
Default Alt Text
D7695.diff (2 KB)

Event Timeline