the hardware_types in a node rspec is now built by
authorparmentelat <thierry.parmentelat@inria.fr>
Fri, 16 Mar 2018 14:58:15 +0000 (15:58 +0100)
committerparmentelat <thierry.parmentelat@inria.fr>
Fri, 16 Mar 2018 14:58:15 +0000 (15:58 +0100)
* first looking for the 'hardware_type' tag on the node; if found this ends up in hardware_types (as a single entry)
* otherwise the former hard-wired default, suitable for plain planetlab, is used

sfa/planetlab/plaggregate.py

index 325ca18..dfae5d5 100644 (file)
@@ -264,8 +264,21 @@ class PlAggregate:
         else:
             rspec_node['exclusive'] = 'false'
 
         else:
             rspec_node['exclusive'] = 'false'
 
-        rspec_node['hardware_types'] = [HardwareType({'name': 'plab-pc'}),
-                                        HardwareType({'name': 'pc'})]
+        # expose hardware_types from the hardware_type tag if
+        # set on node
+        tags = self.driver.shell.GetNodeTags({
+            'node_id': node['node_id'],
+            'tagname': 'hardware_type',
+        })
+        if tags:
+            rspec_node['hardware_types'] = [
+                HardwareType({'name': tags[0]['value']}),
+            ]
+        else:
+            rspec_node['hardware_types'] = [
+                HardwareType({'name': 'plab-pc'}),
+                HardwareType({'name': 'pc'})
+        ]
         # only doing this because protogeni rspec needs
         # to advertise available initscripts
         rspec_node['pl_initscripts'] = pl_initscripts.values()
         # only doing this because protogeni rspec needs
         # to advertise available initscripts
         rspec_node['pl_initscripts'] = pl_initscripts.values()
@@ -278,11 +291,11 @@ class PlAggregate:
             }
             for extra in ('country', 'city'):
                 try:
             }
             for extra in ('country', 'city'):
                 try:
-                    tts = self.driver.shell.GetSiteTags({
+                    tags = self.driver.shell.GetSiteTags({
                         'site_id' : site['site_id'],
                         'tagname' : extra,
                     })
                         'site_id' : site['site_id'],
                         'tagname' : extra,
                     })
-                    location_dict[extra] = tts[0]['value']
+                    location_dict[extra] = tags[0]['value']
                 except:
                     logger.log_exc('extra = {}'.format(extra))
                     location_dict[extra] = 'unknown'
                 except:
                     logger.log_exc('extra = {}'.format(extra))
                     location_dict[extra] = 'unknown'