diff options
Diffstat (limited to 'roles')
| -rwxr-xr-x | roles/openshift_facts/library/openshift_facts.py | 21 | ||||
| -rw-r--r-- | roles/openshift_facts/tasks/main.yml | 3 | 
2 files changed, 20 insertions, 4 deletions
diff --git a/roles/openshift_facts/library/openshift_facts.py b/roles/openshift_facts/library/openshift_facts.py index c108cd422..9a5d36643 100755 --- a/roles/openshift_facts/library/openshift_facts.py +++ b/roles/openshift_facts/library/openshift_facts.py @@ -24,8 +24,25 @@ import StringIO  import yaml  from distutils.util import strtobool  from distutils.version import LooseVersion -from netaddr import IPNetwork +import struct +import socket +def first_ip(network): +    """ Return the first IPv4 address in network + +        Args: +            network (str): network in CIDR format +        Returns: +            str: first IPv4 address +    """ +    def atoi(addr): +        return struct.unpack("!I", socket.inet_aton(addr))[0] +    def itoa(addr): +        return socket.inet_ntoa(struct.pack("!I", addr)) + +    (address, netmask) = network.split('/') +    netmask_i = (0xffffffff << (32 - atoi(netmask))) & 0xffffffff +    return itoa((atoi(address) & netmask_i) + 1)  def hostname_valid(hostname):      """ Test if specified hostname should be considered valid @@ -525,7 +542,7 @@ def set_aggregate_facts(facts):                           'kubernetes.default.svc', 'kubernetes.default.svc.' + cluster_domain]              all_hostnames.update(svc_names)              internal_hostnames.update(svc_names) -            first_svc_ip = str(IPNetwork(facts['master']['portal_net'])[1]) +            first_svc_ip = first_ip(facts['master']['portal_net'])              all_hostnames.add(first_svc_ip)              internal_hostnames.add(first_svc_ip)              _add_etcd_data_dir_fact(facts) diff --git a/roles/openshift_facts/tasks/main.yml b/roles/openshift_facts/tasks/main.yml index a28aa7ba2..913f0dc78 100644 --- a/roles/openshift_facts/tasks/main.yml +++ b/roles/openshift_facts/tasks/main.yml @@ -6,10 +6,9 @@      - ansible_version | version_compare('1.9.0', 'ne')      - ansible_version | version_compare('1.9.0.1', 'ne') -- name: Ensure python-netaddr and PyYaml are installed +- name: Ensure PyYaml is installed    yum: pkg={{ item }} state=installed    with_items: -    - python-netaddr      - PyYAML  - name: Gather Cluster facts  | 
