
# 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/blob/master/16A/ONOS/builds/ofdpa_3.0.4.0+accton1.8_5-1_amd64.deb?raw=true
    validate_certs: false
    checksum: "sha256:4da4e4c71dd33912272142f903de5e1dbb648ab66fd657ce739d2a01862b262c"
    dest: /mnt/onl/data/ofdpa_3.0.4.0+accton1.0~1-1_amd64.deb

# We want to kill old agents and stop the old OFDPA service before removing
- name: OpenFlow Agent Is Not Running
  command: killall ofagentapp
  failed_when: false
  tags:
   - skip_ansible_lint # there's no harm to run killall if process is not running

- name: Old OFDPA Is Not Running
  command: killall -9 brcm-indigo-ofdpa-ofagent
  failed_when: false
  tags:
   - skip_ansible_lint # there's no harm to run killall if process is not running

- 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: OFDPA 3.0 EA0 Is Not Present
  apt:
    name: ofdpa-3.0-ea0
    state: absent
    force: yes
    purge: yes

- name: Verify Distribution 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 Installed
  apt: deb="/mnt/onl/data/ofdpa_3.0.4.0+accton1.0~1-1_amd64.deb" force=true
  when: not lsb_stat.stat.exists or dist.stdout == "0"
