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


---
# java-oracle/tasks/main

- name: Install add-apt-repository
  become: yes
  apt:
    name: "{{ item }}"
    update_cache: yes
    cache_valid_time: 3600
  with_items:
    - apt-transport-https
    - software-properties-common
    - ca-certificates

- name: Add Oracle Java repository
  become: yes
  apt_repository:
    repo: 'ppa:webupd8team/java'
  register: result
  until: result | success
  retries: 3
  delay: 10

- name: Accept Java 8 license
  become: yes
  debconf:
    name: 'oracle-java8-installer'
    question: 'shared/accepted-oracle-license-v1-1'
    value: 'true'
    vtype: 'select'

- name: Install Oracle Java 8
  become: yes
  apt:
    name: "{{ item }}"
    update_cache: yes
    cache_valid_time: 3600
  with_items:
    - oracle-java8-installer
    - oracle-java8-set-default

