diff --git a/roles/airship-gather-pod-logs/tasks/filter-contexts.yaml b/roles/airship-gather-pod-logs/tasks/filter-contexts.yaml new file mode 100644 index 000000000..1cd7b174d --- /dev/null +++ b/roles/airship-gather-pod-logs/tasks/filter-contexts.yaml @@ -0,0 +1,28 @@ +# 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: "Try to reach {{ ctx_name }} cluster" + shell: |- + kubectl --kubeconfig {{ kubeconfig }} --context {{ ctx_name }} get ns + register: reachable + ignore_errors: true + +- debug: + msg: "{{ ctx_name }} is not reachable and won't be used for pod logs gathering" + when: reachable.rc != 0 + +- name: "Add {{ ctx_name }} to context list" + when: reachable.rc == 0 + set_fact: + kctl_context_list: "{{ kctl_context_list | default([]) + [ ctx_name ] }}" +... diff --git a/roles/airship-gather-pod-logs/tasks/get-contexts.yaml b/roles/airship-gather-pod-logs/tasks/get-contexts.yaml index 60886d83f..45ce5b360 100644 --- a/roles/airship-gather-pod-logs/tasks/get-contexts.yaml +++ b/roles/airship-gather-pod-logs/tasks/get-contexts.yaml @@ -10,11 +10,15 @@ # See the License for the specific language governing permissions and # limitations under the License. - - name: "Save kubeconfig contexts" - shell: |- - kubectl --kubeconfig {{ kubeconfig }} config get-contexts -o name - register: kctl_context_command +--- +- name: "Save kubeconfig contexts" + shell: |- + kubectl --kubeconfig {{ kubeconfig }} config get-contexts -o name + register: kctl_context_command - - name: "Save kubeconfig contexts to list" - set_fact: - kctl_context_list: "{{ kctl_context_command.stdout.split('\n') }}" +- name: "Save contexts for reachable clusters" + with_items: "{{ kctl_context_command.stdout.split('\n') }}" + loop_control: + loop_var: ctx_name + include_tasks: filter-contexts.yaml +... diff --git a/roles/describe-kubernetes-objects/tasks/filter-contexts.yaml b/roles/describe-kubernetes-objects/tasks/filter-contexts.yaml new file mode 100644 index 000000000..e19b4e9d3 --- /dev/null +++ b/roles/describe-kubernetes-objects/tasks/filter-contexts.yaml @@ -0,0 +1,28 @@ +# 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: "Try to reach {{ ctx_name }} cluster" + shell: |- + kubectl --kubeconfig {{ kubeconfig }} --context {{ ctx_name }} get ns + register: reachable + ignore_errors: true + +- debug: + msg: "{{ ctx_name }} is not reachable and won't be used for object desctiption gathering" + when: reachable.rc != 0 + +- name: "Add {{ ctx_name }} to context list" + when: reachable.rc == 0 + set_fact: + kctl_context_list: "{{ kctl_context_list | default([]) + [ ctx_name ] }}" +... diff --git a/roles/describe-kubernetes-objects/tasks/get-contexts.yaml b/roles/describe-kubernetes-objects/tasks/get-contexts.yaml index 45321a771..45ce5b360 100644 --- a/roles/describe-kubernetes-objects/tasks/get-contexts.yaml +++ b/roles/describe-kubernetes-objects/tasks/get-contexts.yaml @@ -16,7 +16,9 @@ kubectl --kubeconfig {{ kubeconfig }} config get-contexts -o name register: kctl_context_command -- name: "Save kubeconfig contexts to list" - set_fact: - kctl_context_list: "{{ kctl_context_command.stdout.split('\n') }}" +- name: "Save contexts for reachable clusters" + with_items: "{{ kctl_context_command.stdout.split('\n') }}" + loop_control: + loop_var: ctx_name + include_tasks: filter-contexts.yaml ...