From bcd98f53a20b2e9ff44825cd1a5a71f89a6e4898 Mon Sep 17 00:00:00 2001 From: Marco Mariani <marco.mariani@nexedi.com> Date: Wed, 31 Oct 2012 15:19:08 +0100 Subject: [PATCH] correctly assign slave instances --- slapos/recipe/request.py | 14 ++++++++++++-- stack/lamp/buildout.cfg | 2 +- stack/lamp/instance-resilient.cfg | 8 ++++++++ stack/resilient/buildout.cfg | 2 +- stack/resilient/template-replicated.cfg | 6 +++++- 5 files changed, 27 insertions(+), 5 deletions(-) diff --git a/slapos/recipe/request.py b/slapos/recipe/request.py index e326810f0..8cc011109 100644 --- a/slapos/recipe/request.py +++ b/slapos/recipe/request.py @@ -123,20 +123,30 @@ class Recipe(object): isSlave = options.get('slave', '').lower() in \ librecipe.GenericBaseRecipe.TRUE_VALUES - self.instance = instance = request(software_url, software_type, + self.instance = request(software_url, software_type, name, partition_parameter_kw=partition_parameter_kw, filter_kw=filter_kw, shared=isSlave) + self._raise_resource_not_ready = None + try: + # XXX what is the right way to get a global id? + options['instance_guid'] = self.instance.getId() + except slapmodule.ResourceNotReady as exc: + self._raise_resource_not_ready = exc + for param in return_parameters: try: options['connection-%s' % param] = str( - instance.getConnectionParameter(param)) + self.instance.getConnectionParameter(param)) except (slapmodule.NotFoundError, slapmodule.ServerError): options['connection-%s' % param] = '' if self.failed is None: self.failed = param def install(self): + if self._raise_resource_not_ready: + raise slapmodule.ResourceNotReady(self._resource_not_ready) + if self.failed is not None: # Check instance status to know if instance has been deployed try: diff --git a/stack/lamp/buildout.cfg b/stack/lamp/buildout.cfg index 5c9033d04..d81ced191 100644 --- a/stack/lamp/buildout.cfg +++ b/stack/lamp/buildout.cfg @@ -94,7 +94,7 @@ context = key templateapache template-apache-php:output import-list = file parts template-parts:destination file replicated template-replicated:destination -md5sum = 03aafcba5c626a4a1bd180d71007be1e +md5sum = d96890f5cde5a6db3a71926002000082 mode = 0644 diff --git a/stack/lamp/instance-resilient.cfg b/stack/lamp/instance-resilient.cfg index e2f840c7e..2802e299a 100644 --- a/stack/lamp/instance-resilient.cfg +++ b/stack/lamp/instance-resilient.cfg @@ -121,6 +121,8 @@ config-notify = ${request-pull-backup-server:connection-notification-url} config-notification-id = ${slap-connection:computer-id}-${slap-connection:partition-id}-apache-pull config-frequency = 30 * * * * slave = true +sla = instance_guid +sla-instance_guid = ${request-pull-backup-server:instance_guid} [request-pull-backup-server-apache-2] <= request-pbs-common @@ -134,6 +136,8 @@ config-notify = ${request-pull-backup-server:connection-notification-url} config-notification-id = ${slap-connection:computer-id}-${slap-connection:partition-id}-apache-pull config-frequency = 30 * * * * slave = true +sla = instance_guid +sla-instance_guid = ${request-pull-backup-server:instance_guid} [request-pull-backup-server-apache-backup-1] @@ -146,6 +150,8 @@ config-type = push config-server-key = ${request-apache-backup-1:connection-ssh-public-key} config-on-notification = ${request-pull-backup-server:connection-feeds-url}${request-pull-backup-server-apache-1:config-notification-id} slave = true +sla = instance_guid +sla-instance_guid = ${request-pull-backup-server:instance_guid} [request-pull-backup-server-apache-backup-2] <= request-pbs-common @@ -157,6 +163,8 @@ config-type = push config-server-key = ${request-apache-backup-2:connection-ssh-public-key} config-on-notification = ${request-pull-backup-server:connection-feeds-url}${request-pull-backup-server-apache-2:config-notification-id} slave = true +sla = instance_guid +sla-instance_guid = ${request-pull-backup-server:instance_guid} [directory] diff --git a/stack/resilient/buildout.cfg b/stack/resilient/buildout.cfg index 9c9547399..fb82e7e48 100644 --- a/stack/resilient/buildout.cfg +++ b/stack/resilient/buildout.cfg @@ -51,7 +51,7 @@ mode = 0644 [template-replicated] recipe = slapos.recipe.download url = ${:_profile_base_location_}/template-replicated.cfg -md5sum = 61780842ccda1600a102456b0da69ac9 +md5sum = 140beeb9193e0580e42a6004b9e3821f mode = 0644 destination = ${buildout:directory}/template-replicated.cfg diff --git a/stack/resilient/template-replicated.cfg b/stack/resilient/template-replicated.cfg index 1c38ce63f..1bddfcb4d 100644 --- a/stack/resilient/template-replicated.cfg +++ b/stack/resilient/template-replicated.cfg @@ -135,6 +135,8 @@ config-notify = ${request-pbs-{{namebase}}-{{id}}:connection-notification-url} config-notification-id = ${slap-connection:computer-id}-${slap-connection:partition-id}-{{namebase}}-{{id}}-pull config-title = Pulling from {{namebase}} slave = true +sla = instance_guid +sla-instance_guid = ${request-pbs-{{namebase}}-{{id}}:instance_guid} [request-pull-backup-server-{{namebase}}-backup-{{id}}] <= request-pbs-common @@ -149,6 +151,8 @@ config-notify = ${request-{{namebase}}-pseudo-replicating-{{id}}:connection-noti config-notification-id = ${request-{{namebase}}-pseudo-replicating-{{id}}:pbs-notification-id} config-title = Pushing to {{namebase}} backup {{id}} slave = true +sla = instance_guid +sla-instance_guid = ${request-pbs-{{namebase}}-{{id}}:instance_guid} {% endfor %} -{% endmacro %} \ No newline at end of file +{% endmacro %} -- 2.30.9