Skip to content

Commit 0ac6446

Browse files
committed
chore: sleep after downloading nodes for 30 minutes
Signed-off-by: Gerard Vanloo <gerard.vanloo@ibm.com>
1 parent db1e497 commit 0ac6446

File tree

6 files changed

+76
-62
lines changed

6 files changed

+76
-62
lines changed

sre/roles/recorders/files/scripts/topology/kubernetes/gather.py

Lines changed: 0 additions & 60 deletions
This file was deleted.
Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
import datetime
2+
import json
3+
import logging
4+
import os
5+
import sys
6+
import time
7+
8+
from datetime import datetime, timedelta, timezone
9+
10+
import requests
11+
12+
from requests.adapters import HTTPAdapter
13+
from urllib3.util import Retry
14+
15+
# Logging
16+
logging.basicConfig(stream=sys.stdout, level=logging.DEBUG)
17+
18+
logger = logging.getLogger(__name__)
19+
20+
21+
def main():
22+
endpoint = os.environ.get("KUBERNETES_TOPOLOGY_MONITOR_ENDPOINT")
23+
if endpoint is None:
24+
sys.exit("error: KUBERNETES_TOPOLOGY_MONITOR_ENDPOINT environment variable is not set")
25+
26+
headers = { "Content-Type": "application/json" }
27+
28+
retries = Retry(total=3, backoff_factor=0.5)
29+
adapter = HTTPAdapter(max_retries=retries)
30+
31+
session = requests.Session()
32+
session.mount("http://", adapter)
33+
session.mount("https://", adapter)
34+
35+
for item in ["nodes", "edges", "graph", "events"]:
36+
response = session.get("{0}/{1}".format(endpoint, item), headers=headers, verify=True)
37+
38+
if response.status_code != 200:
39+
logger.warning("unable to query kubernetes topology mapper for {0}".format(item))
40+
else:
41+
content = response.json()
42+
43+
logger.info("retrieved {0} data".format(item))
44+
45+
utc_seconds = (datetime.now(timezone.utc) - datetime(1970, 1, 1, tzinfo=timezone.utc)).total_seconds()
46+
file_path = os.path.join(os.path.expanduser("~"), "records", "{0}-{1}.json".format(round(utc_seconds), item))
47+
48+
with open(file_path, "w") as f:
49+
json.dump(content, f, indent=4)
50+
51+
logger.debug("download complete. begin sleeping.")
52+
time.sleep(1800)
53+
54+
if __name__ == "__main__":
55+
main()

sre/roles/recorders/tasks/install_topology_recorders_kubernetes.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@
2626
kubernetes.core.k8s:
2727
kubeconfig: "{{ recorders_cluster.kubeconfig }}"
2828
namespace: "{{ recorders_namespace.name }}"
29-
src: files/kubernetes/topology/kubernetes.yaml
29+
src: files/topology/kubernetes/statefulset.yaml
3030
state: present
3131

3232
- name: Update Kubernetes Topology Recorder environment variables

sre/roles/recorders/tasks/uninstall_topology_recorders_kubernetes.yaml

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@
2626
kubernetes.core.k8s:
2727
kubeconfig: "{{ recorders_cluster.kubeconfig }}"
2828
namespace: "{{ recorders_namespace.name }}"
29-
src: files/kubernetes/topology/kubernetes.yaml
29+
src: files/alerts/prometheus/statefulset.yaml
3030
state: absent
3131
wait: true
3232

@@ -41,3 +41,22 @@
4141
namespace: "{{ recorders_namespace.name }}"
4242
state: absent
4343
wait: true
44+
45+
- name: Find all exported JSON files
46+
ansible.builtin.find:
47+
path: /tmp/topology
48+
patterns:
49+
- "*.json"
50+
register: recorders_files
51+
52+
- name: Copy exported data into local directory
53+
ansible.builtin.copy:
54+
dest: "{{ recorders_storage.local.directory }}/{{ file.path | basename }}"
55+
mode: "0644"
56+
src: "{{ file.path }}"
57+
loop: "{{ recorders_files.files }}"
58+
loop_control:
59+
label: file/{{ file.path | basename }}
60+
loop_var: file
61+
when:
62+
- recorders_storage.local is defined

0 commit comments

Comments
 (0)