
# Copyright 2017-present Open Networking Foundation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.


---
# xos-onboard-hosts/tasks/main.yml

- name: Get the Docker container names for onboarded containers
  docker_service:
    project_name: "{{ cord_profile | regex_replace('\\W','') }}"
    project_src: "{{ head_cord_profile_dir }}"
    recreate: never
  register: xos_onboard_out

- name: Add the containers to Ansible groups on a per-container type basis
  add_host:
    name: "{{ xos_onboard_out.ansible_facts[item].keys() | first }}"
    groups: "{{ item }}"
    ansible_connection: "docker"
    cord_profile: "{{ cord_profile }}"
    ansible_ssh_user: "root"
  with_items: "{{ xos_onboard_out.ansible_facts.keys() | list }}"

