def main(self, **args): obj = DescribeServices(debug=self.args.get('debug')) services = obj.main(all=True, filter_type='node', **args) service_statuses = services['euca:DescribeServicesResponseType'] \ ['euca:serviceStatuses'] nodes = {} for service in service_statuses: sid = service['euca:serviceId'] hostname = sid.get('euca:hostName') nodes[sid['euca:name']] = { 'partition': sid['euca:partition'], 'name': sid['euca:name'], 'hostname': hostname, 'state': service['euca:localState'], 'details': service['euca:details'], 'instances': {} } obj = DescribeInstances(InstanceId=['verbose'], debug=self.args.get('debug')) inst_response = obj.main(**args) reservations = inst_response['DescribeInstancesResponse'] \ ['reservationSet'] for reservation in reservations: for instance in reservation.get('instancesSet', []): i_info = {} for tag in instance.get('tagSet', []): if tag['key'] == 'euca:node' and tag['value'] in nodes: node = nodes[tag['value']] node['instances'][instance['instanceId']] = i_info elif tag['key'] == 'euca:node:migration:destination': i_info['migration_dest'] = tag['value'] # 'euca:node:migration-source' return nodes
def main(self, **args): obj = DescribeServices(debug=self.args.get('debug')) services = obj.main(all=True, filter_type='node', **args) service_statuses = services['euca:DescribeServicesResponseType'] \ ['euca:serviceStatuses'] nodes = {} for service in service_statuses: sid = service['euca:serviceId'] hostname = sid.get('euca:hostName') nodes[sid['euca:name']] = {'partition': sid['euca:partition'], 'name': sid['euca:name'], 'hostname': hostname, 'state': service['euca:localState'], 'details': service['euca:details'], 'instances': {}} obj = DescribeInstances(InstanceId=['verbose'], debug=self.args.get('debug')) inst_response = obj.main(**args) reservations = inst_response['DescribeInstancesResponse'] \ ['reservationSet'] for reservation in reservations: for instance in reservation.get('instancesSet', []): i_info = {} for tag in instance.get('tagSet', []): if tag['key'] == 'euca:node' and tag['value'] in nodes: node = nodes[tag['value']] node['instances'][instance['instanceId']] = i_info elif tag['key'] == 'euca:node:migration:destination': i_info['migration_dest'] = tag['value'] # 'euca:node:migration-source' return nodes
def get_service_info(self, name, debug=0): obj = DescribeServices() response = obj.main(debug=debug) statuses = (response.get('euca:DescribeServicesResponseType', {}).get('euca:serviceStatuses', [])) for status in statuses: svcname = status.get('euca:serviceId', {}).get('euca:name') if svcname == name: return status
def get_service_info(self, name, debug=0): obj = DescribeServices() response = obj.main(debug=debug) statuses = (response.get('euca:DescribeServicesResponseType', {}) .get('euca:serviceStatuses', [])) for status in statuses: svcname = status.get('euca:serviceId', {}).get('euca:name') if svcname == name: return status
def get_partitions(self, debug=0): obj = DescribeServices() response = obj.main(debug=debug) statuses = (response.get('euca:DescribeServicesResponseType', {}).get('euca:serviceStatuses', [])) partitions = set() for status in statuses: partition = status.get('euca:serviceId', {}).get('euca:partition') partitions.add(partition) return partitions
def get_partitions(self, debug=0): obj = DescribeServices() response = obj.main(debug=debug) statuses = (response.get('euca:DescribeServicesResponseType', {}) .get('euca:serviceStatuses', [])) partitions = set() for status in statuses: partition = status.get('euca:serviceId', {}).get('euca:partition') partitions.add(partition) return partitions