--- novaclient/client.py | 10 ++++++++++ novaclient/openstack/common/apiclient/client.py | 10 ++++++++++ novaclient/v1_1/client.py | 6 ++++++ novaclient/v3/client.py | 6 ++++++ 4 files changed, 32 insertions(+) --- a/novaclient/client.py +++ b/novaclient/client.py @@ -87,6 +87,7 @@ self.timeout = None self.times = [] # [("item", starttime, endtime), ...] + self.times_max_len = 200 self.management_url = self.bypass_url or None self.auth_token = auth_token @@ -139,6 +140,12 @@ def reset_timings(self): self.times = [] + def get_timings_max_len(self): + return self.times_max_len + + def set_timings_max_len(self, new_len): + self.times_max_len = new_len + def http_log_req(self, method, url, kwargs): if not self.http_log_debug: return @@ -214,6 +221,9 @@ resp, body = self.request(url, method, **kwargs) self.times.append(("%s %s" % (method, url), start_time, time.time())) + # remove oldest items until we maintain max length + while len(self.times) > self.times_max_len: + del self.times[0] return resp, body def _cs_request(self, url, method, **kwargs): --- a/novaclient/openstack/common/apiclient/client.py +++ b/novaclient/openstack/common/apiclient/client.py @@ -90,6 +90,7 @@ self.user_agent = user_agent or self.user_agent self.times = [] # [("item", starttime, endtime), ...] + self.times_max_len = 200 self.timings = timings # requests within the same session can reuse TCP connections from pool @@ -142,6 +143,12 @@ def reset_timings(self): self.times = [] + def get_timings_max_len(self): + return self.times_max_len + + def set_timings_max_len(self, new_len): + self.times_max_len = new_len + def request(self, method, url, **kwargs): """Send an http request with the specified characteristics. @@ -173,6 +180,9 @@ if self.timings: self.times.append(("%s %s" % (method, url), start_time, time.time())) + # remove oldest items until we maintain max length + while len(self.times) > self.times_max_len: + del self.times[0] self._http_log_resp(resp) if resp.status_code >= 400: --- a/novaclient/v1_1/client.py +++ b/novaclient/v1_1/client.py @@ -156,6 +156,12 @@ def reset_timings(self): self.client.reset_timings() + def get_timings_max_len(self): + return self.client.get_timings_max_len() + + def set_timings_max_len(self, new_len): + self.client.set_timings_max_len(new_len) + def authenticate(self): """ Authenticate against the server. --- a/novaclient/v3/client.py +++ b/novaclient/v3/client.py @@ -121,6 +121,12 @@ def reset_timings(self): self.client.reset_timings() + def get_timings_max_len(self): + return self.client.get_timings_max_len() + + def set_timings_max_len(self, new_len): + self.client.set_timings_max_len(new_len) + def authenticate(self): """ Authenticate against the server.