From 96f6e167cb8dd7c1e30c6d614f09fa9c8df09b2f Mon Sep 17 00:00:00 2001 From: Adrian Rossouw <adrian@developmentseed.org> Date: Mon, 7 Jun 2010 22:00:08 +0200 Subject: [PATCH] Removed the provision_service function, and introduce service handler subscriptions in the environment objects. Instead of provision_service('type') you now use d()->service('type') to access the service object. The context object returned by d() now manages which context object's service to return, based on the internally managed subscriptions. --- db/backup.provision.inc | 5 ++--- db/clone.provision.inc | 2 +- db/db.drush.inc | 6 +++--- db/delete.provision.inc | 4 ++-- db/deploy.provision.inc | 10 +++++----- db/install.provision.inc | 6 +++--- db/migrate.provision.inc | 4 ++-- db/mysql/mysql_service.inc | 1 - db/restore.provision.inc | 14 +++++++------- http/delete.provision.inc | 6 +++--- http/deploy.provision.inc | 8 ++++---- http/disable.provision.inc | 4 ++-- http/enable.provision.inc | 4 ++-- http/install.provision.inc | 4 ++-- http/restore.provision.inc | 12 ++++++------ platform/backup.provision.inc | 4 ++-- platform/clone.provision.inc | 2 +- platform/deploy.provision.inc | 4 ++-- platform/migrate.provision.inc | 4 ++-- platform/provision_drupal.drush.inc | 12 ++++++------ platform/restore.provision.inc | 6 +++--- platform/verify.provision.inc | 10 +++++----- provision.config.inc | 16 +++++++-------- provision.environment.inc | 30 +++++++++++++++++++++++++++-- provision.inc | 4 ++-- provision.service.inc | 4 ---- ssl/provision_ssl.drush.inc | 2 +- 27 files changed, 104 insertions(+), 84 deletions(-) diff --git a/db/backup.provision.inc b/db/backup.provision.inc index ca2cecaec..70631fd44 100644 --- a/db/backup.provision.inc +++ b/db/backup.provision.inc @@ -1,12 +1,11 @@ <?php function drush_db_pre_provision_backup() { - provision_service('db')->generate_dump(); - + d()->service('db')->generate_dump(); } function drush_db_pre_provision_backup_rollback() { - provision_service('file')->unlink(d()->root . '/sites/' . d()->uri . '/database.sql') + d()->service('file')->unlink(d()->root . '/sites/' . d()->uri . '/database.sql') ->succeed('Deleted mysql dump from sites directory') ->fail('Could not delete mysql dump from sites directory'); } diff --git a/db/clone.provision.inc b/db/clone.provision.inc index 03adec584..f6142e50e 100644 --- a/db/clone.provision.inc +++ b/db/clone.provision.inc @@ -2,5 +2,5 @@ // $Id$ function drush_db_provision_clone_validate() { - provision_service('db')->connect(); + d()->service('db')->connect(); } diff --git a/db/db.drush.inc b/db/db.drush.inc index d5cf6bf6c..4195476fb 100644 --- a/db/db.drush.inc +++ b/db/db.drush.inc @@ -16,7 +16,7 @@ function db_provision_services() { function db_drush_exit() { // determine how to close it too. - provision_service('db')->close(); + d()->service('db')->close(); } function db_drush_help($section) { @@ -174,12 +174,12 @@ class provisionService_db extends provisionService { $creds = $this->fetch_site_credentials(); - $exists = provision_service('file')->exists($dump_file) + $exists = d()->service('file')->exists($dump_file) ->succeed('Found database dump at @path.') ->fail('No database dump was found at @path.', 'PROVISION_DB_DUMP_NOT_FOUND') ->status(); if ($exists) { - $readable = provision_service('file')->readable($dump_file) + $readable = d()->service('file')->readable($dump_file) ->succeed('Database dump at @path is readable') ->fail('The database dump at @path could not be read.', 'PROVISION_DB_DUMP_NOT_READABLE') ->status(); diff --git a/db/delete.provision.inc b/db/delete.provision.inc index d68422bad..bc09ad249 100644 --- a/db/delete.provision.inc +++ b/db/delete.provision.inc @@ -2,7 +2,7 @@ function drush_db_provision_delete_validate() { if (d()->type === 'site') { - provision_service('db')->connect(); + d()->service('db')->connect(); } } @@ -13,6 +13,6 @@ function drush_db_provision_delete_validate() { */ function drush_db_provision_delete() { if (d()->type === 'site') { - provision_service('db')->destroy_site_database(); + d()->service('db')->destroy_site_database(); } } diff --git a/db/deploy.provision.inc b/db/deploy.provision.inc index 65665bddb..f26770d56 100644 --- a/db/deploy.provision.inc +++ b/db/deploy.provision.inc @@ -1,23 +1,23 @@ <?php function drush_db_provision_deploy_validate() { - provision_service('db')->connect(); + d()->service('db')->connect(); } function drush_db_provision_deploy() { - provision_service('db')->create_site_database(); - provision_service('db')->import_site_database(); + d()->service('db')->create_site_database(); + d()->service('db')->import_site_database(); } function drush_db_provision_deploy_rollback() { - provision_service('db')->destroy_site_database(); + d()->service('db')->destroy_site_database(); } // Rollback doesn't apply here yet. Unless we trigger a deploy of the first dump // made. Which could go on infinitely if something is really long. function drush_db_post_provision_deploy() { - provision_service('file')->unlink(d()->root . '/sites/' . d()->uri . '/database.sql') + d()->service('file')->unlink(d()->root . '/sites/' . d()->uri . '/database.sql') ->succeed('Removed dump file @path after restoring from it') ->fail('Could not remove dump file @path', 'DRUSH_PERM_ERROR'); } diff --git a/db/install.provision.inc b/db/install.provision.inc index c7103ed86..039067af2 100644 --- a/db/install.provision.inc +++ b/db/install.provision.inc @@ -1,15 +1,15 @@ <?php function drush_db_provision_install_validate() { - d()->db_server->service('db')->connect(); + d()->service('db')->connect(); } function drush_db_pre_provision_install() { - d()->db_server->service('db')->create_site_database(); + d()->service('db')->create_site_database(); } function drush_db_pre_provision_install_rollback() { if (!_provision_drupal_site_installed()) { - d()->db_server->service('db')->destroy_site_database(); + d()->service('db')->destroy_site_database(); } } diff --git a/db/migrate.provision.inc b/db/migrate.provision.inc index 4002f7778..80af08c92 100644 --- a/db/migrate.provision.inc +++ b/db/migrate.provision.inc @@ -2,12 +2,12 @@ // $Id$ function drush_db_provision_migrate_validate() { - provision_service('db')->connect(); + d()->service('db')->connect(); } // Deletes the old database credentials function drush_db_post_provision_migrate() { - provision_service('db')->destroy_site_database( + d()->service('db')->destroy_site_database( drush_get_option('db_name'), drush_get_option('db_user'), drush_get_option('db_passwd') diff --git a/db/mysql/mysql_service.inc b/db/mysql/mysql_service.inc index 54a0737a5..e8577a0d4 100644 --- a/db/mysql/mysql_service.inc +++ b/db/mysql/mysql_service.inc @@ -136,7 +136,6 @@ password=%s // XXX: failed to execute? unsure when this happens $return_value = -1; } - dlm($output); return ($return_value == 0); } diff --git a/db/restore.provision.inc b/db/restore.provision.inc index a20e33b3b..1f93b3963 100644 --- a/db/restore.provision.inc +++ b/db/restore.provision.inc @@ -1,22 +1,22 @@ <?php function drush_db_provision_restore_validate() { - provision_service('db')->connect(); + d()->service('db')->connect(); } function drush_db_pre_provision_restore() { - drush_set_option('old_db_creds', provision_service('db')->fetch_site_credentials()); + drush_set_option('old_db_creds', d()->service('db')->fetch_site_credentials()); - provision_service('db')->create_site_database(); + d()->service('db')->create_site_database(); } function drush_db_provision_restore() { - provision_service('db')->import_site_database(d()->root . '/sites/' . d()->uri . '.restore/database.sql'); + d()->service('db')->import_site_database(d()->root . '/sites/' . d()->uri . '.restore/database.sql'); } function drush_db_pre_provision_restore_rollback() { - provision_service('db')->destroy_site_database(); + d()->service('db')->destroy_site_database(); $keys = array('db_name', 'db_passwd', 'db_user', 'db_host'); @@ -32,11 +32,11 @@ function drush_db_pre_provision_restore_rollback() { // Rollback doesn't apply here yet. Unless we trigger a restore of the first dump // made. Which could go on infinitely if something is really long. function drush_db_post_provision_restore() { - provision_service('file')->unlink(d()->root . '/sites/' . d()->uri . '/database.sql') + d()->service('file')->unlink(d()->root . '/sites/' . d()->uri . '/database.sql') ->succeed('Removed dump file @path after restoring from it') ->fail('Could not remove dump file @path', 'DRUSH_PERM_ERROR'); - provision_service('db')->destroy_site_database(drush_get_option('old_db_creds')); + d()->service('db')->destroy_site_database(drush_get_option('old_db_creds')); // TODO - test this .. it's probably horribly broken .. deleting the newly restored db instead of the old one. diff --git a/http/delete.provision.inc b/http/delete.provision.inc index 7cd98fdc0..beb7ebb42 100644 --- a/http/delete.provision.inc +++ b/http/delete.provision.inc @@ -2,7 +2,7 @@ function drush_http_provision_delete() { if (d()->type === 'site') { - provision_service('http')->delete_site_config(); + d()->service('http')->delete_site_config(); } if (d()->type === 'platform') { $sites = provision_drupal_find_sites(); @@ -10,10 +10,10 @@ function drush_http_provision_delete() { drush_set_error(dt('Existing sites were found on this platform. These sites will need to be deleted before this platform can be deleted.')); } else { - provision_service('http')->delete_platform_config(); + d()->service('http')->delete_platform_config(); } } - return provision_service('http')->parse_configs(); + return d()->service('http')->parse_configs(); } diff --git a/http/deploy.provision.inc b/http/deploy.provision.inc index 48de65e70..2b39a64c3 100644 --- a/http/deploy.provision.inc +++ b/http/deploy.provision.inc @@ -1,14 +1,14 @@ <?php function drush_http_post_provision_deploy() { - provision_service('http')->create_site_config(); - provision_service('http')->parse_configs(); + d()->service('http')->create_site_config(); + d()->service('http')->parse_configs(); } /** * Delete the config file created. */ function drush_http_post_provision_deploy_rollback() { - provision_service('http')->create_site_config(); - provision_service('http')->parse_configs(); + d()->service('http')->create_site_config(); + d()->service('http')->parse_configs(); } diff --git a/http/disable.provision.inc b/http/disable.provision.inc index 70dda7274..b257fe5e6 100644 --- a/http/disable.provision.inc +++ b/http/disable.provision.inc @@ -7,7 +7,7 @@ function drush_http_provision_disable() { drush_set_option('redirect_url', drush_get_option('web_disable_url')); // TODO - this is majorly wrong i think. - provision_service('http')->create_site_config(); - provision_service('http')->parse_configs(); + d()->service('http')->create_site_config(); + d()->service('http')->parse_configs(); } diff --git a/http/enable.provision.inc b/http/enable.provision.inc index 6ec759e0b..e0c6ac53f 100644 --- a/http/enable.provision.inc +++ b/http/enable.provision.inc @@ -4,7 +4,7 @@ * Implementation of hook_provision_enable */ function drush_http_provision_enable() { - provision_service('http')->create_site_config(); - provision_service('http')->parse_configs(); + d()->service('http')->create_site_config(); + d()->service('http')->parse_configs(); } diff --git a/http/install.provision.inc b/http/install.provision.inc index 3e1e3f640..07366db2d 100644 --- a/http/install.provision.inc +++ b/http/install.provision.inc @@ -11,7 +11,7 @@ * Implementation of hook_provision_post_install */ function drush_http_post_provision_install() { - provision_service('http')->create_site_config(); - provision_service('http')->parse_configs(); + d()->service('http')->create_site_config(); + d()->service('http')->parse_configs(); } diff --git a/http/restore.provision.inc b/http/restore.provision.inc index 901627d0e..2a53d041d 100644 --- a/http/restore.provision.inc +++ b/http/restore.provision.inc @@ -5,18 +5,18 @@ */ function drush_http_pre_provision_restore() { drush_set_option('redirect_url', drush_get_option('web_maintenance_url')); - provision_service('http')->create_site_config(); - provision_service('http')->parse_configs(); + d()->service('http')->create_site_config(); + d()->service('http')->parse_configs(); } function drush_http_pre_provision_restore_rollback() { - provision_service('http')->create_site_config(); - provision_service('http')->parse_configs(); + d()->service('http')->create_site_config(); + d()->service('http')->parse_configs(); } function drush_http_post_provision_restore() { - provision_service('http')->create_site_config(); - provision_service('http')->parse_configs(); + d()->service('http')->create_site_config(); + d()->service('http')->parse_configs(); } diff --git a/platform/backup.provision.inc b/platform/backup.provision.inc index fc1432c36..6ba150c39 100644 --- a/platform/backup.provision.inc +++ b/platform/backup.provision.inc @@ -26,7 +26,7 @@ function drush_provision_drupal_provision_backup_validate($backup_file = NULL) { } if ($backup_file) { - if (provision_service('file')->exists($backup_file)->status()) { + if (d()->service('file')->exists($backup_file)->status()) { drush_set_error('PROVISION_BACKUP_ALREADY_EXISTS', dt('Back up file @path already exists.', array('@path' => $backup_file))); } else { @@ -78,7 +78,7 @@ function drush_provision_drupal_provision_backup() { function drush_provision_drupal_provision_backup_rollback() { $backup_file = drush_get_option('backup_file'); if (file_exists($backup_file)) { - provision_service('file')->unlink($backup_file) + d()->service('file')->unlink($backup_file) ->succeed('Removed stale backup file @path') ->fail('Failed deleting backup file @path'); } diff --git a/platform/clone.provision.inc b/platform/clone.provision.inc index 93435d6e2..a0a0c4023 100644 --- a/platform/clone.provision.inc +++ b/platform/clone.provision.inc @@ -27,7 +27,7 @@ function drush_provision_drupal_pre_provision_clone($new_url, $platform = null) * Remove the extracted site directory */ function drush_provision_drupal_pre_provision_clone_rollback($new_url, $platform = null) { - $success = provision_service('file')->unlink(drush_get_option('backup_file')) + $success = d()->service('file')->unlink(drush_get_option('backup_file')) ->succeed('Removed unused clone site package') ->fail('Could not remove unused clone site package'); } diff --git a/platform/deploy.provision.inc b/platform/deploy.provision.inc index f0af359c7..801d0af32 100644 --- a/platform/deploy.provision.inc +++ b/platform/deploy.provision.inc @@ -21,7 +21,7 @@ function drush_provision_drupal_provision_deploy_validate($backup_file = null) { _provision_drupal_url_required(); - $exists = provision_service('file')->exists($backup_file) + $exists = d()->service('file')->exists($backup_file) ->succeed('Deploying site from @path') ->fail('Could not find backup file @path', 'PROVISION_BACKUP_NOT_FOUND') ->status(); @@ -35,7 +35,7 @@ function drush_provision_drupal_provision_deploy_validate($backup_file = null) { */ function drush_provision_drupal_pre_provision_deploy($backup_file) { // the url is likely to have changed in the deployment - $extracted = provision_service('file')->extract(drush_get_option('backup_file'), d()->root . '/sites/' . d()->uri) + $extracted = d()->service('file')->extract(drush_get_option('backup_file'), d()->root . '/sites/' . d()->uri) ->succeed('Successfully extracted the contents of @path') ->fail('Failed to extract the contents of @path', 'PROVISION_BACKUP_EXTRACTION_FAILED') ->status(); diff --git a/platform/migrate.provision.inc b/platform/migrate.provision.inc index 0780d555b..72161fc13 100644 --- a/platform/migrate.provision.inc +++ b/platform/migrate.provision.inc @@ -49,10 +49,10 @@ function drush_provision_drupal_pre_provision_migrate_rollback($platform = null) drush_log(dt("Bringing site out of maintenance")); drush_set_option('site_offline', 0); _provision_drupal_create_settings_file(); - $success = provision_service('file')->unlink(drush_get_option('backup_file')) + $success = d()->service('file')->unlink(drush_get_option('backup_file')) ->succeed('Removed unused migration site package') ->fail('Could not remove unused migration site package'); - provision_service('http')->create_site_config(); + d()->service('http')->create_site_config(); _provision_apache_restart_apache(); } diff --git a/platform/provision_drupal.drush.inc b/platform/provision_drupal.drush.inc index 1bdbafee0..02c47b584 100644 --- a/platform/provision_drupal.drush.inc +++ b/platform/provision_drupal.drush.inc @@ -246,22 +246,22 @@ function _provision_drupal_create_directories($url = NULL, $profile = NULL) { foreach ($mkdir as $path => $perm) { if (!is_dir($path)) { - provision_service('file')->mkdir($path) + d()->service('file')->mkdir($path) ->succeed('Created <code>@path</code>') ->fail('Could not create <code>@path</code>', 'DRUSH_PERM_ERROR'); } - provision_service('file')->chmod($path, $perm, TRUE) + d()->service('file')->chmod($path, $perm, TRUE) ->succeed('Changed permissions of <code>@path</code> to @perm') ->fail('Could not change permissions <code>@path</code> to @perm'); } foreach ($chown as $path => $owner) { - provision_service('file')->chown($path, $owner, TRUE) + d()->service('file')->chown($path, $owner, TRUE) ->succeed('Changed ownership of <code>@path</code> to @uid') ->fail('Could not change ownership <code>@path</code>', 'DRUSH_PERM_ERROR'); } foreach ($chgrp as $path => $group) { - provision_service('file')->chgrp($path, $group, TRUE) + d()->service('file')->chgrp($path, $group, TRUE) ->succeed('Changed group ownership of <code>@path</code> to @gid') ->fail('Could not change group ownership <code>@path</code> to @gid'); } @@ -383,7 +383,7 @@ function _provision_drupal_maintain_aliases() { } foreach($aliases as $alias) { if (trim($alias)) { - provision_service('file')->symlink(d()->uri, d()->root . '/sites/' . $alias) + d()->service('file')->symlink(d()->uri, d()->root . '/sites/' . $alias) ->succeed('Created symlink for alias @target') ->fail('Could not create symlink for alias @target'); } @@ -407,7 +407,7 @@ function _provision_drupal_delete_aliases($aliases, $silent = false) { } foreach ($aliases as $alias) { if ($alias = trim($alias)) { - provision_service('file')->unlink(d()->root . '/sites/' . $alias) + d()->service('file')->unlink(d()->root . '/sites/' . $alias) ->succeed('Removed symlink for alias @path') ->fail($error); } diff --git a/platform/restore.provision.inc b/platform/restore.provision.inc index 3599465e2..378c295d3 100644 --- a/platform/restore.provision.inc +++ b/platform/restore.provision.inc @@ -26,7 +26,7 @@ function drush_provision_drupal_provision_restore_validate($restore_file = null) { drush_bootstrap(DRUSH_BOOTSTRAP_DRUPAL_SITE); - $exists = provision_service('file')->exists($restore_file) + $exists = d()->service('file')->exists($restore_file) ->succeed('Restoring site from @path') ->fail('Could not find backup file @path', 'PROVISION_BACKUP_NOT_FOUND') ->status(); @@ -41,7 +41,7 @@ function drush_provision_drupal_provision_restore_validate($restore_file = null) function drush_provision_drupal_pre_provision_restore($restore_file) { drush_invoke('provision-backup'); - provision_service('file')->extract(drush_get_option('restore_file'), d()->root . '/sites/' . d()->uri . '.restore') + d()->service('file')->extract(drush_get_option('restore_file'), d()->root . '/sites/' . d()->uri . '.restore') ->succeed('Successfully extracted the contents of @path') ->fail('Failed to extract the contents of @path', 'PROVISION_BACKUP_EXTRACTION_FAILED'); } @@ -59,7 +59,7 @@ function drush_provision_drupal_pre_provision_restore_rollback() { function drush_provision_drupal_provision_restore() { $old = d()->root . '/sites/' . d()->uri . '.restore'; $new = d()->root . '/sites/' . d()->uri; - provision_service('file')->switch_paths($old, $new) + d()->service('file')->switch_paths($old, $new) ->succeed('Swapping out the @path1 and @path2 directories was successful.') ->fail('Swapping the @path1 and @path2 directories has failed.', 'DRUSH_PERM_ERROR'); // make sure it has the latest site data available diff --git a/platform/verify.provision.inc b/platform/verify.provision.inc index da5df3b26..0384c46e2 100644 --- a/platform/verify.provision.inc +++ b/platform/verify.provision.inc @@ -26,18 +26,18 @@ function drush_provision_drupal_provision_verify_validate() { */ function drush_provision_drupal_provision_verify() { if (d()->type === 'server') { - provision_service('file')->create_dir(d()->config_path, dt('Provision configuration'), 0711); - provision_service('file')->create_dir(d()->config_path . '/includes', dt('Provision PHP configuration'), 0711); - if (!provision_service('file')->exists(d()->config_path . '/includes/global.inc')->succeed('Global configuration file exists')->status()) { + d()->service('file')->create_dir(d()->config_path, dt('Provision configuration'), 0711); + d()->service('file')->create_dir(d()->config_path . '/includes', dt('Provision PHP configuration'), 0711); + if (!d()->service('file')->exists(d()->config_path . '/includes/global.inc')->succeed('Global configuration file exists')->status()) { // Create an empty global.inc so the include doesn't fail with // open_basedir restrictions $config = new provisionConfig_global_settings(d()->name); $config->write(); } - provision_service('file')->create_dir(d()->backup_path, dt('Backup'), 0700); + d()->service('file')->create_dir(d()->backup_path, dt('Backup'), 0700); } elseif (d()->type === 'platform') { - provision_service('file')->writable(d()->root . '/sites') + d()->service('file')->writable(d()->root . '/sites') ->succeed('Drupal sites directory @path is writable by the provisioning script') ->fail('Drupal sites directory @path is not writable by the provisioning script', 'PROVISION_SITES_DIR_NOT_WRITABLE'); diff --git a/provision.config.inc b/provision.config.inc index f64169d31..c7d29a9b0 100644 --- a/provision.config.inc +++ b/provision.config.inc @@ -70,8 +70,8 @@ class provisionConfig { function write() { $filename = $this->filename(); // Make directory structure if it does not exist. - if (!provision_service('file')->exists(dirname($filename))->status()) { - provision_service('file')->mkdir(dirname($filename)) + if (!d()->service('file')->exists(dirname($filename))->status()) { + d()->service('file')->mkdir(dirname($filename)) ->succeed('Created directory @path.') ->fail('Could not create directory @path.'); } @@ -82,23 +82,23 @@ class provisionConfig { if ($template = $this->load_template()) { // Make sure we can write to the file - if (!is_null($this->mode) && !($this->mode & 0200) && provision_service('file')->exists($filename)->status()) { - provision_service('file')->chmod($filename, $this->mode | 0200) + if (!is_null($this->mode) && !($this->mode & 0200) && d()->service('file')->exists($filename)->status()) { + d()->service('file')->chmod($filename, $this->mode | 0200) ->succeed('Changed permissions of @path to @perm') ->fail('Could not change permissions of @path to @perm'); } - provision_service('file')->file_put_contents($filename, $this->render_template($template, $this->data), $this->append ? FILE_APPEND : 0) + d()->service('file')->file_put_contents($filename, $this->render_template($template, $this->data), $this->append ? FILE_APPEND : 0) ->succeed('Generated config ' . (empty($this->description) ? $filename : $this->description), 'success'); // Change the permissions of the file if needed if (!is_null($this->mode)) { - provision_service('file')->chmod($filename, $this->mode) + d()->service('file')->chmod($filename, $this->mode) ->succeed('Changed permissions of @path to @perm') ->fail('Could not change permissions of @path to @perm'); } if (!is_null($this->group)) { - provision_service('file')->chgrp($filename, $this->group) + d()->service('file')->chgrp($filename, $this->group) ->succeed('Change group ownership of @path to @gid') ->fail('Could not change group ownership of @path to @gid'); } @@ -107,7 +107,7 @@ class provisionConfig { } function unlink() { - return provision_service('file')->unlink($this->filename())->status(); + return d()->service('file')->unlink($this->filename())->status(); } } diff --git a/provision.environment.inc b/provision.environment.inc index b6368c893..5f726b102 100644 --- a/provision.environment.inc +++ b/provision.environment.inc @@ -64,7 +64,10 @@ class provisionEnvironment { public $name = null; public $type = null; + protected $properties = array(); + + protected $service_subs = array(); protected $parent_key = null; protected $oid_map = array(); @@ -167,8 +170,28 @@ class provisionEnvironment { $config->write(); } + /** + * Subscribe a service handler. + * + * All future calls to $this->service($service) will be redirected + * to the context object of #name you specify. + */ + function service_subscribe($service, $name) { + $this->service_subs[$service] = $name; + } + + /** + * Return a service object for the specific service type. + * + * This will return a specifically subscribed service object when + * one has been registered with service_subscribe, otherwise it will + * return the value specified by the property specified by $this->parent_key. + */ function service($service, $name = null) { - if (!is_null($this->parent_key)) { + if (isset($this->service_subs[$service])) { + return d($this->service_subs[$service])->service($service, ($name) ? $name : $this->name); + } + elseif (!is_null($this->parent_key)) { return $this->{$this->parent_key}->service($service, ($name) ? $name : $this->name); } else { @@ -184,8 +207,8 @@ class provisionEnvironment { * objects for each of the available service types. */ class provisionServer extends provisionEnvironment { - protected $services = array(); + protected $services = array(); static function option_documentation() { $options = array( '--remote_host' => 'server: host name; default localhost', @@ -315,6 +338,8 @@ class provisionPlatform extends provisionEnvironment { $this->type = 'platform'; $this->setProperty('root'); + $this->service_subscribe("http", $this->web_server); + $this->setProperty('server', '@server_localhost'); $this->is_oid('server'); @@ -360,6 +385,7 @@ class provisionSite extends provisionEnvironment { $this->setProperty('client_email'); + $this->service_subscribe("db", $this->db_server); $this->setProperty('db_server'); $this->is_oid('db_server'); diff --git a/provision.inc b/provision.inc index 228a55a86..a34bad876 100644 --- a/provision.inc +++ b/provision.inc @@ -87,7 +87,7 @@ function _provision_recursive_delete($path) { } } - $rm = provision_service('file')->rmdir($path) + $rm = d()->service('file')->rmdir($path) ->succeed('Deleting @path directory successful.') ->fail('Deleting @path directory failed.') ->status(); @@ -95,7 +95,7 @@ function _provision_recursive_delete($path) { $ret = $ret && $rm; } else { - $rm = provision_service('file')->unlink($path) + $rm = d()->service('file')->unlink($path) ->fail('Deleting @path file failed.') ->status(); $ret = $ret && $rm; diff --git a/provision.service.inc b/provision.service.inc index f02d63105..944abc972 100644 --- a/provision.service.inc +++ b/provision.service.inc @@ -128,7 +128,3 @@ class provisionService_null extends provisionService { } } - -function provision_service($type, $object = null) { - return d()->service($type); -} diff --git a/ssl/provision_ssl.drush.inc b/ssl/provision_ssl.drush.inc index 75c979fea..73eb0b243 100644 --- a/ssl/provision_ssl.drush.inc +++ b/ssl/provision_ssl.drush.inc @@ -57,7 +57,7 @@ class provisionConfig_ssl_vhost extends provisionConfig { */ function provision_ssl_provision_apache_delete_vhost($options) { if ($options['ssl'] && $options['ssl_redirect']) { - provision_service('file')->unlink(drush_get_option('vhost_path') . '/' . drush_get_option('uri') . '_80') + d()->service('file')->unlink(drush_get_option('vhost_path') . '/' . drush_get_option('uri') . '_80') ->succeed('Failed deleting redirection vhost.'); } } -- GitLab