Commit 088401df authored by Jon Pugh's avatar Jon Pugh

Add ServiceSubscription class and use that instead of Service on all non-server contexts.

parent 12750314
......@@ -136,10 +136,7 @@ class Context
elseif (isset($this->config['service_subscriptions'])) {
foreach ($this->config['service_subscriptions'] as $service_name => $service) {
$this->servers[$service_name] = $server = $this->application->getContext($service['server']);
$service_type = ucfirst($server->services[$service_name]->type);
$service_name = ucfirst($service_name);
$service_class = "\\Aegir\\Provision\\Service\\{$service_name}\\{$service_name}{$service_type}Service";
$this->services[strtolower($service_name)] = new $service_class($service, $this);
$this->services[$service_name] = new ServiceSubscription($this, $server, $service_name);
}
}
else {
......@@ -346,9 +343,24 @@ class Context
*/
public function showServices(DrupalStyle $io) {
if (!empty($this->getServices())) {
$is_server = $this->type == 'server';
$rows = [];
$headers = $is_server?
['Services']:
['Service', 'Server', 'Type'];
foreach ($this->getServices() as $name => $service) {
$rows[] = [$name, $service->type];
if ($is_server) {
$rows[] = [$name, $service->type];
}
else {
$rows[] = [
$name,
$service->server->name,
$service->server->getService($name)->type
];
}
// Show all properties.
if (!empty($service->properties )) {
......@@ -357,7 +369,7 @@ class Context
}
}
}
$io->table(['Services'], $rows);
$io->table($headers, $rows);
}
}
......
......@@ -33,15 +33,18 @@ class SiteContext extends Context implements ConfigurationInterface
parent::__construct($name, $console_config, $application, $options);
// Load "db_server" context.
if (isset($this->config['db_server'])) {
$this->db_server = $application->getContext($this->config['service_subscriptions']['db']['server']);
$this->db_server->logger = $application->logger;
// if (isset($this->config['service_subscriptions']['db'])) {
// $this->db_server = $application->getContext($this->config['service_subscriptions']['db']['server']);
// }
$this->platform = $application->getContext($this->config['platform']);
}
else {
throw new \Exception('No db_server found.');
$this->logger = $application->logger;
if (isset($this->config['platform'])) {
$this->platform = $application->getContext(
$this->config['platform']
);
}
}
static function option_documentation()
......
<?php
/**
* @file
* A context's subscription to a service. Handles properties specific to a
* context for each service.
*
* @see Provision_Service
*/
namespace Aegir\Provision;
class ServiceSubscription {
public $context;
public $service;
public $server;
public $type;
function __construct($context, $server, $service_name) {
$this->context = $context;
$this->server = $server;
$this->service = $server->getService($service_name);
$this->type = $server->getService($service_name)->type;
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment