From e56ac91f1f0a54ca428b7838b0cdf91045ddb8e6 Mon Sep 17 00:00:00 2001
From: Clayton Coleman <ccoleman@redhat.com>
Date: Sun, 29 Oct 2017 16:16:18 -0400
Subject: GCP cannot use AWS growpart package

Make the required package optional
---
 playbooks/aws/openshift-cluster/build_ami.yml | 2 ++
 roles/openshift_node/defaults/main.yml        | 4 ++--
 roles/openshift_node/tasks/bootstrap.yml      | 2 +-
 3 files changed, 5 insertions(+), 3 deletions(-)

diff --git a/playbooks/aws/openshift-cluster/build_ami.yml b/playbooks/aws/openshift-cluster/build_ami.yml
index 5b4a6a1e8..fae30eb0a 100644
--- a/playbooks/aws/openshift-cluster/build_ami.yml
+++ b/playbooks/aws/openshift-cluster/build_ami.yml
@@ -28,6 +28,8 @@
     set_fact:
       ansible_ssh_user: "{{ openshift_aws_build_ami_ssh_user | default(ansible_ssh_user) }}"
       openshift_node_bootstrap: True
+      openshift_node_image_prep_packages:
+      - cloud-utils-growpart
 
 # This is the part that installs all of the software and configs for the instance
 # to become a node.
diff --git a/roles/openshift_node/defaults/main.yml b/roles/openshift_node/defaults/main.yml
index b9f16dfd4..37f48e724 100644
--- a/roles/openshift_node/defaults/main.yml
+++ b/roles/openshift_node/defaults/main.yml
@@ -9,7 +9,7 @@ openshift_service_type: "{{ 'origin' if openshift_deployment_type == 'origin' el
 
 openshift_image_tag: ''
 
-openshift_node_ami_prep_packages:
+default_r_openshift_node_image_prep_packages:
 - "{{ openshift_service_type }}-master"
 - "{{ openshift_service_type }}-node"
 - "{{ openshift_service_type }}-docker-excluder"
@@ -33,7 +33,6 @@ openshift_node_ami_prep_packages:
 - python-dbus
 - PyYAML
 - yum-utils
-- cloud-utils-growpart
 # gluster
 - glusterfs-fuse
 # nfs
@@ -54,6 +53,7 @@ openshift_node_ami_prep_packages:
 # - container-selinux
 # - atomic
 #
+r_openshift_node_image_prep_packages: "{{ default_r_openshift_node_image_prep_packages | union(openshift_node_image_prep_packages | default([])) }}"
 
 openshift_node_bootstrap: False
 
diff --git a/roles/openshift_node/tasks/bootstrap.yml b/roles/openshift_node/tasks/bootstrap.yml
index 2deb005da..cf22181a8 100644
--- a/roles/openshift_node/tasks/bootstrap.yml
+++ b/roles/openshift_node/tasks/bootstrap.yml
@@ -3,7 +3,7 @@
   package:
     name: "{{ item }}"
     state: present
-  with_items: "{{ openshift_node_ami_prep_packages }}"
+  with_items: "{{ r_openshift_node_image_prep_packages }}"
 
 - name: create the directory for node
   file:
-- 
cgit v1.2.3


From 07a2312baffb85b0f5acc582e00bc22cbc7e5394 Mon Sep 17 00:00:00 2001
From: Clayton Coleman <ccoleman@redhat.com>
Date: Sun, 29 Oct 2017 16:16:39 -0400
Subject: Allow master node group to wait for stable on GCP

Masters can be in a bootstrap config, but allow them to wait for stable
so that we don't have inventory issues.
---
 roles/openshift_gcp/templates/provision.j2.sh | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/roles/openshift_gcp/templates/provision.j2.sh b/roles/openshift_gcp/templates/provision.j2.sh
index 5ed6d9f84..4d150bc74 100644
--- a/roles/openshift_gcp/templates/provision.j2.sh
+++ b/roles/openshift_gcp/templates/provision.j2.sh
@@ -313,11 +313,11 @@ fi
 
 # wait until all node groups are stable
 {% for node_group in openshift_gcp_node_group_config %}
-{% if node_group.bootstrap | default(False) %}
-# not waiting for {{ node_group.name }} due to bootstrapping
-{% else %}
+{% if node_group.wait_for_stable | default(False) or not (node_group.bootstrap | default(False)) %}
 # wait for stable {{ node_group.name }}
 ( gcloud --project "{{ openshift_gcp_project }}" compute instance-groups managed wait-until-stable "{{ openshift_gcp_prefix }}ig-{{ node_group.suffix }}" --zone "{{ openshift_gcp_zone }}" --timeout=600 ) &
+{% else %}
+# not waiting for {{ node_group.name }} due to bootstrapping
 {% endif %}
 {% endfor %}
 
-- 
cgit v1.2.3


From cf28d0a7711ceefdde4100495c8278278d27d148 Mon Sep 17 00:00:00 2001
From: Clayton Coleman <ccoleman@redhat.com>
Date: Sun, 29 Oct 2017 16:57:56 -0400
Subject: Use openshift.node.registry_url instead of oreg_url

Consistent with other use
---
 roles/openshift_master/defaults/main.yml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/roles/openshift_master/defaults/main.yml b/roles/openshift_master/defaults/main.yml
index 3da861d03..e78c78bb2 100644
--- a/roles/openshift_master/defaults/main.yml
+++ b/roles/openshift_master/defaults/main.yml
@@ -71,7 +71,7 @@ openshift_master_bootstrap_enabled: False
 
 openshift_master_client_binary: "{{ openshift.common.client_binary if openshift is defined else 'oc' }}"
 
-openshift_master_config_imageconfig_format: "{{ oreg_url if oreg_url != '' else 'registry.access.redhat.com/openshift3/ose-${component}:${version}' }}"
+openshift_master_config_imageconfig_format: "{{ openshift.node.registry_url }}"
 
 # these are for the default settings in a generated node-config.yaml
 openshift_master_node_config_default_edits:
-- 
cgit v1.2.3


From d2dd9cb8a80a20200102279ecbc81e41adc16867 Mon Sep 17 00:00:00 2001
From: Clayton Coleman <ccoleman@redhat.com>
Date: Sun, 29 Oct 2017 16:58:26 -0400
Subject: Remove project metadata prefixed with the cluster prefix

Allows other scripts to create metadata that is cleaned up safely.
---
 roles/openshift_gcp/templates/remove.j2.sh | 11 ++++++++++-
 1 file changed, 10 insertions(+), 1 deletion(-)

diff --git a/roles/openshift_gcp/templates/remove.j2.sh b/roles/openshift_gcp/templates/remove.j2.sh
index a1e0affec..fdc96d229 100644
--- a/roles/openshift_gcp/templates/remove.j2.sh
+++ b/roles/openshift_gcp/templates/remove.j2.sh
@@ -37,7 +37,7 @@ function teardown() {
 # scale down {{ node_group.name }}
 (
     # performs a delete and scale down as one operation to ensure maximum parallelism
-    if ! instances=$( gcloud --project "{{ openshift_gcp_project }}" compute instance-groups managed list-instances "{{ openshift_gcp_prefix }}ig-{{ node_group.suffix }}" --zone "{{ openshift_gcp_zone }}" --format='value[terminator=","](instance)' ); then
+    if ! instances=$( gcloud --project "{{ openshift_gcp_project }}" compute instance-groups managed list-instances "{{ openshift_gcp_prefix }}ig-{{ node_group.suffix }}" --zone "{{ openshift_gcp_zone }}" --format='value[terminator=","](instance)' 2>/dev/null ); then
         exit 0
     fi
     instances="${instances%?}"
@@ -59,6 +59,15 @@ if gsutil ls -p "{{ openshift_gcp_project }}" "gs://{{ openshift_gcp_registry_bu
 fi
 ) &
 
+# Project metadata prefixed with {{ openshift_gcp_prefix }}
+(
+    for key in $( gcloud --project "{{ openshift_gcp_project }}" compute project-info describe --flatten=commonInstanceMetadata.items[] '--format=value(commonInstanceMetadata.items.key)' ); do
+        if [[ "${key}" == "{{ openshift_gcp_prefix }}"* ]]; then
+            gcloud --project "{{ openshift_gcp_project }}" compute project-info remove-metadata "--keys=${key}"
+        fi
+    done
+) &
+
 # DNS
 (
 dns_zone="{{ dns_managed_zone | default(openshift_gcp_prefix + 'managed-zone') }}"
-- 
cgit v1.2.3


From d3730aa2dcd3f68513fe350e115e1a44e7c4c229 Mon Sep 17 00:00:00 2001
From: Clayton Coleman <ccoleman@redhat.com>
Date: Mon, 30 Oct 2017 22:02:05 -0400
Subject: Use global IP to indicate node should pick DNS

---
 roles/openshift_master/tasks/bootstrap.yml | 1 +
 1 file changed, 1 insertion(+)

diff --git a/roles/openshift_master/tasks/bootstrap.yml b/roles/openshift_master/tasks/bootstrap.yml
index eee89743c..4fdfa6330 100644
--- a/roles/openshift_master/tasks/bootstrap.yml
+++ b/roles/openshift_master/tasks/bootstrap.yml
@@ -42,6 +42,7 @@
     --node-dir={{ mktempout.stdout }}/
     --node=CONFIGMAP
     --hostnames=test
+    --dns-ip=0.0.0.0
     --certificate-authority={{ openshift_master_config_dir }}/ca.crt
     --signer-cert={{ openshift_master_config_dir }}/ca.crt
     --signer-key={{ openshift_master_config_dir }}/ca.key
-- 
cgit v1.2.3


From 971e224650387a873e01af29bf135f47ab2f6980 Mon Sep 17 00:00:00 2001
From: Clayton Coleman <ccoleman@redhat.com>
Date: Mon, 30 Oct 2017 23:28:53 -0400
Subject: Delete images located in a family named {{ prefix }}images

Allows CI jobs to create images specifically for this cluster and then
remove them afterwards.
---
 roles/openshift_gcp/templates/remove.j2.sh | 9 ++++++++-
 1 file changed, 8 insertions(+), 1 deletion(-)

diff --git a/roles/openshift_gcp/templates/remove.j2.sh b/roles/openshift_gcp/templates/remove.j2.sh
index fdc96d229..10b463349 100644
--- a/roles/openshift_gcp/templates/remove.j2.sh
+++ b/roles/openshift_gcp/templates/remove.j2.sh
@@ -161,5 +161,12 @@ for i in `jobs -p`; do wait $i; done
 
 for i in `jobs -p`; do wait $i; done
 
+# Images specifically located under this cluster prefix family
+for name in $( gcloud --project "{{ openshift_gcp_project }}" compute images list "--filter=family={{ openshift_gcp_prefix }}images" '--format=value(name)' ); do
+    ( gcloud --project "{{ openshift_gcp_project }}" compute images delete "${name}" ) &
+done
+
 # Network
-teardown "{{ openshift_gcp_network_name }}" compute networks
+( teardown "{{ openshift_gcp_network_name }}" compute networks ) &
+
+for i in `jobs -p`; do wait $i; done
\ No newline at end of file
-- 
cgit v1.2.3