)]}'
{"monasca_agent/collector/checks_d/kubernetes.py":[{"author":{"_account_id":16168,"name":"Tomasz Trębski","email":"kornicameister@gmail.com","username":"trebskit"},"change_message_id":"324116a8ada58f4b2c7292b12e9872a7cdfa4d46","unresolved":false,"context_lines":[{"line_number":55,"context_line":"    }"},{"line_number":56,"context_line":"}"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"METRIC_TYPES_UNITS \u003d {"},{"line_number":59,"context_line":"    \"cpu.system_time\": ([\"gauge\", \"rate\"], [\"seconds\", \"cores_per_second\"]),"},{"line_number":60,"context_line":"    \"cpu.total_time\": ([\"gauge\", \"rate\"], [\"seconds\", \"cores_per_second\"]),"},{"line_number":61,"context_line":"    \"cpu.user_time\": ([\"gauge\", \"rate\"], [\"seconds\", \"cores_per_second\"]),"}],"source_content_type":"text/x-python","patch_set":9,"id":"9a30ddce_51edf623","line":58,"updated":"2017-03-09 05:26:08.000000000","message":"Could you add some docs to this variable that would tell how to read them ? I mean I think it means that gauge will be used for seconds and rate for cores_per_second, but as you can see that\u0027s just a guess, maybe wild one :)","commit_id":"a437e1dfd10172b62a2e0aa1d96a8d73e026128b"},{"author":{"_account_id":15027,"name":"Michael Hoppal","email":"michael.jam.hoppal@hpe.com","username":"michael-hoppal"},"change_message_id":"1e2272eadb0a26962b00627f9d83043b7525ec09","unresolved":false,"context_lines":[{"line_number":55,"context_line":"    }"},{"line_number":56,"context_line":"}"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"METRIC_TYPES_UNITS \u003d {"},{"line_number":59,"context_line":"    \"cpu.system_time\": ([\"gauge\", \"rate\"], [\"seconds\", \"cores_per_second\"]),"},{"line_number":60,"context_line":"    \"cpu.total_time\": ([\"gauge\", \"rate\"], [\"seconds\", \"cores_per_second\"]),"},{"line_number":61,"context_line":"    \"cpu.user_time\": ([\"gauge\", \"rate\"], [\"seconds\", \"cores_per_second\"]),"}],"source_content_type":"text/x-python","patch_set":9,"id":"7a25e98e_43511962","line":58,"in_reply_to":"9a30ddce_51edf623","updated":"2017-03-13 22:18:17.000000000","message":"actually great guess! we can add some documentation though","commit_id":"a437e1dfd10172b62a2e0aa1d96a8d73e026128b"},{"author":{"_account_id":16168,"name":"Tomasz Trębski","email":"kornicameister@gmail.com","username":"trebskit"},"change_message_id":"324116a8ada58f4b2c7292b12e9872a7cdfa4d46","unresolved":false,"context_lines":[{"line_number":87,"context_line":"    \"\"\""},{"line_number":88,"context_line":"    def __init__(self, name, init_config, agent_config, instances\u003dNone):"},{"line_number":89,"context_line":"        checks.AgentCheck.__init__(self, name, init_config, agent_config, instances)"},{"line_number":90,"context_line":"        if instances is not None and len(instances) \u003e 1:"},{"line_number":91,"context_line":"            raise Exception(\u0027Kubernetes check only supports one configured instance.\u0027)"},{"line_number":92,"context_line":"        self.connection_timeout \u003d int(init_config.get(\u0027connection_timeout\u0027, DEFAULT_TIMEOUT))"},{"line_number":93,"context_line":"        self.host \u003d None"}],"source_content_type":"text/x-python","patch_set":9,"id":"9a30ddce_1169be8b","line":90,"updated":"2017-03-09 05:26:08.000000000","message":"Heh, that\u0027s harsh :).\n\nWill it support multiple instances ?","commit_id":"a437e1dfd10172b62a2e0aa1d96a8d73e026128b"},{"author":{"_account_id":15027,"name":"Michael Hoppal","email":"michael.jam.hoppal@hpe.com","username":"michael-hoppal"},"change_message_id":"1e2272eadb0a26962b00627f9d83043b7525ec09","unresolved":false,"context_lines":[{"line_number":87,"context_line":"    \"\"\""},{"line_number":88,"context_line":"    def __init__(self, name, init_config, agent_config, instances\u003dNone):"},{"line_number":89,"context_line":"        checks.AgentCheck.__init__(self, name, init_config, agent_config, instances)"},{"line_number":90,"context_line":"        if instances is not None and len(instances) \u003e 1:"},{"line_number":91,"context_line":"            raise Exception(\u0027Kubernetes check only supports one configured instance.\u0027)"},{"line_number":92,"context_line":"        self.connection_timeout \u003d int(init_config.get(\u0027connection_timeout\u0027, DEFAULT_TIMEOUT))"},{"line_number":93,"context_line":"        self.host \u003d None"}],"source_content_type":"text/x-python","patch_set":9,"id":"7a25e98e_83f95150","line":90,"in_reply_to":"9a30ddce_1169be8b","updated":"2017-03-13 22:18:17.000000000","message":"hmm as of right now I wouldnt see the use as we are running the plugin as a daemonset and because of we are only grabbing metrics for one node. I dont see that changing.","commit_id":"a437e1dfd10172b62a2e0aa1d96a8d73e026128b"},{"author":{"_account_id":16168,"name":"Tomasz Trębski","email":"kornicameister@gmail.com","username":"trebskit"},"change_message_id":"324116a8ada58f4b2c7292b12e9872a7cdfa4d46","unresolved":false,"context_lines":[{"line_number":94,"context_line":"        self.report_container_metrics \u003d init_config.get(\u0027report_container_metrics\u0027, REPORT_CONTAINER_METRICS)"},{"line_number":95,"context_line":"        self.kubernetes_connector \u003d None"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"    def _get_result(self, request_url, as_json\u003dTrue):"},{"line_number":98,"context_line":"        result \u003d requests.get(request_url, timeout\u003dself.connection_timeout)"},{"line_number":99,"context_line":"        return result.json() if as_json else result"},{"line_number":100,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"9a30ddce_313882a0","line":97,"updated":"2017-03-09 05:26:08.000000000","message":"Could you move this method under _get_urls, logically that seems to be better place to keep it, next to method that uses it.","commit_id":"a437e1dfd10172b62a2e0aa1d96a8d73e026128b"},{"author":{"_account_id":15027,"name":"Michael Hoppal","email":"michael.jam.hoppal@hpe.com","username":"michael-hoppal"},"change_message_id":"1e2272eadb0a26962b00627f9d83043b7525ec09","unresolved":false,"context_lines":[{"line_number":94,"context_line":"        self.report_container_metrics \u003d init_config.get(\u0027report_container_metrics\u0027, REPORT_CONTAINER_METRICS)"},{"line_number":95,"context_line":"        self.kubernetes_connector \u003d None"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"    def _get_result(self, request_url, as_json\u003dTrue):"},{"line_number":98,"context_line":"        result \u003d requests.get(request_url, timeout\u003dself.connection_timeout)"},{"line_number":99,"context_line":"        return result.json() if as_json else result"},{"line_number":100,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"7a25e98e_e39e8506","line":97,"in_reply_to":"9a30ddce_313882a0","updated":"2017-03-13 22:18:17.000000000","message":"yes i can will do so","commit_id":"a437e1dfd10172b62a2e0aa1d96a8d73e026128b"},{"author":{"_account_id":16168,"name":"Tomasz Trębski","email":"kornicameister@gmail.com","username":"trebskit"},"change_message_id":"324116a8ada58f4b2c7292b12e9872a7cdfa4d46","unresolved":false,"context_lines":[{"line_number":100,"context_line":""},{"line_number":101,"context_line":"    def check(self, instance):"},{"line_number":102,"context_line":"        # first time running check"},{"line_number":103,"context_line":"        if not self.host:"},{"line_number":104,"context_line":"            self.host \u003d instance.get(\"host\", None)"},{"line_number":105,"context_line":"            derive_host \u003d instance.get(\"derive_host\", False)"},{"line_number":106,"context_line":"            if not self.host:"}],"source_content_type":"text/x-python","patch_set":9,"id":"9a30ddce_91ce8eb2","line":103,"updated":"2017-03-09 05:26:08.000000000","message":"Wouldn\u0027t it be better to move this condition down to prepare_run method ?","commit_id":"a437e1dfd10172b62a2e0aa1d96a8d73e026128b"},{"author":{"_account_id":15027,"name":"Michael Hoppal","email":"michael.jam.hoppal@hpe.com","username":"michael-hoppal"},"change_message_id":"1e2272eadb0a26962b00627f9d83043b7525ec09","unresolved":false,"context_lines":[{"line_number":100,"context_line":""},{"line_number":101,"context_line":"    def check(self, instance):"},{"line_number":102,"context_line":"        # first time running check"},{"line_number":103,"context_line":"        if not self.host:"},{"line_number":104,"context_line":"            self.host \u003d instance.get(\"host\", None)"},{"line_number":105,"context_line":"            derive_host \u003d instance.get(\"derive_host\", False)"},{"line_number":106,"context_line":"            if not self.host:"}],"source_content_type":"text/x-python","patch_set":9,"id":"7a25e98e_a3bbad74","line":103,"in_reply_to":"9a30ddce_91ce8eb2","updated":"2017-03-13 22:18:17.000000000","message":"yeah good call","commit_id":"a437e1dfd10172b62a2e0aa1d96a8d73e026128b"},{"author":{"_account_id":16168,"name":"Tomasz Trębski","email":"kornicameister@gmail.com","username":"trebskit"},"change_message_id":"324116a8ada58f4b2c7292b12e9872a7cdfa4d46","unresolved":false,"context_lines":[{"line_number":231,"context_line":"                except KeyError:"},{"line_number":232,"context_line":"                    self.log.error(\"Unable to report container requests for {}\".format(container_name))"},{"line_number":233,"context_line":""},{"line_number":234,"context_line":"    def _convert_cpu_to_cores(self, cpu_string):"},{"line_number":235,"context_line":"        if \"m\" in cpu_string:"},{"line_number":236,"context_line":"            cpu \u003d float(cpu_string.split(\u0027m\u0027)[0])"},{"line_number":237,"context_line":"            return cpu / 1000"}],"source_content_type":"text/x-python","patch_set":9,"id":"9a30ddce_915cceee","line":234,"range":{"start_line":234,"start_character":13,"end_line":234,"end_character":48},"updated":"2017-03-09 05:26:08.000000000","message":"Could add some docs to this method, seems magical to me :). I have no idea what exactly it does.","commit_id":"a437e1dfd10172b62a2e0aa1d96a8d73e026128b"},{"author":{"_account_id":15027,"name":"Michael Hoppal","email":"michael.jam.hoppal@hpe.com","username":"michael-hoppal"},"change_message_id":"1e2272eadb0a26962b00627f9d83043b7525ec09","unresolved":false,"context_lines":[{"line_number":231,"context_line":"                except KeyError:"},{"line_number":232,"context_line":"                    self.log.error(\"Unable to report container requests for {}\".format(container_name))"},{"line_number":233,"context_line":""},{"line_number":234,"context_line":"    def _convert_cpu_to_cores(self, cpu_string):"},{"line_number":235,"context_line":"        if \"m\" in cpu_string:"},{"line_number":236,"context_line":"            cpu \u003d float(cpu_string.split(\u0027m\u0027)[0])"},{"line_number":237,"context_line":"            return cpu / 1000"}],"source_content_type":"text/x-python","patch_set":9,"id":"7a25e98e_a362cd14","line":234,"range":{"start_line":234,"start_character":13,"end_line":234,"end_character":48},"in_reply_to":"9a30ddce_915cceee","updated":"2017-03-13 22:18:17.000000000","message":"isnt magical code everyones dream :) and yes i will kubenetes reports cpu in millicores so this is just changing that back to cores","commit_id":"a437e1dfd10172b62a2e0aa1d96a8d73e026128b"},{"author":{"_account_id":16168,"name":"Tomasz Trębski","email":"kornicameister@gmail.com","username":"trebskit"},"change_message_id":"324116a8ada58f4b2c7292b12e9872a7cdfa4d46","unresolved":false,"context_lines":[{"line_number":318,"context_line":""},{"line_number":319,"context_line":"    def _parse_memory(self, memory_data, container_dimensions, pod_key, pod_map):"},{"line_number":320,"context_line":"        memory_metrics \u003d CADVISOR_METRICS[\u0027memory_metrics\u0027]"},{"line_number":321,"context_line":"        for cadvisor_key, metric_name in memory_metrics.iteritems():"},{"line_number":322,"context_line":"            if cadvisor_key in memory_data:"},{"line_number":323,"context_line":"                metric_value \u003d memory_data[cadvisor_key]"},{"line_number":324,"context_line":"                self._send_metrics(\"container.\" + metric_name, metric_value,"}],"source_content_type":"text/x-python","patch_set":9,"id":"9a30ddce_91e12e01","line":321,"updated":"2017-03-09 05:26:08.000000000","message":"This is not Py3 compatible. Please use six.","commit_id":"a437e1dfd10172b62a2e0aa1d96a8d73e026128b"},{"author":{"_account_id":15027,"name":"Michael Hoppal","email":"michael.jam.hoppal@hpe.com","username":"michael-hoppal"},"change_message_id":"1e2272eadb0a26962b00627f9d83043b7525ec09","unresolved":false,"context_lines":[{"line_number":318,"context_line":""},{"line_number":319,"context_line":"    def _parse_memory(self, memory_data, container_dimensions, pod_key, pod_map):"},{"line_number":320,"context_line":"        memory_metrics \u003d CADVISOR_METRICS[\u0027memory_metrics\u0027]"},{"line_number":321,"context_line":"        for cadvisor_key, metric_name in memory_metrics.iteritems():"},{"line_number":322,"context_line":"            if cadvisor_key in memory_data:"},{"line_number":323,"context_line":"                metric_value \u003d memory_data[cadvisor_key]"},{"line_number":324,"context_line":"                self._send_metrics(\"container.\" + metric_name, metric_value,"}],"source_content_type":"text/x-python","patch_set":9,"id":"7a25e98e_4610474f","line":321,"in_reply_to":"9a30ddce_91e12e01","updated":"2017-03-13 22:18:17.000000000","message":"will fix this and below","commit_id":"a437e1dfd10172b62a2e0aa1d96a8d73e026128b"},{"author":{"_account_id":16168,"name":"Tomasz Trębski","email":"kornicameister@gmail.com","username":"trebskit"},"change_message_id":"324116a8ada58f4b2c7292b12e9872a7cdfa4d46","unresolved":false,"context_lines":[{"line_number":333,"context_line":"        for filesystem in filesystem_data:"},{"line_number":334,"context_line":"            file_dimensions \u003d container_dimensions.copy()"},{"line_number":335,"context_line":"            file_dimensions[\u0027device\u0027] \u003d filesystem[\u0027device\u0027]"},{"line_number":336,"context_line":"            for cadvisor_key, metric_name in filesystem_metrics.iteritems():"},{"line_number":337,"context_line":"                if cadvisor_key in filesystem:"},{"line_number":338,"context_line":"                    self._send_metrics(\"container.\" + metric_name, filesystem[cadvisor_key], file_dimensions,"},{"line_number":339,"context_line":"                                       METRIC_TYPES_UNITS[metric_name][0],"}],"source_content_type":"text/x-python","patch_set":9,"id":"9a30ddce_9113ee0c","line":336,"updated":"2017-03-09 05:26:08.000000000","message":"This is not Py3 compatible. Please use six.","commit_id":"a437e1dfd10172b62a2e0aa1d96a8d73e026128b"},{"author":{"_account_id":16168,"name":"Tomasz Trębski","email":"kornicameister@gmail.com","username":"trebskit"},"change_message_id":"324116a8ada58f4b2c7292b12e9872a7cdfa4d46","unresolved":false,"context_lines":[{"line_number":343,"context_line":"    def _parse_diskio(self, diskio_data, container_dimensions):"},{"line_number":344,"context_line":"        diskio_metrics \u003d CADVISOR_METRICS[\u0027filesystem_metrics\u0027]"},{"line_number":345,"context_line":"        disk_io \u003d diskio_data[\u0027io_service_bytes\u0027][0][\u0027stats\u0027]"},{"line_number":346,"context_line":"        for cadvisor_key, metric_name in diskio_metrics.iteritems():"},{"line_number":347,"context_line":"            if cadvisor_key in disk_io:"},{"line_number":348,"context_line":"                self._send_metrics(\"container.\" + metric_name, disk_io[cadvisor_key], container_dimensions,"},{"line_number":349,"context_line":"                                   METRIC_TYPES_UNITS[metric_name][0],"}],"source_content_type":"text/x-python","patch_set":9,"id":"9a30ddce_51d7b622","line":346,"updated":"2017-03-09 05:26:08.000000000","message":"This is not Py3 compatible. Please use six.","commit_id":"a437e1dfd10172b62a2e0aa1d96a8d73e026128b"},{"author":{"_account_id":16168,"name":"Tomasz Trębski","email":"kornicameister@gmail.com","username":"trebskit"},"change_message_id":"324116a8ada58f4b2c7292b12e9872a7cdfa4d46","unresolved":false,"context_lines":[{"line_number":357,"context_line":"            network_dimensions \u003d container_dimensions.copy()"},{"line_number":358,"context_line":"            network_interface \u003d interface[\u0027name\u0027]"},{"line_number":359,"context_line":"            network_dimensions[\u0027interface\u0027] \u003d network_interface"},{"line_number":360,"context_line":"            for cadvisor_key, metric_name in network_metrics.iteritems():"},{"line_number":361,"context_line":"                if cadvisor_key in interface:"},{"line_number":362,"context_line":"                    metric_value \u003d interface[cadvisor_key]"},{"line_number":363,"context_line":"                    self._send_metrics(\"container.\" + metric_name, metric_value, network_dimensions,"}],"source_content_type":"text/x-python","patch_set":9,"id":"9a30ddce_d1f566cb","line":360,"updated":"2017-03-09 05:26:08.000000000","message":"This is not Py3 compatible. Please use six.","commit_id":"a437e1dfd10172b62a2e0aa1d96a8d73e026128b"},{"author":{"_account_id":16168,"name":"Tomasz Trębski","email":"kornicameister@gmail.com","username":"trebskit"},"change_message_id":"324116a8ada58f4b2c7292b12e9872a7cdfa4d46","unresolved":false,"context_lines":[{"line_number":378,"context_line":"    def _parse_cpu(self, cpu_data, container_dimensions, pod_key, pod_metrics):"},{"line_number":379,"context_line":"        cpu_metrics \u003d CADVISOR_METRICS[\u0027cpu_metrics\u0027]"},{"line_number":380,"context_line":"        cpu_usage \u003d cpu_data[\u0027usage\u0027]"},{"line_number":381,"context_line":"        for cadvisor_key, metric_name in cpu_metrics.iteritems():"},{"line_number":382,"context_line":"            if cadvisor_key in cpu_usage:"},{"line_number":383,"context_line":"                cpu_usage_sec \u003d cpu_usage[cadvisor_key] / 1000000000"},{"line_number":384,"context_line":"                self._send_metrics(\"container.\" + metric_name, cpu_usage_sec, container_dimensions,"}],"source_content_type":"text/x-python","patch_set":9,"id":"9a30ddce_312de246","line":381,"updated":"2017-03-09 05:26:08.000000000","message":"This is not Py3 compatible. Please use six.","commit_id":"a437e1dfd10172b62a2e0aa1d96a8d73e026128b"},{"author":{"_account_id":16168,"name":"Tomasz Trębski","email":"kornicameister@gmail.com","username":"trebskit"},"change_message_id":"324116a8ada58f4b2c7292b12e9872a7cdfa4d46","unresolved":false,"context_lines":[{"line_number":443,"context_line":"        pod_metrics \u003d {}"},{"line_number":444,"context_line":"        # network pod metrics"},{"line_number":445,"context_line":"        pod_network_metrics \u003d {}"},{"line_number":446,"context_line":"        for container, cadvisor_metrics in containers_metrics.iteritems():"},{"line_number":447,"context_line":"            pod_key, container_dimensions \u003d self._get_container_dimensions(container,"},{"line_number":448,"context_line":"                                                                           dimensions,"},{"line_number":449,"context_line":"                                                                           containers_spec[container],"}],"source_content_type":"text/x-python","patch_set":9,"id":"9a30ddce_5130969e","line":446,"updated":"2017-03-09 05:26:08.000000000","message":"This is not Py3 compatible. Please use six.","commit_id":"a437e1dfd10172b62a2e0aa1d96a8d73e026128b"},{"author":{"_account_id":16168,"name":"Tomasz Trębski","email":"kornicameister@gmail.com","username":"trebskit"},"change_message_id":"324116a8ada58f4b2c7292b12e9872a7cdfa4d46","unresolved":false,"context_lines":[{"line_number":466,"context_line":"        self.send_network_pod_metrics(pod_network_metrics, pod_dimension_map)"},{"line_number":467,"context_line":""},{"line_number":468,"context_line":"    def send_pod_metrics(self, pod_metrics_map, pod_dimension_map):"},{"line_number":469,"context_line":"        for pod_key, pod_metrics in pod_metrics_map.iteritems():"},{"line_number":470,"context_line":"            pod_dimensions \u003d pod_dimension_map[pod_key]"},{"line_number":471,"context_line":"            for metric_name, metric_value in pod_metrics.iteritems():"},{"line_number":472,"context_line":"                self._send_metrics(\"pod.\" + metric_name, metric_value, pod_dimensions,"}],"source_content_type":"text/x-python","patch_set":9,"id":"9a30ddce_71275a64","line":469,"updated":"2017-03-09 05:26:08.000000000","message":"This is not Py3 compatible. Please use six.","commit_id":"a437e1dfd10172b62a2e0aa1d96a8d73e026128b"},{"author":{"_account_id":16168,"name":"Tomasz Trębski","email":"kornicameister@gmail.com","username":"trebskit"},"change_message_id":"324116a8ada58f4b2c7292b12e9872a7cdfa4d46","unresolved":false,"context_lines":[{"line_number":468,"context_line":"    def send_pod_metrics(self, pod_metrics_map, pod_dimension_map):"},{"line_number":469,"context_line":"        for pod_key, pod_metrics in pod_metrics_map.iteritems():"},{"line_number":470,"context_line":"            pod_dimensions \u003d pod_dimension_map[pod_key]"},{"line_number":471,"context_line":"            for metric_name, metric_value in pod_metrics.iteritems():"},{"line_number":472,"context_line":"                self._send_metrics(\"pod.\" + metric_name, metric_value, pod_dimensions,"},{"line_number":473,"context_line":"                                   METRIC_TYPES_UNITS[metric_name][0],"},{"line_number":474,"context_line":"                                   METRIC_TYPES_UNITS[metric_name][1])"}],"source_content_type":"text/x-python","patch_set":9,"id":"9a30ddce_912a0e2b","line":471,"updated":"2017-03-09 05:26:08.000000000","message":"This is not Py3 compatible. Please use six.","commit_id":"a437e1dfd10172b62a2e0aa1d96a8d73e026128b"},{"author":{"_account_id":16168,"name":"Tomasz Trębski","email":"kornicameister@gmail.com","username":"trebskit"},"change_message_id":"324116a8ada58f4b2c7292b12e9872a7cdfa4d46","unresolved":false,"context_lines":[{"line_number":474,"context_line":"                                   METRIC_TYPES_UNITS[metric_name][1])"},{"line_number":475,"context_line":""},{"line_number":476,"context_line":"    def send_network_pod_metrics(self, pod_network_metrics, pod_dimension_map):"},{"line_number":477,"context_line":"        for pod_key, network_interfaces in pod_network_metrics.iteritems():"},{"line_number":478,"context_line":"            pod_dimensions \u003d pod_dimension_map[pod_key]"},{"line_number":479,"context_line":"            for network_interface, metrics in network_interfaces.iteritems():"},{"line_number":480,"context_line":"                pod_network_dimensions \u003d pod_dimensions.copy()"}],"source_content_type":"text/x-python","patch_set":9,"id":"9a30ddce_b121d24f","line":477,"updated":"2017-03-09 05:26:08.000000000","message":"This is not Py3 compatible. Please use six.","commit_id":"a437e1dfd10172b62a2e0aa1d96a8d73e026128b"},{"author":{"_account_id":16168,"name":"Tomasz Trębski","email":"kornicameister@gmail.com","username":"trebskit"},"change_message_id":"324116a8ada58f4b2c7292b12e9872a7cdfa4d46","unresolved":false,"context_lines":[{"line_number":476,"context_line":"    def send_network_pod_metrics(self, pod_network_metrics, pod_dimension_map):"},{"line_number":477,"context_line":"        for pod_key, network_interfaces in pod_network_metrics.iteritems():"},{"line_number":478,"context_line":"            pod_dimensions \u003d pod_dimension_map[pod_key]"},{"line_number":479,"context_line":"            for network_interface, metrics in network_interfaces.iteritems():"},{"line_number":480,"context_line":"                pod_network_dimensions \u003d pod_dimensions.copy()"},{"line_number":481,"context_line":"                pod_network_dimensions[\u0027interface\u0027] \u003d network_interface"},{"line_number":482,"context_line":"                for metric_name, metric_value in metrics.iteritems():"}],"source_content_type":"text/x-python","patch_set":9,"id":"9a30ddce_d11c8615","line":479,"updated":"2017-03-09 05:26:08.000000000","message":"This is not Py3 compatible. Please use six.","commit_id":"a437e1dfd10172b62a2e0aa1d96a8d73e026128b"},{"author":{"_account_id":16168,"name":"Tomasz Trębski","email":"kornicameister@gmail.com","username":"trebskit"},"change_message_id":"324116a8ada58f4b2c7292b12e9872a7cdfa4d46","unresolved":false,"context_lines":[{"line_number":479,"context_line":"            for network_interface, metrics in network_interfaces.iteritems():"},{"line_number":480,"context_line":"                pod_network_dimensions \u003d pod_dimensions.copy()"},{"line_number":481,"context_line":"                pod_network_dimensions[\u0027interface\u0027] \u003d network_interface"},{"line_number":482,"context_line":"                for metric_name, metric_value in metrics.iteritems():"},{"line_number":483,"context_line":"                    self._send_metrics(\"pod.\" + metric_name, metric_value, pod_network_dimensions,"},{"line_number":484,"context_line":"                                       METRIC_TYPES_UNITS[metric_name][0],"},{"line_number":485,"context_line":"                                       METRIC_TYPES_UNITS[metric_name][1])"}],"source_content_type":"text/x-python","patch_set":9,"id":"9a30ddce_1117feed","line":482,"updated":"2017-03-09 05:26:08.000000000","message":"This is not Py3 compatible. Please use six.","commit_id":"a437e1dfd10172b62a2e0aa1d96a8d73e026128b"},{"author":{"_account_id":11809,"name":"Craig Bryant","email":"craig.bryant@hpe.com","username":"craig-bryant"},"change_message_id":"2c73f9c3fac932829cfd51ac0f0c9da476e67008","unresolved":false,"context_lines":[{"line_number":52,"context_line":""},{"line_number":53,"context_line":"# format: (cadvisor metric name, [metric types], [metric units])"},{"line_number":54,"context_line":"METRIC_TYPES_UNITS \u003d {"},{"line_number":55,"context_line":"    \"cpu.system_time\": ([\"gauge\", \"rate\"], [\"seconds\", \"cores_per_second\"]),"},{"line_number":56,"context_line":"    \"cpu.total_time\": ([\"gauge\", \"rate\"], [\"seconds\", \"cores_per_second\"]),"},{"line_number":57,"context_line":"    \"cpu.user_time\": ([\"gauge\", \"rate\"], [\"seconds\", \"cores_per_second\"]),"},{"line_number":58,"context_line":"    \"mem.swap_bytes\": ([\"gauge\"], [\"bytes\"]),"}],"source_content_type":"text/x-python","patch_set":12,"id":"3a1ff146_cae8b519","line":55,"range":{"start_line":55,"start_character":45,"end_line":55,"end_character":52},"updated":"2017-03-14 22:45:37.000000000","message":"Are these also core_seconds?","commit_id":"7cf692bafeaca1424726f3631bef6db2f4cdbad3"},{"author":{"_account_id":15027,"name":"Michael Hoppal","email":"michael.jam.hoppal@hpe.com","username":"michael-hoppal"},"change_message_id":"02ae9de20cc57f0ea6ac02ff997848714e8408cc","unresolved":false,"context_lines":[{"line_number":52,"context_line":""},{"line_number":53,"context_line":"# format: (cadvisor metric name, [metric types], [metric units])"},{"line_number":54,"context_line":"METRIC_TYPES_UNITS \u003d {"},{"line_number":55,"context_line":"    \"cpu.system_time\": ([\"gauge\", \"rate\"], [\"seconds\", \"cores_per_second\"]),"},{"line_number":56,"context_line":"    \"cpu.total_time\": ([\"gauge\", \"rate\"], [\"seconds\", \"cores_per_second\"]),"},{"line_number":57,"context_line":"    \"cpu.user_time\": ([\"gauge\", \"rate\"], [\"seconds\", \"cores_per_second\"]),"},{"line_number":58,"context_line":"    \"mem.swap_bytes\": ([\"gauge\"], [\"bytes\"]),"}],"source_content_type":"text/x-python","patch_set":12,"id":"3a1ff146_2f91379a","line":55,"range":{"start_line":55,"start_character":45,"end_line":55,"end_character":52},"in_reply_to":"3a1ff146_cae8b519","updated":"2017-03-15 15:06:21.000000000","message":"yes, I will change to match cadvisor plugin","commit_id":"7cf692bafeaca1424726f3631bef6db2f4cdbad3"},{"author":{"_account_id":11809,"name":"Craig Bryant","email":"craig.bryant@hpe.com","username":"craig-bryant"},"change_message_id":"2c73f9c3fac932829cfd51ac0f0c9da476e67008","unresolved":false,"context_lines":[{"line_number":80,"context_line":"    def __init__(self, name, init_config, agent_config, instances\u003dNone):"},{"line_number":81,"context_line":"        checks.AgentCheck.__init__(self, name, init_config, agent_config, instances)"},{"line_number":82,"context_line":"        if instances is not None and len(instances) \u003e 1:"},{"line_number":83,"context_line":"            raise Exception(\u0027Kubernetes check only supports one configured instance.\u0027)"},{"line_number":84,"context_line":"        self.connection_timeout \u003d int(init_config.get(\u0027connection_timeout\u0027, DEFAULT_TIMEOUT))"},{"line_number":85,"context_line":"        self.host \u003d None"},{"line_number":86,"context_line":"        self.report_container_metrics \u003d init_config.get(\u0027report_container_metrics\u0027, REPORT_CONTAINER_METRICS)"}],"source_content_type":"text/x-python","patch_set":12,"id":"3a1ff146_4ac4c591","line":83,"range":{"start_line":83,"start_character":28,"end_line":83,"end_character":86},"updated":"2017-03-14 22:45:37.000000000","message":"I don\u0027t see this documented in the agent doc or sample yaml file","commit_id":"7cf692bafeaca1424726f3631bef6db2f4cdbad3"},{"author":{"_account_id":11809,"name":"Craig Bryant","email":"craig.bryant@hpe.com","username":"craig-bryant"},"change_message_id":"f5fa8f918af0645b547fae1e9d7a837bc771a118","unresolved":false,"context_lines":[{"line_number":80,"context_line":"    def __init__(self, name, init_config, agent_config, instances\u003dNone):"},{"line_number":81,"context_line":"        checks.AgentCheck.__init__(self, name, init_config, agent_config, instances)"},{"line_number":82,"context_line":"        if instances is not None and len(instances) \u003e 1:"},{"line_number":83,"context_line":"            raise Exception(\u0027Kubernetes check only supports one configured instance.\u0027)"},{"line_number":84,"context_line":"        self.connection_timeout \u003d int(init_config.get(\u0027connection_timeout\u0027, DEFAULT_TIMEOUT))"},{"line_number":85,"context_line":"        self.host \u003d None"},{"line_number":86,"context_line":"        self.report_container_metrics \u003d init_config.get(\u0027report_container_metrics\u0027, REPORT_CONTAINER_METRICS)"}],"source_content_type":"text/x-python","patch_set":12,"id":"3a1ff146_10f3b39f","line":83,"range":{"start_line":83,"start_character":28,"end_line":83,"end_character":86},"in_reply_to":"3a1ff146_156d6598","updated":"2017-03-15 17:12:56.000000000","message":"Ok. Missed that. Should probably be in the sample yaml as well","commit_id":"7cf692bafeaca1424726f3631bef6db2f4cdbad3"},{"author":{"_account_id":15027,"name":"Michael Hoppal","email":"michael.jam.hoppal@hpe.com","username":"michael-hoppal"},"change_message_id":"a2a239b1c5ce3186356aa8efd8b7182e59eeb4e0","unresolved":false,"context_lines":[{"line_number":80,"context_line":"    def __init__(self, name, init_config, agent_config, instances\u003dNone):"},{"line_number":81,"context_line":"        checks.AgentCheck.__init__(self, name, init_config, agent_config, instances)"},{"line_number":82,"context_line":"        if instances is not None and len(instances) \u003e 1:"},{"line_number":83,"context_line":"            raise Exception(\u0027Kubernetes check only supports one configured instance.\u0027)"},{"line_number":84,"context_line":"        self.connection_timeout \u003d int(init_config.get(\u0027connection_timeout\u0027, DEFAULT_TIMEOUT))"},{"line_number":85,"context_line":"        self.host \u003d None"},{"line_number":86,"context_line":"        self.report_container_metrics \u003d init_config.get(\u0027report_container_metrics\u0027, REPORT_CONTAINER_METRICS)"}],"source_content_type":"text/x-python","patch_set":12,"id":"3a1ff146_156d6598","line":83,"range":{"start_line":83,"start_character":28,"end_line":83,"end_character":86},"in_reply_to":"3a1ff146_4ac4c591","updated":"2017-03-15 16:52:32.000000000","message":"it is in the doc - \"this plugin only supports one instance in the config file\"","commit_id":"7cf692bafeaca1424726f3631bef6db2f4cdbad3"},{"author":{"_account_id":11809,"name":"Craig Bryant","email":"craig.bryant@hpe.com","username":"craig-bryant"},"change_message_id":"2c73f9c3fac932829cfd51ac0f0c9da476e67008","unresolved":false,"context_lines":[{"line_number":83,"context_line":"            raise Exception(\u0027Kubernetes check only supports one configured instance.\u0027)"},{"line_number":84,"context_line":"        self.connection_timeout \u003d int(init_config.get(\u0027connection_timeout\u0027, DEFAULT_TIMEOUT))"},{"line_number":85,"context_line":"        self.host \u003d None"},{"line_number":86,"context_line":"        self.report_container_metrics \u003d init_config.get(\u0027report_container_metrics\u0027, REPORT_CONTAINER_METRICS)"},{"line_number":87,"context_line":"        self.kubernetes_connector \u003d None"},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"    def prepare_run(self):"}],"source_content_type":"text/x-python","patch_set":12,"id":"3a1ff146_6a926159","line":86,"range":{"start_line":86,"start_character":13,"end_line":86,"end_character":37},"updated":"2017-03-14 22:45:37.000000000","message":"The value for this needs to be a boolean","commit_id":"7cf692bafeaca1424726f3631bef6db2f4cdbad3"},{"author":{"_account_id":11809,"name":"Craig Bryant","email":"craig.bryant@hpe.com","username":"craig-bryant"},"change_message_id":"f5fa8f918af0645b547fae1e9d7a837bc771a118","unresolved":false,"context_lines":[{"line_number":83,"context_line":"            raise Exception(\u0027Kubernetes check only supports one configured instance.\u0027)"},{"line_number":84,"context_line":"        self.connection_timeout \u003d int(init_config.get(\u0027connection_timeout\u0027, DEFAULT_TIMEOUT))"},{"line_number":85,"context_line":"        self.host \u003d None"},{"line_number":86,"context_line":"        self.report_container_metrics \u003d init_config.get(\u0027report_container_metrics\u0027, REPORT_CONTAINER_METRICS)"},{"line_number":87,"context_line":"        self.kubernetes_connector \u003d None"},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"    def prepare_run(self):"}],"source_content_type":"text/x-python","patch_set":12,"id":"3a1ff146_f0237703","line":86,"range":{"start_line":86,"start_character":13,"end_line":86,"end_character":37},"in_reply_to":"3a1ff146_35c6e167","updated":"2017-03-15 17:12:56.000000000","message":"No. Pretty cool feature of the yaml package. It even understands yes vs no. And true, True, TRUE but not tRuE but I think that is reasonable.","commit_id":"7cf692bafeaca1424726f3631bef6db2f4cdbad3"},{"author":{"_account_id":15027,"name":"Michael Hoppal","email":"michael.jam.hoppal@hpe.com","username":"michael-hoppal"},"change_message_id":"a2a239b1c5ce3186356aa8efd8b7182e59eeb4e0","unresolved":false,"context_lines":[{"line_number":83,"context_line":"            raise Exception(\u0027Kubernetes check only supports one configured instance.\u0027)"},{"line_number":84,"context_line":"        self.connection_timeout \u003d int(init_config.get(\u0027connection_timeout\u0027, DEFAULT_TIMEOUT))"},{"line_number":85,"context_line":"        self.host \u003d None"},{"line_number":86,"context_line":"        self.report_container_metrics \u003d init_config.get(\u0027report_container_metrics\u0027, REPORT_CONTAINER_METRICS)"},{"line_number":87,"context_line":"        self.kubernetes_connector \u003d None"},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"    def prepare_run(self):"}],"source_content_type":"text/x-python","patch_set":12,"id":"3a1ff146_35c6e167","line":86,"range":{"start_line":86,"start_character":13,"end_line":86,"end_character":37},"in_reply_to":"3a1ff146_6a926159","updated":"2017-03-15 16:52:32.000000000","message":"after our discussion with Tim yesterday in relation to yaml load handling this do you still want me to change this?","commit_id":"7cf692bafeaca1424726f3631bef6db2f4cdbad3"},{"author":{"_account_id":11809,"name":"Craig Bryant","email":"craig.bryant@hpe.com","username":"craig-bryant"},"change_message_id":"2c73f9c3fac932829cfd51ac0f0c9da476e67008","unresolved":false,"context_lines":[{"line_number":92,"context_line":"        self.host \u003d instance.get(\"host\", None)"},{"line_number":93,"context_line":"        derive_host \u003d instance.get(\"derive_host\", False)"},{"line_number":94,"context_line":"        if not self.host:"},{"line_number":95,"context_line":"            if derive_host:"},{"line_number":96,"context_line":"                self.kubernetes_connector \u003d utils.KubernetesConnector(self.connection_timeout)"},{"line_number":97,"context_line":"                self.host \u003d self.kubernetes_connector.get_agent_pod_host()"},{"line_number":98,"context_line":"            else:"}],"source_content_type":"text/x-python","patch_set":12,"id":"3a1ff146_4a72057e","line":95,"range":{"start_line":95,"start_character":15,"end_line":95,"end_character":26},"updated":"2017-03-14 22:45:37.000000000","message":"If derive_host is \"false\", then this code will treat that as True since it is a non-empty string","commit_id":"7cf692bafeaca1424726f3631bef6db2f4cdbad3"},{"author":{"_account_id":11809,"name":"Craig Bryant","email":"craig.bryant@hpe.com","username":"craig-bryant"},"change_message_id":"2c73f9c3fac932829cfd51ac0f0c9da476e67008","unresolved":false,"context_lines":[{"line_number":103,"context_line":""},{"line_number":104,"context_line":"    def check(self, instance):"},{"line_number":105,"context_line":"        cadvisor, kubelet \u003d self._get_urls(instance)"},{"line_number":106,"context_line":"        kubernetes_labels \u003d instance.get(\u0027kubernetes_labels\u0027, [\"app\"])"},{"line_number":107,"context_line":"        container_dimension_map \u003d {}"},{"line_number":108,"context_line":"        pod_dimensions_map \u003d {}"},{"line_number":109,"context_line":"        dimensions \u003d self._set_dimensions(None, instance)"}],"source_content_type":"text/x-python","patch_set":12,"id":"3a1ff146_4af925c8","line":106,"range":{"start_line":106,"start_character":62,"end_line":106,"end_character":69},"updated":"2017-03-14 22:45:37.000000000","message":"This default should be documented","commit_id":"7cf692bafeaca1424726f3631bef6db2f4cdbad3"},{"author":{"_account_id":11809,"name":"Craig Bryant","email":"craig.bryant@hpe.com","username":"craig-bryant"},"change_message_id":"2c73f9c3fac932829cfd51ac0f0c9da476e67008","unresolved":false,"context_lines":[{"line_number":109,"context_line":"        dimensions \u003d self._set_dimensions(None, instance)"},{"line_number":110,"context_line":"        # Remove hostname from dimensions as the majority of the metrics are not tied to the hostname."},{"line_number":111,"context_line":"        del dimensions[\u0027hostname\u0027]"},{"line_number":112,"context_line":"        kubelet_health_status \u003d self._get_api_health(\"{}/healthz\".format(kubelet))"},{"line_number":113,"context_line":"        self.gauge(\"kubelet.health_status\", 0 if kubelet_health_status else 1, dimensions\u003ddimensions)"},{"line_number":114,"context_line":"        try:"},{"line_number":115,"context_line":"            pods \u003d self._get_result(\"{}/pods\".format(kubelet))"}],"source_content_type":"text/x-python","patch_set":12,"id":"3a1ff146_cad27534","line":112,"range":{"start_line":112,"start_character":63,"end_line":112,"end_character":64},"updated":"2017-03-14 22:45:37.000000000","message":"Really has a z at the end?","commit_id":"7cf692bafeaca1424726f3631bef6db2f4cdbad3"},{"author":{"_account_id":15027,"name":"Michael Hoppal","email":"michael.jam.hoppal@hpe.com","username":"michael-hoppal"},"change_message_id":"02ae9de20cc57f0ea6ac02ff997848714e8408cc","unresolved":false,"context_lines":[{"line_number":109,"context_line":"        dimensions \u003d self._set_dimensions(None, instance)"},{"line_number":110,"context_line":"        # Remove hostname from dimensions as the majority of the metrics are not tied to the hostname."},{"line_number":111,"context_line":"        del dimensions[\u0027hostname\u0027]"},{"line_number":112,"context_line":"        kubelet_health_status \u003d self._get_api_health(\"{}/healthz\".format(kubelet))"},{"line_number":113,"context_line":"        self.gauge(\"kubelet.health_status\", 0 if kubelet_health_status else 1, dimensions\u003ddimensions)"},{"line_number":114,"context_line":"        try:"},{"line_number":115,"context_line":"            pods \u003d self._get_result(\"{}/pods\".format(kubelet))"}],"source_content_type":"text/x-python","patch_set":12,"id":"3a1ff146_54044616","line":112,"range":{"start_line":112,"start_character":63,"end_line":112,"end_character":64},"in_reply_to":"3a1ff146_cad27534","updated":"2017-03-15 15:06:21.000000000","message":"yeah :)","commit_id":"7cf692bafeaca1424726f3631bef6db2f4cdbad3"},{"author":{"_account_id":11809,"name":"Craig Bryant","email":"craig.bryant@hpe.com","username":"craig-bryant"},"change_message_id":"2c73f9c3fac932829cfd51ac0f0c9da476e67008","unresolved":false,"context_lines":[{"line_number":158,"context_line":"            pod_spec \u003d pod[\u0027spec\u0027]"},{"line_number":159,"context_line":"            pod_containers \u003d pod_spec.get(\u0027containers\u0027, None)"},{"line_number":160,"context_line":"            container_statuses \u003d pod_status.get(\u0027containerStatuses\u0027, None)"},{"line_number":161,"context_line":"            # Pod does not have any containers assigned to it no-op going to next pod"},{"line_number":162,"context_line":"            if not pod_containers or not container_statuses:"},{"line_number":163,"context_line":"                continue"},{"line_number":164,"context_line":"            pod_dimensions \u003d dimensions.copy()"}],"source_content_type":"text/x-python","patch_set":12,"id":"3a1ff146_ea93b14d","line":161,"range":{"start_line":161,"start_character":12,"end_line":161,"end_character":85},"updated":"2017-03-14 22:45:37.000000000","message":"Should this comment be on the continue?","commit_id":"7cf692bafeaca1424726f3631bef6db2f4cdbad3"},{"author":{"_account_id":15027,"name":"Michael Hoppal","email":"michael.jam.hoppal@hpe.com","username":"michael-hoppal"},"change_message_id":"02ae9de20cc57f0ea6ac02ff997848714e8408cc","unresolved":false,"context_lines":[{"line_number":158,"context_line":"            pod_spec \u003d pod[\u0027spec\u0027]"},{"line_number":159,"context_line":"            pod_containers \u003d pod_spec.get(\u0027containers\u0027, None)"},{"line_number":160,"context_line":"            container_statuses \u003d pod_status.get(\u0027containerStatuses\u0027, None)"},{"line_number":161,"context_line":"            # Pod does not have any containers assigned to it no-op going to next pod"},{"line_number":162,"context_line":"            if not pod_containers or not container_statuses:"},{"line_number":163,"context_line":"                continue"},{"line_number":164,"context_line":"            pod_dimensions \u003d dimensions.copy()"}],"source_content_type":"text/x-python","patch_set":12,"id":"3a1ff146_ef3abfcc","line":161,"range":{"start_line":161,"start_character":12,"end_line":161,"end_character":85},"in_reply_to":"3a1ff146_ea93b14d","updated":"2017-03-15 15:06:21.000000000","message":"yes i will move it down","commit_id":"7cf692bafeaca1424726f3631bef6db2f4cdbad3"},{"author":{"_account_id":11809,"name":"Craig Bryant","email":"craig.bryant@hpe.com","username":"craig-bryant"},"change_message_id":"2c73f9c3fac932829cfd51ac0f0c9da476e67008","unresolved":false,"context_lines":[{"line_number":194,"context_line":"            self.gauge(\"pod.phase\", POD_PHASE.get(pod_status[\u0027phase\u0027]), pod_dimensions, hostname\u003d\"SUPPRESS\")"},{"line_number":195,"context_line":""},{"line_number":196,"context_line":"    def _report_container_limits(self, pod_containers, container_dimension_map, name2id):"},{"line_number":197,"context_line":"        if self.report_container_metrics:"},{"line_number":198,"context_line":"            for container in pod_containers:"},{"line_number":199,"context_line":"                container_name \u003d container[\u0027name\u0027]"},{"line_number":200,"context_line":"                container_dimensions \u003d container_dimension_map[name2id[container_name]]"}],"source_content_type":"text/x-python","patch_set":12,"id":"3a1ff146_0ae72de5","line":197,"range":{"start_line":197,"start_character":8,"end_line":197,"end_character":41},"updated":"2017-03-14 22:45:37.000000000","message":"Already checked above","commit_id":"7cf692bafeaca1424726f3631bef6db2f4cdbad3"},{"author":{"_account_id":15027,"name":"Michael Hoppal","email":"michael.jam.hoppal@hpe.com","username":"michael-hoppal"},"change_message_id":"02ae9de20cc57f0ea6ac02ff997848714e8408cc","unresolved":false,"context_lines":[{"line_number":194,"context_line":"            self.gauge(\"pod.phase\", POD_PHASE.get(pod_status[\u0027phase\u0027]), pod_dimensions, hostname\u003d\"SUPPRESS\")"},{"line_number":195,"context_line":""},{"line_number":196,"context_line":"    def _report_container_limits(self, pod_containers, container_dimension_map, name2id):"},{"line_number":197,"context_line":"        if self.report_container_metrics:"},{"line_number":198,"context_line":"            for container in pod_containers:"},{"line_number":199,"context_line":"                container_name \u003d container[\u0027name\u0027]"},{"line_number":200,"context_line":"                container_dimensions \u003d container_dimension_map[name2id[container_name]]"}],"source_content_type":"text/x-python","patch_set":12,"id":"3a1ff146_2f4cd76f","line":197,"range":{"start_line":197,"start_character":8,"end_line":197,"end_character":41},"in_reply_to":"3a1ff146_0ae72de5","updated":"2017-03-15 15:06:21.000000000","message":"removing","commit_id":"7cf692bafeaca1424726f3631bef6db2f4cdbad3"},{"author":{"_account_id":11809,"name":"Craig Bryant","email":"craig.bryant@hpe.com","username":"craig-bryant"},"change_message_id":"2c73f9c3fac932829cfd51ac0f0c9da476e67008","unresolved":false,"context_lines":[{"line_number":210,"context_line":"                        self.gauge(\"container.memory.limit_bytes\", memory_in_bytes, container_dimensions,"},{"line_number":211,"context_line":"                                   hostname\u003d\"SUPPRESS\")"},{"line_number":212,"context_line":"                except KeyError:"},{"line_number":213,"context_line":"                    self.log.error(\"Unable to report container limits for {}\".format(container_name))"},{"line_number":214,"context_line":"                try:"},{"line_number":215,"context_line":"                    container_requests \u003d container[\u0027resources\u0027][\u0027requests\u0027]"},{"line_number":216,"context_line":"                    if \u0027cpu\u0027 in container_requests:"}],"source_content_type":"text/x-python","patch_set":12,"id":"3a1ff146_4ad125fb","line":213,"range":{"start_line":213,"start_character":29,"end_line":213,"end_character":34},"updated":"2017-03-14 22:45:37.000000000","message":"Should this be a log.exception so we know what really went wrong?","commit_id":"7cf692bafeaca1424726f3631bef6db2f4cdbad3"},{"author":{"_account_id":15027,"name":"Michael Hoppal","email":"michael.jam.hoppal@hpe.com","username":"michael-hoppal"},"change_message_id":"02ae9de20cc57f0ea6ac02ff997848714e8408cc","unresolved":false,"context_lines":[{"line_number":210,"context_line":"                        self.gauge(\"container.memory.limit_bytes\", memory_in_bytes, container_dimensions,"},{"line_number":211,"context_line":"                                   hostname\u003d\"SUPPRESS\")"},{"line_number":212,"context_line":"                except KeyError:"},{"line_number":213,"context_line":"                    self.log.error(\"Unable to report container limits for {}\".format(container_name))"},{"line_number":214,"context_line":"                try:"},{"line_number":215,"context_line":"                    container_requests \u003d container[\u0027resources\u0027][\u0027requests\u0027]"},{"line_number":216,"context_line":"                    if \u0027cpu\u0027 in container_requests:"}],"source_content_type":"text/x-python","patch_set":12,"id":"3a1ff146_8f04eb15","line":213,"range":{"start_line":213,"start_character":29,"end_line":213,"end_character":34},"in_reply_to":"3a1ff146_4ad125fb","updated":"2017-03-15 15:06:21.000000000","message":"yes will change","commit_id":"7cf692bafeaca1424726f3631bef6db2f4cdbad3"},{"author":{"_account_id":11809,"name":"Craig Bryant","email":"craig.bryant@hpe.com","username":"craig-bryant"},"change_message_id":"2c73f9c3fac932829cfd51ac0f0c9da476e67008","unresolved":false,"context_lines":[{"line_number":223,"context_line":"                        self.gauge(\"container.request.memory_bytes\", memory_in_bytes, container_dimensions,"},{"line_number":224,"context_line":"                                   hostname\u003d\"SUPPRESS\")"},{"line_number":225,"context_line":"                except KeyError:"},{"line_number":226,"context_line":"                    self.log.error(\"Unable to report container requests for {}\".format(container_name))"},{"line_number":227,"context_line":""},{"line_number":228,"context_line":"    def _convert_cpu_to_cores(self, cpu_string):"},{"line_number":229,"context_line":"        \"\"\"Kubernetes reports cores in millicores in some instances."}],"source_content_type":"text/x-python","patch_set":12,"id":"3a1ff146_ea081194","line":226,"range":{"start_line":226,"start_character":29,"end_line":226,"end_character":34},"updated":"2017-03-14 22:45:37.000000000","message":"See above","commit_id":"7cf692bafeaca1424726f3631bef6db2f4cdbad3"},{"author":{"_account_id":15027,"name":"Michael Hoppal","email":"michael.jam.hoppal@hpe.com","username":"michael-hoppal"},"change_message_id":"02ae9de20cc57f0ea6ac02ff997848714e8408cc","unresolved":false,"context_lines":[{"line_number":223,"context_line":"                        self.gauge(\"container.request.memory_bytes\", memory_in_bytes, container_dimensions,"},{"line_number":224,"context_line":"                                   hostname\u003d\"SUPPRESS\")"},{"line_number":225,"context_line":"                except KeyError:"},{"line_number":226,"context_line":"                    self.log.error(\"Unable to report container requests for {}\".format(container_name))"},{"line_number":227,"context_line":""},{"line_number":228,"context_line":"    def _convert_cpu_to_cores(self, cpu_string):"},{"line_number":229,"context_line":"        \"\"\"Kubernetes reports cores in millicores in some instances."}],"source_content_type":"text/x-python","patch_set":12,"id":"3a1ff146_ef139f5a","line":226,"range":{"start_line":226,"start_character":29,"end_line":226,"end_character":34},"in_reply_to":"3a1ff146_ea081194","updated":"2017-03-15 15:06:21.000000000","message":"well change","commit_id":"7cf692bafeaca1424726f3631bef6db2f4cdbad3"},{"author":{"_account_id":11809,"name":"Craig Bryant","email":"craig.bryant@hpe.com","username":"craig-bryant"},"change_message_id":"2c73f9c3fac932829cfd51ac0f0c9da476e67008","unresolved":false,"context_lines":[{"line_number":335,"context_line":"                    self._send_metrics(\"container.\" + metric_name, filesystem[cadvisor_key], file_dimensions,"},{"line_number":336,"context_line":"                                       METRIC_TYPES_UNITS[metric_name][0],"},{"line_number":337,"context_line":"                                       METRIC_TYPES_UNITS[metric_name][1],"},{"line_number":338,"context_line":"                                       report_metric\u003dself.report_container_metrics)"},{"line_number":339,"context_line":""},{"line_number":340,"context_line":"    def _parse_network(self, network_data, container_dimensions, pod_key, pod_net_metrics):"},{"line_number":341,"context_line":"        network_interfaces \u003d network_data[\u0027interfaces\u0027]"}],"source_content_type":"text/x-python","patch_set":12,"id":"3a1ff146_6a098131","line":338,"range":{"start_line":338,"start_character":53,"end_line":338,"end_character":82},"updated":"2017-03-14 22:45:37.000000000","message":"All of the work done here is a waste if !self.report_container_metrics. Maybe better to check that at start?","commit_id":"7cf692bafeaca1424726f3631bef6db2f4cdbad3"},{"author":{"_account_id":15027,"name":"Michael Hoppal","email":"michael.jam.hoppal@hpe.com","username":"michael-hoppal"},"change_message_id":"02ae9de20cc57f0ea6ac02ff997848714e8408cc","unresolved":false,"context_lines":[{"line_number":335,"context_line":"                    self._send_metrics(\"container.\" + metric_name, filesystem[cadvisor_key], file_dimensions,"},{"line_number":336,"context_line":"                                       METRIC_TYPES_UNITS[metric_name][0],"},{"line_number":337,"context_line":"                                       METRIC_TYPES_UNITS[metric_name][1],"},{"line_number":338,"context_line":"                                       report_metric\u003dself.report_container_metrics)"},{"line_number":339,"context_line":""},{"line_number":340,"context_line":"    def _parse_network(self, network_data, container_dimensions, pod_key, pod_net_metrics):"},{"line_number":341,"context_line":"        network_interfaces \u003d network_data[\u0027interfaces\u0027]"}],"source_content_type":"text/x-python","patch_set":12,"id":"3a1ff146_8fa06bf6","line":338,"range":{"start_line":338,"start_character":53,"end_line":338,"end_character":82},"in_reply_to":"3a1ff146_6a098131","updated":"2017-03-15 15:06:21.000000000","message":"will add to all of them the check before.","commit_id":"7cf692bafeaca1424726f3631bef6db2f4cdbad3"},{"author":{"_account_id":11809,"name":"Craig Bryant","email":"craig.bryant@hpe.com","username":"craig-bryant"},"change_message_id":"2c73f9c3fac932829cfd51ac0f0c9da476e67008","unresolved":false,"context_lines":[{"line_number":367,"context_line":"        cpu_usage \u003d cpu_data[\u0027usage\u0027]"},{"line_number":368,"context_line":"        for cadvisor_key, metric_name in six.iteritems(cpu_metrics):"},{"line_number":369,"context_line":"            if cadvisor_key in cpu_usage:"},{"line_number":370,"context_line":"                cpu_usage_sec \u003d cpu_usage[cadvisor_key] / 1000000000"},{"line_number":371,"context_line":"                self._send_metrics(\"container.\" + metric_name, cpu_usage_sec, container_dimensions,"},{"line_number":372,"context_line":"                                   METRIC_TYPES_UNITS[metric_name][0],"},{"line_number":373,"context_line":"                                   METRIC_TYPES_UNITS[metric_name][1],"}],"source_content_type":"text/x-python","patch_set":12,"id":"3a1ff146_6510d24f","line":370,"range":{"start_line":370,"start_character":58,"end_line":370,"end_character":68},"updated":"2017-03-14 22:45:37.000000000","message":"Why this value?","commit_id":"7cf692bafeaca1424726f3631bef6db2f4cdbad3"},{"author":{"_account_id":15027,"name":"Michael Hoppal","email":"michael.jam.hoppal@hpe.com","username":"michael-hoppal"},"change_message_id":"02ae9de20cc57f0ea6ac02ff997848714e8408cc","unresolved":false,"context_lines":[{"line_number":367,"context_line":"        cpu_usage \u003d cpu_data[\u0027usage\u0027]"},{"line_number":368,"context_line":"        for cadvisor_key, metric_name in six.iteritems(cpu_metrics):"},{"line_number":369,"context_line":"            if cadvisor_key in cpu_usage:"},{"line_number":370,"context_line":"                cpu_usage_sec \u003d cpu_usage[cadvisor_key] / 1000000000"},{"line_number":371,"context_line":"                self._send_metrics(\"container.\" + metric_name, cpu_usage_sec, container_dimensions,"},{"line_number":372,"context_line":"                                   METRIC_TYPES_UNITS[metric_name][0],"},{"line_number":373,"context_line":"                                   METRIC_TYPES_UNITS[metric_name][1],"}],"source_content_type":"text/x-python","patch_set":12,"id":"3a1ff146_8f794b96","line":370,"range":{"start_line":370,"start_character":58,"end_line":370,"end_character":68},"in_reply_to":"3a1ff146_6510d24f","updated":"2017-03-15 15:06:21.000000000","message":"nanoseconds to seconds","commit_id":"7cf692bafeaca1424726f3631bef6db2f4cdbad3"},{"author":{"_account_id":14517,"name":"Ryan Brandt","email":"ryan.brandt@hpe.com","username":"ryan-brandt"},"change_message_id":"784e7568471cf1a1d236278255695e64c5820976","unresolved":false,"context_lines":[{"line_number":320,"context_line":"        for cadvisor_key, metric_name in six.iteritems(memory_metrics):"},{"line_number":321,"context_line":"            if cadvisor_key in memory_data:"},{"line_number":322,"context_line":"                metric_value \u003d memory_data[cadvisor_key]"},{"line_number":323,"context_line":"                if not self.report_container_metrics:"},{"line_number":324,"context_line":"                    self._send_metrics(\"container.\" + metric_name, metric_value,"},{"line_number":325,"context_line":"                                       container_dimensions,"},{"line_number":326,"context_line":"                                       METRIC_TYPES_UNITS[metric_name][0],"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a1ced50_107909fd","line":323,"range":{"start_line":323,"start_character":19,"end_line":323,"end_character":22},"updated":"2017-03-17 15:08:06.000000000","message":"Is this meant to be inverted? Same for others below","commit_id":"5c94cf9aa25004ab74508b73715147be5807caaa"},{"author":{"_account_id":18179,"name":"Kaiyan Sheng","email":"kaiyan.sheng@hpe.com","username":"kaiyan-sheng"},"change_message_id":"c7a7f5912e19db4b0c4cef05d80f47101a5a9dd6","unresolved":false,"context_lines":[{"line_number":320,"context_line":"        for cadvisor_key, metric_name in six.iteritems(memory_metrics):"},{"line_number":321,"context_line":"            if cadvisor_key in memory_data:"},{"line_number":322,"context_line":"                metric_value \u003d memory_data[cadvisor_key]"},{"line_number":323,"context_line":"                if self.report_container_metrics:"},{"line_number":324,"context_line":"                    self._send_metrics(\"container.\" + metric_name, metric_value,"},{"line_number":325,"context_line":"                                       container_dimensions,"},{"line_number":326,"context_line":"                                       METRIC_TYPES_UNITS[metric_name][0],"}],"source_content_type":"text/x-python","patch_set":18,"id":"1a1ced50_1f1e6d0c","line":323,"range":{"start_line":323,"start_character":16,"end_line":323,"end_character":49},"updated":"2017-03-17 19:43:11.000000000","message":"Do you think putting \"if not self.report_container_metrics: return\" to the top of the function is better? like line 331 and 332.","commit_id":"3510491d3deb31cc68395125abe6fecf2e7da1d4"},{"author":{"_account_id":15027,"name":"Michael Hoppal","email":"michael.jam.hoppal@hpe.com","username":"michael-hoppal"},"change_message_id":"ac561555e9f86d1af30c2e99b8a93e949d7325d7","unresolved":false,"context_lines":[{"line_number":320,"context_line":"        for cadvisor_key, metric_name in six.iteritems(memory_metrics):"},{"line_number":321,"context_line":"            if cadvisor_key in memory_data:"},{"line_number":322,"context_line":"                metric_value \u003d memory_data[cadvisor_key]"},{"line_number":323,"context_line":"                if self.report_container_metrics:"},{"line_number":324,"context_line":"                    self._send_metrics(\"container.\" + metric_name, metric_value,"},{"line_number":325,"context_line":"                                       container_dimensions,"},{"line_number":326,"context_line":"                                       METRIC_TYPES_UNITS[metric_name][0],"}],"source_content_type":"text/x-python","patch_set":18,"id":"1a1ced50_7f1201b6","line":323,"range":{"start_line":323,"start_character":16,"end_line":323,"end_character":49},"in_reply_to":"1a1ced50_1f1e6d0c","updated":"2017-03-17 19:50:36.000000000","message":"no as you need to add to pod metrics","commit_id":"3510491d3deb31cc68395125abe6fecf2e7da1d4"},{"author":{"_account_id":18179,"name":"Kaiyan Sheng","email":"kaiyan.sheng@hpe.com","username":"kaiyan-sheng"},"change_message_id":"8867f26eaff9434647f55159b5429ecaa98c6a77","unresolved":false,"context_lines":[{"line_number":320,"context_line":"        for cadvisor_key, metric_name in six.iteritems(memory_metrics):"},{"line_number":321,"context_line":"            if cadvisor_key in memory_data:"},{"line_number":322,"context_line":"                metric_value \u003d memory_data[cadvisor_key]"},{"line_number":323,"context_line":"                if self.report_container_metrics:"},{"line_number":324,"context_line":"                    self._send_metrics(\"container.\" + metric_name, metric_value,"},{"line_number":325,"context_line":"                                       container_dimensions,"},{"line_number":326,"context_line":"                                       METRIC_TYPES_UNITS[metric_name][0],"}],"source_content_type":"text/x-python","patch_set":18,"id":"1a1ced50_ff26f114","line":323,"range":{"start_line":323,"start_character":16,"end_line":323,"end_character":49},"in_reply_to":"1a1ced50_7f1201b6","updated":"2017-03-17 19:51:33.000000000","message":"oh yeah missed that part! Thanks!","commit_id":"3510491d3deb31cc68395125abe6fecf2e7da1d4"}]}
