From ea851fbe4d559710cedd4090139ed295fec357bf Mon Sep 17 00:00:00 2001 From: Benjamin Blanc <benjamin.blanc@tiolive.com> Date: Wed, 10 Jul 2013 13:45:50 +0200 Subject: [PATCH] request: Add feature to define the requested state. slapconfiguration: Add feature to get the instance state. --- slapos/recipe/request.py | 12 +++++++++++- slapos/recipe/slapconfiguration.py | 8 ++++++-- 2 files changed, 17 insertions(+), 3 deletions(-) diff --git a/slapos/recipe/request.py b/slapos/recipe/request.py index ecaad906f..6f4813d0b 100644 --- a/slapos/recipe/request.py +++ b/slapos/recipe/request.py @@ -82,8 +82,15 @@ class Recipe(object): installation of request section will fail. Possible names depend on requested partition's software type. + state (optional) + Requested state, default value is "started". + Output: See "return" input key. + "instance-state" + The current state of the instance. + "requested-state" + The requested state of the instance. """ failed = None @@ -106,6 +113,7 @@ class Recipe(object): )) slave = options.get('slave', 'false').lower() in \ librecipe.GenericBaseRecipe.TRUE_VALUES + requested_state = options.get('state', 'started') slap = slapmodule.slap() slap.initializeConnection( options['server-url'], @@ -123,7 +131,7 @@ class Recipe(object): try: self.instance = request(software_url, software_type, name, partition_parameter_kw=partition_parameter_kw, - filter_kw=filter_kw, shared=slave) + filter_kw=filter_kw, shared=slave, state=requested_state) return_parameter_dict = self._getReturnParameterDict(self.instance, return_parameters) if not slave: @@ -147,6 +155,8 @@ class Recipe(object): except KeyError: if self.failed is None: self.failed = param + options['requested-state'] = requested_state + options['instance-state'] = self.instance.getState() def _filterForStorage(self, partition_parameter_kw): return partition_parameter_kw diff --git a/slapos/recipe/slapconfiguration.py b/slapos/recipe/slapconfiguration.py index 09bb31935..5b014f198 100644 --- a/slapos/recipe/slapconfiguration.py +++ b/slapos/recipe/slapconfiguration.py @@ -78,6 +78,8 @@ class Recipe(object): Partition parameter whose name cannot be represented unambiguously in buildout syntax are ignored. They cannot be accessed from buildout syntax anyway, and are available through "configuration" output key. + instance-state + The instance state. """ # XXX: used to detect if a configuration key is a valid section key. This @@ -91,10 +93,12 @@ class Recipe(object): options.get('key'), options.get('cert'), ) - parameter_dict = slap.registerComputerPartition( + computerPartition = slap.registerComputerPartition( options['computer'], options['partition'], - ).getInstanceParameterDict() + ) + parameter_dict = computerPartition.getInstanceParameterDict() + options['instance-state'] = computerPartition.getState() # XXX: those are not partition parameters, strictly speaking. # Make them available as individual section keys. for his_key in ( -- 2.30.9