diff options
author | Andrew Craft <andrew.craft@clarility.com> | 2015-04-21 13:32:34 +0100 |
---|---|---|
committer | Matt Clay <matt@mystile.com> | 2017-01-03 15:26:39 -0800 |
commit | 44fb104da3134cc1fde1950afa6c31f375a302f0 (patch) | |
tree | 30dab77ae05cabf800f047d87d75ef9944c2a126 | |
parent | 6c2af29659049104b8007627aa09060e7fd73e74 (diff) | |
download | ansible-44fb104da3134cc1fde1950afa6c31f375a302f0.tar.gz |
softlayer inventory include group by tags
-rwxr-xr-x | contrib/inventory/softlayer.py | 38 |
1 files changed, 36 insertions, 2 deletions
diff --git a/contrib/inventory/softlayer.py b/contrib/inventory/softlayer.py index d9d11a5571..796fd5ef40 100755 --- a/contrib/inventory/softlayer.py +++ b/contrib/inventory/softlayer.py @@ -35,12 +35,40 @@ via the command `sl config setup`. import SoftLayer import re import argparse +import itertools try: import json except: import simplejson as json class SoftLayerInventory(object): + common_items = [ + 'id', + 'globalIdentifier', + 'hostname', + 'domain', + 'fullyQualifiedDomainName', + 'primaryBackendIpAddress', + 'primaryIpAddress', + 'datacenter', + 'tagReferences.tag.name', + ] + + vs_items = [ + 'lastKnownPowerState.name', + 'powerState', + 'maxCpu', + 'maxMemory', + 'activeTransaction.transactionStatus[friendlyName,name]', + 'status', + ] + + hw_items = [ + 'hardwareStatusId', + 'processorPhysicalCoreAmount', + 'memoryCapacity', + ] + def _empty_inventory(self): return {"_meta" : {"hostvars" : {}}} @@ -139,10 +167,15 @@ class SoftLayerInventory(object): # Inventory: group by type (hardware/virtual) self.push(self.inventory, instance_type, dest) + # Inventory: group by tag + for tag in instance['tagReferences']: + self.push(self.inventory, tag['tag']['name'], dest) + def get_virtual_servers(self): '''Get all the CCI instances''' vs = SoftLayer.VSManager(self.client) - instances = vs.list_instances() + mask = "mask[%s]" % ','.join(itertools.chain(self.common_items,self.vs_items)) + instances = vs.list_instances(mask=mask) for instance in instances: self.process_instance(instance) @@ -150,7 +183,8 @@ class SoftLayerInventory(object): def get_physical_servers(self): '''Get all the hardware instances''' hw = SoftLayer.HardwareManager(self.client) - instances = hw.list_hardware() + mask = "mask[%s]" % ','.join(itertools.chain(self.common_items,self.hw_items)) + instances = hw.list_hardware(mask=mask) for instance in instances: self.process_instance(instance, 'hardware') |