
# 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: Generate DPID
  shell: ifconfig ma1 | grep HWaddr | awk '{ print "0x0000"$5 }' | sed s/://g
  register: dpid
  changed_when: false

- name: Ensure ofdpa Config
  set_fact:
    switch_id: "{{ dpid.stdout }}"
    controller_ip: "onos-fabric"

- name: Verify Openflow Agent
  shell: which ofagentapp | wc -w
  register: ofdpa_exists
  changed_when: false

- name: Openflow Agent Version
  command: ofagentapp --version
  register: ofdpa_version
  changed_when: false
  when: ofdpa_exists.stdout != "0"

# Note: This is the version number of OFDPA 3.0 EA4
- name: Version 2.0.4.0 Openflow Agent
  include: ofdpa.yml
  when: ofdpa_exists.stdout == "0" or ofdpa_version.stderr.find('version 2.0.4.0') == -1

- name: Utilities Scripts
  template:
    src: "{{ item }}"
    dest: /root
    owner: root
    group: root
    mode: "0755"
  with_items:
    - killit
    - connect
  register: utils

- name: Authorize SSH Key
  become: yes
  authorized_key:
    key={{ pub_ssh_key }}
    user=root
    state=present
  register: sshkey

