19
19
from deploy_stack import (
22
from logbreakdown import breakdown_log_by_timeframes
22
from logbreakdown import (
24
breakdown_log_by_timeframes,
23
26
from utility import (
24
27
add_basic_testing_arguments,
67
70
bs_start = datetime.utcnow()
68
71
# Make sure you check the responsiveness of 'juju status'
69
72
with bs_manager.booted_context(upload_tools):
73
client = bs_manager.client
74
admin_client = client.get_admin_client()
75
admin_client.wait_for_started()
76
bs_end = datetime.utcnow()
71
client = bs_manager.client
72
78
# Work around mysql charm wanting 80% memory.
73
79
if client.env.get_cloud() == 'lxd':
82
88
subprocess.check_output(constraint_cmd)
83
admin_client = client.get_admin_client()
84
admin_client.wait_for_started()
85
bs_end = datetime.utcnow()
86
89
bootstrap_timing = TimingData(bs_start, bs_end)
88
91
setup_system_monitoring(admin_client)
149
152
def get_log_message_in_timed_chunks(log_file, deployments):
150
# get timeframesfor the different actions.
151
# Hmm, these are actually stored as datetime objects, no need for the
152
# string conversions etc.
153
bootstrap_timings = (
154
deployments['bootstrap'].start, deployments['bootstrap'].end)
157
deployments['cleanup'].start, deployments['cleanup'].end)
160
(d.timings.start, d.timings.end)
161
for d in deployments['deploys']]
163
def _render_ds_string(start, end):
164
return '{} - {}'.format(start, end)
166
bs_name = _render_ds_string(
167
deployments['bootstrap'].start,
168
deployments['bootstrap'].end)
170
cleanup_name = _render_ds_string(
171
deployments['cleanup'].start,
172
deployments['cleanup'].end)
153
"""Breakdown log into timechunks based on event timeranges in 'deployments'
156
deploy_timings = [d.timings for d in deployments['deploys']]
158
bootstrap = deployments['bootstrap']
159
cleanup = deployments['cleanup']
160
all_event_timings = [bootstrap] + deploy_timings + [cleanup]
162
raw_details = breakdown_log_by_timeframes(log_file, all_event_timings)
164
bs_name = _render_ds_string(bootstrap.start, bootstrap.end)
165
cleanup_name = _render_ds_string(cleanup.start, cleanup.end)
175
168
bs_name: 'Bootstrap',
180
173
dep.timings.start, dep.timings.end)
181
174
name_lookup[name_range] = dep.name
183
all_timings = [bootstrap_timings] + deploy_timings + [cleanup_timings]
185
raw_details = breakdown_log_by_timeframes(log_file, all_timings)
187
176
event_details = defaultdict(defaultdict)
188
177
# Outer-layer (i.e. event)
189
178
for event_range in raw_details.keys():