7478: Config load fix & test updates about instance type decoupling
authorLucas Di Pentima <ldipentima@veritasgenetics.com>
Mon, 11 Jun 2018 16:59:31 +0000 (13:59 -0300)
committerLucas Di Pentima <ldipentima@veritasgenetics.com>
Mon, 11 Jun 2018 16:59:31 +0000 (13:59 -0300)
Arvados-DCO-1.1-Signed-off-by: Lucas Di Pentima <ldipentima@veritasgenetics.com>

services/nodemanager/arvnodeman/config.py
services/nodemanager/tests/test_config.py

index 4171b74a5dee3ed6bf2ee1a8637eb9acfe164e68..f9724a8fccbcbc91f63547cb5039c5ae0fff997f 100644 (file)
@@ -72,6 +72,7 @@ class NodeManagerConfig(ConfigParser.SafeConfigParser):
 
     def get_section(self, section, transformers={}, default_transformer=None):
         transformer_map = {
+            str: self.get,
             int: self.getint,
             bool: self.getboolean,
             float: self.getfloat,
@@ -148,6 +149,7 @@ class NodeManagerConfig(ConfigParser.SafeConfigParser):
         all_sizes = self.new_cloud_client().list_sizes()
         size_kwargs = {}
         section_types = {
+            'instance_type': str,
             'price': float,
             'preemptable': bool,
         }
index 15716d5277e502c52df55cc034f49078ff148b6d..9a48c7cda971b1fd1f7ed14bbfa8ef15a8e5e99d 100644 (file)
@@ -29,6 +29,12 @@ creds = dummy_creds
 cores = 1
 price = 0.8
 
+[Size 1.preemptable]
+instance_type = 1
+preemptable = true
+cores = 1
+price = 0.8
+
 [Logging]
 file = /dev/null
 level = DEBUG
@@ -54,11 +60,24 @@ testlogger = INFO
     def test_list_sizes(self):
         config = self.load_config()
         sizes = config.node_sizes()
-        self.assertEqual(1, len(sizes))
+        self.assertEqual(2, len(sizes))
         size, kwargs = sizes[0]
         self.assertEqual('Small', size.name)
         self.assertEqual(1, kwargs['cores'])
         self.assertEqual(0.8, kwargs['price'])
+        # preemptable is False by default
+        self.assertEqual(False, kwargs['preemptable'])
+        # instance_type == arvados node size id by default
+        self.assertEqual(kwargs['id'], kwargs['instance_type'])
+        # Now retrieve the preemptable version
+        size, kwargs = sizes[1]
+        self.assertEqual('Small', size.name)
+        self.assertEqual('1.preemptable', kwargs['id'])
+        self.assertEqual(1, kwargs['cores'])
+        self.assertEqual(0.8, kwargs['price'])
+        self.assertEqual(True, kwargs['preemptable'])
+        self.assertEqual('1', kwargs['instance_type'])
+
 
     def test_default_node_mem_scaling(self):
         config = self.load_config()