)]}'
{"monasca_agent/collector/checks/utils.py":[{"author":{"_account_id":11809,"name":"Craig Bryant","email":"craig.bryant@hpe.com","username":"craig-bryant"},"change_message_id":"13086c8081357ccc6d7f1160938e2820d3287c04","unresolved":false,"context_lines":[{"line_number":178,"context_line":"    namespace_annotation_map \u003d {}"},{"line_number":179,"context_line":"    for namespace in namespaces[\u0027items\u0027]:"},{"line_number":180,"context_line":"        namespace_metadata \u003d namespace[\u0027metadata\u0027]"},{"line_number":181,"context_line":"        namespace_name \u003d namespace_metadata[\u0027name\u0027]"},{"line_number":182,"context_line":"        if \u0027annotations\u0027 not in namespace_metadata:"},{"line_number":183,"context_line":"            continue"},{"line_number":184,"context_line":"        for annotation_key, annotation_value in namespace_metadata[\u0027annotations\u0027].iteritems():"}],"source_content_type":"text/x-python","patch_set":2,"id":"ffe62b97_13deac10","line":181,"range":{"start_line":181,"start_character":0,"end_line":181,"end_character":51},"updated":"2017-03-27 17:57:58.000000000","message":"Move this below the continue","commit_id":"785bd94255bd35245caf9ba1e6e02949ed8eeed0"},{"author":{"_account_id":18179,"name":"Kaiyan Sheng","email":"kaiyan.sheng@hpe.com","username":"kaiyan-sheng"},"change_message_id":"5a7fb8e5820a704e0b0a505dc460506a3e41fea7","unresolved":false,"context_lines":[{"line_number":178,"context_line":"    namespace_annotation_map \u003d {}"},{"line_number":179,"context_line":"    for namespace in namespaces[\u0027items\u0027]:"},{"line_number":180,"context_line":"        namespace_metadata \u003d namespace[\u0027metadata\u0027]"},{"line_number":181,"context_line":"        namespace_name \u003d namespace_metadata[\u0027name\u0027]"},{"line_number":182,"context_line":"        if \u0027annotations\u0027 not in namespace_metadata:"},{"line_number":183,"context_line":"            continue"},{"line_number":184,"context_line":"        for annotation_key, annotation_value in namespace_metadata[\u0027annotations\u0027].iteritems():"}],"source_content_type":"text/x-python","patch_set":2,"id":"ffe62b97_3896fa3f","line":181,"range":{"start_line":181,"start_character":0,"end_line":181,"end_character":51},"in_reply_to":"ffe62b97_13deac10","updated":"2017-03-28 15:48:35.000000000","message":"Done","commit_id":"785bd94255bd35245caf9ba1e6e02949ed8eeed0"},{"author":{"_account_id":11809,"name":"Craig Bryant","email":"craig.bryant@hpe.com","username":"craig-bryant"},"change_message_id":"13086c8081357ccc6d7f1160938e2820d3287c04","unresolved":false,"context_lines":[{"line_number":181,"context_line":"        namespace_name \u003d namespace_metadata[\u0027name\u0027]"},{"line_number":182,"context_line":"        if \u0027annotations\u0027 not in namespace_metadata:"},{"line_number":183,"context_line":"            continue"},{"line_number":184,"context_line":"        for annotation_key, annotation_value in namespace_metadata[\u0027annotations\u0027].iteritems():"},{"line_number":185,"context_line":"            if annotation_key in namespace_annotation_keys:"},{"line_number":186,"context_line":"                if namespace_name not in namespace_annotation_map:"},{"line_number":187,"context_line":"                    namespace_annotation_map[namespace_name] \u003d {}"}],"source_content_type":"text/x-python","patch_set":2,"id":"ffe62b97_73ccd860","line":184,"range":{"start_line":184,"start_character":48,"end_line":184,"end_character":93},"updated":"2017-03-27 17:57:58.000000000","message":"Use six before Tomasz tell you to :)","commit_id":"785bd94255bd35245caf9ba1e6e02949ed8eeed0"},{"author":{"_account_id":18179,"name":"Kaiyan Sheng","email":"kaiyan.sheng@hpe.com","username":"kaiyan-sheng"},"change_message_id":"5a7fb8e5820a704e0b0a505dc460506a3e41fea7","unresolved":false,"context_lines":[{"line_number":181,"context_line":"        namespace_name \u003d namespace_metadata[\u0027name\u0027]"},{"line_number":182,"context_line":"        if \u0027annotations\u0027 not in namespace_metadata:"},{"line_number":183,"context_line":"            continue"},{"line_number":184,"context_line":"        for annotation_key, annotation_value in namespace_metadata[\u0027annotations\u0027].iteritems():"},{"line_number":185,"context_line":"            if annotation_key in namespace_annotation_keys:"},{"line_number":186,"context_line":"                if namespace_name not in namespace_annotation_map:"},{"line_number":187,"context_line":"                    namespace_annotation_map[namespace_name] \u003d {}"}],"source_content_type":"text/x-python","patch_set":2,"id":"ffe62b97_d8f70e8b","line":184,"range":{"start_line":184,"start_character":48,"end_line":184,"end_character":93},"in_reply_to":"ffe62b97_73ccd860","updated":"2017-03-28 15:48:35.000000000","message":"Done","commit_id":"785bd94255bd35245caf9ba1e6e02949ed8eeed0"}],"monasca_agent/collector/checks_d/kubernetes.py":[{"author":{"_account_id":11809,"name":"Craig Bryant","email":"craig.bryant@hpe.com","username":"craig-bryant"},"change_message_id":"13086c8081357ccc6d7f1160938e2820d3287c04","unresolved":false,"context_lines":[{"line_number":228,"context_line":"                    persistent_volume_claim \u003d volume[\u0027persistentVolumeClaim\u0027]"},{"line_number":229,"context_line":"                    claim_name \u003d persistent_volume_claim[\u0027claimName\u0027]"},{"line_number":230,"context_line":"                    pod_volumes[volume_name] \u003d claim_name"},{"line_number":231,"context_line":"            if len(pod_volumes) \u003e 0:"},{"line_number":232,"context_line":"                for container in pod_containers:"},{"line_number":233,"context_line":"                    if \"volumeMounts\" not in container:"},{"line_number":234,"context_line":"                        continue"}],"source_content_type":"text/x-python","patch_set":2,"id":"ffe62b97_7309782f","line":231,"range":{"start_line":231,"start_character":15,"end_line":231,"end_character":35},"updated":"2017-03-27 17:57:58.000000000","message":"pod_volumes","commit_id":"785bd94255bd35245caf9ba1e6e02949ed8eeed0"},{"author":{"_account_id":18179,"name":"Kaiyan Sheng","email":"kaiyan.sheng@hpe.com","username":"kaiyan-sheng"},"change_message_id":"5a7fb8e5820a704e0b0a505dc460506a3e41fea7","unresolved":false,"context_lines":[{"line_number":228,"context_line":"                    persistent_volume_claim \u003d volume[\u0027persistentVolumeClaim\u0027]"},{"line_number":229,"context_line":"                    claim_name \u003d persistent_volume_claim[\u0027claimName\u0027]"},{"line_number":230,"context_line":"                    pod_volumes[volume_name] \u003d claim_name"},{"line_number":231,"context_line":"            if len(pod_volumes) \u003e 0:"},{"line_number":232,"context_line":"                for container in pod_containers:"},{"line_number":233,"context_line":"                    if \"volumeMounts\" not in container:"},{"line_number":234,"context_line":"                        continue"}],"source_content_type":"text/x-python","patch_set":2,"id":"ffe62b97_f82892e2","line":231,"range":{"start_line":231,"start_character":15,"end_line":231,"end_character":35},"in_reply_to":"ffe62b97_7309782f","updated":"2017-03-28 15:48:35.000000000","message":"Done","commit_id":"785bd94255bd35245caf9ba1e6e02949ed8eeed0"},{"author":{"_account_id":11809,"name":"Craig Bryant","email":"craig.bryant@hpe.com","username":"craig-bryant"},"change_message_id":"13086c8081357ccc6d7f1160938e2820d3287c04","unresolved":false,"context_lines":[{"line_number":252,"context_line":"        except Exception as e:"},{"line_number":253,"context_line":"            self.log.error(\"Error getting persistent volumes with the error {}\".format(e))"},{"line_number":254,"context_line":"            return {}"},{"line_number":255,"context_line":"        else:"},{"line_number":256,"context_line":"            for persistent_volume in persistent_volumes[\u0027items\u0027]:"},{"line_number":257,"context_line":"                persistent_volume_spec \u003d persistent_volume[\u0027spec\u0027]"},{"line_number":258,"context_line":"                if \u0027claimRef\u0027 not in persistent_volume_spec:"}],"source_content_type":"text/x-python","patch_set":2,"id":"ffe62b97_be7347b1","line":255,"range":{"start_line":255,"start_character":0,"end_line":255,"end_character":13},"updated":"2017-03-27 17:57:58.000000000","message":"The else: is redundant because of the return in the except","commit_id":"785bd94255bd35245caf9ba1e6e02949ed8eeed0"},{"author":{"_account_id":18179,"name":"Kaiyan Sheng","email":"kaiyan.sheng@hpe.com","username":"kaiyan-sheng"},"change_message_id":"5a7fb8e5820a704e0b0a505dc460506a3e41fea7","unresolved":false,"context_lines":[{"line_number":252,"context_line":"        except Exception as e:"},{"line_number":253,"context_line":"            self.log.error(\"Error getting persistent volumes with the error {}\".format(e))"},{"line_number":254,"context_line":"            return {}"},{"line_number":255,"context_line":"        else:"},{"line_number":256,"context_line":"            for persistent_volume in persistent_volumes[\u0027items\u0027]:"},{"line_number":257,"context_line":"                persistent_volume_spec \u003d persistent_volume[\u0027spec\u0027]"},{"line_number":258,"context_line":"                if \u0027claimRef\u0027 not in persistent_volume_spec:"}],"source_content_type":"text/x-python","patch_set":2,"id":"ffe62b97_f856525c","line":255,"range":{"start_line":255,"start_character":0,"end_line":255,"end_character":13},"in_reply_to":"ffe62b97_be7347b1","updated":"2017-03-28 15:48:35.000000000","message":"Done","commit_id":"785bd94255bd35245caf9ba1e6e02949ed8eeed0"},{"author":{"_account_id":15027,"name":"Michael Hoppal","email":"michael.jam.hoppal@hpe.com","username":"michael-hoppal"},"change_message_id":"23504c20eabe1f544d9a58af67225d43d467519d","unresolved":false,"context_lines":[{"line_number":95,"context_line":"        instance \u003d self.instances[0]"},{"line_number":96,"context_line":"        self.host \u003d instance.get(\"host\", None)"},{"line_number":97,"context_line":"        derive_host \u003d instance.get(\"derive_host\", False)"},{"line_number":98,"context_line":"        self.report_persistent_volume_usage \u003d instance.get(\"report_persistent_volume_usage\", False)"},{"line_number":99,"context_line":"        if not self.host:"},{"line_number":100,"context_line":"            if derive_host:"},{"line_number":101,"context_line":"                self.kubernetes_connector \u003d utils.KubernetesConnector(self.connection_timeout)"}],"source_content_type":"text/x-python","patch_set":8,"id":"9ff52f3f_bdb72887","line":98,"range":{"start_line":98,"start_character":13,"end_line":98,"end_character":43},"updated":"2017-04-13 15:01:47.000000000","message":"not in the example file","commit_id":"610350356b863d7ca4be69bdc06d6868f3292ce7"},{"author":{"_account_id":18179,"name":"Kaiyan Sheng","email":"kaiyan.sheng@hpe.com","username":"kaiyan-sheng"},"change_message_id":"1b693d2d0d839920bfb9fdc3f5c101b13d828324","unresolved":false,"context_lines":[{"line_number":95,"context_line":"        instance \u003d self.instances[0]"},{"line_number":96,"context_line":"        self.host \u003d instance.get(\"host\", None)"},{"line_number":97,"context_line":"        derive_host \u003d instance.get(\"derive_host\", False)"},{"line_number":98,"context_line":"        self.report_persistent_volume_usage \u003d instance.get(\"report_persistent_volume_usage\", False)"},{"line_number":99,"context_line":"        if not self.host:"},{"line_number":100,"context_line":"            if derive_host:"},{"line_number":101,"context_line":"                self.kubernetes_connector \u003d utils.KubernetesConnector(self.connection_timeout)"}],"source_content_type":"text/x-python","patch_set":8,"id":"7ffa3b31_b6284086","line":98,"range":{"start_line":98,"start_character":13,"end_line":98,"end_character":43},"in_reply_to":"9ff52f3f_bdb72887","updated":"2017-04-17 20:40:29.000000000","message":"Done","commit_id":"610350356b863d7ca4be69bdc06d6868f3292ce7"},{"author":{"_account_id":15027,"name":"Michael Hoppal","email":"michael.jam.hoppal@hpe.com","username":"michael-hoppal"},"change_message_id":"23504c20eabe1f544d9a58af67225d43d467519d","unresolved":false,"context_lines":[{"line_number":102,"context_line":"                pod_info \u003d self.kubernetes_connector.get_agent_pod_host("},{"line_number":103,"context_line":"                    return_all\u003dTrue)"},{"line_number":104,"context_line":"                self.host \u003d pod_info[\u0027status\u0027][\u0027hostIP\u0027]"},{"line_number":105,"context_line":"                volumes \u003d pod_info[\u0027spec\u0027][\u0027volumes\u0027]"},{"line_number":106,"context_line":"                for volume in volumes:"},{"line_number":107,"context_line":"                    if volume[\u0027name\u0027] \u003d\u003d \u0027kubelet-plugin-volume\u0027:"},{"line_number":108,"context_line":"                        self.host_path \u003d volume[\u0027hostPath\u0027][\u0027path\u0027]"},{"line_number":109,"context_line":"            else:"},{"line_number":110,"context_line":"                exception_message \u003d \"Either host or derive host must be set \" \\"},{"line_number":111,"context_line":"                                    \"when running Kubernetes plugin.\""}],"source_content_type":"text/x-python","patch_set":8,"id":"9ff52f3f_dd678c25","line":108,"range":{"start_line":105,"start_character":0,"end_line":108,"end_character":67},"updated":"2017-04-13 15:01:47.000000000","message":"Not that this code looks wrong but can you explain to me what this accomplishes or what you are looking for from the agent pod spec? Maybe a comment would be good?","commit_id":"610350356b863d7ca4be69bdc06d6868f3292ce7"},{"author":{"_account_id":15027,"name":"Michael Hoppal","email":"michael.jam.hoppal@hpe.com","username":"michael-hoppal"},"change_message_id":"36da4aeb75dcc76147526b1b55525b08819de51d","unresolved":false,"context_lines":[{"line_number":102,"context_line":"                pod_info \u003d self.kubernetes_connector.get_agent_pod_host("},{"line_number":103,"context_line":"                    return_all\u003dTrue)"},{"line_number":104,"context_line":"                self.host \u003d pod_info[\u0027status\u0027][\u0027hostIP\u0027]"},{"line_number":105,"context_line":"                volumes \u003d pod_info[\u0027spec\u0027][\u0027volumes\u0027]"},{"line_number":106,"context_line":"                for volume in volumes:"},{"line_number":107,"context_line":"                    if volume[\u0027name\u0027] \u003d\u003d \u0027kubelet-plugin-volume\u0027:"},{"line_number":108,"context_line":"                        self.host_path \u003d volume[\u0027hostPath\u0027][\u0027path\u0027]"},{"line_number":109,"context_line":"            else:"},{"line_number":110,"context_line":"                exception_message \u003d \"Either host or derive host must be set \" \\"},{"line_number":111,"context_line":"                                    \"when running Kubernetes plugin.\""}],"source_content_type":"text/x-python","patch_set":8,"id":"7ffa3b31_d9badf08","line":108,"range":{"start_line":105,"start_character":0,"end_line":108,"end_character":67},"in_reply_to":"7ffa3b31_5687bc10","updated":"2017-04-17 20:43:59.000000000","message":"put that in a comment! :)","commit_id":"610350356b863d7ca4be69bdc06d6868f3292ce7"},{"author":{"_account_id":18179,"name":"Kaiyan Sheng","email":"kaiyan.sheng@hpe.com","username":"kaiyan-sheng"},"change_message_id":"6d7c0e8a967943998ba015536a7ed6bf2ea1b68c","unresolved":false,"context_lines":[{"line_number":102,"context_line":"                pod_info \u003d self.kubernetes_connector.get_agent_pod_host("},{"line_number":103,"context_line":"                    return_all\u003dTrue)"},{"line_number":104,"context_line":"                self.host \u003d pod_info[\u0027status\u0027][\u0027hostIP\u0027]"},{"line_number":105,"context_line":"                volumes \u003d pod_info[\u0027spec\u0027][\u0027volumes\u0027]"},{"line_number":106,"context_line":"                for volume in volumes:"},{"line_number":107,"context_line":"                    if volume[\u0027name\u0027] \u003d\u003d \u0027kubelet-plugin-volume\u0027:"},{"line_number":108,"context_line":"                        self.host_path \u003d volume[\u0027hostPath\u0027][\u0027path\u0027]"},{"line_number":109,"context_line":"            else:"},{"line_number":110,"context_line":"                exception_message \u003d \"Either host or derive host must be set \" \\"},{"line_number":111,"context_line":"                                    \"when running Kubernetes plugin.\""}],"source_content_type":"text/x-python","patch_set":8,"id":"5ff73747_e3f398e6","line":108,"range":{"start_line":105,"start_character":0,"end_line":108,"end_character":67},"in_reply_to":"7ffa3b31_d9badf08","updated":"2017-04-25 17:24:44.000000000","message":"Done","commit_id":"610350356b863d7ca4be69bdc06d6868f3292ce7"},{"author":{"_account_id":18179,"name":"Kaiyan Sheng","email":"kaiyan.sheng@hpe.com","username":"kaiyan-sheng"},"change_message_id":"1b693d2d0d839920bfb9fdc3f5c101b13d828324","unresolved":false,"context_lines":[{"line_number":102,"context_line":"                pod_info \u003d self.kubernetes_connector.get_agent_pod_host("},{"line_number":103,"context_line":"                    return_all\u003dTrue)"},{"line_number":104,"context_line":"                self.host \u003d pod_info[\u0027status\u0027][\u0027hostIP\u0027]"},{"line_number":105,"context_line":"                volumes \u003d pod_info[\u0027spec\u0027][\u0027volumes\u0027]"},{"line_number":106,"context_line":"                for volume in volumes:"},{"line_number":107,"context_line":"                    if volume[\u0027name\u0027] \u003d\u003d \u0027kubelet-plugin-volume\u0027:"},{"line_number":108,"context_line":"                        self.host_path \u003d volume[\u0027hostPath\u0027][\u0027path\u0027]"},{"line_number":109,"context_line":"            else:"},{"line_number":110,"context_line":"                exception_message \u003d \"Either host or derive host must be set \" \\"},{"line_number":111,"context_line":"                                    \"when running Kubernetes plugin.\""}],"source_content_type":"text/x-python","patch_set":8,"id":"7ffa3b31_5687bc10","line":108,"range":{"start_line":105,"start_character":0,"end_line":108,"end_character":67},"in_reply_to":"9ff52f3f_dd678c25","updated":"2017-04-17 20:40:29.000000000","message":"This is to get the host path for persistent volume storage which will be /var/lib/kubelet/plugins","commit_id":"610350356b863d7ca4be69bdc06d6868f3292ce7"},{"author":{"_account_id":15027,"name":"Michael Hoppal","email":"michael.jam.hoppal@hpe.com","username":"michael-hoppal"},"change_message_id":"23504c20eabe1f544d9a58af67225d43d467519d","unresolved":false,"context_lines":[{"line_number":225,"context_line":"            if self.report_container_metrics:"},{"line_number":226,"context_line":"                self._report_container_limits(pod_containers, container_dimension_map, name2id)"},{"line_number":227,"context_line":""},{"line_number":228,"context_line":"            # Volume_name to persistent_volume name. Used to grab mount point per persistent_volume"},{"line_number":229,"context_line":"            pod_volumes \u003d {}"},{"line_number":230,"context_line":"            # volume_name, persistent_volume_name -\u003e volume_name, mountpoint"},{"line_number":231,"context_line":"            if self.report_persistent_volume_usage and \"volumes\" in pod_spec:"},{"line_number":232,"context_line":"                pod_volumes_spec \u003d pod_spec[\u0027volumes\u0027]"},{"line_number":233,"context_line":"                for volume in pod_volumes_spec:"},{"line_number":234,"context_line":"                    if \"default-token\" in volume[\u0027name\u0027] or \"persistentVolumeClaim\" not in volume:"},{"line_number":235,"context_line":"                        continue"},{"line_number":236,"context_line":"                    volume_name \u003d volume[\u0027name\u0027]"},{"line_number":237,"context_line":"                    persistent_volume_claim \u003d volume[\u0027persistentVolumeClaim\u0027]"},{"line_number":238,"context_line":"                    claim_name \u003d persistent_volume_claim[\u0027claimName\u0027]"},{"line_number":239,"context_line":"                    pod_volumes[volume_name] \u003d claim_name"},{"line_number":240,"context_line":"            if pod_volumes:"},{"line_number":241,"context_line":"                for container in pod_containers:"},{"line_number":242,"context_line":"                    if \"volumeMounts\" not in container:"},{"line_number":243,"context_line":"                        continue"},{"line_number":244,"context_line":"                    container_volume_mounts \u003d container[\u0027volumeMounts\u0027]"},{"line_number":245,"context_line":"                    for container_volume_mount in container_volume_mounts:"},{"line_number":246,"context_line":"                        mount_name \u003d container_volume_mount[\u0027name\u0027]"},{"line_number":247,"context_line":"                        if mount_name in pod_volumes:"},{"line_number":248,"context_line":"                            mount_point \u003d container_volume_mount[\u0027mountPath\u0027]"},{"line_number":249,"context_line":"                            if pod_key not in pod_volume_map:"},{"line_number":250,"context_line":"                                pod_volume_map[pod_key] \u003d {}"},{"line_number":251,"context_line":"                                pod_volume_map[pod_key][\"pod_id\"] \u003d pod_id"},{"line_number":252,"context_line":"                                pod_volume_map[pod_key][\u0027volume_map\u0027] \u003d {}"},{"line_number":253,"context_line":"                            pod_volume_map[pod_key][\u0027volume_map\u0027][pod_volumes[mount_name]] \u003d mount_point"},{"line_number":254,"context_line":"            self.gauge(\"pod.restart_count\", pod_retry_count, pod_dimensions, hostname\u003d\"SUPPRESS\")"},{"line_number":255,"context_line":"            self.gauge(\"pod.phase\", POD_PHASE.get(pod_status[\u0027phase\u0027]), pod_dimensions, hostname\u003d\"SUPPRESS\")"},{"line_number":256,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"9ff52f3f_5d213cb4","line":253,"range":{"start_line":228,"start_character":0,"end_line":253,"end_character":104},"updated":"2017-04-13 15:01:47.000000000","message":"i wonder if we break this out to another method but its probably fine","commit_id":"610350356b863d7ca4be69bdc06d6868f3292ce7"},{"author":{"_account_id":15027,"name":"Michael Hoppal","email":"michael.jam.hoppal@hpe.com","username":"michael-hoppal"},"change_message_id":"36da4aeb75dcc76147526b1b55525b08819de51d","unresolved":false,"context_lines":[{"line_number":225,"context_line":"            if self.report_container_metrics:"},{"line_number":226,"context_line":"                self._report_container_limits(pod_containers, container_dimension_map, name2id)"},{"line_number":227,"context_line":""},{"line_number":228,"context_line":"            # Volume_name to persistent_volume name. Used to grab mount point per persistent_volume"},{"line_number":229,"context_line":"            pod_volumes \u003d {}"},{"line_number":230,"context_line":"            # volume_name, persistent_volume_name -\u003e volume_name, mountpoint"},{"line_number":231,"context_line":"            if self.report_persistent_volume_usage and \"volumes\" in pod_spec:"},{"line_number":232,"context_line":"                pod_volumes_spec \u003d pod_spec[\u0027volumes\u0027]"},{"line_number":233,"context_line":"                for volume in pod_volumes_spec:"},{"line_number":234,"context_line":"                    if \"default-token\" in volume[\u0027name\u0027] or \"persistentVolumeClaim\" not in volume:"},{"line_number":235,"context_line":"                        continue"},{"line_number":236,"context_line":"                    volume_name \u003d volume[\u0027name\u0027]"},{"line_number":237,"context_line":"                    persistent_volume_claim \u003d volume[\u0027persistentVolumeClaim\u0027]"},{"line_number":238,"context_line":"                    claim_name \u003d persistent_volume_claim[\u0027claimName\u0027]"},{"line_number":239,"context_line":"                    pod_volumes[volume_name] \u003d claim_name"},{"line_number":240,"context_line":"            if pod_volumes:"},{"line_number":241,"context_line":"                for container in pod_containers:"},{"line_number":242,"context_line":"                    if \"volumeMounts\" not in container:"},{"line_number":243,"context_line":"                        continue"},{"line_number":244,"context_line":"                    container_volume_mounts \u003d container[\u0027volumeMounts\u0027]"},{"line_number":245,"context_line":"                    for container_volume_mount in container_volume_mounts:"},{"line_number":246,"context_line":"                        mount_name \u003d container_volume_mount[\u0027name\u0027]"},{"line_number":247,"context_line":"                        if mount_name in pod_volumes:"},{"line_number":248,"context_line":"                            mount_point \u003d container_volume_mount[\u0027mountPath\u0027]"},{"line_number":249,"context_line":"                            if pod_key not in pod_volume_map:"},{"line_number":250,"context_line":"                                pod_volume_map[pod_key] \u003d {}"},{"line_number":251,"context_line":"                                pod_volume_map[pod_key][\"pod_id\"] \u003d pod_id"},{"line_number":252,"context_line":"                                pod_volume_map[pod_key][\u0027volume_map\u0027] \u003d {}"},{"line_number":253,"context_line":"                            pod_volume_map[pod_key][\u0027volume_map\u0027][pod_volumes[mount_name]] \u003d mount_point"},{"line_number":254,"context_line":"            self.gauge(\"pod.restart_count\", pod_retry_count, pod_dimensions, hostname\u003d\"SUPPRESS\")"},{"line_number":255,"context_line":"            self.gauge(\"pod.phase\", POD_PHASE.get(pod_status[\u0027phase\u0027]), pod_dimensions, hostname\u003d\"SUPPRESS\")"},{"line_number":256,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"7ffa3b31_f9547bcc","line":253,"range":{"start_line":228,"start_character":0,"end_line":253,"end_character":104},"in_reply_to":"7ffa3b31_f94a3b53","updated":"2017-04-17 20:43:59.000000000","message":"my bad :) thanks!","commit_id":"610350356b863d7ca4be69bdc06d6868f3292ce7"},{"author":{"_account_id":18179,"name":"Kaiyan Sheng","email":"kaiyan.sheng@hpe.com","username":"kaiyan-sheng"},"change_message_id":"1b693d2d0d839920bfb9fdc3f5c101b13d828324","unresolved":false,"context_lines":[{"line_number":225,"context_line":"            if self.report_container_metrics:"},{"line_number":226,"context_line":"                self._report_container_limits(pod_containers, container_dimension_map, name2id)"},{"line_number":227,"context_line":""},{"line_number":228,"context_line":"            # Volume_name to persistent_volume name. Used to grab mount point per persistent_volume"},{"line_number":229,"context_line":"            pod_volumes \u003d {}"},{"line_number":230,"context_line":"            # volume_name, persistent_volume_name -\u003e volume_name, mountpoint"},{"line_number":231,"context_line":"            if self.report_persistent_volume_usage and \"volumes\" in pod_spec:"},{"line_number":232,"context_line":"                pod_volumes_spec \u003d pod_spec[\u0027volumes\u0027]"},{"line_number":233,"context_line":"                for volume in pod_volumes_spec:"},{"line_number":234,"context_line":"                    if \"default-token\" in volume[\u0027name\u0027] or \"persistentVolumeClaim\" not in volume:"},{"line_number":235,"context_line":"                        continue"},{"line_number":236,"context_line":"                    volume_name \u003d volume[\u0027name\u0027]"},{"line_number":237,"context_line":"                    persistent_volume_claim \u003d volume[\u0027persistentVolumeClaim\u0027]"},{"line_number":238,"context_line":"                    claim_name \u003d persistent_volume_claim[\u0027claimName\u0027]"},{"line_number":239,"context_line":"                    pod_volumes[volume_name] \u003d claim_name"},{"line_number":240,"context_line":"            if pod_volumes:"},{"line_number":241,"context_line":"                for container in pod_containers:"},{"line_number":242,"context_line":"                    if \"volumeMounts\" not in container:"},{"line_number":243,"context_line":"                        continue"},{"line_number":244,"context_line":"                    container_volume_mounts \u003d container[\u0027volumeMounts\u0027]"},{"line_number":245,"context_line":"                    for container_volume_mount in container_volume_mounts:"},{"line_number":246,"context_line":"                        mount_name \u003d container_volume_mount[\u0027name\u0027]"},{"line_number":247,"context_line":"                        if mount_name in pod_volumes:"},{"line_number":248,"context_line":"                            mount_point \u003d container_volume_mount[\u0027mountPath\u0027]"},{"line_number":249,"context_line":"                            if pod_key not in pod_volume_map:"},{"line_number":250,"context_line":"                                pod_volume_map[pod_key] \u003d {}"},{"line_number":251,"context_line":"                                pod_volume_map[pod_key][\"pod_id\"] \u003d pod_id"},{"line_number":252,"context_line":"                                pod_volume_map[pod_key][\u0027volume_map\u0027] \u003d {}"},{"line_number":253,"context_line":"                            pod_volume_map[pod_key][\u0027volume_map\u0027][pod_volumes[mount_name]] \u003d mount_point"},{"line_number":254,"context_line":"            self.gauge(\"pod.restart_count\", pod_retry_count, pod_dimensions, hostname\u003d\"SUPPRESS\")"},{"line_number":255,"context_line":"            self.gauge(\"pod.phase\", POD_PHASE.get(pod_status[\u0027phase\u0027]), pod_dimensions, hostname\u003d\"SUPPRESS\")"},{"line_number":256,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"7ffa3b31_f94a3b53","line":253,"range":{"start_line":228,"start_character":0,"end_line":253,"end_character":104},"in_reply_to":"9ff52f3f_5d213cb4","updated":"2017-04-17 20:40:29.000000000","message":"I will break it out into another method in the new patch set. This method is doing too many things and too long :-)","commit_id":"610350356b863d7ca4be69bdc06d6868f3292ce7"},{"author":{"_account_id":15027,"name":"Michael Hoppal","email":"michael.jam.hoppal@hpe.com","username":"michael-hoppal"},"change_message_id":"23504c20eabe1f544d9a58af67225d43d467519d","unresolved":false,"context_lines":[{"line_number":279,"context_line":"        for pv_item in persistent_volumes.items():"},{"line_number":280,"context_line":"            pv_claim \u003d pv_item[0]"},{"line_number":281,"context_line":"            pvc_id \u003d pv_item[1]"},{"line_number":282,"context_line":"            pv_path \u003d self.host_path + \u0027/kubernetes.io/rbd/rbd/rbd-image-kubernetes-dynamic-pvc\u0027 + pvc_id"},{"line_number":283,"context_line":"            if os.path.exists(pv_path):"},{"line_number":284,"context_line":"                statvfs_result \u003d os.statvfs(pv_path)"},{"line_number":285,"context_line":"                f_blocks \u003d statvfs_result.f_blocks"}],"source_content_type":"text/x-python","patch_set":8,"id":"9ff52f3f_503da3b9","line":282,"range":{"start_line":282,"start_character":40,"end_line":282,"end_character":95},"updated":"2017-04-13 15:01:47.000000000","message":"so this will only work in the case of rbd based storage correct? we should make sure we document that?\n\nHow are we going to handle multiple types of persistent volume types going forward?\n\nI wonder if we break this out to another review and build on it as we learn more? \n\nWhat are your thoughts?","commit_id":"610350356b863d7ca4be69bdc06d6868f3292ce7"},{"author":{"_account_id":15027,"name":"Michael Hoppal","email":"michael.jam.hoppal@hpe.com","username":"michael-hoppal"},"change_message_id":"36da4aeb75dcc76147526b1b55525b08819de51d","unresolved":false,"context_lines":[{"line_number":279,"context_line":"        for pv_item in persistent_volumes.items():"},{"line_number":280,"context_line":"            pv_claim \u003d pv_item[0]"},{"line_number":281,"context_line":"            pvc_id \u003d pv_item[1]"},{"line_number":282,"context_line":"            pv_path \u003d self.host_path + \u0027/kubernetes.io/rbd/rbd/rbd-image-kubernetes-dynamic-pvc\u0027 + pvc_id"},{"line_number":283,"context_line":"            if os.path.exists(pv_path):"},{"line_number":284,"context_line":"                statvfs_result \u003d os.statvfs(pv_path)"},{"line_number":285,"context_line":"                f_blocks \u003d statvfs_result.f_blocks"}],"source_content_type":"text/x-python","patch_set":8,"id":"7ffa3b31_f96d9b98","line":282,"range":{"start_line":282,"start_character":40,"end_line":282,"end_character":95},"in_reply_to":"7ffa3b31_1993a7a5","updated":"2017-04-17 20:43:59.000000000","message":"yeah lets break usage out to another review and go from there","commit_id":"610350356b863d7ca4be69bdc06d6868f3292ce7"},{"author":{"_account_id":18179,"name":"Kaiyan Sheng","email":"kaiyan.sheng@hpe.com","username":"kaiyan-sheng"},"change_message_id":"1b693d2d0d839920bfb9fdc3f5c101b13d828324","unresolved":false,"context_lines":[{"line_number":279,"context_line":"        for pv_item in persistent_volumes.items():"},{"line_number":280,"context_line":"            pv_claim \u003d pv_item[0]"},{"line_number":281,"context_line":"            pvc_id \u003d pv_item[1]"},{"line_number":282,"context_line":"            pv_path \u003d self.host_path + \u0027/kubernetes.io/rbd/rbd/rbd-image-kubernetes-dynamic-pvc\u0027 + pvc_id"},{"line_number":283,"context_line":"            if os.path.exists(pv_path):"},{"line_number":284,"context_line":"                statvfs_result \u003d os.statvfs(pv_path)"},{"line_number":285,"context_line":"                f_blocks \u003d statvfs_result.f_blocks"}],"source_content_type":"text/x-python","patch_set":8,"id":"7ffa3b31_1993a7a5","line":282,"range":{"start_line":282,"start_character":40,"end_line":282,"end_character":95},"in_reply_to":"9ff52f3f_503da3b9","updated":"2017-04-17 20:40:29.000000000","message":"I think we should break this whole persistent volume storage part into a different review :-) and if it\u0027s ok I would love to spend more time to implement the more general method to get pv usage so we dont get limited on ceph/rbd.","commit_id":"610350356b863d7ca4be69bdc06d6868f3292ce7"},{"author":{"_account_id":15027,"name":"Michael Hoppal","email":"michael.jam.hoppal@hpe.com","username":"michael-hoppal"},"change_message_id":"23504c20eabe1f544d9a58af67225d43d467519d","unresolved":false,"context_lines":[{"line_number":290,"context_line":"                                      \u0027unit\u0027: \u0027percent\u0027})"},{"line_number":291,"context_line":"                self.gauge(\"pv.usage\", f_usage,"},{"line_number":292,"context_line":"                           dimensions\u003dpv_dimensions,"},{"line_number":293,"context_line":"                           hostname\u003d\"SUPPRESS\")"},{"line_number":294,"context_line":""},{"line_number":295,"context_line":"    def _report_container_limits(self, pod_containers, container_dimension_map, name2id):"},{"line_number":296,"context_line":"        for container in pod_containers:"}],"source_content_type":"text/x-python","patch_set":8,"id":"9ff52f3f_10739b17","line":293,"range":{"start_line":293,"start_character":27,"end_line":293,"end_character":46},"updated":"2017-04-13 15:01:47.000000000","message":"not your problem and would be another review but i wonder if we can suppress per an check class as all these metrics are suppressed","commit_id":"610350356b863d7ca4be69bdc06d6868f3292ce7"}],"monasca_agent/collector/checks_d/kubernetes_api.py":[{"author":{"_account_id":11809,"name":"Craig Bryant","email":"craig.bryant@hpe.com","username":"craig-bryant"},"change_message_id":"13086c8081357ccc6d7f1160938e2820d3287c04","unresolved":false,"context_lines":[{"line_number":271,"context_line":"                               \"with the error {}\".format(namespace, e))"},{"line_number":272,"context_line":"                continue"},{"line_number":273,"context_line":"            if \u0027items\u0027 not in persistent_volume_claims or not persistent_volume_claims[\u0027items\u0027]:"},{"line_number":274,"context_line":"                continue"},{"line_number":275,"context_line":"            pvc_namespace_map \u003d {}"},{"line_number":276,"context_line":"            for pvc in persistent_volume_claims[\u0027items\u0027]:"},{"line_number":277,"context_line":"                pvc_status \u003d pvc[\u0027status\u0027]"}],"source_content_type":"text/x-python","patch_set":2,"id":"ffe62b97_be122708","line":274,"range":{"start_line":274,"start_character":16,"end_line":274,"end_character":24},"updated":"2017-03-27 17:57:58.000000000","message":"Should there be a log message here? Is this an error?","commit_id":"785bd94255bd35245caf9ba1e6e02949ed8eeed0"},{"author":{"_account_id":18179,"name":"Kaiyan Sheng","email":"kaiyan.sheng@hpe.com","username":"kaiyan-sheng"},"change_message_id":"5a7fb8e5820a704e0b0a505dc460506a3e41fea7","unresolved":false,"context_lines":[{"line_number":271,"context_line":"                               \"with the error {}\".format(namespace, e))"},{"line_number":272,"context_line":"                continue"},{"line_number":273,"context_line":"            if \u0027items\u0027 not in persistent_volume_claims or not persistent_volume_claims[\u0027items\u0027]:"},{"line_number":274,"context_line":"                continue"},{"line_number":275,"context_line":"            pvc_namespace_map \u003d {}"},{"line_number":276,"context_line":"            for pvc in persistent_volume_claims[\u0027items\u0027]:"},{"line_number":277,"context_line":"                pvc_status \u003d pvc[\u0027status\u0027]"}],"source_content_type":"text/x-python","patch_set":2,"id":"ffe62b97_589bfe16","line":274,"range":{"start_line":274,"start_character":16,"end_line":274,"end_character":24},"in_reply_to":"ffe62b97_be122708","updated":"2017-03-28 15:48:35.000000000","message":"Good point! Let me look into this more!","commit_id":"785bd94255bd35245caf9ba1e6e02949ed8eeed0"}]}
