diff options
Diffstat (limited to 'roles/lib_dyn/library')
| -rw-r--r-- | roles/lib_dyn/library/dyn_record.py | 46 | 
1 files changed, 26 insertions, 20 deletions
| diff --git a/roles/lib_dyn/library/dyn_record.py b/roles/lib_dyn/library/dyn_record.py index 7b80064f4..a52ed7c41 100644 --- a/roles/lib_dyn/library/dyn_record.py +++ b/roles/lib_dyn/library/dyn_record.py @@ -85,7 +85,7 @@ options:        - 'Record's "Time to live".  Number of seconds the record remains cached'        - 'in DNS servers or c(0) to use the default TTL for the zone.'      required: false -    default: 0 +    default: 3600  notes:    - The module makes a broad assumption that there will be only one record per "node" (FQDN). @@ -96,18 +96,18 @@ author: "Russell Harrison"  '''  EXAMPLES = ''' +# Attempting to cname www.example.com to web1.example.com  - name: Update CNAME record -  local_action: -    module: dyn_record +  dyn_record:      state: present      record_fqdn: www.example.com      zone: example.com      record_type: CNAME      record_value: web1.example.com +    record_ttl: 7200  - name: Update A record -  local_action: -    module: dyn_record +  dyn_record:      state: present      record_fqdn: web1.example.com      zone: example.com @@ -144,7 +144,10 @@ def get_record_type(record_key):      return record_key.replace('_records', '').upper()  def get_record_key(record_type): -    '''Get the key to look up records in the dictionary returned from get_any_records.''' +    '''Get the key to look up records in the dictionary returned from get_any_records. +       example: +       'cname_records' +    '''      return record_type.lower() + '_records'  def get_any_records(module, node): @@ -187,7 +190,7 @@ def main():              record_type=dict(required=False, type='str', choices=[                  'A', 'AAAA', 'CNAME', 'PTR', 'TXT']),              record_value=dict(required=False, type='str'), -            record_ttl=dict(required=False, default=0, type='int'), +            record_ttl=dict(required=False, default=3600, type='int'),          ),          required_together=(              ['record_fqdn', 'record_value', 'record_ttl', 'record_type'] @@ -233,28 +236,26 @@ def main():      # All states will need a list of the exiting records for the zone.      dyn_node_records = get_any_records(module, dyn_node) +    dyn_values = get_record_values(dyn_node_records) + +    # get_record_values() +      if module.params['state'] == 'list': -        module.exit_json(changed=False, -                         records=get_record_values( -                             dyn_node_records, -                         )) +        module.exit_json(changed=False, records=dyn_values)      if module.params['state'] == 'present':          # First get a list of existing records for the node -        values = get_record_values(dyn_node_records) -        value_key = get_record_key(module.params['record_type']) +        record_type_key = get_record_key(module.params['record_type'])          param_value = module.params['record_value']          # Check to see if the record is already in place before doing anything. -        if (dyn_node_records and -                dyn_node_records[value_key][0].ttl == module.params['record_ttl'] and -                (param_value in values[value_key] or -                 param_value + '.' in values[value_key])): +        if dyn_node_records and \ +           int(dyn_node_records[record_type_key][0].ttl) == int(module.params['record_ttl']) \ +           and ((param_value in dyn_values[record_type_key]) or param_value + '.' in dyn_values[record_type_key]):              module.exit_json(changed=False) -          # Working on the assumption that there is only one record per          # node we will first delete the node if there are any records before          # creating the correct record @@ -270,8 +271,13 @@ def main():          # Now publish the zone since we've updated it.          dyn_zone.publish() -        module.exit_json(changed=True, -                         msg="Created node %s in zone %s" % (dyn_node_name, module.params['zone'])) + +        rmsg = "Created node [%s] "  % dyn_node_name +        rmsg += "in zone: %s, "     % module.params['zone'] +        rmsg += "record_type: %s, "  % module.params['record_type'] +        rmsg += "record_value: %s, " % module.params['record_value'] +        rmsg += "record_ttl: %s"   % module.params['record_ttl'] +        module.exit_json(changed=True, msg=rmsg)      if module.params['state'] == 'absent':          # If there are any records present we'll want to delete the node. | 
