summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Craft <andrew.craft@clarility.com>2015-04-21 13:32:34 +0100
committerMatt Clay <matt@mystile.com>2017-01-03 15:26:39 -0800
commit44fb104da3134cc1fde1950afa6c31f375a302f0 (patch)
tree30dab77ae05cabf800f047d87d75ef9944c2a126
parent6c2af29659049104b8007627aa09060e7fd73e74 (diff)
downloadansible-44fb104da3134cc1fde1950afa6c31f375a302f0.tar.gz
softlayer inventory include group by tags
-rwxr-xr-xcontrib/inventory/softlayer.py38
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')