
# 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-onos-sync tests

- name: Check XOS ONOS Synchronizer Process
  shell: ps -f | grep "python onos-synchronizer.py -C /opt/xos/synchronizers/onos/onos_synchronizer_config"
  register: result
  until: result | success
  retries: 10
  delay: 5
  tags:
    - skip_ansible_lint # running a sub job

- name: Get Volume Mounts on XOS ONOS Synchronizer Container
  shell: mount -l | grep xos_services
  register: volumes
  tags:
    - skip_ansible_lint # running a sub job

- name: Validate Volume Mounts on XOS ONOS Synchronizer  Container
  assert:
    that: "'/opt/xos_services/{{ item.name }}' in volumes.stdout|lower"
  with_items: "{{ xos_services }}"
  when:
    - "'{{ item.name }}' != 'vnodlocal'"
    - "'{{ item.name }}' != 'volt'"