
# 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.


---
# compute-node-enable/tasks/main.yml

- name: Load TOSCA to add OpenStack compute nodes
  command: "python /opt/xos/tosca/run.py {{ xos_admin_user }} {{ head_cord_profile_dir }}/{{ item }}"
  with_items:
    - openstack.yaml
    - openstack-compute.yaml
  tags:
    - skip_ansible_lint # TOSCA loading should be idempotent

- name: Pause to work around race in VTN or ONOS synchronizers
  pause:
    seconds: 20

- name: Load TOSCA to enable VTN on OpenStack compute nodes
  command: "python /opt/xos/tosca/run.py {{ xos_admin_user }} {{ head_cord_profile_dir }}/{{ item }}"
  with_items:
    - vtn-service.yaml
    - openstack-compute-vtn.yaml
  tags:
    - skip_ansible_lint # TOSCA loading should be idempotent

