Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Adds name fact when retrieving nodes #32165

Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
40 changes: 23 additions & 17 deletions lib/ansible/modules/network/f5/bigip_facts.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,15 @@
# Copyright (c) 2013 Matt Hite <mhite@hotmail.com>
# GNU General Public License v3.0 (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)

from __future__ import absolute_import, division, print_function
__metaclass__ = type


ANSIBLE_METADATA = {'metadata_version': '1.1',
'status': ['preview'],
'supported_by': 'community'}

DOCUMENTATION = '''
DOCUMENTATION = r'''
---
module: bigip_facts
short_description: Collect facts from F5 BIG-IP devices
Expand Down Expand Up @@ -73,26 +77,28 @@
extends_documentation_fragment: f5
'''

EXAMPLES = '''
EXAMPLES = r'''
- name: Collect BIG-IP facts
bigip_facts:
server: "lb.mydomain.com"
user: "admin"
password: "secret"
include: "interface,vlan"
server: lb.mydomain.com
user: admin
password: secret
include: interface,vlan
delegate_to: localhost
'''

import fnmatch
import re
import traceback

try:
from suds import MethodNotFound, WebFault
except ImportError:
bigsuds_found = False
else:
bigsuds_found = True
pass # Handle via f5_utils.bigsuds_found

import fnmatch
import re
import traceback
from ansible.module_utils.basic import AnsibleModule
from ansible.module_utils.f5_utils import bigip_api, bigsuds_found, f5_argument_spec
from ansible.module_utils.six.moves import map, zip


class F5(object):
Expand Down Expand Up @@ -959,6 +965,9 @@ def get_list(self):
def get_address(self):
return self.api.LocalLB.NodeAddressV2.get_address(nodes=self.nodes)

def get_name(self):
return [x[x.rfind('/') + 1:] for x in self.nodes]

def get_connection_limit(self):
return self.api.LocalLB.NodeAddressV2.get_connection_limit(nodes=self.nodes)

Expand Down Expand Up @@ -1518,7 +1527,7 @@ def generate_rule_dict(f5, regex):

def generate_node_dict(f5, regex):
nodes = Nodes(f5.get_api(), regex)
fields = ['address', 'connection_limit', 'description', 'dynamic_ratio',
fields = ['name', 'address', 'connection_limit', 'description', 'dynamic_ratio',
'monitor_instance', 'monitor_rule', 'monitor_status',
'object_status', 'rate_limit', 'ratio', 'session_status']
return generate_dict(nodes, fields)
Expand Down Expand Up @@ -1640,7 +1649,7 @@ def main():
'pool', 'provision', 'rule', 'self_ip', 'software',
'system_info', 'traffic_group', 'trunk',
'virtual_address', 'virtual_server', 'vlan')
include_test = map(lambda x: x in valid_includes, include)
include_test = (x in valid_includes for x in include)
if not all(include_test):
module.fail_json(msg="value of include must be one or more of: %s, got: %s" % (",".join(valid_includes), ",".join(include)))

Expand Down Expand Up @@ -1709,9 +1718,6 @@ def main():

module.exit_json(**result)

# include magic from lib/ansible/module_common.py
from ansible.module_utils.basic import *
from ansible.module_utils.f5_utils import *

if __name__ == '__main__':
main()