diff options
Diffstat (limited to 'meta-openstack')
18 files changed, 374 insertions, 7 deletions
diff --git a/meta-openstack/recipes-devtools/python/python-ceilometer/ceilometer.conf b/meta-openstack/recipes-devtools/python/python-ceilometer/ceilometer.conf index 4632f40..6340a15 100644 --- a/meta-openstack/recipes-devtools/python/python-ceilometer/ceilometer.conf +++ b/meta-openstack/recipes-devtools/python/python-ceilometer/ceilometer.conf | |||
@@ -868,4 +868,5 @@ admin_tenant_name=%SERVICE_TENANT_NAME% | |||
868 | # Password for Redis server. (optional) (string value) | 868 | # Password for Redis server. (optional) (string value) |
869 | #password=<None> | 869 | #password=<None> |
870 | 870 | ||
871 | 871 | # [nova_client] | |
872 | # max_timing_buffer=100 | ||
diff --git a/meta-openstack/recipes-devtools/python/python-ceilometer/fix_ceilometer_memory_leak.patch b/meta-openstack/recipes-devtools/python/python-ceilometer/fix_ceilometer_memory_leak.patch new file mode 100644 index 0000000..bdc1bf7 --- /dev/null +++ b/meta-openstack/recipes-devtools/python/python-ceilometer/fix_ceilometer_memory_leak.patch | |||
@@ -0,0 +1,27 @@ | |||
1 | --- | ||
2 | ceilometer/nova_client.py | 7 +++++++ | ||
3 | 1 file changed, 7 insertions(+) | ||
4 | |||
5 | --- a/ceilometer/nova_client.py | ||
6 | +++ b/ceilometer/nova_client.py | ||
7 | @@ -26,6 +26,12 @@ | ||
8 | |||
9 | LOG = log.getLogger(__name__) | ||
10 | |||
11 | +nova_client_opts = [ | ||
12 | + cfg.IntOpt('max_timing_buffer', | ||
13 | + default=200, | ||
14 | + help='The max number of the timing objects to keep'), | ||
15 | +] | ||
16 | +cfg.CONF.register_opts(nova_client_opts, group="nova_client") | ||
17 | |||
18 | def logged(func): | ||
19 | |||
20 | @@ -56,6 +62,7 @@ | ||
21 | endpoint_type=conf.os_endpoint_type, | ||
22 | cacert=conf.os_cacert, | ||
23 | no_cache=True) | ||
24 | + self.nova_client.set_timings_max_len(cfg.CONF.nova_client.max_timing_buffer) | ||
25 | |||
26 | def _with_flavor_and_image(self, instances): | ||
27 | for instance in instances: | ||
diff --git a/meta-openstack/recipes-devtools/python/python-ceilometer_git.bb b/meta-openstack/recipes-devtools/python/python-ceilometer_git.bb index 7d1796d..f77cf1d 100644 --- a/meta-openstack/recipes-devtools/python/python-ceilometer_git.bb +++ b/meta-openstack/recipes-devtools/python/python-ceilometer_git.bb | |||
@@ -11,6 +11,7 @@ SRC_URI = "git://github.com/openstack/${SRCNAME}.git;branch=master \ | |||
11 | file://ceilometer.conf \ | 11 | file://ceilometer.conf \ |
12 | file://ceilometer.init \ | 12 | file://ceilometer.init \ |
13 | file://0001-sqlalchemy-Fix-for-get_statistics-with-postgresql.patch \ | 13 | file://0001-sqlalchemy-Fix-for-get_statistics-with-postgresql.patch \ |
14 | file://fix_ceilometer_memory_leak.patch \ | ||
14 | " | 15 | " |
15 | 16 | ||
16 | SRCREV="a4c7411ac903984c7e7524469f89a417cf9cf97e" | 17 | SRCREV="a4c7411ac903984c7e7524469f89a417cf9cf97e" |
diff --git a/meta-openstack/recipes-devtools/python/python-ceilometerclient/fix_ceilometerclient_memory_leak.patch b/meta-openstack/recipes-devtools/python/python-ceilometerclient/fix_ceilometerclient_memory_leak.patch new file mode 100644 index 0000000..8abc654 --- /dev/null +++ b/meta-openstack/recipes-devtools/python/python-ceilometerclient/fix_ceilometerclient_memory_leak.patch | |||
@@ -0,0 +1,37 @@ | |||
1 | --- | ||
2 | ceilometerclient/openstack/common/apiclient/client.py | 12 ++++++++++++ | ||
3 | 1 file changed, 12 insertions(+) | ||
4 | |||
5 | --- a/ceilometerclient/openstack/common/apiclient/client.py | ||
6 | +++ b/ceilometerclient/openstack/common/apiclient/client.py | ||
7 | @@ -90,6 +90,7 @@ | ||
8 | self.user_agent = user_agent or self.user_agent | ||
9 | |||
10 | self.times = [] # [("item", starttime, endtime), ...] | ||
11 | + self.times_max_len = 200 | ||
12 | self.timings = timings | ||
13 | |||
14 | # requests within the same session can reuse TCP connections from pool | ||
15 | @@ -142,6 +143,12 @@ | ||
16 | def reset_timings(self): | ||
17 | self.times = [] | ||
18 | |||
19 | + def get_timings_max_len(self): | ||
20 | + return self.times_max_len | ||
21 | + | ||
22 | + def set_timings_max_len(self, new_len): | ||
23 | + self.times_max_len = new_len | ||
24 | + | ||
25 | def request(self, method, url, **kwargs): | ||
26 | """Send an http request with the specified characteristics. | ||
27 | |||
28 | @@ -173,6 +180,9 @@ | ||
29 | if self.timings: | ||
30 | self.times.append(("%s %s" % (method, url), | ||
31 | start_time, time.time())) | ||
32 | + # remove oldest items until we maintain max length | ||
33 | + while len(self.times) > self.times_max_len: | ||
34 | + del self.times[0] | ||
35 | self._http_log_resp(resp) | ||
36 | |||
37 | if resp.status_code >= 400: | ||
diff --git a/meta-openstack/recipes-devtools/python/python-ceilometerclient_git.bb b/meta-openstack/recipes-devtools/python/python-ceilometerclient_git.bb index 811bbd5..c7c6ff4 100644 --- a/meta-openstack/recipes-devtools/python/python-ceilometerclient_git.bb +++ b/meta-openstack/recipes-devtools/python/python-ceilometerclient_git.bb | |||
@@ -20,7 +20,10 @@ RDEPENDS_${PN} +="python-cliff \ | |||
20 | 20 | ||
21 | PR = "r0" | 21 | PR = "r0" |
22 | 22 | ||
23 | SRC_URI = "git://github.com/openstack/python-ceilometerclient.git;branch=master" | 23 | SRC_URI = "\ |
24 | git://github.com/openstack/python-ceilometerclient.git;branch=master \ | ||
25 | file://fix_ceilometerclient_memory_leak.patch \ | ||
26 | " | ||
24 | 27 | ||
25 | PV="1.0.9+git${SRCPV}" | 28 | PV="1.0.9+git${SRCPV}" |
26 | SRCREV="6f4ec9dc96477131c90040ee00f5535e50d5f914" | 29 | SRCREV="6f4ec9dc96477131c90040ee00f5535e50d5f914" |
diff --git a/meta-openstack/recipes-devtools/python/python-cinder/cinder.conf b/meta-openstack/recipes-devtools/python/python-cinder/cinder.conf index fff6910..99a0fc7 100644 --- a/meta-openstack/recipes-devtools/python/python-cinder/cinder.conf +++ b/meta-openstack/recipes-devtools/python/python-cinder/cinder.conf | |||
@@ -1218,3 +1218,6 @@ rbd_user=cinder-volume | |||
1218 | volume_backend_name=RBD_CEPH | 1218 | volume_backend_name=RBD_CEPH |
1219 | 1219 | ||
1220 | # Total option count: 255 | 1220 | # Total option count: 255 |
1221 | |||
1222 | # [nova_client] | ||
1223 | # max_timing_buffer=100 | ||
diff --git a/meta-openstack/recipes-devtools/python/python-cinder/fix_cinder_memory_leak.patch b/meta-openstack/recipes-devtools/python/python-cinder/fix_cinder_memory_leak.patch new file mode 100644 index 0000000..2566531 --- /dev/null +++ b/meta-openstack/recipes-devtools/python/python-cinder/fix_cinder_memory_leak.patch | |||
@@ -0,0 +1,28 @@ | |||
1 | --- | ||
2 | cinder/compute/nova.py | 8 ++++++++ | ||
3 | 1 file changed, 8 insertions(+) | ||
4 | |||
5 | --- a/cinder/compute/nova.py | ||
6 | +++ b/cinder/compute/nova.py | ||
7 | @@ -57,6 +57,13 @@ | ||
8 | CONF = cfg.CONF | ||
9 | CONF.register_opts(nova_opts) | ||
10 | |||
11 | +nova_client_opts = [ | ||
12 | + cfg.IntOpt('max_timing_buffer', | ||
13 | + default=200, | ||
14 | + help='The max number of the timing objects to keep'), | ||
15 | +] | ||
16 | +cfg.CONF.register_opts(nova_client_opts, group="nova_client") | ||
17 | + | ||
18 | LOG = logging.getLogger(__name__) | ||
19 | |||
20 | |||
21 | @@ -106,6 +113,7 @@ | ||
22 | insecure=CONF.nova_api_insecure, | ||
23 | cacert=CONF.nova_ca_certificates_file, | ||
24 | extensions=extensions) | ||
25 | + c.set_timings_max_len(cfg.CONF.nova_client.max_timing_buffer) | ||
26 | # noauth extracts user_id:project_id from auth_token | ||
27 | c.client.auth_token = context.auth_token or '%s:%s' % (context.user_id, | ||
28 | context.project_id) | ||
diff --git a/meta-openstack/recipes-devtools/python/python-cinder_git.bb b/meta-openstack/recipes-devtools/python/python-cinder_git.bb index 8b08dbb..15a2608 100644 --- a/meta-openstack/recipes-devtools/python/python-cinder_git.bb +++ b/meta-openstack/recipes-devtools/python/python-cinder_git.bb | |||
@@ -16,6 +16,7 @@ SRC_URI = "git://github.com/openstack/${SRCNAME}.git;branch=stable/havana \ | |||
16 | file://glusterfs_setup.sh \ | 16 | file://glusterfs_setup.sh \ |
17 | file://lvm_iscsi_setup.sh \ | 17 | file://lvm_iscsi_setup.sh \ |
18 | file://add-cinder-volume-types.sh \ | 18 | file://add-cinder-volume-types.sh \ |
19 | file://fix_cinder_memory_leak.patch \ | ||
19 | " | 20 | " |
20 | 21 | ||
21 | SRCREV="8b5fb8409322f61d8b610c97c109a61bf48a940e" | 22 | SRCREV="8b5fb8409322f61d8b610c97c109a61bf48a940e" |
diff --git a/meta-openstack/recipes-devtools/python/python-cinderclient/fix_cinderclient_memory_leak.patch b/meta-openstack/recipes-devtools/python/python-cinderclient/fix_cinderclient_memory_leak.patch new file mode 100644 index 0000000..137edfd --- /dev/null +++ b/meta-openstack/recipes-devtools/python/python-cinderclient/fix_cinderclient_memory_leak.patch | |||
@@ -0,0 +1,37 @@ | |||
1 | --- | ||
2 | cinderclient/openstack/common/apiclient/client.py | 10 ++++++++++ | ||
3 | 1 file changed, 10 insertions(+) | ||
4 | |||
5 | --- a/cinderclient/openstack/common/apiclient/client.py | ||
6 | +++ b/cinderclient/openstack/common/apiclient/client.py | ||
7 | @@ -90,6 +90,7 @@ | ||
8 | self.user_agent = user_agent or self.user_agent | ||
9 | |||
10 | self.times = [] # [("item", starttime, endtime), ...] | ||
11 | + self.times_max_len = 200 | ||
12 | self.timings = timings | ||
13 | |||
14 | # requests within the same session can reuse TCP connections from pool | ||
15 | @@ -142,6 +143,12 @@ | ||
16 | def reset_timings(self): | ||
17 | self.times = [] | ||
18 | |||
19 | + def get_timings_max_len(self): | ||
20 | + return self.times_max_len | ||
21 | + | ||
22 | + def set_timings_max_len(self, new_len): | ||
23 | + self.times_max_len = new_len | ||
24 | + | ||
25 | def request(self, method, url, **kwargs): | ||
26 | """Send an http request with the specified characteristics. | ||
27 | |||
28 | @@ -173,6 +180,9 @@ | ||
29 | if self.timings: | ||
30 | self.times.append(("%s %s" % (method, url), | ||
31 | start_time, time.time())) | ||
32 | + # remove oldest items until we maintain max length | ||
33 | + while len(self.times) > self.times_max_len: | ||
34 | + del self.times[0] | ||
35 | self._http_log_resp(resp) | ||
36 | |||
37 | if resp.status_code >= 400: | ||
diff --git a/meta-openstack/recipes-devtools/python/python-cinderclient_git.bb b/meta-openstack/recipes-devtools/python/python-cinderclient_git.bb index f12975e..3c7293b 100644 --- a/meta-openstack/recipes-devtools/python/python-cinderclient_git.bb +++ b/meta-openstack/recipes-devtools/python/python-cinderclient_git.bb | |||
@@ -8,7 +8,10 @@ DEPENDS = "python-setuptools-git" | |||
8 | PR = "r0" | 8 | PR = "r0" |
9 | SRCNAME = "python-cinderclient" | 9 | SRCNAME = "python-cinderclient" |
10 | 10 | ||
11 | SRC_URI = "git://github.com/openstack/python-cinderclient.git;branch=master" | 11 | SRC_URI = "\ |
12 | git://github.com/openstack/python-cinderclient.git;branch=master \ | ||
13 | file://fix_cinderclient_memory_leak.patch \ | ||
14 | " | ||
12 | 15 | ||
13 | PV="1.0.8+git${SRCPV}" | 16 | PV="1.0.8+git${SRCPV}" |
14 | SRCREV="ea8c9554c947b7fd30adfb1249a9317f258901ab" | 17 | SRCREV="ea8c9554c947b7fd30adfb1249a9317f258901ab" |
diff --git a/meta-openstack/recipes-devtools/python/python-glanceclient/fix_glanceclient_memory_leak.patch b/meta-openstack/recipes-devtools/python/python-glanceclient/fix_glanceclient_memory_leak.patch new file mode 100644 index 0000000..754d83f --- /dev/null +++ b/meta-openstack/recipes-devtools/python/python-glanceclient/fix_glanceclient_memory_leak.patch | |||
@@ -0,0 +1,37 @@ | |||
1 | --- | ||
2 | glanceclient/openstack/common/apiclient/client.py | 10 ++++++++++ | ||
3 | 1 file changed, 10 insertions(+) | ||
4 | |||
5 | --- a/glanceclient/openstack/common/apiclient/client.py | ||
6 | +++ b/glanceclient/openstack/common/apiclient/client.py | ||
7 | @@ -90,6 +90,7 @@ | ||
8 | self.user_agent = user_agent or self.user_agent | ||
9 | |||
10 | self.times = [] # [("item", starttime, endtime), ...] | ||
11 | + self.times_max_len = 200 | ||
12 | self.timings = timings | ||
13 | |||
14 | # requests within the same session can reuse TCP connections from pool | ||
15 | @@ -142,6 +143,12 @@ | ||
16 | def reset_timings(self): | ||
17 | self.times = [] | ||
18 | |||
19 | + def get_timings_max_len(self): | ||
20 | + return self.times_max_len | ||
21 | + | ||
22 | + def set_timings_max_len(self, new_len): | ||
23 | + self.times_max_len = new_len | ||
24 | + | ||
25 | def request(self, method, url, **kwargs): | ||
26 | """Send an http request with the specified characteristics. | ||
27 | |||
28 | @@ -173,6 +180,9 @@ | ||
29 | if self.timings: | ||
30 | self.times.append(("%s %s" % (method, url), | ||
31 | start_time, time.time())) | ||
32 | + # remove oldest items until we maintain max length | ||
33 | + while len(self.times) > self.times_max_len: | ||
34 | + del self.times[0] | ||
35 | self._http_log_resp(resp) | ||
36 | |||
37 | if resp.status_code >= 400: | ||
diff --git a/meta-openstack/recipes-devtools/python/python-glanceclient_git.bb b/meta-openstack/recipes-devtools/python/python-glanceclient_git.bb index 1d7a4d1..7777f99 100644 --- a/meta-openstack/recipes-devtools/python/python-glanceclient_git.bb +++ b/meta-openstack/recipes-devtools/python/python-glanceclient_git.bb | |||
@@ -13,7 +13,10 @@ SRCREV = "23ad1d6db7ec8116afed7c8aca3832dac440930a" | |||
13 | PV = "0.12.0+gitr${SRCREV}" | 13 | PV = "0.12.0+gitr${SRCREV}" |
14 | PR = "0" | 14 | PR = "0" |
15 | 15 | ||
16 | SRC_URI = "git://github.com/openstack/${PN}.git;protocol=https" | 16 | SRC_URI = "\ |
17 | git://github.com/openstack/${PN}.git;protocol=https \ | ||
18 | file://fix_glanceclient_memory_leak.patch \ | ||
19 | " | ||
17 | 20 | ||
18 | S = "${WORKDIR}/git" | 21 | S = "${WORKDIR}/git" |
19 | 22 | ||
diff --git a/meta-openstack/recipes-devtools/python/python-hp3parclient/fix_hp3parclient_memory_leak.patch b/meta-openstack/recipes-devtools/python/python-hp3parclient/fix_hp3parclient_memory_leak.patch new file mode 100644 index 0000000..ac196fd --- /dev/null +++ b/meta-openstack/recipes-devtools/python/python-hp3parclient/fix_hp3parclient_memory_leak.patch | |||
@@ -0,0 +1,37 @@ | |||
1 | --- | ||
2 | hp3parclient/http.py | 10 ++++++++++ | ||
3 | 1 file changed, 10 insertions(+) | ||
4 | |||
5 | --- a/hp3parclient/http.py | ||
6 | +++ b/hp3parclient/http.py | ||
7 | @@ -61,6 +61,7 @@ | ||
8 | self.set_debug_flag(http_log_debug) | ||
9 | |||
10 | self.times = [] # [("item", starttime, endtime), ...] | ||
11 | + self.times_max_len = 200 | ||
12 | |||
13 | # httplib2 overrides | ||
14 | self.force_exception_to_status_code = True | ||
15 | @@ -141,6 +142,12 @@ | ||
16 | """ | ||
17 | self.times = [] | ||
18 | |||
19 | + def get_timings_max_len(self): | ||
20 | + return self.times_max_len | ||
21 | + | ||
22 | + def set_timings_max_len(self, new_len): | ||
23 | + self.times_max_len = new_len | ||
24 | + | ||
25 | def _http_log_req(self, args, kwargs): | ||
26 | if not self.http_log_debug: | ||
27 | return | ||
28 | @@ -205,6 +212,9 @@ | ||
29 | resp, body = self.request(url, method, **kwargs) | ||
30 | self.times.append(("%s %s" % (method, url), | ||
31 | start_time, time.time())) | ||
32 | + # remove oldest items until we maintain max length | ||
33 | + while len(self.times) > self.times_max_len: | ||
34 | + del self.times[0] | ||
35 | return resp, body | ||
36 | |||
37 | |||
diff --git a/meta-openstack/recipes-devtools/python/python-hp3parclient_2.0.0.bb b/meta-openstack/recipes-devtools/python/python-hp3parclient_2.0.0.bb index 75ad641..9be086f 100644 --- a/meta-openstack/recipes-devtools/python/python-hp3parclient_2.0.0.bb +++ b/meta-openstack/recipes-devtools/python/python-hp3parclient_2.0.0.bb | |||
@@ -7,7 +7,10 @@ LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=3b83ef96387f14655fc854ddc3c6bd57" | |||
7 | PR = "r0" | 7 | PR = "r0" |
8 | SRCNAME = "hp3parclient" | 8 | SRCNAME = "hp3parclient" |
9 | 9 | ||
10 | SRC_URI = "https://pypi.python.org/packages/source/h/${SRCNAME}/${SRCNAME}-${PV}.tar.gz" | 10 | SRC_URI = "\ |
11 | https://pypi.python.org/packages/source/h/${SRCNAME}/${SRCNAME}-${PV}.tar.gz \ | ||
12 | file://fix_hp3parclient_memory_leak.patch \ | ||
13 | " | ||
11 | 14 | ||
12 | SRC_URI[md5sum] = "52cdcb930eb0dc81d93689abe169c502" | 15 | SRC_URI[md5sum] = "52cdcb930eb0dc81d93689abe169c502" |
13 | SRC_URI[sha256sum] = "bab78a3fa14236d7884af52271fd91d08d51ec99b7e2d6c6fb477bfdfb9ef259" | 16 | SRC_URI[sha256sum] = "bab78a3fa14236d7884af52271fd91d08d51ec99b7e2d6c6fb477bfdfb9ef259" |
diff --git a/meta-openstack/recipes-devtools/python/python-keystoneclient/fix_keystoneclient_memory_leak.patch b/meta-openstack/recipes-devtools/python/python-keystoneclient/fix_keystoneclient_memory_leak.patch new file mode 100644 index 0000000..05a1d23 --- /dev/null +++ b/meta-openstack/recipes-devtools/python/python-keystoneclient/fix_keystoneclient_memory_leak.patch | |||
@@ -0,0 +1,37 @@ | |||
1 | --- | ||
2 | keystoneclient/openstack/common/apiclient/client.py | 10 ++++++++++ | ||
3 | 1 file changed, 10 insertions(+) | ||
4 | |||
5 | --- a/keystoneclient/openstack/common/apiclient/client.py | ||
6 | +++ b/keystoneclient/openstack/common/apiclient/client.py | ||
7 | @@ -90,6 +90,7 @@ | ||
8 | self.user_agent = user_agent or self.user_agent | ||
9 | |||
10 | self.times = [] # [("item", starttime, endtime), ...] | ||
11 | + self.times_max_len = 200 | ||
12 | self.timings = timings | ||
13 | |||
14 | # requests within the same session can reuse TCP connections from pool | ||
15 | @@ -142,6 +143,12 @@ | ||
16 | def reset_timings(self): | ||
17 | self.times = [] | ||
18 | |||
19 | + def get_timings_max_len(self): | ||
20 | + return self.times_max_len | ||
21 | + | ||
22 | + def set_timings_max_len(self, new_len): | ||
23 | + self.times_max_len = new_len | ||
24 | + | ||
25 | def request(self, method, url, **kwargs): | ||
26 | """Send an http request with the specified characteristics. | ||
27 | |||
28 | @@ -173,6 +180,9 @@ | ||
29 | if self.timings: | ||
30 | self.times.append(("%s %s" % (method, url), | ||
31 | start_time, time.time())) | ||
32 | + # remove oldest items until we maintain max length | ||
33 | + while len(self.times) > self.times_max_len: | ||
34 | + del self.times[0] | ||
35 | self._http_log_resp(resp) | ||
36 | |||
37 | if resp.status_code >= 400: | ||
diff --git a/meta-openstack/recipes-devtools/python/python-keystoneclient_git.bb b/meta-openstack/recipes-devtools/python/python-keystoneclient_git.bb index be2395a..89d8a9a 100644 --- a/meta-openstack/recipes-devtools/python/python-keystoneclient_git.bb +++ b/meta-openstack/recipes-devtools/python/python-keystoneclient_git.bb | |||
@@ -6,7 +6,10 @@ LIC_FILES_CHKSUM = "file://LICENSE;md5=4a4d0e932ffae1c0131528d30d419c55" | |||
6 | 6 | ||
7 | PR = "r0" | 7 | PR = "r0" |
8 | 8 | ||
9 | SRC_URI = "git://github.com/openstack/python-keystoneclient.git;branch=master" | 9 | SRC_URI = "\ |
10 | git://github.com/openstack/python-keystoneclient.git;branch=master \ | ||
11 | file://fix_keystoneclient_memory_leak.patch \ | ||
12 | " | ||
10 | 13 | ||
11 | PV="0.6.0+git${SRCPV}" | 14 | PV="0.6.0+git${SRCPV}" |
12 | SRCREV="a6b8e506740935498f5eba319c67b740d17752a2" | 15 | SRCREV="a6b8e506740935498f5eba319c67b740d17752a2" |
diff --git a/meta-openstack/recipes-devtools/python/python-novaclient/fix_novaclient_memory_leak.patch b/meta-openstack/recipes-devtools/python/python-novaclient/fix_novaclient_memory_leak.patch new file mode 100644 index 0000000..5732d9a --- /dev/null +++ b/meta-openstack/recipes-devtools/python/python-novaclient/fix_novaclient_memory_leak.patch | |||
@@ -0,0 +1,103 @@ | |||
1 | --- | ||
2 | novaclient/client.py | 10 ++++++++++ | ||
3 | novaclient/openstack/common/apiclient/client.py | 10 ++++++++++ | ||
4 | novaclient/v1_1/client.py | 6 ++++++ | ||
5 | novaclient/v3/client.py | 6 ++++++ | ||
6 | 4 files changed, 32 insertions(+) | ||
7 | |||
8 | --- a/novaclient/client.py | ||
9 | +++ b/novaclient/client.py | ||
10 | @@ -87,6 +87,7 @@ | ||
11 | self.timeout = None | ||
12 | |||
13 | self.times = [] # [("item", starttime, endtime), ...] | ||
14 | + self.times_max_len = 200 | ||
15 | |||
16 | self.management_url = self.bypass_url or None | ||
17 | self.auth_token = auth_token | ||
18 | @@ -139,6 +140,12 @@ | ||
19 | def reset_timings(self): | ||
20 | self.times = [] | ||
21 | |||
22 | + def get_timings_max_len(self): | ||
23 | + return self.times_max_len | ||
24 | + | ||
25 | + def set_timings_max_len(self, new_len): | ||
26 | + self.times_max_len = new_len | ||
27 | + | ||
28 | def http_log_req(self, method, url, kwargs): | ||
29 | if not self.http_log_debug: | ||
30 | return | ||
31 | @@ -214,6 +221,9 @@ | ||
32 | resp, body = self.request(url, method, **kwargs) | ||
33 | self.times.append(("%s %s" % (method, url), | ||
34 | start_time, time.time())) | ||
35 | + # remove oldest items until we maintain max length | ||
36 | + while len(self.times) > self.times_max_len: | ||
37 | + del self.times[0] | ||
38 | return resp, body | ||
39 | |||
40 | def _cs_request(self, url, method, **kwargs): | ||
41 | --- a/novaclient/openstack/common/apiclient/client.py | ||
42 | +++ b/novaclient/openstack/common/apiclient/client.py | ||
43 | @@ -90,6 +90,7 @@ | ||
44 | self.user_agent = user_agent or self.user_agent | ||
45 | |||
46 | self.times = [] # [("item", starttime, endtime), ...] | ||
47 | + self.times_max_len = 200 | ||
48 | self.timings = timings | ||
49 | |||
50 | # requests within the same session can reuse TCP connections from pool | ||
51 | @@ -142,6 +143,12 @@ | ||
52 | def reset_timings(self): | ||
53 | self.times = [] | ||
54 | |||
55 | + def get_timings_max_len(self): | ||
56 | + return self.times_max_len | ||
57 | + | ||
58 | + def set_timings_max_len(self, new_len): | ||
59 | + self.times_max_len = new_len | ||
60 | + | ||
61 | def request(self, method, url, **kwargs): | ||
62 | """Send an http request with the specified characteristics. | ||
63 | |||
64 | @@ -173,6 +180,9 @@ | ||
65 | if self.timings: | ||
66 | self.times.append(("%s %s" % (method, url), | ||
67 | start_time, time.time())) | ||
68 | + # remove oldest items until we maintain max length | ||
69 | + while len(self.times) > self.times_max_len: | ||
70 | + del self.times[0] | ||
71 | self._http_log_resp(resp) | ||
72 | |||
73 | if resp.status_code >= 400: | ||
74 | --- a/novaclient/v1_1/client.py | ||
75 | +++ b/novaclient/v1_1/client.py | ||
76 | @@ -156,6 +156,12 @@ | ||
77 | def reset_timings(self): | ||
78 | self.client.reset_timings() | ||
79 | |||
80 | + def get_timings_max_len(self): | ||
81 | + return self.client.get_timings_max_len() | ||
82 | + | ||
83 | + def set_timings_max_len(self, new_len): | ||
84 | + self.client.set_timings_max_len(new_len) | ||
85 | + | ||
86 | def authenticate(self): | ||
87 | """ | ||
88 | Authenticate against the server. | ||
89 | --- a/novaclient/v3/client.py | ||
90 | +++ b/novaclient/v3/client.py | ||
91 | @@ -121,6 +121,12 @@ | ||
92 | def reset_timings(self): | ||
93 | self.client.reset_timings() | ||
94 | |||
95 | + def get_timings_max_len(self): | ||
96 | + return self.client.get_timings_max_len() | ||
97 | + | ||
98 | + def set_timings_max_len(self, new_len): | ||
99 | + self.client.set_timings_max_len(new_len) | ||
100 | + | ||
101 | def authenticate(self): | ||
102 | """ | ||
103 | Authenticate against the server. | ||
diff --git a/meta-openstack/recipes-devtools/python/python-novaclient_git.bb b/meta-openstack/recipes-devtools/python/python-novaclient_git.bb index 2884e0f..7ac9b34 100644 --- a/meta-openstack/recipes-devtools/python/python-novaclient_git.bb +++ b/meta-openstack/recipes-devtools/python/python-novaclient_git.bb | |||
@@ -7,7 +7,10 @@ DEPENDS = "python-setuptools-git" | |||
7 | 7 | ||
8 | PR = "r0" | 8 | PR = "r0" |
9 | 9 | ||
10 | SRC_URI = "git://github.com/openstack/python-novaclient.git;branch=master" | 10 | SRC_URI = "\ |
11 | git://github.com/openstack/python-novaclient.git;branch=master \ | ||
12 | file://fix_novaclient_memory_leak.patch \ | ||
13 | " | ||
11 | 14 | ||
12 | PV="2.16.0+git${SRCPV}" | 15 | PV="2.16.0+git${SRCPV}" |
13 | SRCREV="64043442bbafa48f9042b669d30292b1db00db4f" | 16 | SRCREV="64043442bbafa48f9042b669d30292b1db00db4f" |