![Jesse Pretorius](/assets/img/avatar_default.png)
When executing the check for the appropriate files on the repo host and then overriding the group_vars to cater for when the repo is not present, we need to make sure that we're doing the checks against the right URL. In this patch we backup the default URL so that it can be used when re-executing the check later in the same playbook. Also, given that the set-pip-upstream-url.yml and set-upper-constraints.yml task sets are always used together, we combine them into one task set. Depends-On: https://review.openstack.org/563578 Change-Id: I040c4f5b6e96c85c68beb975f7b80d1edf42276d
114 lines
3.8 KiB
YAML
114 lines
3.8 KiB
YAML
---
|
|
# Copyright 2016, Rackspace US, Inc.
|
|
#
|
|
# 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.
|
|
|
|
# This set of tasks checks whether the repo is up yet. If it is it
|
|
# will use it as the source for constraints and as the default index.
|
|
# If it is not yet up, then it will use the upstream upper constraints
|
|
# for the SHA currently pinned and will set the default index to pypi.
|
|
|
|
- name: Backup the default pip_upstream_url
|
|
set_fact:
|
|
__pip_upstream_url: "{{ pip_upstream_url }}"
|
|
when:
|
|
- __pip_upstream_url is not defined
|
|
|
|
- name: Backup the default pip_install_upper_constraints
|
|
set_fact:
|
|
__pip_install_upper_constraints: "{{ pip_install_upper_constraints }}"
|
|
when:
|
|
- __pip_install_upper_constraints is not defined
|
|
|
|
- name: Backup the default pip_default_index
|
|
set_fact:
|
|
__pip_default_index: "{{ pip_default_index }}"
|
|
when:
|
|
- __pip_default_index is not defined
|
|
|
|
- name: Test internal repo URL for the current get-pip.py script
|
|
uri:
|
|
url: "{{ __pip_upstream_url }}"
|
|
method: "HEAD"
|
|
timeout: 3
|
|
register: _repo_data_check
|
|
failed_when: false
|
|
tags:
|
|
- common-pip
|
|
|
|
- name: Test internal repo URL for the current upper constraints file
|
|
uri:
|
|
url: "{{ __pip_install_upper_constraints }}"
|
|
method: "HEAD"
|
|
timeout: 3
|
|
register: upper_constraints_check
|
|
failed_when: false
|
|
tags:
|
|
- common-constraints
|
|
|
|
- name: Test internal repo URL for the availability of the pypi index
|
|
uri:
|
|
url: "{{ __pip_default_index }}"
|
|
method: "HEAD"
|
|
timeout: 3
|
|
register: pip_default_index_check
|
|
failed_when: false
|
|
tags:
|
|
- common-constraints
|
|
|
|
- name: Remove global requirement pins file from host
|
|
file:
|
|
path: "/opt/global-requirement-pins.txt"
|
|
state: absent
|
|
when: (upper_constraints_check.status | default(503)) == 200
|
|
tags:
|
|
- common-constraints
|
|
|
|
- name: Copy global requirement pins file to host
|
|
copy:
|
|
src: "../global-requirement-pins.txt"
|
|
dest: "/opt/global-requirement-pins.txt"
|
|
when: (upper_constraints_check.status | default(503)) != 200
|
|
tags:
|
|
- common-constraints
|
|
|
|
# If we can't reach the internal repo, we need to ensure
|
|
# pip isn't locked to it.
|
|
- name: Set pip upstream URL
|
|
set_fact:
|
|
pip_upstream_url: >-
|
|
{{ ((_repo_data_check.status | default(503)) != 200) | ternary('https://bootstrap.pypa.io/get-pip.py', __pip_upstream_url) }}
|
|
tags:
|
|
- common-pip
|
|
|
|
- name: Set pip install upper constraints
|
|
set_fact:
|
|
pip_install_upper_constraints: >-
|
|
{{ ((upper_constraints_check.status | default(503)) != 200) | ternary(__upstream_constraints, __pip_install_upper_constraints) }}
|
|
vars:
|
|
# Use https when Python with native SNI support is available
|
|
__pip_install_upper_constraints_proto: "{{ ansible_python_version | version_compare('2.7.9', '>=') | ternary('https','http') }}"
|
|
__upstream_constraints: >-
|
|
/opt/global-requirement-pins.txt
|
|
--constraint {{ __pip_install_upper_constraints_proto }}://git.openstack.org/cgit/openstack/requirements/plain/upper-constraints.txt?id={{ requirements_git_install_branch | regex_replace(' #.*$','') }}
|
|
|
|
tags:
|
|
- common-constraints
|
|
|
|
- name: Fallback to PyPI
|
|
set_fact:
|
|
pip_default_index: >-
|
|
{{ ((pip_default_index_check.status | default(503)) != 200) | ternary('https://pypi.python.org/simple', __pip_default_index) }}
|
|
tags:
|
|
- common-constraints
|