__ossh_known_hosts(){
    if python -c 'import openshift_ansible' &>/dev/null; then
      /usr/bin/python -c 'from openshift_ansible import multi_inventory; m=multi_inventory.MultiInventory(); m.run(); z=m.result; print "\n".join([name for name in z["_meta"]["hostvars"].keys()])'

    elif [[ -f /dev/shm/.ansible/tmp/multi_inventory.cache ]]; then
      /usr/bin/python -c 'import json; loc="/dev/shm/.ansible/tmp/multi_inventory.cache"; z=json.loads(open(loc).read()); print "\n".join([name for name in z["_meta"]["hostvars"].keys()])'

    elif [[ -f ~/.ansible/tmp/multi_inventory.cache ]]; then
      /usr/bin/python -c 'import json,os; loc="%s" % os.path.expanduser("~/.ansible/tmp/multi_inventory.cache"); z=json.loads(open(loc).read()); print "\n".join([name for name in z["_meta"]["hostvars"].keys()])'

    fi
}

_ossh()
{
    local cur prev known_hosts
    COMPREPLY=()
    cur="${COMP_WORDS[COMP_CWORD]}"
    prev="${COMP_WORDS[COMP_CWORD-1]}"
    known_hosts="$(__ossh_known_hosts)"
    COMPREPLY=( $(compgen -W "${known_hosts}" -- ${cur}))

    return 0
}
complete -F _ossh ossh oscp

__opssh_known_hosts(){
    if python -c 'import openshift_ansible' &>/dev/null; then
      /usr/bin/python -c 'from openshift_ansible.multi_inventory import MultiInventory; m=MultiInventory(); m.run(); print "\n".join(set(["%s" % (host["oo_hosttype"]) for dns, host in m.result["_meta"]["hostvars"].items() if "oo_hosttype" in host]))'

    elif [[ -f /dev/shm/.ansible/tmp/multi_inventory.cache ]]; then
      /usr/bin/python -c 'import json; loc="/dev/shm/.ansible/tmp/multi_inventory.cache"; z=json.loads(open(loc).read()); print "\n".join(set(["%s" % (host["oo_hosttype"]) for dns, host in z["_meta"]["hostvars"].items() if "oo_hosttype" in host]))'

    elif [[ -f ~/.ansible/tmp/multi_inventory.cache ]]; then
      /usr/bin/python -c 'import json,os; loc="%s" % os.path.expanduser("/dev/shm/.ansible/tmp/multi_inventory.cache"); z=json.loads(open(loc).read()); print "\n".join(set(["%s" % (host["oo_hosttype"]) for dns, host in z["_meta"]["hostvars"].items() if "oo_hosttype" in host]))'

    fi
}

_opssh()
{
    local cur prev known_hosts
    COMPREPLY=()
    cur="${COMP_WORDS[COMP_CWORD]}"
    prev="${COMP_WORDS[COMP_CWORD-1]}"
    known_hosts="$(__opssh_known_hosts)"
    COMPREPLY=( $(compgen -W "${known_hosts}" -- ${cur}))

    return 0
}
complete -F _opssh opssh