Skip to content

Commit

Permalink
Add logging to charm and k8s adapter
Browse files Browse the repository at this point in the history
  • Loading branch information
relaxdiego committed May 8, 2020
1 parent fd75c8d commit c1386c5
Show file tree
Hide file tree
Showing 3 changed files with 16 additions and 2 deletions.
7 changes: 5 additions & 2 deletions src/adapters/k8s.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
import json
import http.client
import logging
logger = logging.getLogger()
import ssl


Expand Down Expand Up @@ -46,8 +48,9 @@ def request(self, method, path):
'Authorization': f'Bearer {kube_token}'
}

conn = http.client.HTTPSConnection('kubernetes.default.svc',
context=ssl_context)
host = 'kubernetes.default.svc'
conn = http.client.HTTPSConnection(f'{host}', context=ssl_context)
logger.debug(f"{method} {host}/{path}")
conn.request(method=method, url=path, headers=headers)

return json.loads(conn.getresponse().read())
Expand Down
7 changes: 7 additions & 0 deletions src/charm.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
#!/usr/bin/env python3
import logging
logger = logging.getLogger()
import sys
import time
sys.path.append('lib')

from ops.charm import (
Expand Down Expand Up @@ -83,21 +86,25 @@ def on_config_changed_handler(event, fw_adapter):
pod_is_ready = False

while not pod_is_ready:
logging.debug(f"Checking k8s pod readiness")
k8s_pod_status = k8s.get_pod_status(juju_model=juju_model,
juju_app=juju_app,
juju_unit=juju_unit)
juju_unit_status = build_juju_unit_status(k8s_pod_status)
fw_adapter.set_unit_status(juju_unit_status)
pod_is_ready = isinstance(juju_unit_status, ActiveStatus)
time.sleep(1)


def on_start_handler(event, fw_adapter):
logging.debug("Building Juju pod spec")
juju_pod_spec = build_juju_pod_spec(
app_name=fw_adapter.get_app_name(),
charm_config=fw_adapter.get_config(),
image_meta=fw_adapter.get_image_meta('prometheus-image')
)

logging.debug("Configuring pod")
fw_adapter.set_pod_spec(juju_pod_spec)
fw_adapter.set_unit_status(MaintenanceStatus("Configuring pod"))

Expand Down
4 changes: 4 additions & 0 deletions test/charm_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -56,10 +56,14 @@ def test__init__works_without_a_hitch(self,

class OnConfigChangedHandlerTest(unittest.TestCase):

# We are mocking the time module here so that we don't actually wait
# 1 second per loop during test exectution.
@patch('charm.build_juju_unit_status', spec_set=True, autospec=True)
@patch('charm.k8s', spec_set=True, autospec=True)
@patch('charm.time', spec_set=True, autospec=True)
def test__it_blocks_until_pod_is_ready(
self,
mock_time,
mock_k8s_mod,
mock_build_juju_unit_status_func):
# Setup
Expand Down

0 comments on commit c1386c5

Please sign in to comment.