summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorScott Dodson <sdodson@redhat.com>2017-01-17 10:32:42 -0500
committerGitHub <noreply@github.com>2017-01-17 10:32:42 -0500
commitdef9d435ef60b1f11c29db2fc98fe266bbd4041d (patch)
tree25bdfd52c8b76b2198bbc8d6a76e2d39ed9daae8
parent52860b6cdf48f0b74b0da13ad7d0663c663381d6 (diff)
parent313f52af560af6b651e067d4b9f22b554a4e9cf7 (diff)
downloadopenshift-def9d435ef60b1f11c29db2fc98fe266bbd4041d.tar.gz
openshift-def9d435ef60b1f11c29db2fc98fe266bbd4041d.tar.bz2
openshift-def9d435ef60b1f11c29db2fc98fe266bbd4041d.tar.xz
openshift-def9d435ef60b1f11c29db2fc98fe266bbd4041d.zip
Merge pull request #3086 from bparees/build_nodes
add configuration for build default+overrides settings
-rw-r--r--roles/openshift_builddefaults/tasks/main.yml1
-rw-r--r--roles/openshift_builddefaults/vars/main.yml16
-rw-r--r--roles/openshift_buildoverrides/meta/main.yml15
-rw-r--r--roles/openshift_buildoverrides/tasks/main.yml15
-rw-r--r--roles/openshift_buildoverrides/vars/main.yml10
-rwxr-xr-xroles/openshift_facts/library/openshift_facts.py64
-rw-r--r--roles/openshift_master/meta/main.yml1
-rw-r--r--roles/openshift_master_facts/vars/main.yml21
8 files changed, 105 insertions, 38 deletions
diff --git a/roles/openshift_builddefaults/tasks/main.yml b/roles/openshift_builddefaults/tasks/main.yml
index 1f44b29b9..e0b51eee0 100644
--- a/roles/openshift_builddefaults/tasks/main.yml
+++ b/roles/openshift_builddefaults/tasks/main.yml
@@ -15,6 +15,7 @@
no_proxy: "{{ openshift_builddefaults_no_proxy | default(None) }}"
git_http_proxy: "{{ openshift_builddefaults_git_http_proxy | default(None) }}"
git_https_proxy: "{{ openshift_builddefaults_git_https_proxy | default(None) }}"
+ git_no_proxy: "{{ openshift_builddefaults_git_no_proxy | default(None) }}"
- name: Set builddefaults config structure
openshift_facts:
diff --git a/roles/openshift_builddefaults/vars/main.yml b/roles/openshift_builddefaults/vars/main.yml
index bcdf68112..c9ec3b82f 100644
--- a/roles/openshift_builddefaults/vars/main.yml
+++ b/roles/openshift_builddefaults/vars/main.yml
@@ -6,16 +6,28 @@ builddefaults_yaml:
kind: BuildDefaultsConfig
gitHTTPProxy: "{{ openshift.builddefaults.git_http_proxy | default('', true) }}"
gitHTTPSProxy: "{{ openshift.builddefaults.git_https_proxy | default('', true) }}"
+ gitNoProxy: "{{ openshift.builddefaults.git_no_proxy | default('', true) }}"
env:
- name: HTTP_PROXY
value: "{{ openshift.builddefaults.http_proxy | default('', true) }}"
- name: HTTPS_PROXY
value: "{{ openshift.builddefaults.https_proxy | default('', true) }}"
- name: NO_PROXY
- value: "{{ openshift.builddefaults.no_proxy | default('', true) | join(',') }}"
+ value: "{{ openshift.builddefaults.no_proxy | default('', true) }}"
- name: http_proxy
value: "{{ openshift.builddefaults.http_proxy | default('', true) }}"
- name: https_proxy
value: "{{ openshift.builddefaults.https_proxy | default('', true) }}"
- name: no_proxy
- value: "{{ openshift.builddefaults.no_proxy | default('', true) | join(',') }}"
+ value: "{{ openshift.builddefaults.no_proxy | default('', true) }}"
+ imageLabels: "{{ openshift_builddefaults_image_labels | default(None) }}"
+ nodeSelector: "{{ openshift_builddefaults_nodeselectors | default(None) }}"
+ annotations: "{{ openshift_builddefaults_annotations | default(None) }}"
+ #resources: "{{ openshift.builddefaults.resources | default(None) }}"
+ resources:
+ requests:
+ cpu: "{{ openshift_builddefaults_resources_requests_cpu | default(None) }}"
+ memory: "{{ openshift_builddefaults_resources_requests_memory | default(None) }}"
+ limits:
+ cpu: "{{ openshift_builddefaults_resources_limits_cpu | default(None) }}"
+ memory: "{{ openshift_builddefaults_resources_limits_memory | default(None) }}"
diff --git a/roles/openshift_buildoverrides/meta/main.yml b/roles/openshift_buildoverrides/meta/main.yml
new file mode 100644
index 000000000..e9d2e8712
--- /dev/null
+++ b/roles/openshift_buildoverrides/meta/main.yml
@@ -0,0 +1,15 @@
+---
+galaxy_info:
+ author: Ben Parees
+ description: OpenShift Build Overrides configuration
+ company: Red Hat, Inc.
+ license: Apache License, Version 2.0
+ min_ansible_version: 1.9
+ platforms:
+ - name: EL
+ versions:
+ - 7
+ categories:
+ - cloud
+dependencies:
+- role: openshift_facts
diff --git a/roles/openshift_buildoverrides/tasks/main.yml b/roles/openshift_buildoverrides/tasks/main.yml
new file mode 100644
index 000000000..82fce1c5b
--- /dev/null
+++ b/roles/openshift_buildoverrides/tasks/main.yml
@@ -0,0 +1,15 @@
+---
+#- name: Set buildoverrides
+# openshift_facts:
+# role: buildoverrides
+# local_facts:
+# force_pull: "{{ openshift_buildoverrides_force_pull | default(None) }}"
+# image_labels: "{{ openshift_buildoverrides_image_labels | default(None) }}"
+# nodeselectors: "{{ openshift_buildoverrides_nodeselectors | default(None) }}"
+# annotations: "{{ openshift_buildoverrides_annotations | default(None) }}"
+
+- name: Set buildoverrides config structure
+ openshift_facts:
+ role: buildoverrides
+ local_facts:
+ config: "{{ openshift_buildoverrides_json | default(buildoverrides_yaml) }}"
diff --git a/roles/openshift_buildoverrides/vars/main.yml b/roles/openshift_buildoverrides/vars/main.yml
new file mode 100644
index 000000000..f0f9c255b
--- /dev/null
+++ b/roles/openshift_buildoverrides/vars/main.yml
@@ -0,0 +1,10 @@
+---
+buildoverrides_yaml:
+ BuildOverrides:
+ configuration:
+ apiVersion: v1
+ kind: BuildOverridesConfig
+ forcePull: "{{ openshift_buildoverrides_force_pull | default('', true) }}"
+ imageLabels: "{{ openshift_buildoverrides_image_labels | default(None) }}"
+ nodeSelector: "{{ openshift_buildoverrides_nodeselectors | default(None) }}"
+ annotations: "{{ openshift_buildoverrides_annotations | default(None) }}"
diff --git a/roles/openshift_facts/library/openshift_facts.py b/roles/openshift_facts/library/openshift_facts.py
index 616b41c7b..10121f82a 100755
--- a/roles/openshift_facts/library/openshift_facts.py
+++ b/roles/openshift_facts/library/openshift_facts.py
@@ -1465,7 +1465,9 @@ def merge_facts(orig, new, additive_facts_to_overwrite, protected_facts_to_overw
# here, just completely overwrite with the new if they are present there.
inventory_json_facts = ['admission_plugin_config',
'kube_admission_plugin_config',
- 'image_policy_config']
+ 'image_policy_config',
+ "builddefaults",
+ "buildoverrides"]
facts = dict()
for key, value in iteritems(orig):
@@ -1625,11 +1627,7 @@ def safe_get_bool(fact):
def set_proxy_facts(facts):
- """ Set global proxy facts and promote defaults from http_proxy, https_proxy,
- no_proxy to the more specific builddefaults and builddefaults_git vars.
- 1. http_proxy, https_proxy, no_proxy
- 2. builddefaults_*
- 3. builddefaults_git_*
+ """ Set global proxy facts
Args:
facts(dict): existing facts
@@ -1651,6 +1649,21 @@ def set_proxy_facts(facts):
common['no_proxy'].append(common['hostname'])
common['no_proxy'] = sort_unique(common['no_proxy'])
facts['common'] = common
+ return facts
+
+
+def set_builddefaults_facts(facts):
+ """ Set build defaults including setting proxy values from http_proxy, https_proxy,
+ no_proxy to the more specific builddefaults and builddefaults_git vars.
+ 1. http_proxy, https_proxy, no_proxy
+ 2. builddefaults_*
+ 3. builddefaults_git_*
+
+ Args:
+ facts(dict): existing facts
+ Returns:
+ facts(dict): Updated facts with missing values
+ """
if 'builddefaults' in facts:
builddefaults = facts['builddefaults']
@@ -1660,24 +1673,42 @@ def set_proxy_facts(facts):
builddefaults['http_proxy'] = common['http_proxy']
if 'https_proxy' not in builddefaults and 'https_proxy' in common:
builddefaults['https_proxy'] = common['https_proxy']
- # make no_proxy into a list if it's not
- if 'no_proxy' in builddefaults and isinstance(builddefaults['no_proxy'], string_types):
- builddefaults['no_proxy'] = builddefaults['no_proxy'].split(",")
if 'no_proxy' not in builddefaults and 'no_proxy' in common:
builddefaults['no_proxy'] = common['no_proxy']
+
+ # Create git specific facts from generic values, if git specific values are
+ # not defined.
if 'git_http_proxy' not in builddefaults and 'http_proxy' in builddefaults:
builddefaults['git_http_proxy'] = builddefaults['http_proxy']
if 'git_https_proxy' not in builddefaults and 'https_proxy' in builddefaults:
builddefaults['git_https_proxy'] = builddefaults['https_proxy']
- # If we're actually defining a proxy config then create admission_plugin_config
- # if it doesn't exist, then merge builddefaults[config] structure
- # into admission_plugin_config
- if 'config' in builddefaults and ('http_proxy' in builddefaults or
- 'https_proxy' in builddefaults):
+ if 'git_no_proxy' not in builddefaults and 'no_proxy' in builddefaults:
+ builddefaults['git_no_proxy'] = builddefaults['no_proxy']
+ # If we're actually defining a builddefaults config then create admission_plugin_config
+ # then merge builddefaults[config] structure into admission_plugin_config
+ if 'config' in builddefaults:
if 'admission_plugin_config' not in facts['master']:
facts['master']['admission_plugin_config'] = dict()
facts['master']['admission_plugin_config'].update(builddefaults['config'])
- facts['builddefaults'] = builddefaults
+ return facts
+
+
+def set_buildoverrides_facts(facts):
+ """ Set build overrides
+
+ Args:
+ facts(dict): existing facts
+ Returns:
+ facts(dict): Updated facts with missing values
+ """
+ if 'buildoverrides' in facts:
+ buildoverrides = facts['buildoverrides']
+ # If we're actually defining a buildoverrides config then create admission_plugin_config
+ # then merge buildoverrides[config] structure into admission_plugin_config
+ if 'config' in buildoverrides:
+ if 'admission_plugin_config' not in facts['master']:
+ facts['master']['admission_plugin_config'] = dict()
+ facts['master']['admission_plugin_config'].update(buildoverrides['config'])
return facts
@@ -1816,6 +1847,7 @@ class OpenShiftFacts(object):
OpenShiftFactsUnsupportedRoleError:
"""
known_roles = ['builddefaults',
+ 'buildoverrides',
'clock',
'cloudprovider',
'common',
@@ -1920,6 +1952,8 @@ class OpenShiftFacts(object):
facts = set_aggregate_facts(facts)
facts = set_etcd_facts_if_unset(facts)
facts = set_proxy_facts(facts)
+ facts = set_builddefaults_facts(facts)
+ facts = set_buildoverrides_facts(facts)
if not safe_get_bool(facts['common']['is_containerized']):
facts = set_installed_variant_rpm_facts(facts)
facts = set_nodename(facts)
diff --git a/roles/openshift_master/meta/main.yml b/roles/openshift_master/meta/main.yml
index 3a595b2d1..56af0cf36 100644
--- a/roles/openshift_master/meta/main.yml
+++ b/roles/openshift_master/meta/main.yml
@@ -23,6 +23,7 @@ dependencies:
- role: openshift_clock
- role: openshift_cloud_provider
- role: openshift_builddefaults
+- role: openshift_buildoverrides
- role: os_firewall
os_firewall_allow:
- service: api server https
diff --git a/roles/openshift_master_facts/vars/main.yml b/roles/openshift_master_facts/vars/main.yml
index fa745eb66..bf6d2402d 100644
--- a/roles/openshift_master_facts/vars/main.yml
+++ b/roles/openshift_master_facts/vars/main.yml
@@ -2,24 +2,3 @@
openshift_master_config_dir: "{{ openshift.common.config_base }}/master"
openshift_master_config_file: "{{ openshift_master_config_dir }}/master-config.yaml"
openshift_master_scheduler_conf: "{{ openshift_master_config_dir }}/scheduler.json"
-
-builddefaults_yaml:
- BuildDefaults:
- configuration:
- apiVersion: v1
- kind: BuildDefaultsConfig
- gitHTTPProxy: "{{ openshift.master.builddefaults_git_http_proxy | default(omit, true) }}"
- gitHTTPSProxy: "{{ openshift.master.builddefaults_git_https_proxy | default(omit, true) }}"
- env:
- - name: HTTP_PROXY
- value: "{{ openshift.master.builddefaults_http_proxy | default(omit, true) }}"
- - name: HTTPS_PROXY
- value: "{{ openshift.master.builddefaults_https_proxy | default(omit, true) }}"
- - name: NO_PROXY
- value: "{{ openshift.master.builddefaults_no_proxy | default(omit, true) | join(',') }}"
- - name: http_proxy
- value: "{{ openshift.master.builddefaults_http_proxy | default(omit, true) }}"
- - name: https_proxy
- value: "{{ openshift.master.builddefaults_https_proxy | default(omit, true) }}"
- - name: no_proxy
- value: "{{ openshift.master.builddefaults_no_proxy | default(omit, true) | join(',') }}"