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


---
- name: Openflow Agent Debian Archive
  get_url:
    url: https://github.com/onfsdn/atrium-docs/raw/master/16A/ONOS/builds/ofdpa-3.0-ea0_3.0.0.0%2Baccton1.0-1_amd64.deb
    validate_certs: false
    dest: /mnt/onl/data/ofdpa-3.0-ea0_3.0.0.0+accton1.0-1_amd64.deb

- name: Verify Service Exists
  stat:
    path: /etc/init.d/ofdpa
  register: ofdpa_stat
  changed_when: false
  failed_when: false

- name: OpenFlow Agent Stopped
  service: name=ofdpa state=stopped
  when: ofdpa_stat.stat.exists

- name: Verify Distributeion Release File
  stat:
    path: /etc/lsb-release
  register: lsb_stat
  changed_when: false
  failed_when: false

- name: Verify Distribute Name
  shell: grep -i ubuntu /etc/lsb-release | wc -l
  register: dist
  changed_when: false
  failed_when: false

- name: Openflow Agent
  apt: deb="/mnt/onl/data/ofdpa-3.0-ea0_3.0.0.0+accton1.0-1_amd64.deb" force=true
  when: not lsb_stat.stat.exists or dist.stdout == "0"

- name: OpenFlow Agent Started
  service: name=ofdpa state=started
  when: not lsb_stat.stat.exists or dist.stdout == "0"

