summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrian Coca <brian.coca+git@gmail.com>2016-09-08 09:32:51 -0400
committerBrian Coca <brian.coca+git@gmail.com>2016-09-08 14:18:10 -0400
commit81a4164207088b374508b09c8a42a3b414d35e90 (patch)
tree2efd3c957cb0f207393bf3c6977b18bcdf7bc42d
parentf59e8be428fb3273f5391c5d978b51b192520626 (diff)
downloadansible-81a4164207088b374508b09c8a42a3b414d35e90.tar.gz
old yaml format has been long gone
script is not compatible with new yaml format so removing it to avoid confusion (cherry picked from commit 52099224e632fe0a8b076774b22723fb73d19ea0)
-rwxr-xr-xexamples/scripts/yaml_to_ini.py207
1 files changed, 0 insertions, 207 deletions
diff --git a/examples/scripts/yaml_to_ini.py b/examples/scripts/yaml_to_ini.py
deleted file mode 100755
index 981176b2f2..0000000000
--- a/examples/scripts/yaml_to_ini.py
+++ /dev/null
@@ -1,207 +0,0 @@
-# (c) 2012, Michael DeHaan <michael.dehaan@gmail.com>
-#
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-
-import ansible.constants as C
-from ansible.inventory.host import Host
-from ansible.inventory.group import Group
-from ansible import errors
-from ansible import utils
-import os
-import yaml
-import sys
-from six import iteritems
-
-class InventoryParserYaml(object):
- ''' Host inventory parser for ansible '''
-
- def __init__(self, filename=C.DEFAULT_HOST_LIST):
-
- sys.stderr.write("WARNING: YAML inventory files are deprecated in 0.6 and will be removed in 0.7, to migrate" +
- " download and run https://github.com/ansible/ansible/blob/devel/examples/scripts/yaml_to_ini.py\n")
-
- fh = open(filename)
- data = fh.read()
- fh.close()
- self._hosts = {}
- self._parse(data)
-
- def _make_host(self, hostname):
-
- if hostname in self._hosts:
- return self._hosts[hostname]
- else:
- host = Host(hostname)
- self._hosts[hostname] = host
- return host
-
- # see file 'test/yaml_hosts' for syntax
-
- def _parse(self, data):
- # FIXME: refactor into subfunctions
-
- all = Group('all')
-
- ungrouped = Group('ungrouped')
- all.add_child_group(ungrouped)
-
- self.groups = dict(all=all, ungrouped=ungrouped)
- grouped_hosts = []
-
- yaml = utils.parse_yaml(data)
-
- # first add all groups
- for item in yaml:
- if type(item) == dict and 'group' in item:
- group = Group(item['group'])
-
- for subresult in item.get('hosts',[]):
-
- if type(subresult) in [ str, unicode ]:
- host = self._make_host(subresult)
- group.add_host(host)
- grouped_hosts.append(host)
- elif type(subresult) == dict:
- host = self._make_host(subresult['host'])
- vars = subresult.get('vars',{})
- if type(vars) == list:
- for subitem in vars:
- for (k,v) in subitem.items():
- host.set_variable(k,v)
- elif type(vars) == dict:
- for (k,v) in subresult.get('vars',{}).items():
- host.set_variable(k,v)
- else:
- raise errors.AnsibleError("unexpected type for variable")
- group.add_host(host)
- grouped_hosts.append(host)
-
- vars = item.get('vars',{})
- if type(vars) == dict:
- for (k,v) in item.get('vars',{}).items():
- group.set_variable(k,v)
- elif type(vars) == list:
- for subitem in vars:
- if type(subitem) != dict:
- raise errors.AnsibleError("expected a dictionary")
- for (k,v) in subitem.items():
- group.set_variable(k,v)
-
- self.groups[group.name] = group
- all.add_child_group(group)
-
- # add host definitions
- for item in yaml:
- if type(item) in [ str, unicode ]:
- host = self._make_host(item)
- if host not in grouped_hosts:
- ungrouped.add_host(host)
-
- elif type(item) == dict and 'host' in item:
- host = self._make_host(item['host'])
-
- vars = item.get('vars', {})
- if type(vars)==list:
- varlist, vars = vars, {}
- for subitem in varlist:
- vars.update(subitem)
- for (k,v) in vars.items():
- host.set_variable(k,v)
-
- groups = item.get('groups', {})
- if type(groups) in [ str, unicode ]:
- groups = [ groups ]
- if type(groups)==list:
- for subitem in groups:
- if subitem in self.groups:
- group = self.groups[subitem]
- else:
- group = Group(subitem)
- self.groups[group.name] = group
- all.add_child_group(group)
- group.add_host(host)
- grouped_hosts.append(host)
-
- if host not in grouped_hosts:
- ungrouped.add_host(host)
-
- # make sure ungrouped.hosts is the complement of grouped_hosts
- ungrouped_hosts = [host for host in ungrouped.hosts if host not in grouped_hosts]
-
-if __name__ == "__main__":
- if len(sys.argv) != 2:
- print "usage: yaml_to_ini.py /path/to/ansible/hosts"
- sys.exit(1)
-
- result = ""
-
- original = sys.argv[1]
- yamlp = InventoryParserYaml(filename=sys.argv[1])
- dirname = os.path.dirname(original)
-
- group_names = [ g.name for g in yamlp.groups.values() ]
-
- for group_name in sorted(group_names):
-
- record = yamlp.groups[group_name]
-
- if group_name == 'all':
- continue
-
- hosts = record.hosts
- result = result + "[%s]\n" % record.name
- for h in hosts:
- result = result + "%s\n" % h.name
- result = result + "\n"
-
- groupfiledir = os.path.join(dirname, "group_vars")
- if not os.path.exists(groupfiledir):
- print "* creating: %s" % groupfiledir
- os.makedirs(groupfiledir)
- groupfile = os.path.join(groupfiledir, group_name)
- print "* writing group variables for %s into %s" % (group_name, groupfile)
- groupfh = open(groupfile, 'w')
- groupfh.write(yaml.dump(record.get_variables()))
- groupfh.close()
-
- for (host_name, host_record) in iteritems(yamlp._hosts):
- hostfiledir = os.path.join(dirname, "host_vars")
- if not os.path.exists(hostfiledir):
- print "* creating: %s" % hostfiledir
- os.makedirs(hostfiledir)
- hostfile = os.path.join(hostfiledir, host_record.name)
- print "* writing host variables for %s into %s" % (host_record.name, hostfile)
- hostfh = open(hostfile, 'w')
- hostfh.write(yaml.dump(host_record.get_variables()))
- hostfh.close()
-
-
- # also need to keep a hash of variables per each host
- # and variables per each group
- # and write those to disk
-
- newfilepath = os.path.join(dirname, "hosts.new")
- fdh = open(newfilepath, 'w')
- fdh.write(result)
- fdh.close()
-
- print "* COMPLETE: review your new inventory file and replace your original when ready"
- print "* new inventory file saved as %s" % newfilepath
- print "* edit group specific variables in %s/group_vars/" % dirname
- print "* edit host specific variables in %s/host_vars/" % dirname
-
- # now need to write this to disk as (oldname).new
- # and inform the user