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

- name: Check XOS VNOD Synchronizer Process
  shell: ps -f | grep "python vnod-synchronizer.py -C /opt/xos/synchronizers/vnod/vnod_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 VNOD Synchronizer Container
  shell: mount -l | grep xos_services
  register: volumes
  tags:
    - skip_ansible_lint # running a sub job

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