|
|
@ -27,8 +27,8 @@ import argparse
|
|
|
|
import atexit
|
|
|
|
import atexit
|
|
|
|
import datetime
|
|
|
|
import datetime
|
|
|
|
import getpass
|
|
|
|
import getpass
|
|
|
|
import jinja2
|
|
|
|
|
|
|
|
import os
|
|
|
|
import os
|
|
|
|
|
|
|
|
import re
|
|
|
|
import six
|
|
|
|
import six
|
|
|
|
import ssl
|
|
|
|
import ssl
|
|
|
|
import sys
|
|
|
|
import sys
|
|
|
@ -37,6 +37,7 @@ import uuid
|
|
|
|
from collections import defaultdict
|
|
|
|
from collections import defaultdict
|
|
|
|
from six.moves import configparser
|
|
|
|
from six.moves import configparser
|
|
|
|
from time import time
|
|
|
|
from time import time
|
|
|
|
|
|
|
|
from jinja2 import Environment
|
|
|
|
|
|
|
|
|
|
|
|
HAS_PYVMOMI = False
|
|
|
|
HAS_PYVMOMI = False
|
|
|
|
try:
|
|
|
|
try:
|
|
|
@ -61,6 +62,15 @@ except ImportError:
|
|
|
|
pass
|
|
|
|
pass
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def regex_match(s, pattern):
|
|
|
|
|
|
|
|
'''Custom filter for regex matching'''
|
|
|
|
|
|
|
|
reg = re.compile(pattern)
|
|
|
|
|
|
|
|
if reg.match(s):
|
|
|
|
|
|
|
|
return True
|
|
|
|
|
|
|
|
else:
|
|
|
|
|
|
|
|
return False
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class VMwareMissingHostException(Exception):
|
|
|
|
class VMwareMissingHostException(Exception):
|
|
|
|
pass
|
|
|
|
pass
|
|
|
|
|
|
|
|
|
|
|
@ -104,6 +114,10 @@ class VMWareInventory(object):
|
|
|
|
|
|
|
|
|
|
|
|
custom_fields = {}
|
|
|
|
custom_fields = {}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# use jinja environments to allow for custom filters
|
|
|
|
|
|
|
|
env = Environment()
|
|
|
|
|
|
|
|
env.filters['regex_match'] = regex_match
|
|
|
|
|
|
|
|
|
|
|
|
# translation table for attributes to fetch for known vim types
|
|
|
|
# translation table for attributes to fetch for known vim types
|
|
|
|
if not HAS_PYVMOMI:
|
|
|
|
if not HAS_PYVMOMI:
|
|
|
|
vimTable = {}
|
|
|
|
vimTable = {}
|
|
|
@ -498,7 +512,7 @@ class VMWareInventory(object):
|
|
|
|
|
|
|
|
|
|
|
|
mapping = {}
|
|
|
|
mapping = {}
|
|
|
|
for k, v in inventory['_meta']['hostvars'].items():
|
|
|
|
for k, v in inventory['_meta']['hostvars'].items():
|
|
|
|
t = jinja2.Template(pattern)
|
|
|
|
t = self.env.from_string(pattern)
|
|
|
|
newkey = None
|
|
|
|
newkey = None
|
|
|
|
try:
|
|
|
|
try:
|
|
|
|
newkey = t.render(v)
|
|
|
|
newkey = t.render(v)
|
|
|
|