azure virtual machine facts -- querying all machines in subscription fix (#54075)
This commit is contained in:
parent
a03e69550c
commit
9c77509cbc
2 changed files with 39 additions and 18 deletions
|
@ -201,6 +201,7 @@ vms:
|
|||
|
||||
try:
|
||||
from msrestazure.azure_exceptions import CloudError
|
||||
from msrestazure.tools import parse_resource_id
|
||||
except Exception:
|
||||
# This is handled in azure_rm_common
|
||||
pass
|
||||
|
@ -248,8 +249,10 @@ class AzureRMVirtualMachineFacts(AzureRMModuleBase):
|
|||
self.fail("Parameter error: resource group required when filtering by name.")
|
||||
if self.name:
|
||||
self.results['vms'] = self.get_item()
|
||||
elif self.resource_group:
|
||||
self.results['vms'] = self.list_items_by_resourcegroup()
|
||||
else:
|
||||
self.results['vms'] = self.list_items()
|
||||
self.results['vms'] = self.list_all_items()
|
||||
|
||||
return self.results
|
||||
|
||||
|
@ -258,17 +261,14 @@ class AzureRMVirtualMachineFacts(AzureRMModuleBase):
|
|||
item = None
|
||||
result = []
|
||||
|
||||
try:
|
||||
item = self.compute_client.virtual_machines.get(self.resource_group, self.name)
|
||||
except CloudError as err:
|
||||
self.module.warn("Error getting virtual machine {0} - {1}".format(self.name, str(err)))
|
||||
item = self.get_vm(self.resource_group, self.name)
|
||||
|
||||
if item and self.has_tags(item.tags, self.tags):
|
||||
result = [self.serialize_vm(item)]
|
||||
if item and self.has_tags(item.get('tags'), self.tags):
|
||||
result = [item]
|
||||
|
||||
return result
|
||||
|
||||
def list_items(self):
|
||||
def list_items_by_resourcegroup(self):
|
||||
self.log('List all items')
|
||||
try:
|
||||
items = self.compute_client.virtual_machines.list(self.resource_group)
|
||||
|
@ -278,18 +278,31 @@ class AzureRMVirtualMachineFacts(AzureRMModuleBase):
|
|||
results = []
|
||||
for item in items:
|
||||
if self.has_tags(item.tags, self.tags):
|
||||
results.append(self.serialize_vm(self.get_vm(item.name)))
|
||||
results.append(self.get_vm(self.resource_group, item.name))
|
||||
return results
|
||||
|
||||
def get_vm(self, name):
|
||||
def list_all_items(self):
|
||||
self.log('List all items')
|
||||
try:
|
||||
items = self.compute_client.virtual_machines.list_all()
|
||||
except CloudError as exc:
|
||||
self.fail("Failed to list all items - {0}".format(str(exc)))
|
||||
|
||||
results = []
|
||||
for item in items:
|
||||
if self.has_tags(item.tags, self.tags):
|
||||
results.append(self.get_vm(parse_resource_id(item.id).get('resource_group'), item.name))
|
||||
return results
|
||||
|
||||
def get_vm(self, resource_group, name):
|
||||
'''
|
||||
Get the VM with expanded instanceView
|
||||
|
||||
:return: VirtualMachine object
|
||||
'''
|
||||
try:
|
||||
vm = self.compute_client.virtual_machines.get(self.resource_group, name, expand='instanceview')
|
||||
return vm
|
||||
vm = self.compute_client.virtual_machines.get(resource_group, name, expand='instanceview')
|
||||
return self.serialize_vm(vm)
|
||||
except Exception as exc:
|
||||
self.fail("Error getting virtual machine {0} - {1}".format(self.name, str(exc)))
|
||||
|
||||
|
@ -302,7 +315,7 @@ class AzureRMVirtualMachineFacts(AzureRMModuleBase):
|
|||
'''
|
||||
|
||||
result = self.serialize_obj(vm, AZURE_OBJECT_CLASS, enum_modules=AZURE_ENUM_MODULES)
|
||||
resource_group = re.sub('\\/.*', '', re.sub('.*resourceGroups\\/', '', result['id']))
|
||||
resource_group = parse_resource_id(result['id']).get('resource_group')
|
||||
instance = None
|
||||
power_state = None
|
||||
|
||||
|
|
|
@ -332,7 +332,8 @@
|
|||
publisher: Canonical
|
||||
sku: 16.04-LTS
|
||||
version: latest
|
||||
|
||||
tags:
|
||||
abc: def
|
||||
- assert:
|
||||
that:
|
||||
- azure_vm.properties.availabilitySet.id
|
||||
|
@ -344,10 +345,6 @@
|
|||
name: "{{ vm_name2 }}"
|
||||
register: results
|
||||
|
||||
- name: Just dump output
|
||||
debug:
|
||||
var: results
|
||||
|
||||
- name: Assert that facts module returned the second vm
|
||||
assert:
|
||||
that:
|
||||
|
@ -358,6 +355,17 @@
|
|||
- results.vms[0].resource_group == "{{ resource_group }}"
|
||||
- results.vms[0].power_state != None
|
||||
|
||||
- name: Retrieve facts by tags
|
||||
azure_rm_virtualmachine_facts:
|
||||
tags:
|
||||
- abc:def
|
||||
register: results
|
||||
|
||||
- name: Assert that facts module returned the second vm
|
||||
assert:
|
||||
that:
|
||||
- results.vms | length >= 1
|
||||
|
||||
- name: Should be idempotent with a dual NICs
|
||||
azure_rm_virtualmachine:
|
||||
resource_group: "{{ resource_group }}"
|
||||
|
|
Loading…
Reference in a new issue