)]}'
{"etc/ironic/ironic.conf.sample":[{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"de648fc26a2844f859013ebd9634265c0a1a8e3c","unresolved":false,"context_lines":[{"line_number":766,"context_line":"# The number of workers will be evaluated as minimum between"},{"line_number":767,"context_line":"# this number and number of given nodes in a periodic task."},{"line_number":768,"context_line":"# (integer value)"},{"line_number":769,"context_line":"#send_sensor_data_threads \u003d 1"},{"line_number":770,"context_line":""},{"line_number":771,"context_line":"# List of comma separated meter types which need to be sent to"},{"line_number":772,"context_line":"# Ceilometer. The default value, \"ALL\", is a special value"}],"source_content_type":"application/octet-stream","patch_set":15,"id":"1a6eadb0_36ebbb79","line":769,"range":{"start_line":769,"start_character":28,"end_line":769,"end_character":29},"updated":"2016-12-15 20:12:35.000000000","message":"Please regenerate sample config.","commit_id":"c628f2efc31084d1c2938ab6f96a8a4a371ccc11"},{"author":{"_account_id":22724,"name":"Galyna Zholtkevych","email":"galynazholtkevych1991@gmail.com","username":"gzholtkevych"},"change_message_id":"c5a97f4bcde3e975c7adb7563d1abd0bcc9d3467","unresolved":false,"context_lines":[{"line_number":766,"context_line":"# The number of workers will be evaluated as minimum between"},{"line_number":767,"context_line":"# this number and number of given nodes in a periodic task."},{"line_number":768,"context_line":"# (integer value)"},{"line_number":769,"context_line":"#send_sensor_data_threads \u003d 1"},{"line_number":770,"context_line":""},{"line_number":771,"context_line":"# List of comma separated meter types which need to be sent to"},{"line_number":772,"context_line":"# Ceilometer. The default value, \"ALL\", is a special value"}],"source_content_type":"application/octet-stream","patch_set":15,"id":"1a6eadb0_ccaca18e","line":769,"range":{"start_line":769,"start_character":28,"end_line":769,"end_character":29},"in_reply_to":"1a6eadb0_36ebbb79","updated":"2016-12-16 10:03:13.000000000","message":"Done","commit_id":"c628f2efc31084d1c2938ab6f96a8a4a371ccc11"}],"ironic/conductor/base_manager.py":[{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"f1de83be9114cd9b9d42f84a4fd0497c1413d346","unresolved":false,"context_lines":[{"line_number":262,"context_line":"            if self._mapped_to_this_conductor(*result[:2]):"},{"line_number":263,"context_line":"                yield result"},{"line_number":264,"context_line":""},{"line_number":265,"context_line":"    def form_node_queue(self, fields\u003dNone, **kwargs):"},{"line_number":266,"context_line":"        node_queue \u003d Queue()"},{"line_number":267,"context_line":"        for node in self.iter_nodes(fields, **kwargs):"},{"line_number":268,"context_line":"            node_queue.put_nowait(node)"}],"source_content_type":"text/x-python","patch_set":11,"id":"1a6eadb0_f4db8d19","line":265,"updated":"2016-12-13 11:43:13.000000000","message":"Better s/form_node_queue/_create_node_queue. I\u0027m not sure that this method should be in base_manager.","commit_id":"2c89ef76407749e78ee6a6ef7d0fb0276b6ad460"},{"author":{"_account_id":22724,"name":"Galyna Zholtkevych","email":"galynazholtkevych1991@gmail.com","username":"gzholtkevych"},"change_message_id":"03eb94e935618bb2284a4225666bb415dc37cd41","unresolved":false,"context_lines":[{"line_number":262,"context_line":"            if self._mapped_to_this_conductor(*result[:2]):"},{"line_number":263,"context_line":"                yield result"},{"line_number":264,"context_line":""},{"line_number":265,"context_line":"    def form_node_queue(self, fields\u003dNone, **kwargs):"},{"line_number":266,"context_line":"        node_queue \u003d Queue()"},{"line_number":267,"context_line":"        for node in self.iter_nodes(fields, **kwargs):"},{"line_number":268,"context_line":"            node_queue.put_nowait(node)"}],"source_content_type":"text/x-python","patch_set":11,"id":"1a6eadb0_53dd000d","line":265,"in_reply_to":"1a6eadb0_f4db8d19","updated":"2016-12-14 10:54:03.000000000","message":"Done","commit_id":"2c89ef76407749e78ee6a6ef7d0fb0276b6ad460"}],"ironic/conductor/manager.py":[{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"28165caebe186cb0447469dfe50566886b6f507b","unresolved":false,"context_lines":[{"line_number":1915,"context_line":"            return"},{"line_number":1916,"context_line":""},{"line_number":1917,"context_line":"        number_of_threads \u003d CONF.conductor.send_sensor_data_threads"},{"line_number":1918,"context_line":"        if (number_of_threads \u003e\u003d"},{"line_number":1919,"context_line":"                CONF.conductor.periodic_max_workers):"},{"line_number":1920,"context_line":"            LOG.warning(_(\"Number of launching workers for periodic tasks is \""},{"line_number":1921,"context_line":"                          \"destructive. Reducing it\"))"},{"line_number":1922,"context_line":"            number_of_threads \u003d CONF.conductor.periodic_max_workers / 2"},{"line_number":1923,"context_line":"        filters \u003d {\u0027associated\u0027: True}"},{"line_number":1924,"context_line":"        node_list \u003d list(self.iter_nodes(fields\u003d[\u0027instance_uuid\u0027],"},{"line_number":1925,"context_line":"                                         filters\u003dfilters))"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a71b18c_1b78f1f1","line":1922,"range":{"start_line":1918,"start_character":1,"end_line":1922,"end_character":71},"updated":"2016-12-09 15:06:48.000000000","message":"I prefer do not have any type of AI like this here. CONF.conductor.periodic_max_workers is a different option.","commit_id":"909ceb9f22c7c575e85b1eb37941d1bc150218c3"},{"author":{"_account_id":22724,"name":"Galyna Zholtkevych","email":"galynazholtkevych1991@gmail.com","username":"gzholtkevych"},"change_message_id":"49adec7c9aeff7f5ec52281c9310a455c0f59b85","unresolved":false,"context_lines":[{"line_number":1915,"context_line":"            return"},{"line_number":1916,"context_line":""},{"line_number":1917,"context_line":"        number_of_threads \u003d CONF.conductor.send_sensor_data_threads"},{"line_number":1918,"context_line":"        if (number_of_threads \u003e\u003d"},{"line_number":1919,"context_line":"                CONF.conductor.periodic_max_workers):"},{"line_number":1920,"context_line":"            LOG.warning(_(\"Number of launching workers for periodic tasks is \""},{"line_number":1921,"context_line":"                          \"destructive. Reducing it\"))"},{"line_number":1922,"context_line":"            number_of_threads \u003d CONF.conductor.periodic_max_workers / 2"},{"line_number":1923,"context_line":"        filters \u003d {\u0027associated\u0027: True}"},{"line_number":1924,"context_line":"        node_list \u003d list(self.iter_nodes(fields\u003d[\u0027instance_uuid\u0027],"},{"line_number":1925,"context_line":"                                         filters\u003dfilters))"}],"source_content_type":"text/x-python","patch_set":6,"id":"1a6eadb0_13892ccb","line":1922,"range":{"start_line":1918,"start_character":1,"end_line":1922,"end_character":71},"in_reply_to":"3a71b18c_1b78f1f1","updated":"2016-12-12 15:17:10.000000000","message":"Done","commit_id":"909ceb9f22c7c575e85b1eb37941d1bc150218c3"},{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"28165caebe186cb0447469dfe50566886b6f507b","unresolved":false,"context_lines":[{"line_number":1935,"context_line":"        if remain:"},{"line_number":1936,"context_line":"            additional_node \u003d 1"},{"line_number":1937,"context_line":""},{"line_number":1938,"context_line":"        for i in range(0, len(node_list), nodes_chunks):"},{"line_number":1939,"context_line":"            self._spawn_worker(self._task_for_node_chunk,"},{"line_number":1940,"context_line":"                               context,"},{"line_number":1941,"context_line":"                               node_list[i:i + nodes_chunks + additional_node])"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a71b18c_c66860bd","line":1938,"range":{"start_line":1938,"start_character":17,"end_line":1938,"end_character":56},"updated":"2016-12-09 15:06:48.000000000","message":"Looks like this not work as expected. For example we have 20 nodes for this conductor and 8 number_of_threads. 20 // 8 is 2. range(0, 20, 2) is [0, 2, 4, 6, 8, 10, 12, 14, 16, 18] and contains 10 items instead of 8.","commit_id":"909ceb9f22c7c575e85b1eb37941d1bc150218c3"},{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"420ffa6ad3da2aebc7c2ad95b35dd27b2bd50ff9","unresolved":false,"context_lines":[{"line_number":1938,"context_line":"        for i in range(0, len(node_list), nodes_chunks):"},{"line_number":1939,"context_line":"            self._spawn_worker(self._task_for_node_chunk,"},{"line_number":1940,"context_line":"                               context,"},{"line_number":1941,"context_line":"                               node_list[i:i + nodes_chunks + additional_node])"},{"line_number":1942,"context_line":"            if remain \u003e 0:"},{"line_number":1943,"context_line":"                remain -\u003d 1"},{"line_number":1944,"context_line":"            else:"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a71b18c_3e3f22b5","line":1941,"updated":"2016-12-12 10:19:06.000000000","message":"We should catch here exception.NoFreeConductorWorker","commit_id":"909ceb9f22c7c575e85b1eb37941d1bc150218c3"},{"author":{"_account_id":22724,"name":"Galyna Zholtkevych","email":"galynazholtkevych1991@gmail.com","username":"gzholtkevych"},"change_message_id":"49adec7c9aeff7f5ec52281c9310a455c0f59b85","unresolved":false,"context_lines":[{"line_number":1938,"context_line":"        for i in range(0, len(node_list), nodes_chunks):"},{"line_number":1939,"context_line":"            self._spawn_worker(self._task_for_node_chunk,"},{"line_number":1940,"context_line":"                               context,"},{"line_number":1941,"context_line":"                               node_list[i:i + nodes_chunks + additional_node])"},{"line_number":1942,"context_line":"            if remain \u003e 0:"},{"line_number":1943,"context_line":"                remain -\u003d 1"},{"line_number":1944,"context_line":"            else:"}],"source_content_type":"text/x-python","patch_set":6,"id":"1a6eadb0_93bb7c75","line":1941,"in_reply_to":"3a71b18c_3e3f22b5","updated":"2016-12-12 15:17:10.000000000","message":"Done","commit_id":"909ceb9f22c7c575e85b1eb37941d1bc150218c3"},{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"f1de83be9114cd9b9d42f84a4fd0497c1413d346","unresolved":false,"context_lines":[{"line_number":2023,"context_line":"        return driver.get_properties()"},{"line_number":2024,"context_line":""},{"line_number":2025,"context_line":"    @METRICS.timer(\u0027ConductorManager._task_for_node_chunk\u0027)"},{"line_number":2026,"context_line":"    def _task_for_node_chunk(self, context, nodes):"},{"line_number":2027,"context_line":"        for (node_uuid, driver, instance_uuid) in nodes:"},{"line_number":2028,"context_line":"            # populate the message which will be sent to ceilometer"},{"line_number":2029,"context_line":"            message \u003d {\u0027message_id\u0027: uuidutils.generate_uuid(),"}],"source_content_type":"text/x-python","patch_set":11,"id":"1a6eadb0_2fa130aa","line":2026,"updated":"2016-12-13 11:43:13.000000000","message":"Better remove like s/_task_for_node_chunk/_sensors_nodes_task","commit_id":"2c89ef76407749e78ee6a6ef7d0fb0276b6ad460"},{"author":{"_account_id":22724,"name":"Galyna Zholtkevych","email":"galynazholtkevych1991@gmail.com","username":"gzholtkevych"},"change_message_id":"03eb94e935618bb2284a4225666bb415dc37cd41","unresolved":false,"context_lines":[{"line_number":2023,"context_line":"        return driver.get_properties()"},{"line_number":2024,"context_line":""},{"line_number":2025,"context_line":"    @METRICS.timer(\u0027ConductorManager._task_for_node_chunk\u0027)"},{"line_number":2026,"context_line":"    def _task_for_node_chunk(self, context, nodes):"},{"line_number":2027,"context_line":"        for (node_uuid, driver, instance_uuid) in nodes:"},{"line_number":2028,"context_line":"            # populate the message which will be sent to ceilometer"},{"line_number":2029,"context_line":"            message \u003d {\u0027message_id\u0027: uuidutils.generate_uuid(),"}],"source_content_type":"text/x-python","patch_set":11,"id":"1a6eadb0_d3ff5065","line":2026,"in_reply_to":"1a6eadb0_2fa130aa","updated":"2016-12-14 10:54:03.000000000","message":"Done","commit_id":"2c89ef76407749e78ee6a6ef7d0fb0276b6ad460"},{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"1c2917231b283d2c6e4d35c909a3d9cccd08942f","unresolved":false,"context_lines":[{"line_number":2023,"context_line":"        return driver.get_properties()"},{"line_number":2024,"context_line":""},{"line_number":2025,"context_line":"    @METRICS.timer(\u0027ConductorManager._task_for_node_chunk\u0027)"},{"line_number":2026,"context_line":"    def _task_for_node_chunk(self, context, nodes):"},{"line_number":2027,"context_line":"        for (node_uuid, driver, instance_uuid) in nodes:"},{"line_number":2028,"context_line":"            # populate the message which will be sent to ceilometer"},{"line_number":2029,"context_line":"            message \u003d {\u0027message_id\u0027: uuidutils.generate_uuid(),"}],"source_content_type":"text/x-python","patch_set":11,"id":"1a6eadb0_e503d9b6","line":2026,"in_reply_to":"1a6eadb0_2fa130aa","updated":"2016-12-13 12:03:32.000000000","message":"rename","commit_id":"2c89ef76407749e78ee6a6ef7d0fb0276b6ad460"},{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"f1de83be9114cd9b9d42f84a4fd0497c1413d346","unresolved":false,"context_lines":[{"line_number":2024,"context_line":""},{"line_number":2025,"context_line":"    @METRICS.timer(\u0027ConductorManager._task_for_node_chunk\u0027)"},{"line_number":2026,"context_line":"    def _task_for_node_chunk(self, context, nodes):"},{"line_number":2027,"context_line":"        for (node_uuid, driver, instance_uuid) in nodes:"},{"line_number":2028,"context_line":"            # populate the message which will be sent to ceilometer"},{"line_number":2029,"context_line":"            message \u003d {\u0027message_id\u0027: uuidutils.generate_uuid(),"},{"line_number":2030,"context_line":"                       \u0027instance_uuid\u0027: instance_uuid,"}],"source_content_type":"text/x-python","patch_set":11,"id":"1a6eadb0_8a5cf226","line":2027,"updated":"2016-12-13 11:43:13.000000000","message":"while True:\n    try:\n        node_uuid, driver, instance_uuid \u003d nodes.get_nowait()\n    except Queue.Empty:\n        break\n\n...","commit_id":"2c89ef76407749e78ee6a6ef7d0fb0276b6ad460"},{"author":{"_account_id":22724,"name":"Galyna Zholtkevych","email":"galynazholtkevych1991@gmail.com","username":"gzholtkevych"},"change_message_id":"03eb94e935618bb2284a4225666bb415dc37cd41","unresolved":false,"context_lines":[{"line_number":2024,"context_line":""},{"line_number":2025,"context_line":"    @METRICS.timer(\u0027ConductorManager._task_for_node_chunk\u0027)"},{"line_number":2026,"context_line":"    def _task_for_node_chunk(self, context, nodes):"},{"line_number":2027,"context_line":"        for (node_uuid, driver, instance_uuid) in nodes:"},{"line_number":2028,"context_line":"            # populate the message which will be sent to ceilometer"},{"line_number":2029,"context_line":"            message \u003d {\u0027message_id\u0027: uuidutils.generate_uuid(),"},{"line_number":2030,"context_line":"                       \u0027instance_uuid\u0027: instance_uuid,"}],"source_content_type":"text/x-python","patch_set":11,"id":"1a6eadb0_f35e0c75","line":2027,"in_reply_to":"1a6eadb0_8a5cf226","updated":"2016-12-14 10:54:03.000000000","message":"Done","commit_id":"2c89ef76407749e78ee6a6ef7d0fb0276b6ad460"},{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"a460dc70708ed6b951891eca11018fecc7c576cb","unresolved":false,"context_lines":[{"line_number":2092,"context_line":"        number_of_threads \u003d min(CONF.conductor.send_sensor_data_threads,"},{"line_number":2093,"context_line":"                                nodes.qsize())"},{"line_number":2094,"context_line":""},{"line_number":2095,"context_line":"        if number_of_threads \u003e\u003d CONF.conductor.workers_pool_size:"},{"line_number":2096,"context_line":"            raise exception.NoFreeConductorWorker()"},{"line_number":2097,"context_line":""},{"line_number":2098,"context_line":"        for thread_number in range(number_of_threads, 0, -1):"}],"source_content_type":"text/x-python","patch_set":11,"id":"1a6eadb0_e99e5355","line":2095,"range":{"start_line":2095,"start_character":32,"end_line":2095,"end_character":64},"updated":"2016-12-13 12:41:06.000000000","message":"it feels like the CONF.conductor.send_sensor_data_threads max value should have max value dependent on conductor.workers_pool_size instead of this.","commit_id":"2c89ef76407749e78ee6a6ef7d0fb0276b6ad460"},{"author":{"_account_id":22724,"name":"Galyna Zholtkevych","email":"galynazholtkevych1991@gmail.com","username":"gzholtkevych"},"change_message_id":"03eb94e935618bb2284a4225666bb415dc37cd41","unresolved":false,"context_lines":[{"line_number":2092,"context_line":"        number_of_threads \u003d min(CONF.conductor.send_sensor_data_threads,"},{"line_number":2093,"context_line":"                                nodes.qsize())"},{"line_number":2094,"context_line":""},{"line_number":2095,"context_line":"        if number_of_threads \u003e\u003d CONF.conductor.workers_pool_size:"},{"line_number":2096,"context_line":"            raise exception.NoFreeConductorWorker()"},{"line_number":2097,"context_line":""},{"line_number":2098,"context_line":"        for thread_number in range(number_of_threads, 0, -1):"}],"source_content_type":"text/x-python","patch_set":11,"id":"1a6eadb0_8e612f3c","line":2095,"range":{"start_line":2095,"start_character":32,"end_line":2095,"end_character":64},"in_reply_to":"1a6eadb0_e99e5355","updated":"2016-12-14 10:54:03.000000000","message":"Done","commit_id":"2c89ef76407749e78ee6a6ef7d0fb0276b6ad460"},{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"f1de83be9114cd9b9d42f84a4fd0497c1413d346","unresolved":false,"context_lines":[{"line_number":2092,"context_line":"        number_of_threads \u003d min(CONF.conductor.send_sensor_data_threads,"},{"line_number":2093,"context_line":"                                nodes.qsize())"},{"line_number":2094,"context_line":""},{"line_number":2095,"context_line":"        if number_of_threads \u003e\u003d CONF.conductor.workers_pool_size:"},{"line_number":2096,"context_line":"            raise exception.NoFreeConductorWorker()"},{"line_number":2097,"context_line":""},{"line_number":2098,"context_line":"        for thread_number in range(number_of_threads, 0, -1):"},{"line_number":2099,"context_line":"            nodes_number_for_worker \u003d nodes.qsize() // thread_number"},{"line_number":2100,"context_line":"            nodes_for_worker \u003d []"},{"line_number":2101,"context_line":""},{"line_number":2102,"context_line":"            try:"},{"line_number":2103,"context_line":"                for i in range(nodes_number_for_worker):"},{"line_number":2104,"context_line":"                    nodes_for_worker.append(nodes.get_nowait())"},{"line_number":2105,"context_line":"            except Queue.Empty:"},{"line_number":2106,"context_line":"                break"},{"line_number":2107,"context_line":""},{"line_number":2108,"context_line":"            self._spawn_worker(self._task_for_node_chunk,"},{"line_number":2109,"context_line":"                               context,"},{"line_number":2110,"context_line":"                               nodes_for_worker)"},{"line_number":2111,"context_line":""},{"line_number":2112,"context_line":"    def _filter_out_unsupported_types(self, sensors_data):"},{"line_number":2113,"context_line":"        \"\"\"Filters out sensor data types that aren\u0027t specified in the config."}],"source_content_type":"text/x-python","patch_set":11,"id":"1a6eadb0_6f5888fb","line":2110,"range":{"start_line":2095,"start_character":8,"end_line":2110,"end_character":48},"updated":"2016-12-13 11:43:13.000000000","message":"The main idea that we use one synchronized queue for all workers.\n\nfor worker in range(number_of_threads):\n    try:\n        self._spawn_worker(self._sensors_nodes_task, context, nodes)\n    except exception.NoFreeConductorWorker:\n        LOG.warning(_LW(\u0027Started n from m requested workers blabla..\n        break","commit_id":"2c89ef76407749e78ee6a6ef7d0fb0276b6ad460"},{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"a460dc70708ed6b951891eca11018fecc7c576cb","unresolved":false,"context_lines":[{"line_number":2092,"context_line":"        number_of_threads \u003d min(CONF.conductor.send_sensor_data_threads,"},{"line_number":2093,"context_line":"                                nodes.qsize())"},{"line_number":2094,"context_line":""},{"line_number":2095,"context_line":"        if number_of_threads \u003e\u003d CONF.conductor.workers_pool_size:"},{"line_number":2096,"context_line":"            raise exception.NoFreeConductorWorker()"},{"line_number":2097,"context_line":""},{"line_number":2098,"context_line":"        for thread_number in range(number_of_threads, 0, -1):"},{"line_number":2099,"context_line":"            nodes_number_for_worker \u003d nodes.qsize() // thread_number"},{"line_number":2100,"context_line":"            nodes_for_worker \u003d []"},{"line_number":2101,"context_line":""},{"line_number":2102,"context_line":"            try:"},{"line_number":2103,"context_line":"                for i in range(nodes_number_for_worker):"},{"line_number":2104,"context_line":"                    nodes_for_worker.append(nodes.get_nowait())"},{"line_number":2105,"context_line":"            except Queue.Empty:"},{"line_number":2106,"context_line":"                break"},{"line_number":2107,"context_line":""},{"line_number":2108,"context_line":"            self._spawn_worker(self._task_for_node_chunk,"},{"line_number":2109,"context_line":"                               context,"},{"line_number":2110,"context_line":"                               nodes_for_worker)"},{"line_number":2111,"context_line":""},{"line_number":2112,"context_line":"    def _filter_out_unsupported_types(self, sensors_data):"},{"line_number":2113,"context_line":"        \"\"\"Filters out sensor data types that aren\u0027t specified in the config."}],"source_content_type":"text/x-python","patch_set":11,"id":"1a6eadb0_69f08391","line":2110,"range":{"start_line":2095,"start_character":8,"end_line":2110,"end_character":48},"in_reply_to":"1a6eadb0_6f5888fb","updated":"2016-12-13 12:41:06.000000000","message":"++ that is more logical than trying to manually divide nodes between workers.","commit_id":"2c89ef76407749e78ee6a6ef7d0fb0276b6ad460"},{"author":{"_account_id":22724,"name":"Galyna Zholtkevych","email":"galynazholtkevych1991@gmail.com","username":"gzholtkevych"},"change_message_id":"03eb94e935618bb2284a4225666bb415dc37cd41","unresolved":false,"context_lines":[{"line_number":2092,"context_line":"        number_of_threads \u003d min(CONF.conductor.send_sensor_data_threads,"},{"line_number":2093,"context_line":"                                nodes.qsize())"},{"line_number":2094,"context_line":""},{"line_number":2095,"context_line":"        if number_of_threads \u003e\u003d CONF.conductor.workers_pool_size:"},{"line_number":2096,"context_line":"            raise exception.NoFreeConductorWorker()"},{"line_number":2097,"context_line":""},{"line_number":2098,"context_line":"        for thread_number in range(number_of_threads, 0, -1):"},{"line_number":2099,"context_line":"            nodes_number_for_worker \u003d nodes.qsize() // thread_number"},{"line_number":2100,"context_line":"            nodes_for_worker \u003d []"},{"line_number":2101,"context_line":""},{"line_number":2102,"context_line":"            try:"},{"line_number":2103,"context_line":"                for i in range(nodes_number_for_worker):"},{"line_number":2104,"context_line":"                    nodes_for_worker.append(nodes.get_nowait())"},{"line_number":2105,"context_line":"            except Queue.Empty:"},{"line_number":2106,"context_line":"                break"},{"line_number":2107,"context_line":""},{"line_number":2108,"context_line":"            self._spawn_worker(self._task_for_node_chunk,"},{"line_number":2109,"context_line":"                               context,"},{"line_number":2110,"context_line":"                               nodes_for_worker)"},{"line_number":2111,"context_line":""},{"line_number":2112,"context_line":"    def _filter_out_unsupported_types(self, sensors_data):"},{"line_number":2113,"context_line":"        \"\"\"Filters out sensor data types that aren\u0027t specified in the config."}],"source_content_type":"text/x-python","patch_set":11,"id":"1a6eadb0_ce5b2786","line":2110,"range":{"start_line":2095,"start_character":8,"end_line":2110,"end_character":48},"in_reply_to":"1a6eadb0_6f5888fb","updated":"2016-12-14 10:54:03.000000000","message":"Done","commit_id":"2c89ef76407749e78ee6a6ef7d0fb0276b6ad460"},{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"48d70cfb1f6bd819738c80e0d046bfb29e382f11","unresolved":false,"context_lines":[{"line_number":2030,"context_line":""},{"line_number":2031,"context_line":"    @METRICS.timer(\u0027ConductorManager._task_for_node_chunk\u0027)"},{"line_number":2032,"context_line":"    def _sensors_nodes_task(self, context, nodes):"},{"line_number":2033,"context_line":"        while not nodes.empty():"},{"line_number":2034,"context_line":"            try:"},{"line_number":2035,"context_line":"                node_uuid, driver, instance_uuid \u003d nodes.get_nowait()"},{"line_number":2036,"context_line":"            except Queue.empty:"}],"source_content_type":"text/x-python","patch_set":13,"id":"1a6eadb0_138d317b","line":2033,"range":{"start_line":2033,"start_character":14,"end_line":2033,"end_character":31},"updated":"2016-12-14 17:19:16.000000000","message":"This check is not needed because we catch exception l2036","commit_id":"2b905d00e76f4e851c121e78ca08e709a6451a82"},{"author":{"_account_id":22724,"name":"Galyna Zholtkevych","email":"galynazholtkevych1991@gmail.com","username":"gzholtkevych"},"change_message_id":"6d0db534e85b8d6c4b2c73e95e9f55b21575c116","unresolved":false,"context_lines":[{"line_number":2030,"context_line":""},{"line_number":2031,"context_line":"    @METRICS.timer(\u0027ConductorManager._task_for_node_chunk\u0027)"},{"line_number":2032,"context_line":"    def _sensors_nodes_task(self, context, nodes):"},{"line_number":2033,"context_line":"        while not nodes.empty():"},{"line_number":2034,"context_line":"            try:"},{"line_number":2035,"context_line":"                node_uuid, driver, instance_uuid \u003d nodes.get_nowait()"},{"line_number":2036,"context_line":"            except Queue.empty:"}],"source_content_type":"text/x-python","patch_set":13,"id":"1a6eadb0_cd64d1ba","line":2033,"range":{"start_line":2033,"start_character":14,"end_line":2033,"end_character":31},"in_reply_to":"1a6eadb0_138d317b","updated":"2016-12-15 11:46:01.000000000","message":"Done","commit_id":"2b905d00e76f4e851c121e78ca08e709a6451a82"},{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"48d70cfb1f6bd819738c80e0d046bfb29e382f11","unresolved":false,"context_lines":[{"line_number":2108,"context_line":"                self._spawn_worker(self._sensors_nodes_task,"},{"line_number":2109,"context_line":"                                   context, nodes)"},{"line_number":2110,"context_line":"            except exception.NoFreeConductorWorker:"},{"line_number":2111,"context_line":"                break"},{"line_number":2112,"context_line":""},{"line_number":2113,"context_line":"    def _filter_out_unsupported_types(self, sensors_data):"},{"line_number":2114,"context_line":"        \"\"\"Filters out sensor data types that aren\u0027t specified in the config."}],"source_content_type":"text/x-python","patch_set":13,"id":"1a6eadb0_1369b18b","line":2111,"updated":"2016-12-14 17:19:16.000000000","message":"Please add also log warning here that we can not execute all requested workers.","commit_id":"2b905d00e76f4e851c121e78ca08e709a6451a82"},{"author":{"_account_id":22724,"name":"Galyna Zholtkevych","email":"galynazholtkevych1991@gmail.com","username":"gzholtkevych"},"change_message_id":"6d0db534e85b8d6c4b2c73e95e9f55b21575c116","unresolved":false,"context_lines":[{"line_number":2108,"context_line":"                self._spawn_worker(self._sensors_nodes_task,"},{"line_number":2109,"context_line":"                                   context, nodes)"},{"line_number":2110,"context_line":"            except exception.NoFreeConductorWorker:"},{"line_number":2111,"context_line":"                break"},{"line_number":2112,"context_line":""},{"line_number":2113,"context_line":"    def _filter_out_unsupported_types(self, sensors_data):"},{"line_number":2114,"context_line":"        \"\"\"Filters out sensor data types that aren\u0027t specified in the config."}],"source_content_type":"text/x-python","patch_set":13,"id":"1a6eadb0_4d252107","line":2111,"in_reply_to":"1a6eadb0_1369b18b","updated":"2016-12-15 11:46:01.000000000","message":"Done","commit_id":"2b905d00e76f4e851c121e78ca08e709a6451a82"},{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"de648fc26a2844f859013ebd9634265c0a1a8e3c","unresolved":false,"context_lines":[{"line_number":2108,"context_line":"                self._spawn_worker(self._sensors_nodes_task,"},{"line_number":2109,"context_line":"                                   context, nodes)"},{"line_number":2110,"context_line":"            except exception.NoFreeConductorWorker:"},{"line_number":2111,"context_line":"                LOG.warning(_LW(\"There is no more conductor workers for this\""},{"line_number":2112,"context_line":"                                \"task\"))"},{"line_number":2113,"context_line":"                break"},{"line_number":2114,"context_line":""}],"source_content_type":"text/x-python","patch_set":15,"id":"1a6eadb0_d100d103","line":2111,"range":{"start_line":2111,"start_character":72,"end_line":2111,"end_character":77},"updated":"2016-12-15 20:12:35.000000000","message":"1) Missing space at end of line 2) Please mention name of the task and also will be good include requested number of workers and really added to executor","commit_id":"c628f2efc31084d1c2938ab6f96a8a4a371ccc11"},{"author":{"_account_id":22724,"name":"Galyna Zholtkevych","email":"galynazholtkevych1991@gmail.com","username":"gzholtkevych"},"change_message_id":"c5a97f4bcde3e975c7adb7563d1abd0bcc9d3467","unresolved":false,"context_lines":[{"line_number":2108,"context_line":"                self._spawn_worker(self._sensors_nodes_task,"},{"line_number":2109,"context_line":"                                   context, nodes)"},{"line_number":2110,"context_line":"            except exception.NoFreeConductorWorker:"},{"line_number":2111,"context_line":"                LOG.warning(_LW(\"There is no more conductor workers for this\""},{"line_number":2112,"context_line":"                                \"task\"))"},{"line_number":2113,"context_line":"                break"},{"line_number":2114,"context_line":""}],"source_content_type":"text/x-python","patch_set":15,"id":"1a6eadb0_8cb2a94a","line":2111,"range":{"start_line":2111,"start_character":72,"end_line":2111,"end_character":77},"in_reply_to":"1a6eadb0_d100d103","updated":"2016-12-16 10:03:13.000000000","message":"Done","commit_id":"c628f2efc31084d1c2938ab6f96a8a4a371ccc11"},{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"ef8336606d05b0529e34cdf0bb89826fddca3392","unresolved":false,"context_lines":[{"line_number":2022,"context_line":"        driver \u003d driver_factory.get_driver(driver_name)"},{"line_number":2023,"context_line":"        return driver.get_properties()"},{"line_number":2024,"context_line":""},{"line_number":2025,"context_line":"    def _create_node_queue(self, fields\u003dNone, **kwargs):"},{"line_number":2026,"context_line":"        node_queue \u003d queue.Queue()"},{"line_number":2027,"context_line":"        for node in self.iter_nodes(fields, **kwargs):"},{"line_number":2028,"context_line":"            node_queue.put_nowait(node)"}],"source_content_type":"text/x-python","patch_set":16,"id":"1a6eadb0_5a7f5adf","line":2025,"updated":"2016-12-16 12:49:27.000000000","message":"Please add docstring. Maybe move this code inside _send_sensor_data()?","commit_id":"beb5e37555aaa6b1c848968840db7316ea9a53bb"},{"author":{"_account_id":22724,"name":"Galyna Zholtkevych","email":"galynazholtkevych1991@gmail.com","username":"gzholtkevych"},"change_message_id":"b7fbea2f1b44194ac0efadda5dce668b9eea5a6e","unresolved":false,"context_lines":[{"line_number":2022,"context_line":"        driver \u003d driver_factory.get_driver(driver_name)"},{"line_number":2023,"context_line":"        return driver.get_properties()"},{"line_number":2024,"context_line":""},{"line_number":2025,"context_line":"    def _create_node_queue(self, fields\u003dNone, **kwargs):"},{"line_number":2026,"context_line":"        node_queue \u003d queue.Queue()"},{"line_number":2027,"context_line":"        for node in self.iter_nodes(fields, **kwargs):"},{"line_number":2028,"context_line":"            node_queue.put_nowait(node)"}],"source_content_type":"text/x-python","patch_set":16,"id":"1a6eadb0_a6f734f4","line":2025,"in_reply_to":"1a6eadb0_5a7f5adf","updated":"2016-12-19 14:44:18.000000000","message":"Done","commit_id":"beb5e37555aaa6b1c848968840db7316ea9a53bb"},{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"f1061e9585643f1d1cc0479bb9af46dfe880c820","unresolved":false,"context_lines":[{"line_number":2089,"context_line":""},{"line_number":2090,"context_line":"    @METRICS.timer(\u0027ConductorManager._send_sensor_data\u0027)"},{"line_number":2091,"context_line":"    @periodics.periodic(spacing\u003dCONF.conductor.send_sensor_data_interval)"},{"line_number":2092,"context_line":"    @messaging.expected_exceptions(exception.NoFreeConductorWorker)"},{"line_number":2093,"context_line":"    def _send_sensor_data(self, context):"},{"line_number":2094,"context_line":"        \"\"\"Periodically sends sensor data to Ceilometer.\"\"\""},{"line_number":2095,"context_line":""}],"source_content_type":"text/x-python","patch_set":16,"id":"1a6eadb0_6ea2659c","line":2092,"updated":"2016-12-19 06:51:46.000000000","message":"This is not rpc method, this line is not needed.","commit_id":"beb5e37555aaa6b1c848968840db7316ea9a53bb"},{"author":{"_account_id":22724,"name":"Galyna Zholtkevych","email":"galynazholtkevych1991@gmail.com","username":"gzholtkevych"},"change_message_id":"b7fbea2f1b44194ac0efadda5dce668b9eea5a6e","unresolved":false,"context_lines":[{"line_number":2089,"context_line":""},{"line_number":2090,"context_line":"    @METRICS.timer(\u0027ConductorManager._send_sensor_data\u0027)"},{"line_number":2091,"context_line":"    @periodics.periodic(spacing\u003dCONF.conductor.send_sensor_data_interval)"},{"line_number":2092,"context_line":"    @messaging.expected_exceptions(exception.NoFreeConductorWorker)"},{"line_number":2093,"context_line":"    def _send_sensor_data(self, context):"},{"line_number":2094,"context_line":"        \"\"\"Periodically sends sensor data to Ceilometer.\"\"\""},{"line_number":2095,"context_line":""}],"source_content_type":"text/x-python","patch_set":16,"id":"1a6eadb0_860eb8e3","line":2092,"in_reply_to":"1a6eadb0_6ea2659c","updated":"2016-12-19 14:44:18.000000000","message":"Done","commit_id":"beb5e37555aaa6b1c848968840db7316ea9a53bb"},{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"ef8336606d05b0529e34cdf0bb89826fddca3392","unresolved":false,"context_lines":[{"line_number":2109,"context_line":"                                   context, nodes)"},{"line_number":2110,"context_line":"            except exception.NoFreeConductorWorker:"},{"line_number":2111,"context_line":"                LOG.warning(_LW(\"There is no more conductor workers for \""},{"line_number":2112,"context_line":"                                \"task _send_sensor_data. %(workers)s \""},{"line_number":2113,"context_line":"                                \"workers has been already spawned.\"),"},{"line_number":2114,"context_line":"                            {\u0027workers\u0027: thread_number})"},{"line_number":2115,"context_line":"                break"}],"source_content_type":"text/x-python","patch_set":16,"id":"1a6eadb0_557f2ddf","line":2112,"range":{"start_line":2112,"start_character":67,"end_line":2112,"end_character":68},"updated":"2016-12-16 12:49:27.000000000","message":"%(workers)d","commit_id":"beb5e37555aaa6b1c848968840db7316ea9a53bb"},{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"ef8336606d05b0529e34cdf0bb89826fddca3392","unresolved":false,"context_lines":[{"line_number":2109,"context_line":"                                   context, nodes)"},{"line_number":2110,"context_line":"            except exception.NoFreeConductorWorker:"},{"line_number":2111,"context_line":"                LOG.warning(_LW(\"There is no more conductor workers for \""},{"line_number":2112,"context_line":"                                \"task _send_sensor_data. %(workers)s \""},{"line_number":2113,"context_line":"                                \"workers has been already spawned.\"),"},{"line_number":2114,"context_line":"                            {\u0027workers\u0027: thread_number})"},{"line_number":2115,"context_line":"                break"}],"source_content_type":"text/x-python","patch_set":16,"id":"1a6eadb0_1a53223a","line":2112,"range":{"start_line":2112,"start_character":33,"end_line":2112,"end_character":55},"updated":"2016-12-16 12:49:27.000000000","message":"nit: send sensor data","commit_id":"beb5e37555aaa6b1c848968840db7316ea9a53bb"},{"author":{"_account_id":22724,"name":"Galyna Zholtkevych","email":"galynazholtkevych1991@gmail.com","username":"gzholtkevych"},"change_message_id":"b7fbea2f1b44194ac0efadda5dce668b9eea5a6e","unresolved":false,"context_lines":[{"line_number":2109,"context_line":"                                   context, nodes)"},{"line_number":2110,"context_line":"            except exception.NoFreeConductorWorker:"},{"line_number":2111,"context_line":"                LOG.warning(_LW(\"There is no more conductor workers for \""},{"line_number":2112,"context_line":"                                \"task _send_sensor_data. %(workers)s \""},{"line_number":2113,"context_line":"                                \"workers has been already spawned.\"),"},{"line_number":2114,"context_line":"                            {\u0027workers\u0027: thread_number})"},{"line_number":2115,"context_line":"                break"}],"source_content_type":"text/x-python","patch_set":16,"id":"1a6eadb0_a613b40c","line":2112,"range":{"start_line":2112,"start_character":33,"end_line":2112,"end_character":55},"in_reply_to":"1a6eadb0_1a53223a","updated":"2016-12-19 14:44:18.000000000","message":"Done","commit_id":"beb5e37555aaa6b1c848968840db7316ea9a53bb"},{"author":{"_account_id":22724,"name":"Galyna Zholtkevych","email":"galynazholtkevych1991@gmail.com","username":"gzholtkevych"},"change_message_id":"b7fbea2f1b44194ac0efadda5dce668b9eea5a6e","unresolved":false,"context_lines":[{"line_number":2109,"context_line":"                                   context, nodes)"},{"line_number":2110,"context_line":"            except exception.NoFreeConductorWorker:"},{"line_number":2111,"context_line":"                LOG.warning(_LW(\"There is no more conductor workers for \""},{"line_number":2112,"context_line":"                                \"task _send_sensor_data. %(workers)s \""},{"line_number":2113,"context_line":"                                \"workers has been already spawned.\"),"},{"line_number":2114,"context_line":"                            {\u0027workers\u0027: thread_number})"},{"line_number":2115,"context_line":"                break"}],"source_content_type":"text/x-python","patch_set":16,"id":"1a6eadb0_260084aa","line":2112,"range":{"start_line":2112,"start_character":67,"end_line":2112,"end_character":68},"in_reply_to":"1a6eadb0_557f2ddf","updated":"2016-12-19 14:44:18.000000000","message":"Done","commit_id":"beb5e37555aaa6b1c848968840db7316ea9a53bb"},{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"737d7ca592ff8911c0641c875e6859f85601e664","unresolved":false,"context_lines":[{"line_number":2022,"context_line":"        driver \u003d driver_factory.get_driver(driver_name)"},{"line_number":2023,"context_line":"        return driver.get_properties()"},{"line_number":2024,"context_line":""},{"line_number":2025,"context_line":"    @METRICS.timer(\u0027ConductorManager._task_for_node_chunk\u0027)"},{"line_number":2026,"context_line":"    def _sensors_nodes_task(self, context, nodes):"},{"line_number":2027,"context_line":"        while True:"},{"line_number":2028,"context_line":"            try:"}],"source_content_type":"text/x-python","patch_set":18,"id":"1a6eadb0_d66bf983","line":2025,"range":{"start_line":2025,"start_character":37,"end_line":2025,"end_character":58},"updated":"2016-12-19 14:51:27.000000000","message":"This is inconsistent with method\u0027s name.","commit_id":"19c029fbaabb4d9baeeb37ba203da5e83ec6e41c"},{"author":{"_account_id":22724,"name":"Galyna Zholtkevych","email":"galynazholtkevych1991@gmail.com","username":"gzholtkevych"},"change_message_id":"efa8553de81ac2c46dfa11f860552e851a0aa4da","unresolved":false,"context_lines":[{"line_number":2022,"context_line":"        driver \u003d driver_factory.get_driver(driver_name)"},{"line_number":2023,"context_line":"        return driver.get_properties()"},{"line_number":2024,"context_line":""},{"line_number":2025,"context_line":"    @METRICS.timer(\u0027ConductorManager._task_for_node_chunk\u0027)"},{"line_number":2026,"context_line":"    def _sensors_nodes_task(self, context, nodes):"},{"line_number":2027,"context_line":"        while True:"},{"line_number":2028,"context_line":"            try:"}],"source_content_type":"text/x-python","patch_set":18,"id":"1a6eadb0_1994c2e6","line":2025,"range":{"start_line":2025,"start_character":37,"end_line":2025,"end_character":58},"in_reply_to":"1a6eadb0_d66bf983","updated":"2016-12-19 15:21:25.000000000","message":"Done","commit_id":"19c029fbaabb4d9baeeb37ba203da5e83ec6e41c"},{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"737d7ca592ff8911c0641c875e6859f85601e664","unresolved":false,"context_lines":[{"line_number":2090,"context_line":"            \"\"\"Create synzhronized queue of nodes."},{"line_number":2091,"context_line":""},{"line_number":2092,"context_line":"            :param fields fields to be matched for a node."},{"line_number":2093,"context_line":"            :return python synchronized queue of nodes."},{"line_number":2094,"context_line":""},{"line_number":2095,"context_line":"            \"\"\""},{"line_number":2096,"context_line":"            node_queue \u003d queue.Queue()"}],"source_content_type":"text/x-python","patch_set":18,"id":"1a6eadb0_36d7cd24","line":2093,"range":{"start_line":2093,"start_character":20,"end_line":2093,"end_character":26},"updated":"2016-12-19 14:51:27.000000000","message":"nit: this word can be removed.","commit_id":"19c029fbaabb4d9baeeb37ba203da5e83ec6e41c"},{"author":{"_account_id":22724,"name":"Galyna Zholtkevych","email":"galynazholtkevych1991@gmail.com","username":"gzholtkevych"},"change_message_id":"efa8553de81ac2c46dfa11f860552e851a0aa4da","unresolved":false,"context_lines":[{"line_number":2090,"context_line":"            \"\"\"Create synzhronized queue of nodes."},{"line_number":2091,"context_line":""},{"line_number":2092,"context_line":"            :param fields fields to be matched for a node."},{"line_number":2093,"context_line":"            :return python synchronized queue of nodes."},{"line_number":2094,"context_line":""},{"line_number":2095,"context_line":"            \"\"\""},{"line_number":2096,"context_line":"            node_queue \u003d queue.Queue()"}],"source_content_type":"text/x-python","patch_set":18,"id":"1a6eadb0_79a3f64f","line":2093,"range":{"start_line":2093,"start_character":20,"end_line":2093,"end_character":26},"in_reply_to":"1a6eadb0_36d7cd24","updated":"2016-12-19 15:21:25.000000000","message":"Done","commit_id":"19c029fbaabb4d9baeeb37ba203da5e83ec6e41c"},{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"e3347c6513dd5a1b055cd63f6aaabebfd4f475e8","unresolved":false,"context_lines":[{"line_number":2023,"context_line":"        return driver.get_properties()"},{"line_number":2024,"context_line":""},{"line_number":2025,"context_line":"    @METRICS.timer(\u0027ConductorManager._sensors_nodes_task\u0027)"},{"line_number":2026,"context_line":"    def _sensors_nodes_task(self, context, nodes):"},{"line_number":2027,"context_line":"        while True:"},{"line_number":2028,"context_line":"            try:"},{"line_number":2029,"context_line":"                node_uuid, driver, instance_uuid \u003d nodes.get_nowait()"}],"source_content_type":"text/x-python","patch_set":19,"id":"1a6eadb0_b302d407","line":2026,"updated":"2016-12-20 14:32:00.000000000","message":"Please add one-line docstring here.","commit_id":"b5b01c6a6eb56feaa34a237bd923bcbf26f2556a"},{"author":{"_account_id":22724,"name":"Galyna Zholtkevych","email":"galynazholtkevych1991@gmail.com","username":"gzholtkevych"},"change_message_id":"509b222e5c36e6d2e087c9fcac10d5bceec4aa05","unresolved":false,"context_lines":[{"line_number":2023,"context_line":"        return driver.get_properties()"},{"line_number":2024,"context_line":""},{"line_number":2025,"context_line":"    @METRICS.timer(\u0027ConductorManager._sensors_nodes_task\u0027)"},{"line_number":2026,"context_line":"    def _sensors_nodes_task(self, context, nodes):"},{"line_number":2027,"context_line":"        while True:"},{"line_number":2028,"context_line":"            try:"},{"line_number":2029,"context_line":"                node_uuid, driver, instance_uuid \u003d nodes.get_nowait()"}],"source_content_type":"text/x-python","patch_set":19,"id":"1a6eadb0_cf5ce04d","line":2026,"in_reply_to":"1a6eadb0_b302d407","updated":"2016-12-21 08:46:19.000000000","message":"Done","commit_id":"b5b01c6a6eb56feaa34a237bd923bcbf26f2556a"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"3568ca377f62a642054d48b4c8a26f8b44ddbf3b","unresolved":false,"context_lines":[{"line_number":2076,"context_line":"                message[\u0027payload\u0027] \u003d ("},{"line_number":2077,"context_line":"                    self._filter_out_unsupported_types(sensors_data))"},{"line_number":2078,"context_line":"                if message[\u0027payload\u0027]:"},{"line_number":2079,"context_line":"                    self.sensors_notifier.info("},{"line_number":2080,"context_line":"                        context, \"hardware.ipmi.metrics\", message)"},{"line_number":2081,"context_line":"            finally:"},{"line_number":2082,"context_line":"                # Yield on every iteration"}],"source_content_type":"text/x-python","patch_set":22,"id":"ba5201f7_c7a09993","line":2079,"updated":"2017-01-02 10:23:53.000000000","message":"instead of all this, maybe let\u0027s spawn a new worker for this command? or maybe this periodic task should only collect data, and then a separate periodic task should post it?","commit_id":"91a18b3ed103e96f55aacb66da9ed94fd6790aa5"},{"author":{"_account_id":22724,"name":"Galyna Zholtkevych","email":"galynazholtkevych1991@gmail.com","username":"gzholtkevych"},"change_message_id":"8700586a3d5e26206745716a62045b11e9504e69","unresolved":false,"context_lines":[{"line_number":2076,"context_line":"                message[\u0027payload\u0027] \u003d ("},{"line_number":2077,"context_line":"                    self._filter_out_unsupported_types(sensors_data))"},{"line_number":2078,"context_line":"                if message[\u0027payload\u0027]:"},{"line_number":2079,"context_line":"                    self.sensors_notifier.info("},{"line_number":2080,"context_line":"                        context, \"hardware.ipmi.metrics\", message)"},{"line_number":2081,"context_line":"            finally:"},{"line_number":2082,"context_line":"                # Yield on every iteration"}],"source_content_type":"text/x-python","patch_set":22,"id":"ba5201f7_ca540e56","line":2079,"in_reply_to":"ba5201f7_c7a09993","updated":"2017-01-03 10:26:18.000000000","message":"The problem is slow performance in collecting data using ipmitool.\nThis is what exactly written in the bug description.\nThe sending is executed afterwards by oslo messaging.\nSo than, if even there is (will be) a bug about bottleneck in sending sensors data also, IMHO, this should be a separate bug for it that needs to be confirmed.","commit_id":"91a18b3ed103e96f55aacb66da9ed94fd6790aa5"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"3568ca377f62a642054d48b4c8a26f8b44ddbf3b","unresolved":false,"context_lines":[{"line_number":2087,"context_line":"    def _send_sensor_data(self, context):"},{"line_number":2088,"context_line":"        \"\"\"Periodically sends sensor data to Ceilometer.\"\"\""},{"line_number":2089,"context_line":""},{"line_number":2090,"context_line":"        def _create_node_queue(fields\u003dNone, **kwargs):"},{"line_number":2091,"context_line":"            \"\"\"Create synzhronized queue of nodes."},{"line_number":2092,"context_line":""},{"line_number":2093,"context_line":"            :param fields fields to be matched for a node."}],"source_content_type":"text/x-python","patch_set":22,"id":"ba5201f7_e7ad9d89","line":2090,"updated":"2017-01-02 10:23:53.000000000","message":"this does not have to be a separate function, you can just inline this code.","commit_id":"91a18b3ed103e96f55aacb66da9ed94fd6790aa5"},{"author":{"_account_id":22724,"name":"Galyna Zholtkevych","email":"galynazholtkevych1991@gmail.com","username":"gzholtkevych"},"change_message_id":"8700586a3d5e26206745716a62045b11e9504e69","unresolved":false,"context_lines":[{"line_number":2087,"context_line":"    def _send_sensor_data(self, context):"},{"line_number":2088,"context_line":"        \"\"\"Periodically sends sensor data to Ceilometer.\"\"\""},{"line_number":2089,"context_line":""},{"line_number":2090,"context_line":"        def _create_node_queue(fields\u003dNone, **kwargs):"},{"line_number":2091,"context_line":"            \"\"\"Create synzhronized queue of nodes."},{"line_number":2092,"context_line":""},{"line_number":2093,"context_line":"            :param fields fields to be matched for a node."}],"source_content_type":"text/x-python","patch_set":22,"id":"ba5201f7_2a911af1","line":2090,"in_reply_to":"ba5201f7_e7ad9d89","updated":"2017-01-03 10:26:18.000000000","message":"Done","commit_id":"91a18b3ed103e96f55aacb66da9ed94fd6790aa5"},{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"c3f57a0d1864762296ce66052f3a7193cdb6efc5","unresolved":false,"context_lines":[{"line_number":2090,"context_line":"        def _create_node_queue(fields\u003dNone, **kwargs):"},{"line_number":2091,"context_line":"            \"\"\"Create synzhronized queue of nodes."},{"line_number":2092,"context_line":""},{"line_number":2093,"context_line":"            :param fields fields to be matched for a node."},{"line_number":2094,"context_line":"            :return synchronized queue of nodes."},{"line_number":2095,"context_line":""},{"line_number":2096,"context_line":"            \"\"\""}],"source_content_type":"text/x-python","patch_set":22,"id":"da4df55a_79bc5fbb","line":2093,"updated":"2016-12-28 19:03:18.000000000","message":"nit: missing \":\"","commit_id":"91a18b3ed103e96f55aacb66da9ed94fd6790aa5"},{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"c3f57a0d1864762296ce66052f3a7193cdb6efc5","unresolved":false,"context_lines":[{"line_number":2091,"context_line":"            \"\"\"Create synzhronized queue of nodes."},{"line_number":2092,"context_line":""},{"line_number":2093,"context_line":"            :param fields fields to be matched for a node."},{"line_number":2094,"context_line":"            :return synchronized queue of nodes."},{"line_number":2095,"context_line":""},{"line_number":2096,"context_line":"            \"\"\""},{"line_number":2097,"context_line":"            node_queue \u003d queue.Queue()"}],"source_content_type":"text/x-python","patch_set":22,"id":"da4df55a_b9b247e3","line":2094,"updated":"2016-12-28 19:03:18.000000000","message":"ditto","commit_id":"91a18b3ed103e96f55aacb66da9ed94fd6790aa5"},{"author":{"_account_id":6637,"name":"Sam Betts","email":"sam@code-smash.net","username":"sambetts"},"change_message_id":"66ba91f37a50f1ea4b01928ac02ddad01cc3479d","unresolved":false,"context_lines":[{"line_number":2092,"context_line":"        if not CONF.conductor.send_sensor_data:"},{"line_number":2093,"context_line":"            return"},{"line_number":2094,"context_line":""},{"line_number":2095,"context_line":"        if futures:"},{"line_number":2096,"context_line":"            LOG.warning(\"Previous task _send_sensor_data is still running.\""},{"line_number":2097,"context_line":"                        \"Waiting for completion\")"},{"line_number":2098,"context_line":"            waiters.wait_for_all("},{"line_number":2099,"context_line":"                futures, timeout\u003dCONF.conductor.wait_timeout_for_periodic)"},{"line_number":2100,"context_line":""},{"line_number":2101,"context_line":"        filters \u003d {\u0027associated\u0027: True}"},{"line_number":2102,"context_line":"        nodes \u003d queue.Queue()"}],"source_content_type":"text/x-python","patch_set":25,"id":"ba5201f7_20ca0850","line":2099,"range":{"start_line":2095,"start_character":0,"end_line":2099,"end_character":74},"updated":"2017-01-11 09:41:21.000000000","message":"Why put this here and not after the for loop below?","commit_id":"5d668bf38a6688b195817d13738a891effa48e05"},{"author":{"_account_id":22724,"name":"Galyna Zholtkevych","email":"galynazholtkevych1991@gmail.com","username":"gzholtkevych"},"change_message_id":"2e0b3e8360d4001ababed6c984d6b4d51cef5073","unresolved":false,"context_lines":[{"line_number":2092,"context_line":"        if not CONF.conductor.send_sensor_data:"},{"line_number":2093,"context_line":"            return"},{"line_number":2094,"context_line":""},{"line_number":2095,"context_line":"        if futures:"},{"line_number":2096,"context_line":"            LOG.warning(\"Previous task _send_sensor_data is still running.\""},{"line_number":2097,"context_line":"                        \"Waiting for completion\")"},{"line_number":2098,"context_line":"            waiters.wait_for_all("},{"line_number":2099,"context_line":"                futures, timeout\u003dCONF.conductor.wait_timeout_for_periodic)"},{"line_number":2100,"context_line":""},{"line_number":2101,"context_line":"        filters \u003d {\u0027associated\u0027: True}"},{"line_number":2102,"context_line":"        nodes \u003d queue.Queue()"}],"source_content_type":"text/x-python","patch_set":25,"id":"9a57fde8_c7bb5974","line":2099,"range":{"start_line":2095,"start_character":0,"end_line":2099,"end_character":74},"in_reply_to":"ba5201f7_20ca0850","updated":"2017-01-12 13:22:03.000000000","message":"Here we have a complex situation.\nMay be, I did not get it right, but it seems, that if we do not check in the beginning, if this periodic task is already running, nothing prevents to run periodic task again and workers will be spawned.\nSo in this case the point of waiting in the end of method is lost\n\nBut if I have mistaken here, any comments are appreciated.\nIf putting waiters just after the loop solves the problem and no choice to run this task again if it is not finished, then agree, it should be put in the end :)","commit_id":"5d668bf38a6688b195817d13738a891effa48e05"},{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"5f3c7e7639e0be92a777da099550c2178951d835","unresolved":false,"context_lines":[{"line_number":2095,"context_line":"        if futures:"},{"line_number":2096,"context_line":"            LOG.warning(\"Previous task _send_sensor_data is still running.\""},{"line_number":2097,"context_line":"                        \"Waiting for completion\")"},{"line_number":2098,"context_line":"            waiters.wait_for_all("},{"line_number":2099,"context_line":"                futures, timeout\u003dCONF.conductor.wait_timeout_for_periodic)"},{"line_number":2100,"context_line":""},{"line_number":2101,"context_line":"        filters \u003d {\u0027associated\u0027: True}"},{"line_number":2102,"context_line":"        nodes \u003d queue.Queue()"}],"source_content_type":"text/x-python","patch_set":26,"id":"9a57fde8_2a7ce571","line":2099,"range":{"start_line":2098,"start_character":12,"end_line":2099,"end_character":74},"updated":"2017-01-12 14:28:52.000000000","message":"don\u0027t we need to remove everything from futures after this? I don\u0027t see where any items are removed from futures.","commit_id":"ce2e2896f95650e476e2bccb359ee965b81b5786"},{"author":{"_account_id":22724,"name":"Galyna Zholtkevych","email":"galynazholtkevych1991@gmail.com","username":"gzholtkevych"},"change_message_id":"058d4ac5d05e56130f6eecee9a2390f9a5523146","unresolved":false,"context_lines":[{"line_number":2095,"context_line":"        if futures:"},{"line_number":2096,"context_line":"            LOG.warning(\"Previous task _send_sensor_data is still running.\""},{"line_number":2097,"context_line":"                        \"Waiting for completion\")"},{"line_number":2098,"context_line":"            waiters.wait_for_all("},{"line_number":2099,"context_line":"                futures, timeout\u003dCONF.conductor.wait_timeout_for_periodic)"},{"line_number":2100,"context_line":""},{"line_number":2101,"context_line":"        filters \u003d {\u0027associated\u0027: True}"},{"line_number":2102,"context_line":"        nodes \u003d queue.Queue()"}],"source_content_type":"text/x-python","patch_set":26,"id":"9a57fde8_7679742f","line":2099,"range":{"start_line":2098,"start_character":12,"end_line":2099,"end_character":74},"in_reply_to":"9a57fde8_2a7ce571","updated":"2017-01-12 15:39:31.000000000","message":"Forgot to clear, thanks for your comment!","commit_id":"ce2e2896f95650e476e2bccb359ee965b81b5786"},{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"07ca4555db9b833961ce84454bd34c98d1a5b9e1","unresolved":false,"context_lines":[{"line_number":2093,"context_line":""},{"line_number":2094,"context_line":"        filters \u003d {\u0027associated\u0027: True}"},{"line_number":2095,"context_line":"        nodes \u003d queue.Queue()"},{"line_number":2096,"context_line":"        for node in self.iter_nodes(fields\u003d[\u0027instance_uuid\u0027], filters\u003dfilters):"},{"line_number":2097,"context_line":"            nodes.put_nowait(node)"},{"line_number":2098,"context_line":""},{"line_number":2099,"context_line":"        number_of_threads \u003d min(CONF.conductor.send_sensor_data_workers,"}],"source_content_type":"text/x-python","patch_set":30,"id":"7a3c09a3_a9c80d56","line":2096,"range":{"start_line":2096,"start_character":12,"end_line":2096,"end_character":16},"updated":"2017-01-18 12:12:47.000000000","message":"It\u0027s not really a node, but, anyway :)","commit_id":"3a035c516c4e61bafd61684dd615655d6ab38666"},{"author":{"_account_id":22724,"name":"Galyna Zholtkevych","email":"galynazholtkevych1991@gmail.com","username":"gzholtkevych"},"change_message_id":"058f1c7651ad254bfb1075f482335f887960d163","unresolved":false,"context_lines":[{"line_number":2093,"context_line":""},{"line_number":2094,"context_line":"        filters \u003d {\u0027associated\u0027: True}"},{"line_number":2095,"context_line":"        nodes \u003d queue.Queue()"},{"line_number":2096,"context_line":"        for node in self.iter_nodes(fields\u003d[\u0027instance_uuid\u0027], filters\u003dfilters):"},{"line_number":2097,"context_line":"            nodes.put_nowait(node)"},{"line_number":2098,"context_line":""},{"line_number":2099,"context_line":"        number_of_threads \u003d min(CONF.conductor.send_sensor_data_workers,"}],"source_content_type":"text/x-python","patch_set":30,"id":"5a3905b3_0f09f32c","line":2096,"range":{"start_line":2096,"start_character":12,"end_line":2096,"end_character":16},"in_reply_to":"7a3c09a3_a9c80d56","updated":"2017-01-19 11:21:04.000000000","message":"Corrected.\nFor nodes queue name, I think, it is clear enough and I can leave it like that","commit_id":"3a035c516c4e61bafd61684dd615655d6ab38666"},{"author":{"_account_id":14614,"name":"Kyrylo Romanenko","display_name":"K.Romanenko","email":"romanenko-kv@hotmail.com","username":"kromanenko"},"change_message_id":"629fab5a219425f81694894f28bb522210aef962","unresolved":false,"context_lines":[{"line_number":2024,"context_line":""},{"line_number":2025,"context_line":"    @METRICS.timer(\u0027ConductorManager._sensors_nodes_task\u0027)"},{"line_number":2026,"context_line":"    def _sensors_nodes_task(self, context, nodes):"},{"line_number":2027,"context_line":"        \"\"\"Sends sensors data for the node from synchronized queue\"\"\""},{"line_number":2028,"context_line":"        while True:"},{"line_number":2029,"context_line":"            try:"},{"line_number":2030,"context_line":"                node_uuid, driver, instance_uuid \u003d nodes.get_nowait()"}],"source_content_type":"text/x-python","patch_set":32,"id":"5a3905b3_cd20939e","line":2027,"updated":"2017-01-20 10:15:06.000000000","message":".","commit_id":"e1567d4f7bc648ded8c9dbb17016699a0b17fb56"},{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"0086795e4a423398091bc7a80355f4c8c0657637","unresolved":false,"context_lines":[{"line_number":2024,"context_line":""},{"line_number":2025,"context_line":"    @METRICS.timer(\u0027ConductorManager._sensors_nodes_task\u0027)"},{"line_number":2026,"context_line":"    def _sensors_nodes_task(self, context, nodes):"},{"line_number":2027,"context_line":"        \"\"\"Sends sensors data for the node from synchronized queue.\"\"\""},{"line_number":2028,"context_line":"        while True:"},{"line_number":2029,"context_line":"            try:"},{"line_number":2030,"context_line":"                node_uuid, driver, instance_uuid \u003d nodes.get_nowait()"}],"source_content_type":"text/x-python","patch_set":33,"id":"5a3905b3_3974a666","line":2027,"range":{"start_line":2027,"start_character":38,"end_line":2027,"end_character":43},"updated":"2017-01-23 11:15:12.000000000","message":"s/node/nodes","commit_id":"fa32956fcbff280e3f4845cfe6c42b2ebb7262bf"},{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"0086795e4a423398091bc7a80355f4c8c0657637","unresolved":false,"context_lines":[{"line_number":2090,"context_line":"        # do nothing if send_sensor_data option is False"},{"line_number":2091,"context_line":"        if not CONF.conductor.send_sensor_data:"},{"line_number":2092,"context_line":"            return"},{"line_number":2093,"context_line":""},{"line_number":2094,"context_line":"        filters \u003d {\u0027associated\u0027: True}"},{"line_number":2095,"context_line":"        nodes \u003d queue.Queue()"},{"line_number":2096,"context_line":"        for node_info in self.iter_nodes(fields\u003d[\u0027instance_uuid\u0027],"}],"source_content_type":"text/x-python","patch_set":33,"id":"5a3905b3_d9cd6232","line":2093,"updated":"2017-01-23 11:15:12.000000000","message":"Administrator can set wait_timeout_for_send_sensor_data \u003e send_sensor_data_interval, maybe add warning logging here?","commit_id":"fa32956fcbff280e3f4845cfe6c42b2ebb7262bf"},{"author":{"_account_id":22724,"name":"Galyna Zholtkevych","email":"galynazholtkevych1991@gmail.com","username":"gzholtkevych"},"change_message_id":"12fb2ae0af3a15e7173c807e568d30cebb32032e","unresolved":false,"context_lines":[{"line_number":2090,"context_line":"        # do nothing if send_sensor_data option is False"},{"line_number":2091,"context_line":"        if not CONF.conductor.send_sensor_data:"},{"line_number":2092,"context_line":"            return"},{"line_number":2093,"context_line":""},{"line_number":2094,"context_line":"        filters \u003d {\u0027associated\u0027: True}"},{"line_number":2095,"context_line":"        nodes \u003d queue.Queue()"},{"line_number":2096,"context_line":"        for node_info in self.iter_nodes(fields\u003d[\u0027instance_uuid\u0027],"}],"source_content_type":"text/x-python","patch_set":33,"id":"5a3905b3_359ca60e","line":2093,"in_reply_to":"5a3905b3_14f6d1f8","updated":"2017-01-23 14:30:44.000000000","message":"Why? Does user need to be warned if this method can break scheduling of this task if he changed config options to not desired ones?","commit_id":"fa32956fcbff280e3f4845cfe6c42b2ebb7262bf"},{"author":{"_account_id":22724,"name":"Galyna Zholtkevych","email":"galynazholtkevych1991@gmail.com","username":"gzholtkevych"},"change_message_id":"12fb2ae0af3a15e7173c807e568d30cebb32032e","unresolved":false,"context_lines":[{"line_number":2090,"context_line":"        # do nothing if send_sensor_data option is False"},{"line_number":2091,"context_line":"        if not CONF.conductor.send_sensor_data:"},{"line_number":2092,"context_line":"            return"},{"line_number":2093,"context_line":""},{"line_number":2094,"context_line":"        filters \u003d {\u0027associated\u0027: True}"},{"line_number":2095,"context_line":"        nodes \u003d queue.Queue()"},{"line_number":2096,"context_line":"        for node_info in self.iter_nodes(fields\u003d[\u0027instance_uuid\u0027],"}],"source_content_type":"text/x-python","patch_set":33,"id":"5a3905b3_353e668c","line":2093,"in_reply_to":"5a3905b3_d9cd6232","updated":"2017-01-23 14:30:44.000000000","message":"Done","commit_id":"fa32956fcbff280e3f4845cfe6c42b2ebb7262bf"},{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"7af8c950a4612d3f6fcf663e7de902e55ba20c19","unresolved":false,"context_lines":[{"line_number":2090,"context_line":"        # do nothing if send_sensor_data option is False"},{"line_number":2091,"context_line":"        if not CONF.conductor.send_sensor_data:"},{"line_number":2092,"context_line":"            return"},{"line_number":2093,"context_line":""},{"line_number":2094,"context_line":"        filters \u003d {\u0027associated\u0027: True}"},{"line_number":2095,"context_line":"        nodes \u003d queue.Queue()"},{"line_number":2096,"context_line":"        for node_info in self.iter_nodes(fields\u003d[\u0027instance_uuid\u0027],"}],"source_content_type":"text/x-python","patch_set":33,"id":"5a3905b3_14f6d1f8","line":2093,"in_reply_to":"5a3905b3_d9cd6232","updated":"2017-01-23 11:24:21.000000000","message":"Not needed if logging mentioned in the comment below will be added.","commit_id":"fa32956fcbff280e3f4845cfe6c42b2ebb7262bf"},{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"0086795e4a423398091bc7a80355f4c8c0657637","unresolved":false,"context_lines":[{"line_number":2113,"context_line":"                break"},{"line_number":2114,"context_line":""},{"line_number":2115,"context_line":"        waiters.wait_for_all("},{"line_number":2116,"context_line":"            futures, timeout\u003dCONF.conductor.wait_timeout_for_send_sensor_data)"},{"line_number":2117,"context_line":""},{"line_number":2118,"context_line":"    def _filter_out_unsupported_types(self, sensors_data):"},{"line_number":2119,"context_line":"        \"\"\"Filters out sensor data types that aren\u0027t specified in the config."}],"source_content_type":"text/x-python","patch_set":33,"id":"5a3905b3_99711a47","line":2116,"updated":"2017-01-23 11:15:12.000000000","message":"Please add warning logging here if some workers are not complete http://docs.openstack.org/developer/futurist/api.html#waiters","commit_id":"fa32956fcbff280e3f4845cfe6c42b2ebb7262bf"},{"author":{"_account_id":22724,"name":"Galyna Zholtkevych","email":"galynazholtkevych1991@gmail.com","username":"gzholtkevych"},"change_message_id":"12fb2ae0af3a15e7173c807e568d30cebb32032e","unresolved":false,"context_lines":[{"line_number":2113,"context_line":"                break"},{"line_number":2114,"context_line":""},{"line_number":2115,"context_line":"        waiters.wait_for_all("},{"line_number":2116,"context_line":"            futures, timeout\u003dCONF.conductor.wait_timeout_for_send_sensor_data)"},{"line_number":2117,"context_line":""},{"line_number":2118,"context_line":"    def _filter_out_unsupported_types(self, sensors_data):"},{"line_number":2119,"context_line":"        \"\"\"Filters out sensor data types that aren\u0027t specified in the config."}],"source_content_type":"text/x-python","patch_set":33,"id":"5a3905b3_d51e02ba","line":2116,"in_reply_to":"5a3905b3_99711a47","updated":"2017-01-23 14:30:44.000000000","message":"Done","commit_id":"fa32956fcbff280e3f4845cfe6c42b2ebb7262bf"},{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"af0c3eea7d14f1b13eaeffa1212fb4e68c567987","unresolved":false,"context_lines":[{"line_number":2094,"context_line":"        if (CONF.conductor.send_sensor_data_wait_timeout \u003e"},{"line_number":2095,"context_line":"                CONF.conductor.send_sensor_data_interval):"},{"line_number":2096,"context_line":"            LOG.warning(_LW(\"Waiting time for periodic task to finish \""},{"line_number":2097,"context_line":"                            \"%(timeout)s is greater than frequency of its \""},{"line_number":2098,"context_line":"                            \"execution %(interval)s, which may break the \""},{"line_number":2099,"context_line":"                            \"periodic task\u0027s schedule.\"),"},{"line_number":2100,"context_line":"                        {\u0027timeout\u0027: (CONF.conductor."}],"source_content_type":"text/x-python","patch_set":34,"id":"5a3905b3_78c295ea","line":2097,"range":{"start_line":2097,"start_character":39,"end_line":2097,"end_character":41},"updated":"2017-01-23 17:05:56.000000000","message":"nit: %(timeout)d","commit_id":"d9ed2ccf96c8806063b99c6fe7ee81f92c3ac7bb"},{"author":{"_account_id":22724,"name":"Galyna Zholtkevych","email":"galynazholtkevych1991@gmail.com","username":"gzholtkevych"},"change_message_id":"d780e340b844047f4ade04401dd10c4313b2c670","unresolved":false,"context_lines":[{"line_number":2094,"context_line":"        if (CONF.conductor.send_sensor_data_wait_timeout \u003e"},{"line_number":2095,"context_line":"                CONF.conductor.send_sensor_data_interval):"},{"line_number":2096,"context_line":"            LOG.warning(_LW(\"Waiting time for periodic task to finish \""},{"line_number":2097,"context_line":"                            \"%(timeout)s is greater than frequency of its \""},{"line_number":2098,"context_line":"                            \"execution %(interval)s, which may break the \""},{"line_number":2099,"context_line":"                            \"periodic task\u0027s schedule.\"),"},{"line_number":2100,"context_line":"                        {\u0027timeout\u0027: (CONF.conductor."}],"source_content_type":"text/x-python","patch_set":34,"id":"5a3905b3_5f7e7f6a","line":2097,"range":{"start_line":2097,"start_character":39,"end_line":2097,"end_character":41},"in_reply_to":"5a3905b3_78c295ea","updated":"2017-01-24 09:08:10.000000000","message":"Done","commit_id":"d9ed2ccf96c8806063b99c6fe7ee81f92c3ac7bb"},{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"af0c3eea7d14f1b13eaeffa1212fb4e68c567987","unresolved":false,"context_lines":[{"line_number":2095,"context_line":"                CONF.conductor.send_sensor_data_interval):"},{"line_number":2096,"context_line":"            LOG.warning(_LW(\"Waiting time for periodic task to finish \""},{"line_number":2097,"context_line":"                            \"%(timeout)s is greater than frequency of its \""},{"line_number":2098,"context_line":"                            \"execution %(interval)s, which may break the \""},{"line_number":2099,"context_line":"                            \"periodic task\u0027s schedule.\"),"},{"line_number":2100,"context_line":"                        {\u0027timeout\u0027: (CONF.conductor."},{"line_number":2101,"context_line":"                                     send_sensor_data_wait_timeout),"}],"source_content_type":"text/x-python","patch_set":34,"id":"5a3905b3_98b5817f","line":2098,"range":{"start_line":2098,"start_character":50,"end_line":2098,"end_character":52},"updated":"2017-01-23 17:05:56.000000000","message":"ditto","commit_id":"d9ed2ccf96c8806063b99c6fe7ee81f92c3ac7bb"},{"author":{"_account_id":22724,"name":"Galyna Zholtkevych","email":"galynazholtkevych1991@gmail.com","username":"gzholtkevych"},"change_message_id":"d780e340b844047f4ade04401dd10c4313b2c670","unresolved":false,"context_lines":[{"line_number":2095,"context_line":"                CONF.conductor.send_sensor_data_interval):"},{"line_number":2096,"context_line":"            LOG.warning(_LW(\"Waiting time for periodic task to finish \""},{"line_number":2097,"context_line":"                            \"%(timeout)s is greater than frequency of its \""},{"line_number":2098,"context_line":"                            \"execution %(interval)s, which may break the \""},{"line_number":2099,"context_line":"                            \"periodic task\u0027s schedule.\"),"},{"line_number":2100,"context_line":"                        {\u0027timeout\u0027: (CONF.conductor."},{"line_number":2101,"context_line":"                                     send_sensor_data_wait_timeout),"}],"source_content_type":"text/x-python","patch_set":34,"id":"5a3905b3_1f887770","line":2098,"range":{"start_line":2098,"start_character":50,"end_line":2098,"end_character":52},"in_reply_to":"5a3905b3_98b5817f","updated":"2017-01-24 09:08:10.000000000","message":"Done","commit_id":"d9ed2ccf96c8806063b99c6fe7ee81f92c3ac7bb"},{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"af0c3eea7d14f1b13eaeffa1212fb4e68c567987","unresolved":false,"context_lines":[{"line_number":2125,"context_line":"        done, not_done \u003d waiters.wait_for_all("},{"line_number":2126,"context_line":"            futures, timeout\u003dCONF.conductor.send_sensor_data_wait_timeout)"},{"line_number":2127,"context_line":"        if not_done:"},{"line_number":2128,"context_line":"            LOG.warning(_LW(\"Some of subtasks for send sensor data were not \""},{"line_number":2129,"context_line":"                            \"completed: %s\"), not_done)"},{"line_number":2130,"context_line":""},{"line_number":2131,"context_line":"    def _filter_out_unsupported_types(self, sensors_data):"}],"source_content_type":"text/x-python","patch_set":34,"id":"5a3905b3_184991d0","line":2128,"range":{"start_line":2128,"start_character":37,"end_line":2128,"end_character":45},"updated":"2017-01-23 17:05:56.000000000","message":"better to use \"workers\" term here","commit_id":"d9ed2ccf96c8806063b99c6fe7ee81f92c3ac7bb"},{"author":{"_account_id":22724,"name":"Galyna Zholtkevych","email":"galynazholtkevych1991@gmail.com","username":"gzholtkevych"},"change_message_id":"d780e340b844047f4ade04401dd10c4313b2c670","unresolved":false,"context_lines":[{"line_number":2125,"context_line":"        done, not_done \u003d waiters.wait_for_all("},{"line_number":2126,"context_line":"            futures, timeout\u003dCONF.conductor.send_sensor_data_wait_timeout)"},{"line_number":2127,"context_line":"        if not_done:"},{"line_number":2128,"context_line":"            LOG.warning(_LW(\"Some of subtasks for send sensor data were not \""},{"line_number":2129,"context_line":"                            \"completed: %s\"), not_done)"},{"line_number":2130,"context_line":""},{"line_number":2131,"context_line":"    def _filter_out_unsupported_types(self, sensors_data):"}],"source_content_type":"text/x-python","patch_set":34,"id":"5a3905b3_1f9b1719","line":2128,"range":{"start_line":2128,"start_character":37,"end_line":2128,"end_character":45},"in_reply_to":"5a3905b3_184991d0","updated":"2017-01-24 09:08:10.000000000","message":"Done","commit_id":"d9ed2ccf96c8806063b99c6fe7ee81f92c3ac7bb"},{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"af0c3eea7d14f1b13eaeffa1212fb4e68c567987","unresolved":false,"context_lines":[{"line_number":2126,"context_line":"            futures, timeout\u003dCONF.conductor.send_sensor_data_wait_timeout)"},{"line_number":2127,"context_line":"        if not_done:"},{"line_number":2128,"context_line":"            LOG.warning(_LW(\"Some of subtasks for send sensor data were not \""},{"line_number":2129,"context_line":"                            \"completed: %s\"), not_done)"},{"line_number":2130,"context_line":""},{"line_number":2131,"context_line":"    def _filter_out_unsupported_types(self, sensors_data):"},{"line_number":2132,"context_line":"        \"\"\"Filters out sensor data types that aren\u0027t specified in the config."}],"source_content_type":"text/x-python","patch_set":34,"id":"5a3905b3_18e511a7","line":2129,"range":{"start_line":2129,"start_character":40,"end_line":2129,"end_character":43},"updated":"2017-01-23 17:05:56.000000000","message":"looks like futures instances will be converted to string here, please put number of worker here instead","commit_id":"d9ed2ccf96c8806063b99c6fe7ee81f92c3ac7bb"},{"author":{"_account_id":22724,"name":"Galyna Zholtkevych","email":"galynazholtkevych1991@gmail.com","username":"gzholtkevych"},"change_message_id":"d780e340b844047f4ade04401dd10c4313b2c670","unresolved":false,"context_lines":[{"line_number":2126,"context_line":"            futures, timeout\u003dCONF.conductor.send_sensor_data_wait_timeout)"},{"line_number":2127,"context_line":"        if not_done:"},{"line_number":2128,"context_line":"            LOG.warning(_LW(\"Some of subtasks for send sensor data were not \""},{"line_number":2129,"context_line":"                            \"completed: %s\"), not_done)"},{"line_number":2130,"context_line":""},{"line_number":2131,"context_line":"    def _filter_out_unsupported_types(self, sensors_data):"},{"line_number":2132,"context_line":"        \"\"\"Filters out sensor data types that aren\u0027t specified in the config."}],"source_content_type":"text/x-python","patch_set":34,"id":"5a3905b3_ff972be9","line":2129,"range":{"start_line":2129,"start_character":40,"end_line":2129,"end_character":43},"in_reply_to":"5a3905b3_18e511a7","updated":"2017-01-24 09:08:10.000000000","message":"Done","commit_id":"d9ed2ccf96c8806063b99c6fe7ee81f92c3ac7bb"},{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"70757a56f64f9d97526f018fef2f032e74738d77","unresolved":false,"context_lines":[{"line_number":2093,"context_line":""},{"line_number":2094,"context_line":"        if (CONF.conductor.send_sensor_data_wait_timeout \u003e"},{"line_number":2095,"context_line":"                CONF.conductor.send_sensor_data_interval):"},{"line_number":2096,"context_line":"            LOG.warning(_LW(\"Waiting time for periodic task to finish \""},{"line_number":2097,"context_line":"                            \"%(timeout)d is greater than frequency of its \""},{"line_number":2098,"context_line":"                            \"execution %(interval)d, which may break the \""},{"line_number":2099,"context_line":"                            \"periodic task\u0027s schedule.\"),"}],"source_content_type":"text/x-python","patch_set":35,"id":"5a3905b3_739b7466","line":2096,"range":{"start_line":2096,"start_character":12,"end_line":2096,"end_character":23},"updated":"2017-01-24 10:22:14.000000000","message":"Not sure that this logging is needed, maybe put message into log once?","commit_id":"56a860c9c72c9294ccd052f9140cb13a193f7695"},{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"70757a56f64f9d97526f018fef2f032e74738d77","unresolved":false,"context_lines":[{"line_number":2093,"context_line":""},{"line_number":2094,"context_line":"        if (CONF.conductor.send_sensor_data_wait_timeout \u003e"},{"line_number":2095,"context_line":"                CONF.conductor.send_sensor_data_interval):"},{"line_number":2096,"context_line":"            LOG.warning(_LW(\"Waiting time for periodic task to finish \""},{"line_number":2097,"context_line":"                            \"%(timeout)d is greater than frequency of its \""},{"line_number":2098,"context_line":"                            \"execution %(interval)d, which may break the \""},{"line_number":2099,"context_line":"                            \"periodic task\u0027s schedule.\"),"}],"source_content_type":"text/x-python","patch_set":35,"id":"5a3905b3_93fb8078","line":2096,"range":{"start_line":2096,"start_character":45,"end_line":2096,"end_character":59},"updated":"2017-01-24 10:22:14.000000000","message":"s/periodic task/send sensors data periodic task","commit_id":"56a860c9c72c9294ccd052f9140cb13a193f7695"},{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"d1941343140cbbf1787b6dbfeaa35178d85ca56b","unresolved":false,"context_lines":[{"line_number":2093,"context_line":""},{"line_number":2094,"context_line":"        if (CONF.conductor.send_sensor_data_wait_timeout \u003e"},{"line_number":2095,"context_line":"                CONF.conductor.send_sensor_data_interval):"},{"line_number":2096,"context_line":"            LOG.warning(_LW(\"Waiting time for periodic task to finish \""},{"line_number":2097,"context_line":"                            \"%(timeout)d is greater than frequency of its \""},{"line_number":2098,"context_line":"                            \"execution %(interval)d, which may break the \""},{"line_number":2099,"context_line":"                            \"periodic task\u0027s schedule.\"),"}],"source_content_type":"text/x-python","patch_set":35,"id":"5a3905b3_4e116b5c","line":2096,"range":{"start_line":2096,"start_character":45,"end_line":2096,"end_character":59},"in_reply_to":"5a3905b3_6e438713","updated":"2017-01-24 10:49:32.000000000","message":"Not sure that we should use oslo.config values interpolation here. Administrator may wants to set interval \u003c timeout for rare bad cases.","commit_id":"56a860c9c72c9294ccd052f9140cb13a193f7695"},{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"15d861fbea3a6dd9455dc27812b6ab4e4a3a48a2","unresolved":false,"context_lines":[{"line_number":2093,"context_line":""},{"line_number":2094,"context_line":"        if (CONF.conductor.send_sensor_data_wait_timeout \u003e"},{"line_number":2095,"context_line":"                CONF.conductor.send_sensor_data_interval):"},{"line_number":2096,"context_line":"            LOG.warning(_LW(\"Waiting time for periodic task to finish \""},{"line_number":2097,"context_line":"                            \"%(timeout)d is greater than frequency of its \""},{"line_number":2098,"context_line":"                            \"execution %(interval)d, which may break the \""},{"line_number":2099,"context_line":"                            \"periodic task\u0027s schedule.\"),"}],"source_content_type":"text/x-python","patch_set":35,"id":"5a3905b3_2e641fb7","line":2096,"range":{"start_line":2096,"start_character":45,"end_line":2096,"end_character":59},"in_reply_to":"5a3905b3_6e438713","updated":"2017-01-24 10:34:43.000000000","message":"Sorry, other way around :)","commit_id":"56a860c9c72c9294ccd052f9140cb13a193f7695"},{"author":{"_account_id":22724,"name":"Galyna Zholtkevych","email":"galynazholtkevych1991@gmail.com","username":"gzholtkevych"},"change_message_id":"1702430ed3add1c8d8c9a5b69fbc3f4c677699e8","unresolved":false,"context_lines":[{"line_number":2093,"context_line":""},{"line_number":2094,"context_line":"        if (CONF.conductor.send_sensor_data_wait_timeout \u003e"},{"line_number":2095,"context_line":"                CONF.conductor.send_sensor_data_interval):"},{"line_number":2096,"context_line":"            LOG.warning(_LW(\"Waiting time for periodic task to finish \""},{"line_number":2097,"context_line":"                            \"%(timeout)d is greater than frequency of its \""},{"line_number":2098,"context_line":"                            \"execution %(interval)d, which may break the \""},{"line_number":2099,"context_line":"                            \"periodic task\u0027s schedule.\"),"}],"source_content_type":"text/x-python","patch_set":35,"id":"5a3905b3_fbbf36cd","line":2096,"range":{"start_line":2096,"start_character":45,"end_line":2096,"end_character":59},"in_reply_to":"5a3905b3_6e438713","updated":"2017-01-24 12:54:48.000000000","message":"Thanks, I have chosen the second way, as for me it is cleaner. It seems that option to reference to another config value works for StrOpt, but not for IntOpt, IMHO, help message should be updated then","commit_id":"56a860c9c72c9294ccd052f9140cb13a193f7695"},{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"67482faada1fdce9fff2771bdd125d85458bfbf6","unresolved":false,"context_lines":[{"line_number":2093,"context_line":""},{"line_number":2094,"context_line":"        if (CONF.conductor.send_sensor_data_wait_timeout \u003e"},{"line_number":2095,"context_line":"                CONF.conductor.send_sensor_data_interval):"},{"line_number":2096,"context_line":"            LOG.warning(_LW(\"Waiting time for periodic task to finish \""},{"line_number":2097,"context_line":"                            \"%(timeout)d is greater than frequency of its \""},{"line_number":2098,"context_line":"                            \"execution %(interval)d, which may break the \""},{"line_number":2099,"context_line":"                            \"periodic task\u0027s schedule.\"),"}],"source_content_type":"text/x-python","patch_set":35,"id":"5a3905b3_6e438713","line":2096,"range":{"start_line":2096,"start_character":45,"end_line":2096,"end_character":59},"in_reply_to":"5a3905b3_93fb8078","updated":"2017-01-24 10:33:26.000000000","message":"++, that makes sense to print this only once, somewhere during notification transport initialization maybe. Another possible way would be to use oslo.config values interpolation http://docs.openstack.org/developer/oslo.config/cfg.html#option-value-interpolation, setting send_sensor_data_wait_timeout\u0027s min value to be $send_sensor_data_interval.","commit_id":"56a860c9c72c9294ccd052f9140cb13a193f7695"},{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"70757a56f64f9d97526f018fef2f032e74738d77","unresolved":false,"context_lines":[{"line_number":2094,"context_line":"        if (CONF.conductor.send_sensor_data_wait_timeout \u003e"},{"line_number":2095,"context_line":"                CONF.conductor.send_sensor_data_interval):"},{"line_number":2096,"context_line":"            LOG.warning(_LW(\"Waiting time for periodic task to finish \""},{"line_number":2097,"context_line":"                            \"%(timeout)d is greater than frequency of its \""},{"line_number":2098,"context_line":"                            \"execution %(interval)d, which may break the \""},{"line_number":2099,"context_line":"                            \"periodic task\u0027s schedule.\"),"},{"line_number":2100,"context_line":"                        {\u0027timeout\u0027: (CONF.conductor."}],"source_content_type":"text/x-python","patch_set":35,"id":"5a3905b3_f3fda4b1","line":2097,"range":{"start_line":2097,"start_character":57,"end_line":2097,"end_character":66},"updated":"2017-01-24 10:22:14.000000000","message":"s/frequency/interval","commit_id":"56a860c9c72c9294ccd052f9140cb13a193f7695"},{"author":{"_account_id":22724,"name":"Galyna Zholtkevych","email":"galynazholtkevych1991@gmail.com","username":"gzholtkevych"},"change_message_id":"1702430ed3add1c8d8c9a5b69fbc3f4c677699e8","unresolved":false,"context_lines":[{"line_number":2094,"context_line":"        if (CONF.conductor.send_sensor_data_wait_timeout \u003e"},{"line_number":2095,"context_line":"                CONF.conductor.send_sensor_data_interval):"},{"line_number":2096,"context_line":"            LOG.warning(_LW(\"Waiting time for periodic task to finish \""},{"line_number":2097,"context_line":"                            \"%(timeout)d is greater than frequency of its \""},{"line_number":2098,"context_line":"                            \"execution %(interval)d, which may break the \""},{"line_number":2099,"context_line":"                            \"periodic task\u0027s schedule.\"),"},{"line_number":2100,"context_line":"                        {\u0027timeout\u0027: (CONF.conductor."}],"source_content_type":"text/x-python","patch_set":35,"id":"5a3905b3_cedabb16","line":2097,"range":{"start_line":2097,"start_character":57,"end_line":2097,"end_character":66},"in_reply_to":"5a3905b3_f3fda4b1","updated":"2017-01-24 12:54:48.000000000","message":"IMO, `interval` requires sth like\ninterval between previous and current task, which looks a little redundant\nFrequency means how often a periodic task will be executed","commit_id":"56a860c9c72c9294ccd052f9140cb13a193f7695"},{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"70757a56f64f9d97526f018fef2f032e74738d77","unresolved":false,"context_lines":[{"line_number":2117,"context_line":"                                       context, nodes))"},{"line_number":2118,"context_line":"            except exception.NoFreeConductorWorker:"},{"line_number":2119,"context_line":"                LOG.warning(_LW(\"There is no more conductor workers for \""},{"line_number":2120,"context_line":"                                \"task of sending sensor_data. %(workers)d \""},{"line_number":2121,"context_line":"                                \"workers has been already spawned.\"),"},{"line_number":2122,"context_line":"                            {\u0027workers\u0027: thread_number})"},{"line_number":2123,"context_line":"                break"}],"source_content_type":"text/x-python","patch_set":35,"id":"5a3905b3_d3da6816","line":2120,"range":{"start_line":2120,"start_character":55,"end_line":2120,"end_character":56},"updated":"2017-01-24 10:22:14.000000000","message":"nit:s/sensor_data/sensors data","commit_id":"56a860c9c72c9294ccd052f9140cb13a193f7695"},{"author":{"_account_id":22724,"name":"Galyna Zholtkevych","email":"galynazholtkevych1991@gmail.com","username":"gzholtkevych"},"change_message_id":"1702430ed3add1c8d8c9a5b69fbc3f4c677699e8","unresolved":false,"context_lines":[{"line_number":2117,"context_line":"                                       context, nodes))"},{"line_number":2118,"context_line":"            except exception.NoFreeConductorWorker:"},{"line_number":2119,"context_line":"                LOG.warning(_LW(\"There is no more conductor workers for \""},{"line_number":2120,"context_line":"                                \"task of sending sensor_data. %(workers)d \""},{"line_number":2121,"context_line":"                                \"workers has been already spawned.\"),"},{"line_number":2122,"context_line":"                            {\u0027workers\u0027: thread_number})"},{"line_number":2123,"context_line":"                break"}],"source_content_type":"text/x-python","patch_set":35,"id":"5a3905b3_eca3faaf","line":2120,"range":{"start_line":2120,"start_character":55,"end_line":2120,"end_character":56},"in_reply_to":"5a3905b3_d3da6816","updated":"2017-01-24 12:54:48.000000000","message":"Done","commit_id":"56a860c9c72c9294ccd052f9140cb13a193f7695"},{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"019aa86767e95db1061cd98276e6a7ed751e3cde","unresolved":false,"context_lines":[{"line_number":2123,"context_line":"                break"},{"line_number":2124,"context_line":""},{"line_number":2125,"context_line":"        done, not_done \u003d waiters.wait_for_all("},{"line_number":2126,"context_line":"            futures, timeout\u003dCONF.conductor.send_sensor_data_wait_timeout)"},{"line_number":2127,"context_line":"        if not_done:"},{"line_number":2128,"context_line":"            LOG.warning(_LW(\"%(workers)d workers for send sensor data did not \""},{"line_number":2129,"context_line":"                            \"complete: %d\"), len(not_done))"}],"source_content_type":"text/x-python","patch_set":35,"id":"5a3905b3_e2f06b69","line":2126,"range":{"start_line":2126,"start_character":12,"end_line":2126,"end_character":19},"updated":"2017-01-24 11:07:35.000000000","message":"I don\u0027t know futurist implementation detail, but better to call wait_for_all() only if futures list is not empty.","commit_id":"56a860c9c72c9294ccd052f9140cb13a193f7695"},{"author":{"_account_id":22724,"name":"Galyna Zholtkevych","email":"galynazholtkevych1991@gmail.com","username":"gzholtkevych"},"change_message_id":"1702430ed3add1c8d8c9a5b69fbc3f4c677699e8","unresolved":false,"context_lines":[{"line_number":2123,"context_line":"                break"},{"line_number":2124,"context_line":""},{"line_number":2125,"context_line":"        done, not_done \u003d waiters.wait_for_all("},{"line_number":2126,"context_line":"            futures, timeout\u003dCONF.conductor.send_sensor_data_wait_timeout)"},{"line_number":2127,"context_line":"        if not_done:"},{"line_number":2128,"context_line":"            LOG.warning(_LW(\"%(workers)d workers for send sensor data did not \""},{"line_number":2129,"context_line":"                            \"complete: %d\"), len(not_done))"}],"source_content_type":"text/x-python","patch_set":35,"id":"5a3905b3_85497133","line":2126,"range":{"start_line":2126,"start_character":12,"end_line":2126,"end_character":19},"in_reply_to":"5a3905b3_e2f06b69","updated":"2017-01-24 12:54:48.000000000","message":"The empty list catching is included into this method.\n(see https://github.com/openstack/futurist/blob/master/futurist/waiters.py#L72-L74)","commit_id":"56a860c9c72c9294ccd052f9140cb13a193f7695"},{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"c54bcceaad78139e13146490e3169238df3efaf3","unresolved":false,"context_lines":[{"line_number":2125,"context_line":"        done, not_done \u003d waiters.wait_for_all("},{"line_number":2126,"context_line":"            futures, timeout\u003dCONF.conductor.send_sensor_data_wait_timeout)"},{"line_number":2127,"context_line":"        if not_done:"},{"line_number":2128,"context_line":"            LOG.warning(_LW(\"%(workers)d workers for send sensor data did not \""},{"line_number":2129,"context_line":"                            \"complete: %d\"), len(not_done))"},{"line_number":2130,"context_line":""},{"line_number":2131,"context_line":"    def _filter_out_unsupported_types(self, sensors_data):"}],"source_content_type":"text/x-python","patch_set":35,"id":"5a3905b3_4edc0b46","line":2128,"range":{"start_line":2128,"start_character":29,"end_line":2128,"end_character":40},"updated":"2017-01-24 10:38:39.000000000","message":"This format specification require mapping.","commit_id":"56a860c9c72c9294ccd052f9140cb13a193f7695"},{"author":{"_account_id":22724,"name":"Galyna Zholtkevych","email":"galynazholtkevych1991@gmail.com","username":"gzholtkevych"},"change_message_id":"1702430ed3add1c8d8c9a5b69fbc3f4c677699e8","unresolved":false,"context_lines":[{"line_number":2125,"context_line":"        done, not_done \u003d waiters.wait_for_all("},{"line_number":2126,"context_line":"            futures, timeout\u003dCONF.conductor.send_sensor_data_wait_timeout)"},{"line_number":2127,"context_line":"        if not_done:"},{"line_number":2128,"context_line":"            LOG.warning(_LW(\"%(workers)d workers for send sensor data did not \""},{"line_number":2129,"context_line":"                            \"complete: %d\"), len(not_done))"},{"line_number":2130,"context_line":""},{"line_number":2131,"context_line":"    def _filter_out_unsupported_types(self, sensors_data):"}],"source_content_type":"text/x-python","patch_set":35,"id":"5a3905b3_ac757232","line":2128,"range":{"start_line":2128,"start_character":29,"end_line":2128,"end_character":40},"in_reply_to":"5a3905b3_4edc0b46","updated":"2017-01-24 12:54:48.000000000","message":"Done","commit_id":"56a860c9c72c9294ccd052f9140cb13a193f7695"},{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"c54bcceaad78139e13146490e3169238df3efaf3","unresolved":false,"context_lines":[{"line_number":2126,"context_line":"            futures, timeout\u003dCONF.conductor.send_sensor_data_wait_timeout)"},{"line_number":2127,"context_line":"        if not_done:"},{"line_number":2128,"context_line":"            LOG.warning(_LW(\"%(workers)d workers for send sensor data did not \""},{"line_number":2129,"context_line":"                            \"complete: %d\"), len(not_done))"},{"line_number":2130,"context_line":""},{"line_number":2131,"context_line":"    def _filter_out_unsupported_types(self, sensors_data):"},{"line_number":2132,"context_line":"        \"\"\"Filters out sensor data types that aren\u0027t specified in the config."}],"source_content_type":"text/x-python","patch_set":35,"id":"5a3905b3_4e816bfa","line":2129,"range":{"start_line":2129,"start_character":39,"end_line":2129,"end_character":41},"updated":"2017-01-24 10:38:39.000000000","message":"Superfluous formatting.","commit_id":"56a860c9c72c9294ccd052f9140cb13a193f7695"},{"author":{"_account_id":22724,"name":"Galyna Zholtkevych","email":"galynazholtkevych1991@gmail.com","username":"gzholtkevych"},"change_message_id":"1702430ed3add1c8d8c9a5b69fbc3f4c677699e8","unresolved":false,"context_lines":[{"line_number":2126,"context_line":"            futures, timeout\u003dCONF.conductor.send_sensor_data_wait_timeout)"},{"line_number":2127,"context_line":"        if not_done:"},{"line_number":2128,"context_line":"            LOG.warning(_LW(\"%(workers)d workers for send sensor data did not \""},{"line_number":2129,"context_line":"                            \"complete: %d\"), len(not_done))"},{"line_number":2130,"context_line":""},{"line_number":2131,"context_line":"    def _filter_out_unsupported_types(self, sensors_data):"},{"line_number":2132,"context_line":"        \"\"\"Filters out sensor data types that aren\u0027t specified in the config."}],"source_content_type":"text/x-python","patch_set":35,"id":"5a3905b3_2c8182fb","line":2129,"range":{"start_line":2129,"start_character":39,"end_line":2129,"end_character":41},"in_reply_to":"5a3905b3_4e816bfa","updated":"2017-01-24 12:54:48.000000000","message":"Done","commit_id":"56a860c9c72c9294ccd052f9140cb13a193f7695"},{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"7ebdf12b13df149a7058a24d9c91d54a3da4c678","unresolved":false,"context_lines":[{"line_number":2112,"context_line":"                            {\u0027workers\u0027: thread_number})"},{"line_number":2113,"context_line":"                break"},{"line_number":2114,"context_line":""},{"line_number":2115,"context_line":"        done, not_done \u003d waiters.wait_for_all("},{"line_number":2116,"context_line":"            futures, timeout\u003dCONF.conductor.send_sensor_data_wait_timeout)"},{"line_number":2117,"context_line":"        if not_done:"},{"line_number":2118,"context_line":"            LOG.warning(_LW(\"%d workers for send sensor data did not \""}],"source_content_type":"text/x-python","patch_set":36,"id":"5a3905b3_47cdc864","line":2115,"updated":"2017-01-24 13:26:18.000000000","message":"See my comment here on previous patchset about empty futures list.","commit_id":"ec71b70c42f8948bcbdc297868fae11239be539c"},{"author":{"_account_id":22724,"name":"Galyna Zholtkevych","email":"galynazholtkevych1991@gmail.com","username":"gzholtkevych"},"change_message_id":"0f80a2a1a05bc7334119deb0bb57e19f3d014cc4","unresolved":false,"context_lines":[{"line_number":2112,"context_line":"                            {\u0027workers\u0027: thread_number})"},{"line_number":2113,"context_line":"                break"},{"line_number":2114,"context_line":""},{"line_number":2115,"context_line":"        done, not_done \u003d waiters.wait_for_all("},{"line_number":2116,"context_line":"            futures, timeout\u003dCONF.conductor.send_sensor_data_wait_timeout)"},{"line_number":2117,"context_line":"        if not_done:"},{"line_number":2118,"context_line":"            LOG.warning(_LW(\"%d workers for send sensor data did not \""}],"source_content_type":"text/x-python","patch_set":36,"id":"5a3905b3_eaee7920","line":2115,"in_reply_to":"5a3905b3_47cdc864","updated":"2017-01-24 13:53:01.000000000","message":"Replied on previous patchset\nMy idea is that even if code in futurist may be changed, but the case of empty list should be catched, cause it is common way. If the list is empty, it will do nothing","commit_id":"ec71b70c42f8948bcbdc297868fae11239be539c"},{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"7ebdf12b13df149a7058a24d9c91d54a3da4c678","unresolved":false,"context_lines":[{"line_number":2115,"context_line":"        done, not_done \u003d waiters.wait_for_all("},{"line_number":2116,"context_line":"            futures, timeout\u003dCONF.conductor.send_sensor_data_wait_timeout)"},{"line_number":2117,"context_line":"        if not_done:"},{"line_number":2118,"context_line":"            LOG.warning(_LW(\"%d workers for send sensor data did not \""},{"line_number":2119,"context_line":"                            \"complete\"), len(not_done))"},{"line_number":2120,"context_line":""},{"line_number":2121,"context_line":"    def _filter_out_unsupported_types(self, sensors_data):"}],"source_content_type":"text/x-python","patch_set":36,"id":"5a3905b3_472948e5","line":2118,"range":{"start_line":2118,"start_character":44,"end_line":2118,"end_character":60},"updated":"2017-01-24 13:26:18.000000000","message":"nit: s/send sensor data/send sensors data periodic task","commit_id":"ec71b70c42f8948bcbdc297868fae11239be539c"},{"author":{"_account_id":22724,"name":"Galyna Zholtkevych","email":"galynazholtkevych1991@gmail.com","username":"gzholtkevych"},"change_message_id":"0f80a2a1a05bc7334119deb0bb57e19f3d014cc4","unresolved":false,"context_lines":[{"line_number":2115,"context_line":"        done, not_done \u003d waiters.wait_for_all("},{"line_number":2116,"context_line":"            futures, timeout\u003dCONF.conductor.send_sensor_data_wait_timeout)"},{"line_number":2117,"context_line":"        if not_done:"},{"line_number":2118,"context_line":"            LOG.warning(_LW(\"%d workers for send sensor data did not \""},{"line_number":2119,"context_line":"                            \"complete\"), len(not_done))"},{"line_number":2120,"context_line":""},{"line_number":2121,"context_line":"    def _filter_out_unsupported_types(self, sensors_data):"}],"source_content_type":"text/x-python","patch_set":36,"id":"5a3905b3_2af5e1eb","line":2118,"range":{"start_line":2118,"start_character":44,"end_line":2118,"end_character":60},"in_reply_to":"5a3905b3_472948e5","updated":"2017-01-24 13:53:01.000000000","message":"Done","commit_id":"ec71b70c42f8948bcbdc297868fae11239be539c"}],"ironic/conf/conductor.py":[{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"28165caebe186cb0447469dfe50566886b6f507b","unresolved":false,"context_lines":[{"line_number":82,"context_line":"                      \u0027 to ceilometer via the notification bus.\u0027)),"},{"line_number":83,"context_line":"    cfg.IntOpt(\u0027send_sensor_data_threads\u0027,"},{"line_number":84,"context_line":"               default\u003d1,"},{"line_number":85,"context_line":"               help\u003d_(\u0027Number of threads that are used for send sensor data \u0027"},{"line_number":86,"context_line":"                      \u0027periodic task.\u0027)),"},{"line_number":87,"context_line":"    cfg.ListOpt(\u0027send_sensor_data_types\u0027,"},{"line_number":88,"context_line":"                default\u003d[\u0027ALL\u0027],"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a71b18c_9b996171","line":85,"range":{"start_line":85,"start_character":23,"end_line":85,"end_character":29},"updated":"2016-12-09 15:06:48.000000000","message":"This is maximum number, if user set 8 for example and we have only one node?","commit_id":"909ceb9f22c7c575e85b1eb37941d1bc150218c3"},{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"28165caebe186cb0447469dfe50566886b6f507b","unresolved":false,"context_lines":[{"line_number":82,"context_line":"                      \u0027 to ceilometer via the notification bus.\u0027)),"},{"line_number":83,"context_line":"    cfg.IntOpt(\u0027send_sensor_data_threads\u0027,"},{"line_number":84,"context_line":"               default\u003d1,"},{"line_number":85,"context_line":"               help\u003d_(\u0027Number of threads that are used for send sensor data \u0027"},{"line_number":86,"context_line":"                      \u0027periodic task.\u0027)),"},{"line_number":87,"context_line":"    cfg.ListOpt(\u0027send_sensor_data_types\u0027,"},{"line_number":88,"context_line":"                default\u003d[\u0027ALL\u0027],"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a71b18c_fbc9757a","line":85,"range":{"start_line":85,"start_character":33,"end_line":85,"end_character":40},"updated":"2016-12-09 15:06:48.000000000","message":"We use term \"worker\" in these helps.","commit_id":"909ceb9f22c7c575e85b1eb37941d1bc150218c3"},{"author":{"_account_id":22724,"name":"Galyna Zholtkevych","email":"galynazholtkevych1991@gmail.com","username":"gzholtkevych"},"change_message_id":"49adec7c9aeff7f5ec52281c9310a455c0f59b85","unresolved":false,"context_lines":[{"line_number":82,"context_line":"                      \u0027 to ceilometer via the notification bus.\u0027)),"},{"line_number":83,"context_line":"    cfg.IntOpt(\u0027send_sensor_data_threads\u0027,"},{"line_number":84,"context_line":"               default\u003d1,"},{"line_number":85,"context_line":"               help\u003d_(\u0027Number of threads that are used for send sensor data \u0027"},{"line_number":86,"context_line":"                      \u0027periodic task.\u0027)),"},{"line_number":87,"context_line":"    cfg.ListOpt(\u0027send_sensor_data_types\u0027,"},{"line_number":88,"context_line":"                default\u003d[\u0027ALL\u0027],"}],"source_content_type":"text/x-python","patch_set":6,"id":"1a6eadb0_f3baf06d","line":85,"range":{"start_line":85,"start_character":23,"end_line":85,"end_character":29},"in_reply_to":"3a71b18c_9b996171","updated":"2016-12-12 15:17:10.000000000","message":"Done","commit_id":"909ceb9f22c7c575e85b1eb37941d1bc150218c3"},{"author":{"_account_id":22724,"name":"Galyna Zholtkevych","email":"galynazholtkevych1991@gmail.com","username":"gzholtkevych"},"change_message_id":"49adec7c9aeff7f5ec52281c9310a455c0f59b85","unresolved":false,"context_lines":[{"line_number":82,"context_line":"                      \u0027 to ceilometer via the notification bus.\u0027)),"},{"line_number":83,"context_line":"    cfg.IntOpt(\u0027send_sensor_data_threads\u0027,"},{"line_number":84,"context_line":"               default\u003d1,"},{"line_number":85,"context_line":"               help\u003d_(\u0027Number of threads that are used for send sensor data \u0027"},{"line_number":86,"context_line":"                      \u0027periodic task.\u0027)),"},{"line_number":87,"context_line":"    cfg.ListOpt(\u0027send_sensor_data_types\u0027,"},{"line_number":88,"context_line":"                default\u003d[\u0027ALL\u0027],"}],"source_content_type":"text/x-python","patch_set":6,"id":"1a6eadb0_13b04c8b","line":85,"range":{"start_line":85,"start_character":33,"end_line":85,"end_character":40},"in_reply_to":"3a71b18c_fbc9757a","updated":"2016-12-12 15:17:10.000000000","message":"Done","commit_id":"909ceb9f22c7c575e85b1eb37941d1bc150218c3"},{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"f1de83be9114cd9b9d42f84a4fd0497c1413d346","unresolved":false,"context_lines":[{"line_number":80,"context_line":"               default\u003d600,"},{"line_number":81,"context_line":"               help\u003d_(\u0027Seconds between conductor sending sensor data message\u0027"},{"line_number":82,"context_line":"                      \u0027 to ceilometer via the notification bus.\u0027)),"},{"line_number":83,"context_line":"    cfg.IntOpt(\u0027send_sensor_data_threads\u0027,"},{"line_number":84,"context_line":"               default\u003d1,"},{"line_number":85,"context_line":"               help\u003d_(\u0027The number of workers will be evaluated as minimum \u0027"},{"line_number":86,"context_line":"                      \u0027between this number and number of given nodes in a \u0027"}],"source_content_type":"text/x-python","patch_set":11,"id":"1a6eadb0_943a5935","line":83,"range":{"start_line":83,"start_character":33,"end_line":83,"end_character":40},"updated":"2016-12-13 11:43:13.000000000","message":"s/threads/workers","commit_id":"2c89ef76407749e78ee6a6ef7d0fb0276b6ad460"},{"author":{"_account_id":22724,"name":"Galyna Zholtkevych","email":"galynazholtkevych1991@gmail.com","username":"gzholtkevych"},"change_message_id":"03eb94e935618bb2284a4225666bb415dc37cd41","unresolved":false,"context_lines":[{"line_number":80,"context_line":"               default\u003d600,"},{"line_number":81,"context_line":"               help\u003d_(\u0027Seconds between conductor sending sensor data message\u0027"},{"line_number":82,"context_line":"                      \u0027 to ceilometer via the notification bus.\u0027)),"},{"line_number":83,"context_line":"    cfg.IntOpt(\u0027send_sensor_data_threads\u0027,"},{"line_number":84,"context_line":"               default\u003d1,"},{"line_number":85,"context_line":"               help\u003d_(\u0027The number of workers will be evaluated as minimum \u0027"},{"line_number":86,"context_line":"                      \u0027between this number and number of given nodes in a \u0027"}],"source_content_type":"text/x-python","patch_set":11,"id":"1a6eadb0_ee0d4338","line":83,"range":{"start_line":83,"start_character":33,"end_line":83,"end_character":40},"in_reply_to":"1a6eadb0_943a5935","updated":"2016-12-14 10:54:03.000000000","message":"Done","commit_id":"2c89ef76407749e78ee6a6ef7d0fb0276b6ad460"},{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"f1de83be9114cd9b9d42f84a4fd0497c1413d346","unresolved":false,"context_lines":[{"line_number":82,"context_line":"                      \u0027 to ceilometer via the notification bus.\u0027)),"},{"line_number":83,"context_line":"    cfg.IntOpt(\u0027send_sensor_data_threads\u0027,"},{"line_number":84,"context_line":"               default\u003d1,"},{"line_number":85,"context_line":"               help\u003d_(\u0027The number of workers will be evaluated as minimum \u0027"},{"line_number":86,"context_line":"                      \u0027between this number and number of given nodes in a \u0027"},{"line_number":87,"context_line":"                      \u0027periodic task.\u0027)),"},{"line_number":88,"context_line":"    cfg.ListOpt(\u0027send_sensor_data_types\u0027,"},{"line_number":89,"context_line":"                default\u003d[\u0027ALL\u0027],"},{"line_number":90,"context_line":"                help\u003d_(\u0027List of comma separated meter types which need to be\u0027"}],"source_content_type":"text/x-python","patch_set":11,"id":"1a6eadb0_34bc256c","line":87,"range":{"start_line":85,"start_character":23,"end_line":87,"end_character":37},"updated":"2016-12-13 11:43:13.000000000","message":"Sorry i do not understand this. How about \u0027Maximum number of worker threads that can be started simultaneously for send data from sensors.\u0027","commit_id":"2c89ef76407749e78ee6a6ef7d0fb0276b6ad460"},{"author":{"_account_id":22724,"name":"Galyna Zholtkevych","email":"galynazholtkevych1991@gmail.com","username":"gzholtkevych"},"change_message_id":"03eb94e935618bb2284a4225666bb415dc37cd41","unresolved":false,"context_lines":[{"line_number":82,"context_line":"                      \u0027 to ceilometer via the notification bus.\u0027)),"},{"line_number":83,"context_line":"    cfg.IntOpt(\u0027send_sensor_data_threads\u0027,"},{"line_number":84,"context_line":"               default\u003d1,"},{"line_number":85,"context_line":"               help\u003d_(\u0027The number of workers will be evaluated as minimum \u0027"},{"line_number":86,"context_line":"                      \u0027between this number and number of given nodes in a \u0027"},{"line_number":87,"context_line":"                      \u0027periodic task.\u0027)),"},{"line_number":88,"context_line":"    cfg.ListOpt(\u0027send_sensor_data_types\u0027,"},{"line_number":89,"context_line":"                default\u003d[\u0027ALL\u0027],"},{"line_number":90,"context_line":"                help\u003d_(\u0027List of comma separated meter types which need to be\u0027"}],"source_content_type":"text/x-python","patch_set":11,"id":"1a6eadb0_8e004f03","line":87,"range":{"start_line":85,"start_character":23,"end_line":87,"end_character":37},"in_reply_to":"1a6eadb0_34bc256c","updated":"2016-12-14 10:54:03.000000000","message":"Done","commit_id":"2c89ef76407749e78ee6a6ef7d0fb0276b6ad460"},{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"48d70cfb1f6bd819738c80e0d046bfb29e382f11","unresolved":false,"context_lines":[{"line_number":81,"context_line":"               help\u003d_(\u0027Seconds between conductor sending sensor data message\u0027"},{"line_number":82,"context_line":"                      \u0027 to ceilometer via the notification bus.\u0027)),"},{"line_number":83,"context_line":"    cfg.IntOpt(\u0027send_sensor_data_workers\u0027,"},{"line_number":84,"context_line":"               default\u003d1, max\u003d100,"},{"line_number":85,"context_line":"               help\u003d_(\u0027The maximum number of workers that can be started \u0027"},{"line_number":86,"context_line":"                      \u0027simultaneously for send data from sensors periodic \u0027"},{"line_number":87,"context_line":"                      \u0027task.\u0027)),"}],"source_content_type":"text/x-python","patch_set":13,"id":"1a6eadb0_f0fd0b3b","line":84,"range":{"start_line":84,"start_character":26,"end_line":84,"end_character":34},"updated":"2016-12-14 17:19:16.000000000","message":"1) max\u003d100 If admin increases or decreases worker pool size this value remains hardcoded, better to remove it. 2) default\u003d1 This is compatible with previous behavior. But ironic config defaults should be production-oriented, if we have this feature I think reasonable default\u003d4.","commit_id":"2b905d00e76f4e851c121e78ca08e709a6451a82"},{"author":{"_account_id":22724,"name":"Galyna Zholtkevych","email":"galynazholtkevych1991@gmail.com","username":"gzholtkevych"},"change_message_id":"6d0db534e85b8d6c4b2c73e95e9f55b21575c116","unresolved":false,"context_lines":[{"line_number":81,"context_line":"               help\u003d_(\u0027Seconds between conductor sending sensor data message\u0027"},{"line_number":82,"context_line":"                      \u0027 to ceilometer via the notification bus.\u0027)),"},{"line_number":83,"context_line":"    cfg.IntOpt(\u0027send_sensor_data_workers\u0027,"},{"line_number":84,"context_line":"               default\u003d1, max\u003d100,"},{"line_number":85,"context_line":"               help\u003d_(\u0027The maximum number of workers that can be started \u0027"},{"line_number":86,"context_line":"                      \u0027simultaneously for send data from sensors periodic \u0027"},{"line_number":87,"context_line":"                      \u0027task.\u0027)),"}],"source_content_type":"text/x-python","patch_set":13,"id":"1a6eadb0_8d72d90f","line":84,"range":{"start_line":84,"start_character":26,"end_line":84,"end_character":34},"in_reply_to":"1a6eadb0_f0fd0b3b","updated":"2016-12-15 11:46:01.000000000","message":"Done","commit_id":"2b905d00e76f4e851c121e78ca08e709a6451a82"},{"author":{"_account_id":5805,"name":"Chris Krelle","email":"nobodycam@gmail.com","username":"nobodycam"},"change_message_id":"be1a7ac3f8d6b2d455053833c6c993e560778e7c","unresolved":false,"context_lines":[{"line_number":87,"context_line":"               help\u003d_(\u0027The maximum number of workers that can be started \u0027"},{"line_number":88,"context_line":"                      \u0027simultaneously for send data from sensors periodic \u0027"},{"line_number":89,"context_line":"                      \u0027task.\u0027)),"},{"line_number":90,"context_line":"    cfg.IntOpt(\u0027wait_timeout_for_periodic\u0027,"},{"line_number":91,"context_line":"               default\u003d300,"},{"line_number":92,"context_line":"               help\u003d_(\u0027The time to wait for periodic task to be finished if \u0027"},{"line_number":93,"context_line":"                      \u0027new same one has been started, but previous one is \u0027"},{"line_number":94,"context_line":"                      \u0027still running.\u0027)),"},{"line_number":95,"context_line":"    cfg.ListOpt(\u0027send_sensor_data_types\u0027,"},{"line_number":96,"context_line":"                default\u003d[\u0027ALL\u0027],"},{"line_number":97,"context_line":"                help\u003d_(\u0027List of comma separated meter types which need to be\u0027"}],"source_content_type":"text/x-python","patch_set":29,"id":"7a3c09a3_27d11658","line":94,"range":{"start_line":90,"start_character":4,"end_line":94,"end_character":41},"updated":"2017-01-16 16:04:56.000000000","message":"I do not see this new config value in the sample conf","commit_id":"f3611a71ec7793bada0d8245f2afe905e692bce4"},{"author":{"_account_id":22724,"name":"Galyna Zholtkevych","email":"galynazholtkevych1991@gmail.com","username":"gzholtkevych"},"change_message_id":"c15e339745193ca5d011bdac98bcdacf84c59f05","unresolved":false,"context_lines":[{"line_number":87,"context_line":"               help\u003d_(\u0027The maximum number of workers that can be started \u0027"},{"line_number":88,"context_line":"                      \u0027simultaneously for send data from sensors periodic \u0027"},{"line_number":89,"context_line":"                      \u0027task.\u0027)),"},{"line_number":90,"context_line":"    cfg.IntOpt(\u0027wait_timeout_for_periodic\u0027,"},{"line_number":91,"context_line":"               default\u003d300,"},{"line_number":92,"context_line":"               help\u003d_(\u0027The time to wait for periodic task to be finished if \u0027"},{"line_number":93,"context_line":"                      \u0027new same one has been started, but previous one is \u0027"},{"line_number":94,"context_line":"                      \u0027still running.\u0027)),"},{"line_number":95,"context_line":"    cfg.ListOpt(\u0027send_sensor_data_types\u0027,"},{"line_number":96,"context_line":"                default\u003d[\u0027ALL\u0027],"},{"line_number":97,"context_line":"                help\u003d_(\u0027List of comma separated meter types which need to be\u0027"}],"source_content_type":"text/x-python","patch_set":29,"id":"7a3c09a3_82a9d5e1","line":94,"range":{"start_line":90,"start_character":4,"end_line":94,"end_character":41},"in_reply_to":"7a3c09a3_27d11658","updated":"2017-01-16 16:45:06.000000000","message":"Done","commit_id":"f3611a71ec7793bada0d8245f2afe905e692bce4"},{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"07ca4555db9b833961ce84454bd34c98d1a5b9e1","unresolved":false,"context_lines":[{"line_number":89,"context_line":"                      \u0027task.\u0027)),"},{"line_number":90,"context_line":"    cfg.IntOpt(\u0027wait_timeout_for_periodic\u0027,"},{"line_number":91,"context_line":"               default\u003d300,"},{"line_number":92,"context_line":"               help\u003d_(\u0027The time to wait for periodic task to be finished if \u0027"},{"line_number":93,"context_line":"                      \u0027new same one has been started, but previous one is \u0027"},{"line_number":94,"context_line":"                      \u0027still running.\u0027)),"},{"line_number":95,"context_line":"    cfg.ListOpt(\u0027send_sensor_data_types\u0027,"},{"line_number":96,"context_line":"                default\u003d[\u0027ALL\u0027],"},{"line_number":97,"context_line":"                help\u003d_(\u0027List of comma separated meter types which need to be\u0027"}],"source_content_type":"text/x-python","patch_set":30,"id":"7a3c09a3_14d3f860","line":94,"range":{"start_line":92,"start_character":73,"end_line":94,"end_character":37},"updated":"2017-01-18 12:12:47.000000000","message":"It\u0027s currently used only for send_sensor_data, it\u0027s not a general thing yet. Might want to add something about it. Might also want to rewrite it a bit, maybe as follows:\n\n Time to wait for send_sensor_data periodic task\n to finish, before allowing periodic call to\n happen again.","commit_id":"3a035c516c4e61bafd61684dd615655d6ab38666"},{"author":{"_account_id":22724,"name":"Galyna Zholtkevych","email":"galynazholtkevych1991@gmail.com","username":"gzholtkevych"},"change_message_id":"058f1c7651ad254bfb1075f482335f887960d163","unresolved":false,"context_lines":[{"line_number":89,"context_line":"                      \u0027task.\u0027)),"},{"line_number":90,"context_line":"    cfg.IntOpt(\u0027wait_timeout_for_periodic\u0027,"},{"line_number":91,"context_line":"               default\u003d300,"},{"line_number":92,"context_line":"               help\u003d_(\u0027The time to wait for periodic task to be finished if \u0027"},{"line_number":93,"context_line":"                      \u0027new same one has been started, but previous one is \u0027"},{"line_number":94,"context_line":"                      \u0027still running.\u0027)),"},{"line_number":95,"context_line":"    cfg.ListOpt(\u0027send_sensor_data_types\u0027,"},{"line_number":96,"context_line":"                default\u003d[\u0027ALL\u0027],"},{"line_number":97,"context_line":"                help\u003d_(\u0027List of comma separated meter types which need to be\u0027"}],"source_content_type":"text/x-python","patch_set":30,"id":"5a3905b3_0f83b3cd","line":94,"range":{"start_line":92,"start_character":73,"end_line":94,"end_character":37},"in_reply_to":"7a3c09a3_14d3f860","updated":"2017-01-19 11:21:04.000000000","message":"Done","commit_id":"3a035c516c4e61bafd61684dd615655d6ab38666"},{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"1c4b4f45afa30740ece6d908816fab7393851e08","unresolved":false,"context_lines":[{"line_number":89,"context_line":"                      \u0027task.\u0027)),"},{"line_number":90,"context_line":"    cfg.IntOpt(\u0027wait_timeout_for_periodic\u0027,"},{"line_number":91,"context_line":"               default\u003d300,"},{"line_number":92,"context_line":"               help\u003d_(\u0027The time to wait for periodic task to be finished if \u0027"},{"line_number":93,"context_line":"                      \u0027new same one has been started, but previous one is \u0027"},{"line_number":94,"context_line":"                      \u0027still running.\u0027)),"},{"line_number":95,"context_line":"    cfg.ListOpt(\u0027send_sensor_data_types\u0027,"},{"line_number":96,"context_line":"                default\u003d[\u0027ALL\u0027],"},{"line_number":97,"context_line":"                help\u003d_(\u0027List of comma separated meter types which need to be\u0027"}],"source_content_type":"text/x-python","patch_set":30,"id":"7a3c09a3_e2c5a00a","line":94,"range":{"start_line":92,"start_character":73,"end_line":94,"end_character":37},"in_reply_to":"7a3c09a3_14d3f860","updated":"2017-01-18 23:22:05.000000000","message":"Is this specifically for sensor data, or for all periodic tasks? If it\u0027s for all periodic tasks, we shouldn\u0027t make a sensor_data specific task.","commit_id":"3a035c516c4e61bafd61684dd615655d6ab38666"},{"author":{"_account_id":22724,"name":"Galyna Zholtkevych","email":"galynazholtkevych1991@gmail.com","username":"gzholtkevych"},"change_message_id":"058f1c7651ad254bfb1075f482335f887960d163","unresolved":false,"context_lines":[{"line_number":89,"context_line":"                      \u0027task.\u0027)),"},{"line_number":90,"context_line":"    cfg.IntOpt(\u0027wait_timeout_for_periodic\u0027,"},{"line_number":91,"context_line":"               default\u003d300,"},{"line_number":92,"context_line":"               help\u003d_(\u0027The time to wait for periodic task to be finished if \u0027"},{"line_number":93,"context_line":"                      \u0027new same one has been started, but previous one is \u0027"},{"line_number":94,"context_line":"                      \u0027still running.\u0027)),"},{"line_number":95,"context_line":"    cfg.ListOpt(\u0027send_sensor_data_types\u0027,"},{"line_number":96,"context_line":"                default\u003d[\u0027ALL\u0027],"},{"line_number":97,"context_line":"                help\u003d_(\u0027List of comma separated meter types which need to be\u0027"}],"source_content_type":"text/x-python","patch_set":30,"id":"5a3905b3_8f4963d3","line":94,"range":{"start_line":92,"start_character":73,"end_line":94,"end_character":37},"in_reply_to":"7a3c09a3_e2c5a00a","updated":"2017-01-19 11:21:04.000000000","message":"It is not for all periodic tasks for now (though suits to general cases once it will be needed)\n\nCorrected config option for the current moment","commit_id":"3a035c516c4e61bafd61684dd615655d6ab38666"},{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"0086795e4a423398091bc7a80355f4c8c0657637","unresolved":false,"context_lines":[{"line_number":87,"context_line":"               help\u003d_(\u0027The maximum number of workers that can be started \u0027"},{"line_number":88,"context_line":"                      \u0027simultaneously for send data from sensors periodic \u0027"},{"line_number":89,"context_line":"                      \u0027task.\u0027)),"},{"line_number":90,"context_line":"    cfg.IntOpt(\u0027wait_timeout_for_send_sensor_data\u0027,"},{"line_number":91,"context_line":"               default\u003d300,"},{"line_number":92,"context_line":"               help\u003d_(\u0027The time to wait for send_sensor_data periodic task \u0027"},{"line_number":93,"context_line":"                      \u0027to be finished before allowing periodic call to happen \u0027"}],"source_content_type":"text/x-python","patch_set":33,"id":"5a3905b3_f9321e5d","line":90,"range":{"start_line":90,"start_character":16,"end_line":90,"end_character":49},"updated":"2017-01-23 11:15:12.000000000","message":"IMO better options name is \"send_sensor_data_wait_timeout\"","commit_id":"fa32956fcbff280e3f4845cfe6c42b2ebb7262bf"},{"author":{"_account_id":22724,"name":"Galyna Zholtkevych","email":"galynazholtkevych1991@gmail.com","username":"gzholtkevych"},"change_message_id":"12fb2ae0af3a15e7173c807e568d30cebb32032e","unresolved":false,"context_lines":[{"line_number":87,"context_line":"               help\u003d_(\u0027The maximum number of workers that can be started \u0027"},{"line_number":88,"context_line":"                      \u0027simultaneously for send data from sensors periodic \u0027"},{"line_number":89,"context_line":"                      \u0027task.\u0027)),"},{"line_number":90,"context_line":"    cfg.IntOpt(\u0027wait_timeout_for_send_sensor_data\u0027,"},{"line_number":91,"context_line":"               default\u003d300,"},{"line_number":92,"context_line":"               help\u003d_(\u0027The time to wait for send_sensor_data periodic task \u0027"},{"line_number":93,"context_line":"                      \u0027to be finished before allowing periodic call to happen \u0027"}],"source_content_type":"text/x-python","patch_set":33,"id":"5a3905b3_38fc9671","line":90,"range":{"start_line":90,"start_character":16,"end_line":90,"end_character":49},"in_reply_to":"5a3905b3_f9321e5d","updated":"2017-01-23 14:30:44.000000000","message":"Done","commit_id":"fa32956fcbff280e3f4845cfe6c42b2ebb7262bf"},{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"0086795e4a423398091bc7a80355f4c8c0657637","unresolved":false,"context_lines":[{"line_number":89,"context_line":"                      \u0027task.\u0027)),"},{"line_number":90,"context_line":"    cfg.IntOpt(\u0027wait_timeout_for_send_sensor_data\u0027,"},{"line_number":91,"context_line":"               default\u003d300,"},{"line_number":92,"context_line":"               help\u003d_(\u0027The time to wait for send_sensor_data periodic task \u0027"},{"line_number":93,"context_line":"                      \u0027to be finished before allowing periodic call to happen \u0027"},{"line_number":94,"context_line":"                      \u0027again.\u0027)),"},{"line_number":95,"context_line":"    cfg.ListOpt(\u0027send_sensor_data_types\u0027,"}],"source_content_type":"text/x-python","patch_set":33,"id":"5a3905b3_b9ea560d","line":92,"range":{"start_line":92,"start_character":27,"end_line":92,"end_character":31},"updated":"2017-01-23 11:15:12.000000000","message":"in seconds","commit_id":"fa32956fcbff280e3f4845cfe6c42b2ebb7262bf"},{"author":{"_account_id":22724,"name":"Galyna Zholtkevych","email":"galynazholtkevych1991@gmail.com","username":"gzholtkevych"},"change_message_id":"12fb2ae0af3a15e7173c807e568d30cebb32032e","unresolved":false,"context_lines":[{"line_number":89,"context_line":"                      \u0027task.\u0027)),"},{"line_number":90,"context_line":"    cfg.IntOpt(\u0027wait_timeout_for_send_sensor_data\u0027,"},{"line_number":91,"context_line":"               default\u003d300,"},{"line_number":92,"context_line":"               help\u003d_(\u0027The time to wait for send_sensor_data periodic task \u0027"},{"line_number":93,"context_line":"                      \u0027to be finished before allowing periodic call to happen \u0027"},{"line_number":94,"context_line":"                      \u0027again.\u0027)),"},{"line_number":95,"context_line":"    cfg.ListOpt(\u0027send_sensor_data_types\u0027,"}],"source_content_type":"text/x-python","patch_set":33,"id":"5a3905b3_180b5a8f","line":92,"range":{"start_line":92,"start_character":27,"end_line":92,"end_character":31},"in_reply_to":"5a3905b3_b9ea560d","updated":"2017-01-23 14:30:44.000000000","message":"Done","commit_id":"fa32956fcbff280e3f4845cfe6c42b2ebb7262bf"},{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"b8e854b3ff0b4cece09100e19e2465ea55642f75","unresolved":false,"context_lines":[{"line_number":83,"context_line":"               help\u003d_(\u0027Seconds between conductor sending sensor data message \u0027"},{"line_number":84,"context_line":"                      \u0027to ceilometer via the notification bus.\u0027)),"},{"line_number":85,"context_line":"    cfg.IntOpt(\u0027send_sensor_data_workers\u0027,"},{"line_number":86,"context_line":"               default\u003d4,"},{"line_number":87,"context_line":"               help\u003d_(\u0027The maximum number of workers that can be started \u0027"},{"line_number":88,"context_line":"                      \u0027simultaneously for send data from sensors periodic \u0027"},{"line_number":89,"context_line":"                      \u0027task.\u0027)),"}],"source_content_type":"text/x-python","patch_set":35,"id":"5a3905b3_05e3c1d9","line":86,"updated":"2017-01-24 11:18:54.000000000","message":"Also please add parameter \"min\u003d1\".","commit_id":"56a860c9c72c9294ccd052f9140cb13a193f7695"},{"author":{"_account_id":22724,"name":"Galyna Zholtkevych","email":"galynazholtkevych1991@gmail.com","username":"gzholtkevych"},"change_message_id":"1702430ed3add1c8d8c9a5b69fbc3f4c677699e8","unresolved":false,"context_lines":[{"line_number":83,"context_line":"               help\u003d_(\u0027Seconds between conductor sending sensor data message \u0027"},{"line_number":84,"context_line":"                      \u0027to ceilometer via the notification bus.\u0027)),"},{"line_number":85,"context_line":"    cfg.IntOpt(\u0027send_sensor_data_workers\u0027,"},{"line_number":86,"context_line":"               default\u003d4,"},{"line_number":87,"context_line":"               help\u003d_(\u0027The maximum number of workers that can be started \u0027"},{"line_number":88,"context_line":"                      \u0027simultaneously for send data from sensors periodic \u0027"},{"line_number":89,"context_line":"                      \u0027task.\u0027)),"}],"source_content_type":"text/x-python","patch_set":35,"id":"5a3905b3_cc663eba","line":86,"in_reply_to":"5a3905b3_05e3c1d9","updated":"2017-01-24 12:54:48.000000000","message":"Done","commit_id":"56a860c9c72c9294ccd052f9140cb13a193f7695"},{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"515f3e6c124f65d43da9751c4ca9a81c1ae175df","unresolved":false,"context_lines":[{"line_number":89,"context_line":"                      \u0027task.\u0027)),"},{"line_number":90,"context_line":"    cfg.IntOpt(\u0027send_sensor_data_wait_timeout\u0027,"},{"line_number":91,"context_line":"               default\u003d300,"},{"line_number":92,"context_line":"               help\u003d_(\u0027The time in seconds to wait for send_sensor_data \u0027"},{"line_number":93,"context_line":"                      \u0027periodic task to be finished before allowing periodic \u0027"},{"line_number":94,"context_line":"                      \u0027call to happen again.\u0027)),"},{"line_number":95,"context_line":"    cfg.ListOpt(\u0027send_sensor_data_types\u0027,"}],"source_content_type":"text/x-python","patch_set":35,"id":"5a3905b3_7838acd3","line":92,"range":{"start_line":92,"start_character":55,"end_line":92,"end_character":65},"updated":"2017-01-24 11:30:20.000000000","message":"nit: s/send_sensor_data/send sensors data","commit_id":"56a860c9c72c9294ccd052f9140cb13a193f7695"},{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"7ebdf12b13df149a7058a24d9c91d54a3da4c678","unresolved":false,"context_lines":[{"line_number":88,"context_line":"                      \u0027simultaneously for send data from sensors periodic \u0027"},{"line_number":89,"context_line":"                      \u0027task.\u0027)),"},{"line_number":90,"context_line":"    cfg.IntOpt(\u0027send_sensor_data_wait_timeout\u0027,"},{"line_number":91,"context_line":"               default\u003d300, min\u003d1, max\u003d600,"},{"line_number":92,"context_line":"               help\u003d_(\u0027The time in seconds to wait for send_sensor_data \u0027"},{"line_number":93,"context_line":"                      \u0027periodic task to be finished before allowing periodic \u0027"},{"line_number":94,"context_line":"                      \u0027call to happen again. Should be less than \u0027"}],"source_content_type":"text/x-python","patch_set":36,"id":"5a3905b3_c7bc58de","line":91,"range":{"start_line":91,"start_character":35,"end_line":91,"end_character":42},"updated":"2017-01-24 13:26:18.000000000","message":"max\u003d600 this creates a dependency between config parameters, see Vlad comment, he proposes another way.","commit_id":"ec71b70c42f8948bcbdc297868fae11239be539c"},{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"7ebdf12b13df149a7058a24d9c91d54a3da4c678","unresolved":false,"context_lines":[{"line_number":88,"context_line":"                      \u0027simultaneously for send data from sensors periodic \u0027"},{"line_number":89,"context_line":"                      \u0027task.\u0027)),"},{"line_number":90,"context_line":"    cfg.IntOpt(\u0027send_sensor_data_wait_timeout\u0027,"},{"line_number":91,"context_line":"               default\u003d300, min\u003d1, max\u003d600,"},{"line_number":92,"context_line":"               help\u003d_(\u0027The time in seconds to wait for send_sensor_data \u0027"},{"line_number":93,"context_line":"                      \u0027periodic task to be finished before allowing periodic \u0027"},{"line_number":94,"context_line":"                      \u0027call to happen again. Should be less than \u0027"}],"source_content_type":"text/x-python","patch_set":36,"id":"5a3905b3_277efc69","line":91,"range":{"start_line":91,"start_character":28,"end_line":91,"end_character":33},"updated":"2017-01-24 13:26:18.000000000","message":"min\u003d1 parameter should be added to send_sensor_data_workers, see my comment.","commit_id":"ec71b70c42f8948bcbdc297868fae11239be539c"},{"author":{"_account_id":22724,"name":"Galyna Zholtkevych","email":"galynazholtkevych1991@gmail.com","username":"gzholtkevych"},"change_message_id":"0f80a2a1a05bc7334119deb0bb57e19f3d014cc4","unresolved":false,"context_lines":[{"line_number":88,"context_line":"                      \u0027simultaneously for send data from sensors periodic \u0027"},{"line_number":89,"context_line":"                      \u0027task.\u0027)),"},{"line_number":90,"context_line":"    cfg.IntOpt(\u0027send_sensor_data_wait_timeout\u0027,"},{"line_number":91,"context_line":"               default\u003d300, min\u003d1, max\u003d600,"},{"line_number":92,"context_line":"               help\u003d_(\u0027The time in seconds to wait for send_sensor_data \u0027"},{"line_number":93,"context_line":"                      \u0027periodic task to be finished before allowing periodic \u0027"},{"line_number":94,"context_line":"                      \u0027call to happen again. Should be less than \u0027"}],"source_content_type":"text/x-python","patch_set":36,"id":"5a3905b3_2aade19a","line":91,"range":{"start_line":91,"start_character":28,"end_line":91,"end_character":33},"in_reply_to":"5a3905b3_277efc69","updated":"2017-01-24 13:53:01.000000000","message":"Done","commit_id":"ec71b70c42f8948bcbdc297868fae11239be539c"},{"author":{"_account_id":22724,"name":"Galyna Zholtkevych","email":"galynazholtkevych1991@gmail.com","username":"gzholtkevych"},"change_message_id":"0f80a2a1a05bc7334119deb0bb57e19f3d014cc4","unresolved":false,"context_lines":[{"line_number":88,"context_line":"                      \u0027simultaneously for send data from sensors periodic \u0027"},{"line_number":89,"context_line":"                      \u0027task.\u0027)),"},{"line_number":90,"context_line":"    cfg.IntOpt(\u0027send_sensor_data_wait_timeout\u0027,"},{"line_number":91,"context_line":"               default\u003d300, min\u003d1, max\u003d600,"},{"line_number":92,"context_line":"               help\u003d_(\u0027The time in seconds to wait for send_sensor_data \u0027"},{"line_number":93,"context_line":"                      \u0027periodic task to be finished before allowing periodic \u0027"},{"line_number":94,"context_line":"                      \u0027call to happen again. Should be less than \u0027"}],"source_content_type":"text/x-python","patch_set":36,"id":"5a3905b3_aa1ab1c3","line":91,"range":{"start_line":91,"start_character":35,"end_line":91,"end_character":42},"in_reply_to":"5a3905b3_c7bc58de","updated":"2017-01-24 13:53:01.000000000","message":"My comment there is that there is no way to work with IntOpt and value interpolation.Unfortunately,  Config generation does not parse $send_sensor_data_wait_timeout as int value\nSo I decided just to describe it in help message: when the operator updates config, he sees this help message, and if he put wrong value, the problem will be at his side","commit_id":"ec71b70c42f8948bcbdc297868fae11239be539c"},{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"7ebdf12b13df149a7058a24d9c91d54a3da4c678","unresolved":false,"context_lines":[{"line_number":89,"context_line":"                      \u0027task.\u0027)),"},{"line_number":90,"context_line":"    cfg.IntOpt(\u0027send_sensor_data_wait_timeout\u0027,"},{"line_number":91,"context_line":"               default\u003d300, min\u003d1, max\u003d600,"},{"line_number":92,"context_line":"               help\u003d_(\u0027The time in seconds to wait for send_sensor_data \u0027"},{"line_number":93,"context_line":"                      \u0027periodic task to be finished before allowing periodic \u0027"},{"line_number":94,"context_line":"                      \u0027call to happen again. Should be less than \u0027"},{"line_number":95,"context_line":"                      \u0027send_sensor_data_interval value\u0027)),"}],"source_content_type":"text/x-python","patch_set":36,"id":"5a3905b3_27ad1c9b","line":92,"range":{"start_line":92,"start_character":55,"end_line":92,"end_character":71},"updated":"2017-01-24 13:26:18.000000000","message":"nit in previous patchset.","commit_id":"ec71b70c42f8948bcbdc297868fae11239be539c"},{"author":{"_account_id":22724,"name":"Galyna Zholtkevych","email":"galynazholtkevych1991@gmail.com","username":"gzholtkevych"},"change_message_id":"0f80a2a1a05bc7334119deb0bb57e19f3d014cc4","unresolved":false,"context_lines":[{"line_number":89,"context_line":"                      \u0027task.\u0027)),"},{"line_number":90,"context_line":"    cfg.IntOpt(\u0027send_sensor_data_wait_timeout\u0027,"},{"line_number":91,"context_line":"               default\u003d300, min\u003d1, max\u003d600,"},{"line_number":92,"context_line":"               help\u003d_(\u0027The time in seconds to wait for send_sensor_data \u0027"},{"line_number":93,"context_line":"                      \u0027periodic task to be finished before allowing periodic \u0027"},{"line_number":94,"context_line":"                      \u0027call to happen again. Should be less than \u0027"},{"line_number":95,"context_line":"                      \u0027send_sensor_data_interval value\u0027)),"}],"source_content_type":"text/x-python","patch_set":36,"id":"5a3905b3_ca8a9d1a","line":92,"range":{"start_line":92,"start_character":55,"end_line":92,"end_character":71},"in_reply_to":"5a3905b3_27ad1c9b","updated":"2017-01-24 13:53:01.000000000","message":"Done","commit_id":"ec71b70c42f8948bcbdc297868fae11239be539c"},{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"72f8edde6de24374c1ef6b5626a4229befa49dab","unresolved":false,"context_lines":[{"line_number":92,"context_line":"               help\u003d_(\u0027The time in seconds to wait for send sensors data \u0027"},{"line_number":93,"context_line":"                      \u0027periodic task to be finished before allowing periodic \u0027"},{"line_number":94,"context_line":"                      \u0027call to happen again. Should be less than \u0027"},{"line_number":95,"context_line":"                      \u0027send_sensor_data_interval value\u0027)),"},{"line_number":96,"context_line":"    cfg.ListOpt(\u0027send_sensor_data_types\u0027,"},{"line_number":97,"context_line":"                default\u003d[\u0027ALL\u0027],"},{"line_number":98,"context_line":"                help\u003d_(\u0027List of comma separated meter types which need to be\u0027"}],"source_content_type":"text/x-python","patch_set":39,"id":"5a3905b3_b09dbfbd","line":95,"updated":"2017-01-24 15:30:10.000000000","message":"nit: missing period at the end.","commit_id":"01f2818697df9efaf27742e4e784f8b42951551a"}],"ironic/tests/unit/conductor/test_manager.py":[{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"f1061e9585643f1d1cc0479bb9af46dfe880c820","unresolved":false,"context_lines":[{"line_number":3313,"context_line":""},{"line_number":3314,"context_line":"    @mock.patch.object(task_manager, \u0027acquire\u0027)"},{"line_number":3315,"context_line":"    def test_send_sensor_task(self, acquire_mock):"},{"line_number":3316,"context_line":"        node \u003d obj_utils.create_test_node(self.context,"},{"line_number":3317,"context_line":"                                          driver\u003d\u0027fake\u0027)"},{"line_number":3318,"context_line":"        nodes \u003d queue.Queue()"},{"line_number":3319,"context_line":"        nodes.put_nowait((node.uuid, node.driver, node.instance_uuid))"}],"source_content_type":"text/x-python","patch_set":16,"id":"1a6eadb0_eb3587a8","line":3316,"updated":"2016-12-19 06:51:46.000000000","message":"This is not needed because acquire() is mocked. We can use fake values in l3319.","commit_id":"beb5e37555aaa6b1c848968840db7316ea9a53bb"},{"author":{"_account_id":22724,"name":"Galyna Zholtkevych","email":"galynazholtkevych1991@gmail.com","username":"gzholtkevych"},"change_message_id":"b7fbea2f1b44194ac0efadda5dce668b9eea5a6e","unresolved":false,"context_lines":[{"line_number":3313,"context_line":""},{"line_number":3314,"context_line":"    @mock.patch.object(task_manager, \u0027acquire\u0027)"},{"line_number":3315,"context_line":"    def test_send_sensor_task(self, acquire_mock):"},{"line_number":3316,"context_line":"        node \u003d obj_utils.create_test_node(self.context,"},{"line_number":3317,"context_line":"                                          driver\u003d\u0027fake\u0027)"},{"line_number":3318,"context_line":"        nodes \u003d queue.Queue()"},{"line_number":3319,"context_line":"        nodes.put_nowait((node.uuid, node.driver, node.instance_uuid))"}],"source_content_type":"text/x-python","patch_set":16,"id":"1a6eadb0_26c1642f","line":3316,"in_reply_to":"1a6eadb0_eb3587a8","updated":"2016-12-19 14:44:18.000000000","message":"Done","commit_id":"beb5e37555aaa6b1c848968840db7316ea9a53bb"},{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"f1061e9585643f1d1cc0479bb9af46dfe880c820","unresolved":false,"context_lines":[{"line_number":3316,"context_line":"        node \u003d obj_utils.create_test_node(self.context,"},{"line_number":3317,"context_line":"                                          driver\u003d\u0027fake\u0027)"},{"line_number":3318,"context_line":"        nodes \u003d queue.Queue()"},{"line_number":3319,"context_line":"        nodes.put_nowait((node.uuid, node.driver, node.instance_uuid))"},{"line_number":3320,"context_line":"        self._start_service()"},{"line_number":3321,"context_line":""},{"line_number":3322,"context_line":"        CONF.set_override(\u0027send_sensor_data\u0027, True, group\u003d\u0027conductor\u0027)"}],"source_content_type":"text/x-python","patch_set":16,"id":"1a6eadb0_6eaee5e8","line":3319,"updated":"2016-12-19 06:51:46.000000000","message":"Makes sense to improve this test with nodes \u003e1 and checks call counts.","commit_id":"beb5e37555aaa6b1c848968840db7316ea9a53bb"},{"author":{"_account_id":22724,"name":"Galyna Zholtkevych","email":"galynazholtkevych1991@gmail.com","username":"gzholtkevych"},"change_message_id":"b7fbea2f1b44194ac0efadda5dce668b9eea5a6e","unresolved":false,"context_lines":[{"line_number":3316,"context_line":"        node \u003d obj_utils.create_test_node(self.context,"},{"line_number":3317,"context_line":"                                          driver\u003d\u0027fake\u0027)"},{"line_number":3318,"context_line":"        nodes \u003d queue.Queue()"},{"line_number":3319,"context_line":"        nodes.put_nowait((node.uuid, node.driver, node.instance_uuid))"},{"line_number":3320,"context_line":"        self._start_service()"},{"line_number":3321,"context_line":""},{"line_number":3322,"context_line":"        CONF.set_override(\u0027send_sensor_data\u0027, True, group\u003d\u0027conductor\u0027)"}],"source_content_type":"text/x-python","patch_set":16,"id":"1a6eadb0_ac8713d6","line":3319,"in_reply_to":"1a6eadb0_6eaee5e8","updated":"2016-12-19 14:44:18.000000000","message":"Done","commit_id":"beb5e37555aaa6b1c848968840db7316ea9a53bb"},{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"f1061e9585643f1d1cc0479bb9af46dfe880c820","unresolved":false,"context_lines":[{"line_number":3335,"context_line":"    @mock.patch.object(task_manager, \u0027acquire\u0027, autospec\u003dTrue)"},{"line_number":3336,"context_line":"    def test_send_sensor_task_no_management("},{"line_number":3337,"context_line":"            self, acquire_mock):"},{"line_number":3338,"context_line":"        node \u003d obj_utils.create_test_node(self.context,"},{"line_number":3339,"context_line":"                                          driver\u003d\u0027fake\u0027)"},{"line_number":3340,"context_line":"        nodes \u003d queue.Queue()"},{"line_number":3341,"context_line":"        nodes.put_nowait((node.uuid, node.driver, node.instance_uuid))"}],"source_content_type":"text/x-python","patch_set":16,"id":"1a6eadb0_cb68cb8a","line":3338,"updated":"2016-12-19 06:51:46.000000000","message":"ditto","commit_id":"beb5e37555aaa6b1c848968840db7316ea9a53bb"},{"author":{"_account_id":22724,"name":"Galyna Zholtkevych","email":"galynazholtkevych1991@gmail.com","username":"gzholtkevych"},"change_message_id":"b7fbea2f1b44194ac0efadda5dce668b9eea5a6e","unresolved":false,"context_lines":[{"line_number":3335,"context_line":"    @mock.patch.object(task_manager, \u0027acquire\u0027, autospec\u003dTrue)"},{"line_number":3336,"context_line":"    def test_send_sensor_task_no_management("},{"line_number":3337,"context_line":"            self, acquire_mock):"},{"line_number":3338,"context_line":"        node \u003d obj_utils.create_test_node(self.context,"},{"line_number":3339,"context_line":"                                          driver\u003d\u0027fake\u0027)"},{"line_number":3340,"context_line":"        nodes \u003d queue.Queue()"},{"line_number":3341,"context_line":"        nodes.put_nowait((node.uuid, node.driver, node.instance_uuid))"}],"source_content_type":"text/x-python","patch_set":16,"id":"1a6eadb0_6c7dfbe6","line":3338,"in_reply_to":"1a6eadb0_cb68cb8a","updated":"2016-12-19 14:44:18.000000000","message":"Done","commit_id":"beb5e37555aaa6b1c848968840db7316ea9a53bb"},{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"f1061e9585643f1d1cc0479bb9af46dfe880c820","unresolved":false,"context_lines":[{"line_number":3362,"context_line":"    @mock.patch(\u0027ironic.conductor.manager.ConductorManager._spawn_worker\u0027)"},{"line_number":3363,"context_line":"    @mock.patch.object(manager.ConductorManager, \u0027_mapped_to_this_conductor\u0027)"},{"line_number":3364,"context_line":"    @mock.patch.object(dbapi.IMPL, \u0027get_nodeinfo_list\u0027)"},{"line_number":3365,"context_line":"    @mock.patch.object(task_manager, \u0027acquire\u0027)"},{"line_number":3366,"context_line":"    def test___send_sensor_data(self, acquire_mock, get_nodeinfo_list_mock,"},{"line_number":3367,"context_line":"                                _mapped_to_this_conductor_mock, mock_spawn,"},{"line_number":3368,"context_line":"                                mock_queue):"}],"source_content_type":"text/x-python","patch_set":16,"id":"1a6eadb0_8ef42188","line":3365,"updated":"2016-12-19 06:51:46.000000000","message":"This mock is not needed.","commit_id":"beb5e37555aaa6b1c848968840db7316ea9a53bb"},{"author":{"_account_id":22724,"name":"Galyna Zholtkevych","email":"galynazholtkevych1991@gmail.com","username":"gzholtkevych"},"change_message_id":"b7fbea2f1b44194ac0efadda5dce668b9eea5a6e","unresolved":false,"context_lines":[{"line_number":3362,"context_line":"    @mock.patch(\u0027ironic.conductor.manager.ConductorManager._spawn_worker\u0027)"},{"line_number":3363,"context_line":"    @mock.patch.object(manager.ConductorManager, \u0027_mapped_to_this_conductor\u0027)"},{"line_number":3364,"context_line":"    @mock.patch.object(dbapi.IMPL, \u0027get_nodeinfo_list\u0027)"},{"line_number":3365,"context_line":"    @mock.patch.object(task_manager, \u0027acquire\u0027)"},{"line_number":3366,"context_line":"    def test___send_sensor_data(self, acquire_mock, get_nodeinfo_list_mock,"},{"line_number":3367,"context_line":"                                _mapped_to_this_conductor_mock, mock_spawn,"},{"line_number":3368,"context_line":"                                mock_queue):"}],"source_content_type":"text/x-python","patch_set":16,"id":"1a6eadb0_ccda8fe9","line":3365,"in_reply_to":"1a6eadb0_8ef42188","updated":"2016-12-19 14:44:18.000000000","message":"Done","commit_id":"beb5e37555aaa6b1c848968840db7316ea9a53bb"},{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"f1061e9585643f1d1cc0479bb9af46dfe880c820","unresolved":false,"context_lines":[{"line_number":3366,"context_line":"    def test___send_sensor_data(self, acquire_mock, get_nodeinfo_list_mock,"},{"line_number":3367,"context_line":"                                _mapped_to_this_conductor_mock, mock_spawn,"},{"line_number":3368,"context_line":"                                mock_queue):"},{"line_number":3369,"context_line":"        node \u003d obj_utils.create_test_node(self.context,"},{"line_number":3370,"context_line":"                                          driver\u003d\u0027fake\u0027)"},{"line_number":3371,"context_line":""},{"line_number":3372,"context_line":"        self._start_service()"}],"source_content_type":"text/x-python","patch_set":16,"id":"1a6eadb0_4b13db0d","line":3369,"updated":"2016-12-19 06:51:46.000000000","message":"ditto","commit_id":"beb5e37555aaa6b1c848968840db7316ea9a53bb"},{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"f1061e9585643f1d1cc0479bb9af46dfe880c820","unresolved":false,"context_lines":[{"line_number":3381,"context_line":"        nodes.put_nowait((node.uuid, node.driver, node.instance_uuid))"},{"line_number":3382,"context_line":"        mock_queue.return_value \u003d nodes"},{"line_number":3383,"context_line":"        self.service._send_sensor_data(self.context)"},{"line_number":3384,"context_line":"        self.assertTrue(get_nodeinfo_list_mock.called)"},{"line_number":3385,"context_line":"        mock_spawn.assert_called_with(self.service._sensors_nodes_task,"},{"line_number":3386,"context_line":"                                      self.context,"},{"line_number":3387,"context_line":"                                      nodes)"}],"source_content_type":"text/x-python","patch_set":16,"id":"1a6eadb0_4e45a915","line":3384,"range":{"start_line":3384,"start_character":8,"end_line":3384,"end_character":54},"updated":"2016-12-19 06:51:46.000000000","message":"This test does not test anything for your case because this method is called during starting service l3372.","commit_id":"beb5e37555aaa6b1c848968840db7316ea9a53bb"},{"author":{"_account_id":22724,"name":"Galyna Zholtkevych","email":"galynazholtkevych1991@gmail.com","username":"gzholtkevych"},"change_message_id":"b7fbea2f1b44194ac0efadda5dce668b9eea5a6e","unresolved":false,"context_lines":[{"line_number":3381,"context_line":"        nodes.put_nowait((node.uuid, node.driver, node.instance_uuid))"},{"line_number":3382,"context_line":"        mock_queue.return_value \u003d nodes"},{"line_number":3383,"context_line":"        self.service._send_sensor_data(self.context)"},{"line_number":3384,"context_line":"        self.assertTrue(get_nodeinfo_list_mock.called)"},{"line_number":3385,"context_line":"        mock_spawn.assert_called_with(self.service._sensors_nodes_task,"},{"line_number":3386,"context_line":"                                      self.context,"},{"line_number":3387,"context_line":"                                      nodes)"}],"source_content_type":"text/x-python","patch_set":16,"id":"1a6eadb0_a3f801c6","line":3384,"range":{"start_line":3384,"start_character":8,"end_line":3384,"end_character":54},"in_reply_to":"1a6eadb0_4e45a915","updated":"2016-12-19 14:44:18.000000000","message":"Done","commit_id":"beb5e37555aaa6b1c848968840db7316ea9a53bb"},{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"f1061e9585643f1d1cc0479bb9af46dfe880c820","unresolved":false,"context_lines":[{"line_number":3389,"context_line":"    @mock.patch(\u0027ironic.conductor.manager.ConductorManager._spawn_worker\u0027)"},{"line_number":3390,"context_line":"    @mock.patch.object(manager.ConductorManager, \u0027_mapped_to_this_conductor\u0027)"},{"line_number":3391,"context_line":"    @mock.patch.object(dbapi.IMPL, \u0027get_nodeinfo_list\u0027)"},{"line_number":3392,"context_line":"    @mock.patch.object(task_manager, \u0027acquire\u0027)"},{"line_number":3393,"context_line":"    def test___send_sensor_data_multiple_workers("},{"line_number":3394,"context_line":"            self, acquire_mock, get_nodeinfo_list_mock,"},{"line_number":3395,"context_line":"            _mapped_to_this_conductor_mock, mock_spawn):"}],"source_content_type":"text/x-python","patch_set":16,"id":"1a6eadb0_6e3ee52a","line":3392,"updated":"2016-12-19 06:51:46.000000000","message":"ditto","commit_id":"beb5e37555aaa6b1c848968840db7316ea9a53bb"},{"author":{"_account_id":22724,"name":"Galyna Zholtkevych","email":"galynazholtkevych1991@gmail.com","username":"gzholtkevych"},"change_message_id":"b7fbea2f1b44194ac0efadda5dce668b9eea5a6e","unresolved":false,"context_lines":[{"line_number":3389,"context_line":"    @mock.patch(\u0027ironic.conductor.manager.ConductorManager._spawn_worker\u0027)"},{"line_number":3390,"context_line":"    @mock.patch.object(manager.ConductorManager, \u0027_mapped_to_this_conductor\u0027)"},{"line_number":3391,"context_line":"    @mock.patch.object(dbapi.IMPL, \u0027get_nodeinfo_list\u0027)"},{"line_number":3392,"context_line":"    @mock.patch.object(task_manager, \u0027acquire\u0027)"},{"line_number":3393,"context_line":"    def test___send_sensor_data_multiple_workers("},{"line_number":3394,"context_line":"            self, acquire_mock, get_nodeinfo_list_mock,"},{"line_number":3395,"context_line":"            _mapped_to_this_conductor_mock, mock_spawn):"}],"source_content_type":"text/x-python","patch_set":16,"id":"1a6eadb0_a3a2c198","line":3392,"in_reply_to":"1a6eadb0_6e3ee52a","updated":"2016-12-19 14:44:18.000000000","message":"Done","commit_id":"beb5e37555aaa6b1c848968840db7316ea9a53bb"},{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"f1061e9585643f1d1cc0479bb9af46dfe880c820","unresolved":false,"context_lines":[{"line_number":3397,"context_line":"                                          driver\u003d\u0027fake\u0027)"},{"line_number":3398,"context_line":""},{"line_number":3399,"context_line":"        self._start_service()"},{"line_number":3400,"context_line":"        spawn_call_count_at_start \u003d mock_spawn.call_count"},{"line_number":3401,"context_line":""},{"line_number":3402,"context_line":"        number_of_workers \u003d 8"},{"line_number":3403,"context_line":"        CONF.set_override(\u0027send_sensor_data\u0027, True, group\u003d\u0027conductor\u0027)"}],"source_content_type":"text/x-python","patch_set":16,"id":"1a6eadb0_8b917355","line":3400,"updated":"2016-12-19 06:51:46.000000000","message":"You can do mock_spawn.reset_mock() instead and avoid arithmetic after.","commit_id":"beb5e37555aaa6b1c848968840db7316ea9a53bb"},{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"f1061e9585643f1d1cc0479bb9af46dfe880c820","unresolved":false,"context_lines":[{"line_number":3409,"context_line":"        get_nodeinfo_list_mock.return_value \u003d [(node.uuid, node.driver,"},{"line_number":3410,"context_line":"                                                node.instance_uuid)] * 20"},{"line_number":3411,"context_line":"        self.service._send_sensor_data(self.context)"},{"line_number":3412,"context_line":"        self.assertTrue(get_nodeinfo_list_mock.called)"},{"line_number":3413,"context_line":"        self.assertTrue(_mapped_to_this_conductor_mock.called)"},{"line_number":3414,"context_line":"        self.assertEqual(number_of_workers + spawn_call_count_at_start,"},{"line_number":3415,"context_line":"                         mock_spawn.call_count)"},{"line_number":3416,"context_line":""}],"source_content_type":"text/x-python","patch_set":16,"id":"1a6eadb0_ce68d98a","line":3413,"range":{"start_line":3412,"start_character":8,"end_line":3413,"end_character":62},"updated":"2016-12-19 06:51:46.000000000","message":"ditto l3384","commit_id":"beb5e37555aaa6b1c848968840db7316ea9a53bb"},{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"f1061e9585643f1d1cc0479bb9af46dfe880c820","unresolved":false,"context_lines":[{"line_number":3414,"context_line":"        self.assertEqual(number_of_workers + spawn_call_count_at_start,"},{"line_number":3415,"context_line":"                         mock_spawn.call_count)"},{"line_number":3416,"context_line":""},{"line_number":3417,"context_line":"    @mock.patch.object(manager.ConductorManager, \u0027_fail_if_in_state\u0027,"},{"line_number":3418,"context_line":"                       autospec\u003dTrue)"},{"line_number":3419,"context_line":"    @mock.patch.object(manager.ConductorManager, \u0027_mapped_to_this_conductor\u0027)"},{"line_number":3420,"context_line":"    @mock.patch.object(dbapi.IMPL, \u0027get_nodeinfo_list\u0027)"}],"source_content_type":"text/x-python","patch_set":16,"id":"1a6eadb0_4e1049a9","line":3417,"updated":"2016-12-19 06:51:46.000000000","message":"I prefer do reset_mock() for mocks below after _start_service() instead, or create mocks after _start_service().","commit_id":"beb5e37555aaa6b1c848968840db7316ea9a53bb"},{"author":{"_account_id":22724,"name":"Galyna Zholtkevych","email":"galynazholtkevych1991@gmail.com","username":"gzholtkevych"},"change_message_id":"b7fbea2f1b44194ac0efadda5dce668b9eea5a6e","unresolved":false,"context_lines":[{"line_number":3414,"context_line":"        self.assertEqual(number_of_workers + spawn_call_count_at_start,"},{"line_number":3415,"context_line":"                         mock_spawn.call_count)"},{"line_number":3416,"context_line":""},{"line_number":3417,"context_line":"    @mock.patch.object(manager.ConductorManager, \u0027_fail_if_in_state\u0027,"},{"line_number":3418,"context_line":"                       autospec\u003dTrue)"},{"line_number":3419,"context_line":"    @mock.patch.object(manager.ConductorManager, \u0027_mapped_to_this_conductor\u0027)"},{"line_number":3420,"context_line":"    @mock.patch.object(dbapi.IMPL, \u0027get_nodeinfo_list\u0027)"}],"source_content_type":"text/x-python","patch_set":16,"id":"1a6eadb0_f619d57a","line":3417,"in_reply_to":"1a6eadb0_4e1049a9","updated":"2016-12-19 14:44:18.000000000","message":"Done","commit_id":"beb5e37555aaa6b1c848968840db7316ea9a53bb"},{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"f1061e9585643f1d1cc0479bb9af46dfe880c820","unresolved":false,"context_lines":[{"line_number":3429,"context_line":"            self.assertFalse(_mapped_to_this_conductor_mock.called)"},{"line_number":3430,"context_line":"            self.assertFalse(_spawn_mock.called)"},{"line_number":3431,"context_line":""},{"line_number":3432,"context_line":"            mock_fail_if_state.assert_called_once_with("},{"line_number":3433,"context_line":"                mock.ANY, mock.ANY,"},{"line_number":3434,"context_line":"                {\u0027provision_state\u0027: \u0027deploying\u0027, \u0027reserved\u0027: False},"},{"line_number":3435,"context_line":"                \u0027deploying\u0027, \u0027provision_updated_at\u0027,"},{"line_number":3436,"context_line":"                last_error\u003dmock.ANY)"},{"line_number":3437,"context_line":""},{"line_number":3438,"context_line":"    def test_set_boot_device(self):"},{"line_number":3439,"context_line":"        node \u003d obj_utils.create_test_node(self.context, driver\u003d\u0027fake\u0027)"}],"source_content_type":"text/x-python","patch_set":16,"id":"1a6eadb0_2b9e9f07","line":3436,"range":{"start_line":3432,"start_character":12,"end_line":3436,"end_character":36},"updated":"2016-12-19 06:51:46.000000000","message":"Not related test.","commit_id":"beb5e37555aaa6b1c848968840db7316ea9a53bb"},{"author":{"_account_id":22724,"name":"Galyna Zholtkevych","email":"galynazholtkevych1991@gmail.com","username":"gzholtkevych"},"change_message_id":"b7fbea2f1b44194ac0efadda5dce668b9eea5a6e","unresolved":false,"context_lines":[{"line_number":3429,"context_line":"            self.assertFalse(_mapped_to_this_conductor_mock.called)"},{"line_number":3430,"context_line":"            self.assertFalse(_spawn_mock.called)"},{"line_number":3431,"context_line":""},{"line_number":3432,"context_line":"            mock_fail_if_state.assert_called_once_with("},{"line_number":3433,"context_line":"                mock.ANY, mock.ANY,"},{"line_number":3434,"context_line":"                {\u0027provision_state\u0027: \u0027deploying\u0027, \u0027reserved\u0027: False},"},{"line_number":3435,"context_line":"                \u0027deploying\u0027, \u0027provision_updated_at\u0027,"},{"line_number":3436,"context_line":"                last_error\u003dmock.ANY)"},{"line_number":3437,"context_line":""},{"line_number":3438,"context_line":"    def test_set_boot_device(self):"},{"line_number":3439,"context_line":"        node \u003d obj_utils.create_test_node(self.context, driver\u003d\u0027fake\u0027)"}],"source_content_type":"text/x-python","patch_set":16,"id":"1a6eadb0_034b75b1","line":3436,"range":{"start_line":3432,"start_character":12,"end_line":3436,"end_character":36},"in_reply_to":"1a6eadb0_2b9e9f07","updated":"2016-12-19 14:44:18.000000000","message":"Done","commit_id":"beb5e37555aaa6b1c848968840db7316ea9a53bb"},{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"e3347c6513dd5a1b055cd63f6aaabebfd4f475e8","unresolved":false,"context_lines":[{"line_number":3363,"context_line":"        _mapped_to_this_conductor_mock.return_value \u003d True"},{"line_number":3364,"context_line":"        get_nodeinfo_list_mock.return_value \u003d [(\u0027fake_uuid\u0027, \u0027fake\u0027, None)]"},{"line_number":3365,"context_line":"        self.service._send_sensor_data(self.context)"},{"line_number":3366,"context_line":"        self.assertTrue(get_nodeinfo_list_mock.called)"},{"line_number":3367,"context_line":"        mock_spawn.assert_called_with(self.service._sensors_nodes_task,"},{"line_number":3368,"context_line":"                                      self.context,"},{"line_number":3369,"context_line":"                                      mock.ANY)"}],"source_content_type":"text/x-python","patch_set":19,"id":"1a6eadb0_e8ea9bab","line":3366,"updated":"2016-12-20 14:32:00.000000000","message":"This test does not test your case because this method called also inside _start_service()","commit_id":"b5b01c6a6eb56feaa34a237bd923bcbf26f2556a"},{"author":{"_account_id":22724,"name":"Galyna Zholtkevych","email":"galynazholtkevych1991@gmail.com","username":"gzholtkevych"},"change_message_id":"509b222e5c36e6d2e087c9fcac10d5bceec4aa05","unresolved":false,"context_lines":[{"line_number":3363,"context_line":"        _mapped_to_this_conductor_mock.return_value \u003d True"},{"line_number":3364,"context_line":"        get_nodeinfo_list_mock.return_value \u003d [(\u0027fake_uuid\u0027, \u0027fake\u0027, None)]"},{"line_number":3365,"context_line":"        self.service._send_sensor_data(self.context)"},{"line_number":3366,"context_line":"        self.assertTrue(get_nodeinfo_list_mock.called)"},{"line_number":3367,"context_line":"        mock_spawn.assert_called_with(self.service._sensors_nodes_task,"},{"line_number":3368,"context_line":"                                      self.context,"},{"line_number":3369,"context_line":"                                      mock.ANY)"}],"source_content_type":"text/x-python","patch_set":19,"id":"1a6eadb0_cf2300bc","line":3366,"in_reply_to":"1a6eadb0_e8ea9bab","updated":"2016-12-21 08:46:19.000000000","message":"Done","commit_id":"b5b01c6a6eb56feaa34a237bd923bcbf26f2556a"}],"releasenotes/notes/multiple-threads-for-send-sensor-data-89d29c12da30ec54.yaml":[{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"f1de83be9114cd9b9d42f84a4fd0497c1413d346","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"fixes:"},{"line_number":3,"context_line":"  - Added new option ``[conductor]/send_sensor_data_threads``"},{"line_number":4,"context_line":"    for maintenance of concurrency."}],"source_content_type":"text/x-yaml","patch_set":11,"id":"1a6eadb0_d474d1d0","line":4,"range":{"start_line":4,"start_character":23,"end_line":4,"end_character":35},"updated":"2016-12-13 11:43:13.000000000","message":"What concurrency?","commit_id":"2c89ef76407749e78ee6a6ef7d0fb0276b6ad460"},{"author":{"_account_id":22724,"name":"Galyna Zholtkevych","email":"galynazholtkevych1991@gmail.com","username":"gzholtkevych"},"change_message_id":"03eb94e935618bb2284a4225666bb415dc37cd41","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"fixes:"},{"line_number":3,"context_line":"  - Added new option ``[conductor]/send_sensor_data_threads``"},{"line_number":4,"context_line":"    for maintenance of concurrency."}],"source_content_type":"text/x-yaml","patch_set":11,"id":"1a6eadb0_2e23bb06","line":4,"range":{"start_line":4,"start_character":23,"end_line":4,"end_character":35},"in_reply_to":"1a6eadb0_d474d1d0","updated":"2016-12-14 10:54:03.000000000","message":"Thanks, clearified","commit_id":"2c89ef76407749e78ee6a6ef7d0fb0276b6ad460"},{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"48d70cfb1f6bd819738c80e0d046bfb29e382f11","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"fixes:"},{"line_number":3,"context_line":"  - Added new option ``[conductor]/send_sensor_data_threads``"},{"line_number":4,"context_line":"    for maintenance of concurrency for send data from sensors"},{"line_number":5,"context_line":"    periodic task."}],"source_content_type":"text/x-yaml","patch_set":13,"id":"1a6eadb0_33006d01","line":3,"range":{"start_line":3,"start_character":35,"end_line":3,"end_character":59},"updated":"2016-12-14 17:19:16.000000000","message":"This name different with code.","commit_id":"2b905d00e76f4e851c121e78ca08e709a6451a82"}],"releasenotes/notes/multiple-workers-for-send-sensor-data-89d29c12da30ec54.yaml":[{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"e3347c6513dd5a1b055cd63f6aaabebfd4f475e8","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"fixes:"},{"line_number":3,"context_line":"  - Added new option ``[conductor]/send_sensor_data_workers``"},{"line_number":4,"context_line":"    for maintenance of concurrency for send data from sensors"},{"line_number":5,"context_line":"    periodic task."}],"source_content_type":"text/x-yaml","patch_set":19,"id":"1a6eadb0_c83b1fea","line":2,"updated":"2016-12-20 14:32:00.000000000","message":"I\u0027m not sure maybe two items should be here, \"features\" (this like a new feature) and \"fixes\" (link to the bug).","commit_id":"b5b01c6a6eb56feaa34a237bd923bcbf26f2556a"},{"author":{"_account_id":22724,"name":"Galyna Zholtkevych","email":"galynazholtkevych1991@gmail.com","username":"gzholtkevych"},"change_message_id":"509b222e5c36e6d2e087c9fcac10d5bceec4aa05","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"fixes:"},{"line_number":3,"context_line":"  - Added new option ``[conductor]/send_sensor_data_workers``"},{"line_number":4,"context_line":"    for maintenance of concurrency for send data from sensors"},{"line_number":5,"context_line":"    periodic task."}],"source_content_type":"text/x-yaml","patch_set":19,"id":"1a6eadb0_225f2be6","line":2,"in_reply_to":"1a6eadb0_c83b1fea","updated":"2016-12-21 08:46:19.000000000","message":"Done","commit_id":"b5b01c6a6eb56feaa34a237bd923bcbf26f2556a"},{"author":{"_account_id":14614,"name":"Kyrylo Romanenko","display_name":"K.Romanenko","email":"romanenko-kv@hotmail.com","username":"kromanenko"},"change_message_id":"cb307db813f4dd50987abb7a256283e9e8b0af7b","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"fixes:"},{"line_number":3,"context_line":"  - Added new option ``[conductor]/send_sensor_data_workers``"},{"line_number":4,"context_line":"    for maintenance of concurrency for send data from sensors"},{"line_number":5,"context_line":"    periodic task."}],"source_content_type":"text/x-yaml","patch_set":19,"id":"1a6eadb0_0c3abdcd","line":4,"range":{"start_line":4,"start_character":8,"end_line":4,"end_character":19},"updated":"2016-12-19 16:56:08.000000000","message":"configuration?","commit_id":"b5b01c6a6eb56feaa34a237bd923bcbf26f2556a"},{"author":{"_account_id":22724,"name":"Galyna Zholtkevych","email":"galynazholtkevych1991@gmail.com","username":"gzholtkevych"},"change_message_id":"509b222e5c36e6d2e087c9fcac10d5bceec4aa05","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"fixes:"},{"line_number":3,"context_line":"  - Added new option ``[conductor]/send_sensor_data_workers``"},{"line_number":4,"context_line":"    for maintenance of concurrency for send data from sensors"},{"line_number":5,"context_line":"    periodic task."}],"source_content_type":"text/x-yaml","patch_set":19,"id":"1a6eadb0_02506fd3","line":4,"range":{"start_line":4,"start_character":8,"end_line":4,"end_character":19},"in_reply_to":"1a6eadb0_0c3abdcd","updated":"2016-12-21 08:46:19.000000000","message":"no, I think, maintenance is better.","commit_id":"b5b01c6a6eb56feaa34a237bd923bcbf26f2556a"},{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"80cef786024c2ace577b32edbc69c9c76c1aa462","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - For now ironic is able to configure ironic to send "},{"line_number":4,"context_line":"    sensor data to Ceilometer in parallel."},{"line_number":5,"context_line":"fixes:"},{"line_number":6,"context_line":"  - Added new option ``[conductor]/send_sensor_data_workers``"}],"source_content_type":"text/x-yaml","patch_set":20,"id":"da4df55a_ec1d82be","line":3,"range":{"start_line":3,"start_character":12,"end_line":3,"end_character":46},"updated":"2016-12-22 15:14:27.000000000","message":"I\u0027m happy that ironic can do some configuration itself.","commit_id":"6ce62c7b0b3790a581dea026319d76e4f6b824c0"},{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"80cef786024c2ace577b32edbc69c9c76c1aa462","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - For now ironic is able to configure ironic to send "},{"line_number":4,"context_line":"    sensor data to Ceilometer in parallel."},{"line_number":5,"context_line":"fixes:"},{"line_number":6,"context_line":"  - Added new option ``[conductor]/send_sensor_data_workers``"}],"source_content_type":"text/x-yaml","patch_set":20,"id":"da4df55a_0cd3a639","line":3,"updated":"2016-12-22 15:14:27.000000000","message":"nit: looks like extra space.","commit_id":"6ce62c7b0b3790a581dea026319d76e4f6b824c0"},{"author":{"_account_id":22724,"name":"Galyna Zholtkevych","email":"galynazholtkevych1991@gmail.com","username":"gzholtkevych"},"change_message_id":"cb20a24694d61ec626894a12b8721cc946ab39b6","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - For now ironic is able to configure ironic to send "},{"line_number":4,"context_line":"    sensor data to Ceilometer in parallel."},{"line_number":5,"context_line":"fixes:"},{"line_number":6,"context_line":"  - Added new option ``[conductor]/send_sensor_data_workers``"}],"source_content_type":"text/x-yaml","patch_set":20,"id":"da4df55a_e4d9c423","line":3,"in_reply_to":"da4df55a_0cd3a639","updated":"2016-12-26 11:02:04.000000000","message":"Done","commit_id":"6ce62c7b0b3790a581dea026319d76e4f6b824c0"},{"author":{"_account_id":22724,"name":"Galyna Zholtkevych","email":"galynazholtkevych1991@gmail.com","username":"gzholtkevych"},"change_message_id":"cb20a24694d61ec626894a12b8721cc946ab39b6","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - For now ironic is able to configure ironic to send "},{"line_number":4,"context_line":"    sensor data to Ceilometer in parallel."},{"line_number":5,"context_line":"fixes:"},{"line_number":6,"context_line":"  - Added new option ``[conductor]/send_sensor_data_workers``"}],"source_content_type":"text/x-yaml","patch_set":20,"id":"da4df55a_a797be46","line":3,"range":{"start_line":3,"start_character":12,"end_line":3,"end_character":46},"in_reply_to":"da4df55a_ec1d82be","updated":"2016-12-26 11:02:04.000000000","message":"Done","commit_id":"6ce62c7b0b3790a581dea026319d76e4f6b824c0"},{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"80cef786024c2ace577b32edbc69c9c76c1aa462","unresolved":false,"context_lines":[{"line_number":3,"context_line":"  - For now ironic is able to configure ironic to send "},{"line_number":4,"context_line":"    sensor data to Ceilometer in parallel."},{"line_number":5,"context_line":"fixes:"},{"line_number":6,"context_line":"  - Added new option ``[conductor]/send_sensor_data_workers``"},{"line_number":7,"context_line":"    for the maintenance of concurrency for send data from"},{"line_number":8,"context_line":"    sensors periodic task."}],"source_content_type":"text/x-yaml","patch_set":20,"id":"da4df55a_4c992e6e","line":8,"range":{"start_line":6,"start_character":4,"end_line":8,"end_character":26},"updated":"2016-12-22 15:14:27.000000000","message":"Looks related to features, better to place here link to the bug.","commit_id":"6ce62c7b0b3790a581dea026319d76e4f6b824c0"},{"author":{"_account_id":22724,"name":"Galyna Zholtkevych","email":"galynazholtkevych1991@gmail.com","username":"gzholtkevych"},"change_message_id":"cb20a24694d61ec626894a12b8721cc946ab39b6","unresolved":false,"context_lines":[{"line_number":3,"context_line":"  - For now ironic is able to configure ironic to send "},{"line_number":4,"context_line":"    sensor data to Ceilometer in parallel."},{"line_number":5,"context_line":"fixes:"},{"line_number":6,"context_line":"  - Added new option ``[conductor]/send_sensor_data_workers``"},{"line_number":7,"context_line":"    for the maintenance of concurrency for send data from"},{"line_number":8,"context_line":"    sensors periodic task."}],"source_content_type":"text/x-yaml","patch_set":20,"id":"da4df55a_07d7aaed","line":8,"range":{"start_line":6,"start_character":4,"end_line":8,"end_character":26},"in_reply_to":"da4df55a_4c992e6e","updated":"2016-12-26 11:02:04.000000000","message":"The commit message includes the link to the bug, so here I just shortly describe it, I hope, it suits.","commit_id":"6ce62c7b0b3790a581dea026319d76e4f6b824c0"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"3568ca377f62a642054d48b4c8a26f8b44ddbf3b","unresolved":false,"context_lines":[{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - Added new option ``[conductor]/send_sensor_data_workers``"},{"line_number":4,"context_line":"    for the maintenance of concurrency for send sensor data"},{"line_number":5,"context_line":"    to Ceilometer."},{"line_number":6,"context_line":"fixes:"},{"line_number":7,"context_line":"  - Launching sending sensor data in parallel that makes this"},{"line_number":8,"context_line":"    action usable for large deployments."}],"source_content_type":"text/x-yaml","patch_set":22,"id":"ba5201f7_07ab8175","line":5,"updated":"2017-01-02 10:23:53.000000000","message":"there is a big upgrade impact here, as you increase the number of threads occupied by this routine from 1 to 4, which may limit the number of threads available for actual work.","commit_id":"91a18b3ed103e96f55aacb66da9ed94fd6790aa5"},{"author":{"_account_id":22724,"name":"Galyna Zholtkevych","email":"galynazholtkevych1991@gmail.com","username":"gzholtkevych"},"change_message_id":"8700586a3d5e26206745716a62045b11e9504e69","unresolved":false,"context_lines":[{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - Added new option ``[conductor]/send_sensor_data_workers``"},{"line_number":4,"context_line":"    for the maintenance of concurrency for send sensor data"},{"line_number":5,"context_line":"    to Ceilometer."},{"line_number":6,"context_line":"fixes:"},{"line_number":7,"context_line":"  - Launching sending sensor data in parallel that makes this"},{"line_number":8,"context_line":"    action usable for large deployments."}],"source_content_type":"text/x-yaml","patch_set":22,"id":"ba5201f7_483bc7d1","line":5,"in_reply_to":"ba5201f7_07ab8175","updated":"2017-01-03 10:26:18.000000000","message":"Thanks, added upgrade part.","commit_id":"91a18b3ed103e96f55aacb66da9ed94fd6790aa5"},{"author":{"_account_id":5805,"name":"Chris Krelle","email":"nobodycam@gmail.com","username":"nobodycam"},"change_message_id":"be1a7ac3f8d6b2d455053833c6c993e560778e7c","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - Added new option ``[conductor]/send_sensor_data_workers``"},{"line_number":4,"context_line":"    for the maintenance of concurrency for send sensor data"},{"line_number":5,"context_line":"    to Ceilometer."}],"source_content_type":"text/x-yaml","patch_set":29,"id":"7a3c09a3_12b61a3d","line":2,"range":{"start_line":2,"start_character":0,"end_line":2,"end_character":8},"updated":"2017-01-16 16:04:56.000000000","message":"looks like `wait_timeout_for_periodic` is also added.","commit_id":"f3611a71ec7793bada0d8245f2afe905e692bce4"},{"author":{"_account_id":22724,"name":"Galyna Zholtkevych","email":"galynazholtkevych1991@gmail.com","username":"gzholtkevych"},"change_message_id":"c15e339745193ca5d011bdac98bcdacf84c59f05","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - Added new option ``[conductor]/send_sensor_data_workers``"},{"line_number":4,"context_line":"    for the maintenance of concurrency for send sensor data"},{"line_number":5,"context_line":"    to Ceilometer."}],"source_content_type":"text/x-yaml","patch_set":29,"id":"7a3c09a3_8272b5ab","line":2,"range":{"start_line":2,"start_character":0,"end_line":2,"end_character":8},"in_reply_to":"7a3c09a3_12b61a3d","updated":"2017-01-16 16:45:06.000000000","message":"Done","commit_id":"f3611a71ec7793bada0d8245f2afe905e692bce4"},{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"b339bea2000fa27491d391f14412a76b8c8b57af","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - Added new option ``[conductor]/send_sensor_data_workers``"},{"line_number":4,"context_line":"    for the maintenance of concurrency for send sensor data"},{"line_number":5,"context_line":"    to Ceilometer. When performing periodic task in parallel,"},{"line_number":6,"context_line":"    need to ensure that workers will not be spawned again,"},{"line_number":7,"context_line":"    if the new periodic task is recheduled. For that the option"},{"line_number":8,"context_line":"    ``[conductor]/wait_timeout_for_send_sensor_data`` is also added."}],"source_content_type":"text/x-yaml","patch_set":39,"id":"3a461143_6335d6f5","line":5,"range":{"start_line":4,"start_character":4,"end_line":5,"end_character":17},"updated":"2017-01-27 15:52:00.000000000","message":"to allow concurrently sending sensor data using the specified number of green threads (ceilometer can be omitted I think, we just send it via messaging to specific topic right? so anyone can be getting it).","commit_id":"01f2818697df9efaf27742e4e784f8b42951551a"},{"author":{"_account_id":22724,"name":"Galyna Zholtkevych","email":"galynazholtkevych1991@gmail.com","username":"gzholtkevych"},"change_message_id":"42510ce1ad04e2931ba40ba01e505a6d3026651f","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - Added new option ``[conductor]/send_sensor_data_workers``"},{"line_number":4,"context_line":"    for the maintenance of concurrency for send sensor data"},{"line_number":5,"context_line":"    to Ceilometer. When performing periodic task in parallel,"},{"line_number":6,"context_line":"    need to ensure that workers will not be spawned again,"},{"line_number":7,"context_line":"    if the new periodic task is recheduled. For that the option"},{"line_number":8,"context_line":"    ``[conductor]/wait_timeout_for_send_sensor_data`` is also added."}],"source_content_type":"text/x-yaml","patch_set":39,"id":"3a461143_bbb5d07e","line":5,"range":{"start_line":4,"start_character":4,"end_line":5,"end_character":17},"in_reply_to":"3a461143_6335d6f5","updated":"2017-01-31 09:57:21.000000000","message":"Done","commit_id":"01f2818697df9efaf27742e4e784f8b42951551a"},{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"b339bea2000fa27491d391f14412a76b8c8b57af","unresolved":false,"context_lines":[{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - Added new option ``[conductor]/send_sensor_data_workers``"},{"line_number":4,"context_line":"    for the maintenance of concurrency for send sensor data"},{"line_number":5,"context_line":"    to Ceilometer. When performing periodic task in parallel,"},{"line_number":6,"context_line":"    need to ensure that workers will not be spawned again,"},{"line_number":7,"context_line":"    if the new periodic task is recheduled. For that the option"},{"line_number":8,"context_line":"    ``[conductor]/wait_timeout_for_send_sensor_data`` is also added."},{"line_number":9,"context_line":"upgrade:"},{"line_number":10,"context_line":"  - Increased number of workers from 1 to 4 for the task"},{"line_number":11,"context_line":"    ``send_sensor_data``."}],"source_content_type":"text/x-yaml","patch_set":39,"id":"3a461143_ee560dd1","line":8,"range":{"start_line":5,"start_character":19,"end_line":8,"end_character":68},"updated":"2017-01-27 15:52:00.000000000","message":"``[conductor]/wait_timeout_for_send_sensor_data`` option allows to specify the time to wait for all spawned green threads to finish, before running the periodic task again.","commit_id":"01f2818697df9efaf27742e4e784f8b42951551a"},{"author":{"_account_id":22724,"name":"Galyna Zholtkevych","email":"galynazholtkevych1991@gmail.com","username":"gzholtkevych"},"change_message_id":"42510ce1ad04e2931ba40ba01e505a6d3026651f","unresolved":false,"context_lines":[{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - Added new option ``[conductor]/send_sensor_data_workers``"},{"line_number":4,"context_line":"    for the maintenance of concurrency for send sensor data"},{"line_number":5,"context_line":"    to Ceilometer. When performing periodic task in parallel,"},{"line_number":6,"context_line":"    need to ensure that workers will not be spawned again,"},{"line_number":7,"context_line":"    if the new periodic task is recheduled. For that the option"},{"line_number":8,"context_line":"    ``[conductor]/wait_timeout_for_send_sensor_data`` is also added."},{"line_number":9,"context_line":"upgrade:"},{"line_number":10,"context_line":"  - Increased number of workers from 1 to 4 for the task"},{"line_number":11,"context_line":"    ``send_sensor_data``."}],"source_content_type":"text/x-yaml","patch_set":39,"id":"3a461143_dbb8dc77","line":8,"range":{"start_line":5,"start_character":19,"end_line":8,"end_character":68},"in_reply_to":"3a461143_ee560dd1","updated":"2017-01-31 09:57:21.000000000","message":"Done","commit_id":"01f2818697df9efaf27742e4e784f8b42951551a"},{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"b339bea2000fa27491d391f14412a76b8c8b57af","unresolved":false,"context_lines":[{"line_number":7,"context_line":"    if the new periodic task is recheduled. For that the option"},{"line_number":8,"context_line":"    ``[conductor]/wait_timeout_for_send_sensor_data`` is also added."},{"line_number":9,"context_line":"upgrade:"},{"line_number":10,"context_line":"  - Increased number of workers from 1 to 4 for the task"},{"line_number":11,"context_line":"    ``send_sensor_data``."},{"line_number":12,"context_line":"fixes:"},{"line_number":13,"context_line":"  - Launching sending sensor data in parallel that makes this"},{"line_number":14,"context_line":"    action usable for large deployments."}],"source_content_type":"text/x-yaml","patch_set":39,"id":"3a461143_232caeaa","line":11,"range":{"start_line":10,"start_character":52,"end_line":11,"end_character":24},"updated":"2017-01-27 15:52:00.000000000","message":"``send_sensor_data`` periodic task.","commit_id":"01f2818697df9efaf27742e4e784f8b42951551a"},{"author":{"_account_id":22724,"name":"Galyna Zholtkevych","email":"galynazholtkevych1991@gmail.com","username":"gzholtkevych"},"change_message_id":"42510ce1ad04e2931ba40ba01e505a6d3026651f","unresolved":false,"context_lines":[{"line_number":7,"context_line":"    if the new periodic task is recheduled. For that the option"},{"line_number":8,"context_line":"    ``[conductor]/wait_timeout_for_send_sensor_data`` is also added."},{"line_number":9,"context_line":"upgrade:"},{"line_number":10,"context_line":"  - Increased number of workers from 1 to 4 for the task"},{"line_number":11,"context_line":"    ``send_sensor_data``."},{"line_number":12,"context_line":"fixes:"},{"line_number":13,"context_line":"  - Launching sending sensor data in parallel that makes this"},{"line_number":14,"context_line":"    action usable for large deployments."}],"source_content_type":"text/x-yaml","patch_set":39,"id":"3a461143_fbb3d895","line":11,"range":{"start_line":10,"start_character":52,"end_line":11,"end_character":24},"in_reply_to":"3a461143_232caeaa","updated":"2017-01-31 09:57:21.000000000","message":"Done","commit_id":"01f2818697df9efaf27742e4e784f8b42951551a"},{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"b339bea2000fa27491d391f14412a76b8c8b57af","unresolved":false,"context_lines":[{"line_number":10,"context_line":"  - Increased number of workers from 1 to 4 for the task"},{"line_number":11,"context_line":"    ``send_sensor_data``."},{"line_number":12,"context_line":"fixes:"},{"line_number":13,"context_line":"  - Launching sending sensor data in parallel that makes this"},{"line_number":14,"context_line":"    action usable for large deployments."}],"source_content_type":"text/x-yaml","patch_set":39,"id":"3a461143_e308e62f","line":14,"range":{"start_line":13,"start_character":4,"end_line":14,"end_character":40},"updated":"2017-01-27 15:52:00.000000000","message":"Sending sensor data is now usable in large deployments.","commit_id":"01f2818697df9efaf27742e4e784f8b42951551a"},{"author":{"_account_id":22724,"name":"Galyna Zholtkevych","email":"galynazholtkevych1991@gmail.com","username":"gzholtkevych"},"change_message_id":"42510ce1ad04e2931ba40ba01e505a6d3026651f","unresolved":false,"context_lines":[{"line_number":10,"context_line":"  - Increased number of workers from 1 to 4 for the task"},{"line_number":11,"context_line":"    ``send_sensor_data``."},{"line_number":12,"context_line":"fixes:"},{"line_number":13,"context_line":"  - Launching sending sensor data in parallel that makes this"},{"line_number":14,"context_line":"    action usable for large deployments."}],"source_content_type":"text/x-yaml","patch_set":39,"id":"3a461143_7b66082b","line":14,"range":{"start_line":13,"start_character":4,"end_line":14,"end_character":40},"in_reply_to":"3a461143_e308e62f","updated":"2017-01-31 09:57:21.000000000","message":"Done","commit_id":"01f2818697df9efaf27742e4e784f8b42951551a"},{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"b863fe5151670c072101970b070f888ff57ef18a","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - Added new option ``[conductor]/send_sensor_data_workers``"},{"line_number":4,"context_line":"    to allow concurrently sending sensor data using the specified"},{"line_number":5,"context_line":"    number of green threads."},{"line_number":6,"context_line":"    ``[conductor]/wait_timeout_for_send_sensor_data`` option allows"}],"source_content_type":"text/x-yaml","patch_set":41,"id":"3a461143_a2163fef","line":3,"updated":"2017-02-01 17:38:38.000000000","message":"Release notes are supposed to be present tense: \"Adds new option...\"","commit_id":"40379b55a18e315e80db9784ed180cfe6291daa2"},{"author":{"_account_id":22724,"name":"Galyna Zholtkevych","email":"galynazholtkevych1991@gmail.com","username":"gzholtkevych"},"change_message_id":"83860d9b76de6b7e2c4e07cf0163352e59e7f40f","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - Added new option ``[conductor]/send_sensor_data_workers``"},{"line_number":4,"context_line":"    to allow concurrently sending sensor data using the specified"},{"line_number":5,"context_line":"    number of green threads."},{"line_number":6,"context_line":"    ``[conductor]/wait_timeout_for_send_sensor_data`` option allows"}],"source_content_type":"text/x-yaml","patch_set":41,"id":"3a461143_0abe33ff","line":3,"in_reply_to":"3a461143_a2163fef","updated":"2017-02-02 09:51:49.000000000","message":"Done","commit_id":"40379b55a18e315e80db9784ed180cfe6291daa2"},{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"b863fe5151670c072101970b070f888ff57ef18a","unresolved":false,"context_lines":[{"line_number":7,"context_line":"    to specify the time to wait for all spawned green threads before"},{"line_number":8,"context_line":"    running the periodic task again."},{"line_number":9,"context_line":"upgrade:"},{"line_number":10,"context_line":"  - Increased number of workers from 1 to 4 for the ``send_sensor_data``"},{"line_number":11,"context_line":"    periodic task."},{"line_number":12,"context_line":"fixes:"},{"line_number":13,"context_line":"  - Sending sensor data is now action usable for large deployments."}],"source_content_type":"text/x-yaml","patch_set":41,"id":"3a461143_22e16fff","line":10,"updated":"2017-02-01 17:38:38.000000000","message":"Tense needs to be updated to present here as well.","commit_id":"40379b55a18e315e80db9784ed180cfe6291daa2"},{"author":{"_account_id":22724,"name":"Galyna Zholtkevych","email":"galynazholtkevych1991@gmail.com","username":"gzholtkevych"},"change_message_id":"83860d9b76de6b7e2c4e07cf0163352e59e7f40f","unresolved":false,"context_lines":[{"line_number":7,"context_line":"    to specify the time to wait for all spawned green threads before"},{"line_number":8,"context_line":"    running the periodic task again."},{"line_number":9,"context_line":"upgrade:"},{"line_number":10,"context_line":"  - Increased number of workers from 1 to 4 for the ``send_sensor_data``"},{"line_number":11,"context_line":"    periodic task."},{"line_number":12,"context_line":"fixes:"},{"line_number":13,"context_line":"  - Sending sensor data is now action usable for large deployments."}],"source_content_type":"text/x-yaml","patch_set":41,"id":"3a461143_aa451f18","line":10,"in_reply_to":"3a461143_22e16fff","updated":"2017-02-02 09:51:49.000000000","message":"Done","commit_id":"40379b55a18e315e80db9784ed180cfe6291daa2"},{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"f38f9c026d7bf658c4b512ade9996c80266c6e87","unresolved":false,"context_lines":[{"line_number":10,"context_line":"  - Increased number of workers from 1 to 4 for the ``send_sensor_data``"},{"line_number":11,"context_line":"    periodic task."},{"line_number":12,"context_line":"fixes:"},{"line_number":13,"context_line":"  - Sending sensor data is now action usable for large deployments."}],"source_content_type":"text/x-yaml","patch_set":41,"id":"3a461143_4ab9742d","line":13,"range":{"start_line":13,"start_character":31,"end_line":13,"end_character":37},"updated":"2017-01-31 11:00:22.000000000","message":"Missed comma after this one?","commit_id":"40379b55a18e315e80db9784ed180cfe6291daa2"},{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"b863fe5151670c072101970b070f888ff57ef18a","unresolved":false,"context_lines":[{"line_number":10,"context_line":"  - Increased number of workers from 1 to 4 for the ``send_sensor_data``"},{"line_number":11,"context_line":"    periodic task."},{"line_number":12,"context_line":"fixes:"},{"line_number":13,"context_line":"  - Sending sensor data is now action usable for large deployments."}],"source_content_type":"text/x-yaml","patch_set":41,"id":"3a461143_e22f673c","line":13,"range":{"start_line":13,"start_character":31,"end_line":13,"end_character":37},"in_reply_to":"3a461143_4ab9742d","updated":"2017-02-01 17:38:38.000000000","message":"This sentence doesn\u0027t make a lot of sense to me. Even if you\u0027re trying to say it\u0027s \"actually\" usable for large deployments that\u0027s not very helpful. I think wheat\u0027s under features/upgrade is sufficient.","commit_id":"40379b55a18e315e80db9784ed180cfe6291daa2"},{"author":{"_account_id":22724,"name":"Galyna Zholtkevych","email":"galynazholtkevych1991@gmail.com","username":"gzholtkevych"},"change_message_id":"83860d9b76de6b7e2c4e07cf0163352e59e7f40f","unresolved":false,"context_lines":[{"line_number":10,"context_line":"  - Increased number of workers from 1 to 4 for the ``send_sensor_data``"},{"line_number":11,"context_line":"    periodic task."},{"line_number":12,"context_line":"fixes:"},{"line_number":13,"context_line":"  - Sending sensor data is now action usable for large deployments."}],"source_content_type":"text/x-yaml","patch_set":41,"id":"3a461143_4ab91bec","line":13,"range":{"start_line":13,"start_character":31,"end_line":13,"end_character":37},"in_reply_to":"3a461143_e22f673c","updated":"2017-02-02 09:51:49.000000000","message":"Done","commit_id":"40379b55a18e315e80db9784ed180cfe6291daa2"}]}
