)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":9276,"name":"David Charles Kennedy","email":"david.c.kennedy@hpe.com","username":"darfed"},"change_message_id":"f8d1fac9ccf1d8799a9417436f1a819e3f836faf","unresolved":false,"context_lines":[{"line_number":17,"context_line":"https://review.openstack.org/#/c/381967/, written by"},{"line_number":18,"context_line":"Tim Buckley \u003ctimothy.jas.buckley@hpe.com\u003e"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"Add kubernetes configurations. One for creating a deamonset"},{"line_number":21,"context_line":"agent that monitors each kubernetes node. And the other for"},{"line_number":22,"context_line":"creating a deployment that monitors the kubernetes api."},{"line_number":23,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":21,"id":"3a461143_d61126ae","line":20,"updated":"2017-01-26 12:15:12.000000000","message":"Spelling: daemonset","commit_id":"a2c10a969ab84da9f85c32ad82131da263a614af"}],"Dockerfile":[{"author":{"_account_id":14517,"name":"Ryan Brandt","email":"ryan.brandt@hpe.com","username":"ryan-brandt"},"change_message_id":"4f5ff3464a036d89fc69e219acd9400125cb6540","unresolved":false,"context_lines":[{"line_number":1,"context_line":"from python:2.7"},{"line_number":2,"context_line":""},{"line_number":3,"context_line":"copy requirements.txt /home"},{"line_number":4,"context_line":"run pip install -r /home/requirements.txt"},{"line_number":5,"context_line":""},{"line_number":6,"context_line":"env OS_AUTH_URL \"http://192.168.10.6:35357/v3/\""}],"source_content_type":"text/x-dockerfile","patch_set":16,"id":"3a71b18c_0d2c5e49","line":3,"range":{"start_line":3,"start_character":0,"end_line":3,"end_character":27},"updated":"2016-12-12 19:59:02.000000000","message":"This could be a part of the full agent copy below","commit_id":"ac30ae9ac5c6e09b83a4d77e02e89f266462ff6d"},{"author":{"_account_id":14517,"name":"Ryan Brandt","email":"ryan.brandt@hpe.com","username":"ryan-brandt"},"change_message_id":"4f5ff3464a036d89fc69e219acd9400125cb6540","unresolved":false,"context_lines":[{"line_number":1,"context_line":"from python:2.7"},{"line_number":2,"context_line":""},{"line_number":3,"context_line":"copy requirements.txt /home"},{"line_number":4,"context_line":"run pip install -r /home/requirements.txt"},{"line_number":5,"context_line":""},{"line_number":6,"context_line":"env OS_AUTH_URL \"http://192.168.10.6:35357/v3/\""},{"line_number":7,"context_line":"env OS_USERNAME \"mini-mon\""}],"source_content_type":"text/x-dockerfile","patch_set":16,"id":"3a71b18c_4d265669","line":4,"range":{"start_line":4,"start_character":0,"end_line":4,"end_character":41},"updated":"2016-12-12 19:59:02.000000000","message":"could combine this with the run statements below","commit_id":"ac30ae9ac5c6e09b83a4d77e02e89f266462ff6d"},{"author":{"_account_id":14517,"name":"Ryan Brandt","email":"ryan.brandt@hpe.com","username":"ryan-brandt"},"change_message_id":"4f5ff3464a036d89fc69e219acd9400125cb6540","unresolved":false,"context_lines":[{"line_number":3,"context_line":"copy requirements.txt /home"},{"line_number":4,"context_line":"run pip install -r /home/requirements.txt"},{"line_number":5,"context_line":""},{"line_number":6,"context_line":"env OS_AUTH_URL \"http://192.168.10.6:35357/v3/\""},{"line_number":7,"context_line":"env OS_USERNAME \"mini-mon\""},{"line_number":8,"context_line":"env OS_USER_DOMAIN_NAME \"Default\""},{"line_number":9,"context_line":"env OS_PASSWORD \"password\""},{"line_number":10,"context_line":"env OS_PROJECT_NAME \"mini-mon\""},{"line_number":11,"context_line":"env OS_PROJECT_DOMAIN_NAME \"Default\""},{"line_number":12,"context_line":"env MONASCA_URL \"http://192.168.10.6:8070/v2.0\""},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"copy . /home/monasca-agent"},{"line_number":15,"context_line":"workdir /home/monasca-agent"}],"source_content_type":"text/x-dockerfile","patch_set":16,"id":"3a71b18c_4d5816fb","line":12,"range":{"start_line":6,"start_character":0,"end_line":12,"end_character":47},"updated":"2016-12-12 19:59:02.000000000","message":"These can be combined into one command to reduce cache layers\n\nenv OS_AUTH_URL\u003dhttp://192.168.10.6:35357/v3/ \\\n    OS_USERNAME\u003dmini-mon \\\n    ...","commit_id":"ac30ae9ac5c6e09b83a4d77e02e89f266462ff6d"},{"author":{"_account_id":14517,"name":"Ryan Brandt","email":"ryan.brandt@hpe.com","username":"ryan-brandt"},"change_message_id":"4f5ff3464a036d89fc69e219acd9400125cb6540","unresolved":false,"context_lines":[{"line_number":13,"context_line":""},{"line_number":14,"context_line":"copy . /home/monasca-agent"},{"line_number":15,"context_line":"workdir /home/monasca-agent"},{"line_number":16,"context_line":"run pip install ."},{"line_number":17,"context_line":"run pip install docker-py"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"cmd [\"/home/monasca-agent/docker-agent/docker.sh\"]"}],"source_content_type":"text/x-dockerfile","patch_set":16,"id":"3a71b18c_ed6722b5","line":17,"range":{"start_line":16,"start_character":0,"end_line":17,"end_character":25},"updated":"2016-12-12 19:59:02.000000000","message":"these can be combined into one line","commit_id":"ac30ae9ac5c6e09b83a4d77e02e89f266462ff6d"}],"conf.d/kubernetes.yaml.example":[{"author":{"_account_id":2419,"name":"Roland Hochmuth","email":"roland.hochmuth@hpe.com","username":"roland-hochmuth-s"},"change_message_id":"36f94d22fea93ca8f21db202a1a690475735d36a","unresolved":false,"context_lines":[{"line_number":19,"context_line":"      # custom_kubernetes_labels: [\u0027k8s-app\u0027, \u0027version\u0027]"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"      # Defaults to false. Set to true if you want to collect metrics from the kubernetes api"},{"line_number":22,"context_line":"      # collect_kubernetes_api_metrics: False"}],"source_content_type":"application/octet-stream","patch_set":3,"id":"ba5da102_29023270","line":22,"range":{"start_line":22,"start_character":8,"end_line":22,"end_character":38},"updated":"2016-11-04 14:11:45.000000000","message":"If the libvirt check we use \"enable\" for enablding/disabling specific metrics. Not sure we use collect anywhere else, so maybe switch to enable.\n\nIn the libvirt plugin we also have it written with enable as the suffix, although i prefer it as a prefix.","commit_id":"2af7e4d1d4c17b5bc30fd85be4548bbafea0788f"},{"author":{"_account_id":15027,"name":"Michael Hoppal","email":"michael.jam.hoppal@hpe.com","username":"michael-hoppal"},"change_message_id":"604fb55424597c03a39a3557d390bbffaba1729d","unresolved":false,"context_lines":[{"line_number":19,"context_line":"      # custom_kubernetes_labels: [\u0027k8s-app\u0027, \u0027version\u0027]"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"      # Defaults to false. Set to true if you want to collect metrics from the kubernetes api"},{"line_number":22,"context_line":"      # collect_kubernetes_api_metrics: False"}],"source_content_type":"application/octet-stream","patch_set":3,"id":"9a629dbe_f62f229f","line":22,"range":{"start_line":22,"start_character":8,"end_line":22,"end_character":38},"in_reply_to":"ba5da102_29023270","updated":"2016-11-07 20:27:37.000000000","message":"switching to enable, also i like prefix as well let me know if you have a problem with it differing from the libvirt plugin","commit_id":"2af7e4d1d4c17b5bc30fd85be4548bbafea0788f"}],"docs/Plugins.md":[{"author":{"_account_id":2419,"name":"Roland Hochmuth","email":"roland.hochmuth@hpe.com","username":"roland-hochmuth-s"},"change_message_id":"36f94d22fea93ca8f21db202a1a690475735d36a","unresolved":false,"context_lines":[{"line_number":1005,"context_line":""},{"line_number":1006,"context_line":"This plugin collects metrics about containers and pods on a kubernetes node. It can also be configured (optionally) to collect metrics from the kubernetes api including component statuses."},{"line_number":1007,"context_line":""},{"line_number":1008,"context_line":"It collects metrics on a kubernetes node by going to the kubelet on the node to get all pod data. Included in that is containers configured under each pod and metadata about each."},{"line_number":1009,"context_line":""},{"line_number":1010,"context_line":"It then goes to cAdvisor to get all docker container metrics and metadata associated with it. It then does a comparison of the containers collected from cAdvisor and the containers defined from the kubelet."},{"line_number":1011,"context_line":""}],"source_content_type":"text/x-markdown","patch_set":3,"id":"ba5da102_a94562b4","line":1008,"range":{"start_line":1008,"start_character":3,"end_line":1008,"end_character":11},"updated":"2016-11-04 14:11:45.000000000","message":"The plugin collects metrics on a kubernetes node by querying he Kubelet...","commit_id":"2af7e4d1d4c17b5bc30fd85be4548bbafea0788f"},{"author":{"_account_id":2419,"name":"Roland Hochmuth","email":"roland.hochmuth@hpe.com","username":"roland-hochmuth-s"},"change_message_id":"36f94d22fea93ca8f21db202a1a690475735d36a","unresolved":false,"context_lines":[{"line_number":1093,"context_line":"| container.net.out_errors | image, name, pod_name, namespace  | image, name, hostname | Total network errors on outgoing network traffic"},{"line_number":1094,"context_line":"| container.net.out_errors_sec | image, name, pod_name, namespace  | image, name, hostname | Number of network errors on outgoing network traffic per second"},{"line_number":1095,"context_line":"| container.net.out_packets | image, name, pod_name, namespace  | image, name, hostname | Total network packets sent"},{"line_number":1096,"context_line":"| container.net.out_packets_sec | image, name, pod_name, namespace  | image, name, hostname | Number of network packets sent per second"},{"line_number":1097,"context_line":""},{"line_number":1098,"context_line":""},{"line_number":1099,"context_line":"Container metrics specific to containers running under kubernetes:"}],"source_content_type":"text/x-markdown","patch_set":3,"id":"ba5da102_69d7cabf","line":1096,"updated":"2016-11-04 14:11:45.000000000","message":"I guess I had the comment in the \"docker\" plugin about the possiblity of using \"docker\" as a prefix. Here, you are using \"container\". Kubernetes support multiple container types, so I guess this makes sense, whereas in the docker plugin it is more about docker.\n\nIs the \"image\" all that relevant/useful? I\u0027m just wondering if there are any use cases where the operator will want to filter metrics based on the image.\n\nAlso, wondering if it would be beter to name \"name\" as container_name and image as image_name, if we keep them, just to clarify the name that we are interested in.","commit_id":"2af7e4d1d4c17b5bc30fd85be4548bbafea0788f"},{"author":{"_account_id":2419,"name":"Roland Hochmuth","email":"roland.hochmuth@hpe.com","username":"roland-hochmuth-s"},"change_message_id":"177b5626145418dc8049a13f5556f6ade1b42c8d","unresolved":false,"context_lines":[{"line_number":1093,"context_line":"| container.net.out_errors | image, name, pod_name, namespace  | image, name, hostname | Total network errors on outgoing network traffic"},{"line_number":1094,"context_line":"| container.net.out_errors_sec | image, name, pod_name, namespace  | image, name, hostname | Number of network errors on outgoing network traffic per second"},{"line_number":1095,"context_line":"| container.net.out_packets | image, name, pod_name, namespace  | image, name, hostname | Total network packets sent"},{"line_number":1096,"context_line":"| container.net.out_packets_sec | image, name, pod_name, namespace  | image, name, hostname | Number of network packets sent per second"},{"line_number":1097,"context_line":""},{"line_number":1098,"context_line":""},{"line_number":1099,"context_line":"Container metrics specific to containers running under kubernetes:"}],"source_content_type":"text/x-markdown","patch_set":3,"id":"ba5da102_a5ac9736","line":1096,"in_reply_to":"ba5da102_25f24770","updated":"2016-11-04 18:41:51.000000000","message":"In fact, watching the Rancher Continaer Monitoring Bakeoff, in the datadog demo, they show many graphs, such as cpu by image, memory by image, ...\n\nSo, image is often used to group by.","commit_id":"2af7e4d1d4c17b5bc30fd85be4548bbafea0788f"},{"author":{"_account_id":2419,"name":"Roland Hochmuth","email":"roland.hochmuth@hpe.com","username":"roland-hochmuth-s"},"change_message_id":"32ca19467569246054eb65a8705066337d93fcbf","unresolved":false,"context_lines":[{"line_number":1093,"context_line":"| container.net.out_errors | image, name, pod_name, namespace  | image, name, hostname | Total network errors on outgoing network traffic"},{"line_number":1094,"context_line":"| container.net.out_errors_sec | image, name, pod_name, namespace  | image, name, hostname | Number of network errors on outgoing network traffic per second"},{"line_number":1095,"context_line":"| container.net.out_packets | image, name, pod_name, namespace  | image, name, hostname | Total network packets sent"},{"line_number":1096,"context_line":"| container.net.out_packets_sec | image, name, pod_name, namespace  | image, name, hostname | Number of network packets sent per second"},{"line_number":1097,"context_line":""},{"line_number":1098,"context_line":""},{"line_number":1099,"context_line":"Container metrics specific to containers running under kubernetes:"}],"source_content_type":"text/x-markdown","patch_set":3,"id":"ba5da102_25f24770","line":1096,"in_reply_to":"ba5da102_69d7cabf","updated":"2016-11-04 18:40:04.000000000","message":"Never mind my comments on using image as a dimension. After looking at this more, I think image name will be anonymous with service or application name, such as mysql. If that is the case, then having image as a dimension, makes a lot of sense.","commit_id":"2af7e4d1d4c17b5bc30fd85be4548bbafea0788f"},{"author":{"_account_id":15027,"name":"Michael Hoppal","email":"michael.jam.hoppal@hpe.com","username":"michael-hoppal"},"change_message_id":"604fb55424597c03a39a3557d390bbffaba1729d","unresolved":false,"context_lines":[{"line_number":1093,"context_line":"| container.net.out_errors | image, name, pod_name, namespace  | image, name, hostname | Total network errors on outgoing network traffic"},{"line_number":1094,"context_line":"| container.net.out_errors_sec | image, name, pod_name, namespace  | image, name, hostname | Number of network errors on outgoing network traffic per second"},{"line_number":1095,"context_line":"| container.net.out_packets | image, name, pod_name, namespace  | image, name, hostname | Total network packets sent"},{"line_number":1096,"context_line":"| container.net.out_packets_sec | image, name, pod_name, namespace  | image, name, hostname | Number of network packets sent per second"},{"line_number":1097,"context_line":""},{"line_number":1098,"context_line":""},{"line_number":1099,"context_line":"Container metrics specific to containers running under kubernetes:"}],"source_content_type":"text/x-markdown","patch_set":3,"id":"9a629dbe_36319a0c","line":1096,"in_reply_to":"ba5da102_a5ac9736","updated":"2016-11-07 20:27:37.000000000","message":"agreed, on your first comment do you think using container_name and container_image is better then name, image?","commit_id":"2af7e4d1d4c17b5bc30fd85be4548bbafea0788f"},{"author":{"_account_id":2419,"name":"Roland Hochmuth","email":"roland.hochmuth@hpe.com","username":"roland-hochmuth-s"},"change_message_id":"36f94d22fea93ca8f21db202a1a690475735d36a","unresolved":false,"context_lines":[{"line_number":1129,"context_line":"| Metric Name | Dimensions | Semantics |"},{"line_number":1130,"context_line":"| ----------- | ---------- | --------- |"},{"line_number":1131,"context_line":"| kubernetes.api.health_status | hostname | Health status of the api"},{"line_number":1132,"context_line":"| kubernetes.component_status | component_name | Status of cluster\u0027s components"},{"line_number":1133,"context_line":""},{"line_number":1134,"context_line":""},{"line_number":1135,"context_line":"## KyotoTycoon"}],"source_content_type":"text/x-markdown","patch_set":3,"id":"ba5da102_a45e6710","line":1132,"updated":"2016-11-04 14:11:45.000000000","message":"In the Kubernetes: Up and Running book they call the Controller Services for the API Server, COntroller Manager and Scheduler and Worker Services for the Kubelet, Service Proxy and Docker. Just wondering if we should adopt a similar convention, rather than introducing a new name.\n\nShould we have two metric names:\n\nkubernetes.controller_service.status\nkubernetes.worker.service.status\n\nwith appropriate dimension names?\n\nAlso, I\u0027m wondering if we should have a \"_\" or a \".\" to before the status.","commit_id":"2af7e4d1d4c17b5bc30fd85be4548bbafea0788f"},{"author":{"_account_id":15027,"name":"Michael Hoppal","email":"michael.jam.hoppal@hpe.com","username":"michael-hoppal"},"change_message_id":"604fb55424597c03a39a3557d390bbffaba1729d","unresolved":false,"context_lines":[{"line_number":1129,"context_line":"| Metric Name | Dimensions | Semantics |"},{"line_number":1130,"context_line":"| ----------- | ---------- | --------- |"},{"line_number":1131,"context_line":"| kubernetes.api.health_status | hostname | Health status of the api"},{"line_number":1132,"context_line":"| kubernetes.component_status | component_name | Status of cluster\u0027s components"},{"line_number":1133,"context_line":""},{"line_number":1134,"context_line":""},{"line_number":1135,"context_line":"## KyotoTycoon"}],"source_content_type":"text/x-markdown","patch_set":3,"id":"9a629dbe_b6776ad3","line":1132,"in_reply_to":"ba5da102_a45e6710","updated":"2016-11-07 20:27:37.000000000","message":"let me look into this.","commit_id":"2af7e4d1d4c17b5bc30fd85be4548bbafea0788f"},{"author":{"_account_id":11809,"name":"Craig Bryant","email":"craig.bryant@hpe.com","username":"craig-bryant"},"change_message_id":"77b9d12b68c135dece1970bbf45200495b1586d9","unresolved":false,"context_lines":[{"line_number":142,"context_line":"| jenkins |  |  |"},{"line_number":143,"context_line":"| kafka_consumer |  |  |"},{"line_number":144,"context_line":"| kibana | **kibana_install_dir**/kibana.yml | Integration to Kibana |"},{"line_number":145,"context_line":"| kubernetes |  |  |"},{"line_number":146,"context_line":"| kyototycoon |  |  |"},{"line_number":147,"context_line":"| libvirt |  |  |"},{"line_number":148,"context_line":"| lighttpd |  |  |"}],"source_content_type":"text/x-markdown","patch_set":6,"id":"9a629dbe_e9fa7c42","line":145,"range":{"start_line":145,"start_character":2,"end_line":145,"end_character":12},"updated":"2016-11-09 19:57:31.000000000","message":"Shouldn\u0027t there be an entry for kubernetes_api as well?","commit_id":"4d49c90142870c6dc491f4ad5afcfa75742113a9"},{"author":{"_account_id":15027,"name":"Michael Hoppal","email":"michael.jam.hoppal@hpe.com","username":"michael-hoppal"},"change_message_id":"3214fa3a74f72457495d3aea0431b681a61599de","unresolved":false,"context_lines":[{"line_number":142,"context_line":"| jenkins |  |  |"},{"line_number":143,"context_line":"| kafka_consumer |  |  |"},{"line_number":144,"context_line":"| kibana | **kibana_install_dir**/kibana.yml | Integration to Kibana |"},{"line_number":145,"context_line":"| kubernetes |  |  |"},{"line_number":146,"context_line":"| kyototycoon |  |  |"},{"line_number":147,"context_line":"| libvirt |  |  |"},{"line_number":148,"context_line":"| lighttpd |  |  |"}],"source_content_type":"text/x-markdown","patch_set":6,"id":"9a629dbe_ff4ceac9","line":145,"range":{"start_line":145,"start_character":2,"end_line":145,"end_character":12},"in_reply_to":"9a629dbe_e9fa7c42","updated":"2016-11-09 20:28:04.000000000","message":"yes","commit_id":"4d49c90142870c6dc491f4ad5afcfa75742113a9"},{"author":{"_account_id":11809,"name":"Craig Bryant","email":"craig.bryant@hpe.com","username":"craig-bryant"},"change_message_id":"77b9d12b68c135dece1970bbf45200495b1586d9","unresolved":false,"context_lines":[{"line_number":1111,"context_line":"| 3 | Failed |"},{"line_number":1112,"context_line":"| 4 | Unknown |"},{"line_number":1113,"context_line":""},{"line_number":1114,"context_line":"## Kubernetes API "},{"line_number":1115,"context_line":""},{"line_number":1116,"context_line":"This plugin collects metrics from the kubernetes api on kubernetes components, nodes, deployments and replication controllers."},{"line_number":1117,"context_line":""}],"source_content_type":"text/x-markdown","patch_set":6,"id":"9a629dbe_09e1709a","line":1114,"range":{"start_line":1114,"start_character":16,"end_line":1114,"end_character":18},"updated":"2016-11-09 19:57:31.000000000","message":"trailing space","commit_id":"4d49c90142870c6dc491f4ad5afcfa75742113a9"},{"author":{"_account_id":15027,"name":"Michael Hoppal","email":"michael.jam.hoppal@hpe.com","username":"michael-hoppal"},"change_message_id":"3214fa3a74f72457495d3aea0431b681a61599de","unresolved":false,"context_lines":[{"line_number":1111,"context_line":"| 3 | Failed |"},{"line_number":1112,"context_line":"| 4 | Unknown |"},{"line_number":1113,"context_line":""},{"line_number":1114,"context_line":"## Kubernetes API "},{"line_number":1115,"context_line":""},{"line_number":1116,"context_line":"This plugin collects metrics from the kubernetes api on kubernetes components, nodes, deployments and replication controllers."},{"line_number":1117,"context_line":""}],"source_content_type":"text/x-markdown","patch_set":6,"id":"9a629dbe_bf56f259","line":1114,"range":{"start_line":1114,"start_character":16,"end_line":1114,"end_character":18},"in_reply_to":"9a629dbe_09e1709a","updated":"2016-11-09 20:28:04.000000000","message":"will take out","commit_id":"4d49c90142870c6dc491f4ad5afcfa75742113a9"}],"kubernetes/README.md":[{"author":{"_account_id":12133,"name":"Cindy O\u0027Neill","email":"cindy.o-neill@hpe.com","username":"oneilcin"},"change_message_id":"19d0c6b8163cfb1df4d3bfb3b66886d159e81f84","unresolved":false,"context_lines":[{"line_number":66,"context_line":""},{"line_number":67,"context_line":"    kubectl create -f kubernetes_api.yml"},{"line_number":68,"context_line":"    kubectl create -f kubernetes_daemon_set.yml"},{"line_number":69,"context_line":"    "},{"line_number":70,"context_line":"If you want to run your own docker container replace the container image from \u0027hoppalm/monasca-agent\u0027 to the image you"},{"line_number":71,"context_line":"want to use."},{"line_number":72,"context_line":""}],"source_content_type":"text/x-gfm","patch_set":13,"id":"5a74a57a_0ce39ea4","line":69,"updated":"2016-11-23 19:05:03.000000000","message":"spaces to remove in this file.","commit_id":"88b15877ae8e77d436df14385dc1909923f0192d"}],"monasca_agent/collector/checks_d/kubernetes.py":[{"author":{"_account_id":2419,"name":"Roland Hochmuth","email":"roland.hochmuth@hpe.com","username":"roland-hochmuth-s"},"change_message_id":"36f94d22fea93ca8f21db202a1a690475735d36a","unresolved":false,"context_lines":[{"line_number":3,"context_line":"import math"},{"line_number":4,"context_line":"import requests"},{"line_number":5,"context_line":""},{"line_number":6,"context_line":"from monasca_agent.collector.checks import AgentCheck"},{"line_number":7,"context_line":""},{"line_number":8,"context_line":"log \u003d logging.getLogger(__name__)"},{"line_number":9,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"ba5da102_44ae6be8","line":6,"updated":"2016-11-04 14:11:45.000000000","message":"Should import modules, not classes.","commit_id":"2af7e4d1d4c17b5bc30fd85be4548bbafea0788f"},{"author":{"_account_id":15027,"name":"Michael Hoppal","email":"michael.jam.hoppal@hpe.com","username":"michael-hoppal"},"change_message_id":"604fb55424597c03a39a3557d390bbffaba1729d","unresolved":false,"context_lines":[{"line_number":3,"context_line":"import math"},{"line_number":4,"context_line":"import requests"},{"line_number":5,"context_line":""},{"line_number":6,"context_line":"from monasca_agent.collector.checks import AgentCheck"},{"line_number":7,"context_line":""},{"line_number":8,"context_line":"log \u003d logging.getLogger(__name__)"},{"line_number":9,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"ba5da102_2d431b6e","line":6,"in_reply_to":"ba5da102_44ae6be8","updated":"2016-11-07 20:27:37.000000000","message":"got it","commit_id":"2af7e4d1d4c17b5bc30fd85be4548bbafea0788f"},{"author":{"_account_id":2419,"name":"Roland Hochmuth","email":"roland.hochmuth@hpe.com","username":"roland-hochmuth-s"},"change_message_id":"36f94d22fea93ca8f21db202a1a690475735d36a","unresolved":false,"context_lines":[{"line_number":56,"context_line":"            raise Exception(\u0027Kubernetes check only supports one configured instance.\u0027)"},{"line_number":57,"context_line":"        self.connection_timeout \u003d int(init_config.get(\u0027connection_timeout\u0027, DEFAULT_TIMEOUT))"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"    def _get_result(self, request_url, return_as_json\u003dTrue):"},{"line_number":60,"context_line":"        result \u003d requests.get(request_url, timeout\u003dself.connection_timeout)"},{"line_number":61,"context_line":"        return result.json() if return_as_json else result"},{"line_number":62,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"ba5da102_c4e7db44","line":59,"updated":"2016-11-04 14:11:45.000000000","message":"as_json would probably be a preferable shortened name","commit_id":"2af7e4d1d4c17b5bc30fd85be4548bbafea0788f"},{"author":{"_account_id":15027,"name":"Michael Hoppal","email":"michael.jam.hoppal@hpe.com","username":"michael-hoppal"},"change_message_id":"604fb55424597c03a39a3557d390bbffaba1729d","unresolved":false,"context_lines":[{"line_number":56,"context_line":"            raise Exception(\u0027Kubernetes check only supports one configured instance.\u0027)"},{"line_number":57,"context_line":"        self.connection_timeout \u003d int(init_config.get(\u0027connection_timeout\u0027, DEFAULT_TIMEOUT))"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"    def _get_result(self, request_url, return_as_json\u003dTrue):"},{"line_number":60,"context_line":"        result \u003d requests.get(request_url, timeout\u003dself.connection_timeout)"},{"line_number":61,"context_line":"        return result.json() if return_as_json else result"},{"line_number":62,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"ba5da102_8d5a674f","line":59,"in_reply_to":"ba5da102_c4e7db44","updated":"2016-11-07 20:27:37.000000000","message":"agree i like that better","commit_id":"2af7e4d1d4c17b5bc30fd85be4548bbafea0788f"},{"author":{"_account_id":2419,"name":"Roland Hochmuth","email":"roland.hochmuth@hpe.com","username":"roland-hochmuth-s"},"change_message_id":"36f94d22fea93ca8f21db202a1a690475735d36a","unresolved":false,"context_lines":[{"line_number":57,"context_line":"        self.connection_timeout \u003d int(init_config.get(\u0027connection_timeout\u0027, DEFAULT_TIMEOUT))"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"    def _get_result(self, request_url, return_as_json\u003dTrue):"},{"line_number":60,"context_line":"        result \u003d requests.get(request_url, timeout\u003dself.connection_timeout)"},{"line_number":61,"context_line":"        return result.json() if return_as_json else result"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"    def check(self, instance):"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba5da102_a4e3c732","line":60,"updated":"2016-11-04 14:11:45.000000000","message":"Are there any exceptions to handle/log?","commit_id":"2af7e4d1d4c17b5bc30fd85be4548bbafea0788f"},{"author":{"_account_id":15027,"name":"Michael Hoppal","email":"michael.jam.hoppal@hpe.com","username":"michael-hoppal"},"change_message_id":"604fb55424597c03a39a3557d390bbffaba1729d","unresolved":false,"context_lines":[{"line_number":57,"context_line":"        self.connection_timeout \u003d int(init_config.get(\u0027connection_timeout\u0027, DEFAULT_TIMEOUT))"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"    def _get_result(self, request_url, return_as_json\u003dTrue):"},{"line_number":60,"context_line":"        result \u003d requests.get(request_url, timeout\u003dself.connection_timeout)"},{"line_number":61,"context_line":"        return result.json() if return_as_json else result"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"    def check(self, instance):"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba5da102_0d4e5796","line":60,"in_reply_to":"ba5da102_a4e3c732","updated":"2016-11-07 20:27:37.000000000","message":"in all the calls to this method there is","commit_id":"2af7e4d1d4c17b5bc30fd85be4548bbafea0788f"},{"author":{"_account_id":11809,"name":"Craig Bryant","email":"craig.bryant@hpe.com","username":"craig-bryant"},"change_message_id":"77b9d12b68c135dece1970bbf45200495b1586d9","unresolved":false,"context_lines":[{"line_number":73,"context_line":"    def __init__(self, name, init_config, agent_config, instances\u003dNone):"},{"line_number":74,"context_line":"        checks.AgentCheck.__init__(self, name, init_config, agent_config, instances)"},{"line_number":75,"context_line":"        if instances is not None and len(instances) \u003e 1:"},{"line_number":76,"context_line":"            raise Exception(\u0027Kubernetes check only supports one configured instance.\u0027)"},{"line_number":77,"context_line":"        self.connection_timeout \u003d int(init_config.get(\u0027connection_timeout\u0027, DEFAULT_TIMEOUT))"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"    def _get_result(self, request_url, as_json\u003dTrue):"}],"source_content_type":"text/x-python","patch_set":6,"id":"9a629dbe_897020de","line":76,"range":{"start_line":76,"start_character":12,"end_line":76,"end_character":86},"updated":"2016-11-09 19:57:31.000000000","message":"Need to document this in Plugins.md","commit_id":"4d49c90142870c6dc491f4ad5afcfa75742113a9"},{"author":{"_account_id":11809,"name":"Craig Bryant","email":"craig.bryant@hpe.com","username":"craig-bryant"},"change_message_id":"77b9d12b68c135dece1970bbf45200495b1586d9","unresolved":false,"context_lines":[{"line_number":92,"context_line":"        try:"},{"line_number":93,"context_line":"            pods \u003d self._get_result(\"{}/pods\".format(kubelet))"},{"line_number":94,"context_line":"        except Exception as e:"},{"line_number":95,"context_line":"            self.log.error(\"Error getting data from kubelet - {}\".format(e))"},{"line_number":96,"context_line":"        else:"},{"line_number":97,"context_line":"            self._process_pods(pods[\u0027items\u0027], custom_kubernetes_labels, dimensions, container_dimension_map)"},{"line_number":98,"context_line":"            self._process_containers(cadvisor, dimensions, container_dimension_map)"}],"source_content_type":"text/x-python","patch_set":6,"id":"9a629dbe_a4718baa","line":95,"range":{"start_line":95,"start_character":17,"end_line":95,"end_character":26},"updated":"2016-11-09 19:57:31.000000000","message":"Should this be a log.exeception? We might need the extra information","commit_id":"4d49c90142870c6dc491f4ad5afcfa75742113a9"},{"author":{"_account_id":15027,"name":"Michael Hoppal","email":"michael.jam.hoppal@hpe.com","username":"michael-hoppal"},"change_message_id":"3214fa3a74f72457495d3aea0431b681a61599de","unresolved":false,"context_lines":[{"line_number":92,"context_line":"        try:"},{"line_number":93,"context_line":"            pods \u003d self._get_result(\"{}/pods\".format(kubelet))"},{"line_number":94,"context_line":"        except Exception as e:"},{"line_number":95,"context_line":"            self.log.error(\"Error getting data from kubelet - {}\".format(e))"},{"line_number":96,"context_line":"        else:"},{"line_number":97,"context_line":"            self._process_pods(pods[\u0027items\u0027], custom_kubernetes_labels, dimensions, container_dimension_map)"},{"line_number":98,"context_line":"            self._process_containers(cadvisor, dimensions, container_dimension_map)"}],"source_content_type":"text/x-python","patch_set":6,"id":"9a629dbe_df6c8637","line":95,"range":{"start_line":95,"start_character":17,"end_line":95,"end_character":26},"in_reply_to":"9a629dbe_a4718baa","updated":"2016-11-09 20:28:04.000000000","message":"sure sure","commit_id":"4d49c90142870c6dc491f4ad5afcfa75742113a9"},{"author":{"_account_id":11809,"name":"Craig Bryant","email":"craig.bryant@hpe.com","username":"craig-bryant"},"change_message_id":"77b9d12b68c135dece1970bbf45200495b1586d9","unresolved":false,"context_lines":[{"line_number":168,"context_line":"                except KeyError:"},{"line_number":169,"context_line":"                    self.log.error(\"Unable to report container limits for {}\".format(container_name))"},{"line_number":170,"context_line":"                try:"},{"line_number":171,"context_line":"                    container_requests \u003d container[\u0027resources\u0027][\u0027limits\u0027]"},{"line_number":172,"context_line":"                    if \u0027cpu\u0027 in container_requests:"},{"line_number":173,"context_line":"                        cpu_request \u003d container_requests[\u0027cpu\u0027]"},{"line_number":174,"context_line":"                        cpu_value \u003d self._convert_cpu_to_cores(cpu_request)"}],"source_content_type":"text/x-python","patch_set":6,"id":"9a629dbe_a4850b08","line":171,"range":{"start_line":171,"start_character":65,"end_line":171,"end_character":71},"updated":"2016-11-09 19:57:31.000000000","message":"Should this be requests?","commit_id":"4d49c90142870c6dc491f4ad5afcfa75742113a9"},{"author":{"_account_id":15027,"name":"Michael Hoppal","email":"michael.jam.hoppal@hpe.com","username":"michael-hoppal"},"change_message_id":"3214fa3a74f72457495d3aea0431b681a61599de","unresolved":false,"context_lines":[{"line_number":168,"context_line":"                except KeyError:"},{"line_number":169,"context_line":"                    self.log.error(\"Unable to report container limits for {}\".format(container_name))"},{"line_number":170,"context_line":"                try:"},{"line_number":171,"context_line":"                    container_requests \u003d container[\u0027resources\u0027][\u0027limits\u0027]"},{"line_number":172,"context_line":"                    if \u0027cpu\u0027 in container_requests:"},{"line_number":173,"context_line":"                        cpu_request \u003d container_requests[\u0027cpu\u0027]"},{"line_number":174,"context_line":"                        cpu_value \u003d self._convert_cpu_to_cores(cpu_request)"}],"source_content_type":"text/x-python","patch_set":6,"id":"9a629dbe_3f7bc2f6","line":171,"range":{"start_line":171,"start_character":65,"end_line":171,"end_character":71},"in_reply_to":"9a629dbe_a4850b08","updated":"2016-11-09 20:28:04.000000000","message":"opps!!!!!!","commit_id":"4d49c90142870c6dc491f4ad5afcfa75742113a9"},{"author":{"_account_id":11809,"name":"Craig Bryant","email":"craig.bryant@hpe.com","username":"craig-bryant"},"change_message_id":"77b9d12b68c135dece1970bbf45200495b1586d9","unresolved":false,"context_lines":[{"line_number":187,"context_line":"    def _convert_memory_to_bytes(self, memory_string):"},{"line_number":188,"context_line":"        if \"m\" in memory_string:"},{"line_number":189,"context_line":"            memory \u003d float(memory_string.split(\u0027m\u0027)[0])"},{"line_number":190,"context_line":"            return memory / 1000"},{"line_number":191,"context_line":"        elif \"K\" in memory_string:"},{"line_number":192,"context_line":"            memory \u003d float(memory_string.split(\u0027K\u0027)[0])"},{"line_number":193,"context_line":"            if \"i\" in memory_string:"}],"source_content_type":"text/x-python","patch_set":6,"id":"9a629dbe_44dfcf0c","line":190,"range":{"start_line":190,"start_character":26,"end_line":190,"end_character":27},"updated":"2016-11-09 19:57:31.000000000","message":"Is this really /? Seems like it should be *","commit_id":"4d49c90142870c6dc491f4ad5afcfa75742113a9"},{"author":{"_account_id":15027,"name":"Michael Hoppal","email":"michael.jam.hoppal@hpe.com","username":"michael-hoppal"},"change_message_id":"3214fa3a74f72457495d3aea0431b681a61599de","unresolved":false,"context_lines":[{"line_number":187,"context_line":"    def _convert_memory_to_bytes(self, memory_string):"},{"line_number":188,"context_line":"        if \"m\" in memory_string:"},{"line_number":189,"context_line":"            memory \u003d float(memory_string.split(\u0027m\u0027)[0])"},{"line_number":190,"context_line":"            return memory / 1000"},{"line_number":191,"context_line":"        elif \"K\" in memory_string:"},{"line_number":192,"context_line":"            memory \u003d float(memory_string.split(\u0027K\u0027)[0])"},{"line_number":193,"context_line":"            if \"i\" in memory_string:"}],"source_content_type":"text/x-python","patch_set":6,"id":"9a629dbe_5f1956d6","line":190,"range":{"start_line":190,"start_character":26,"end_line":190,"end_character":27},"in_reply_to":"9a629dbe_44dfcf0c","updated":"2016-11-09 20:28:04.000000000","message":"yes it is / 1000 it is milli","commit_id":"4d49c90142870c6dc491f4ad5afcfa75742113a9"},{"author":{"_account_id":11809,"name":"Craig Bryant","email":"craig.bryant@hpe.com","username":"craig-bryant"},"change_message_id":"77b9d12b68c135dece1970bbf45200495b1586d9","unresolved":false,"context_lines":[{"line_number":194,"context_line":"                return memory * 1024"},{"line_number":195,"context_line":"            return float(memory) * 1000"},{"line_number":196,"context_line":"        elif \"M\" in memory_string:"},{"line_number":197,"context_line":"            memory \u003d float(memory_string.split(\u0027M\u0027)[0])"},{"line_number":198,"context_line":"            if \"i\" in memory_string:"},{"line_number":199,"context_line":"                return memory * math.pow(1024, 2)"},{"line_number":200,"context_line":"            return float(memory) * math.pow(1000, 2)"},{"line_number":201,"context_line":"        elif \"G\" in memory_string:"},{"line_number":202,"context_line":"            memory \u003d float(memory_string.split(\u0027G\u0027)[0])"},{"line_number":203,"context_line":"            if \"i\" in memory_string:"}],"source_content_type":"text/x-python","patch_set":6,"id":"9a629dbe_e4c9c35a","line":200,"range":{"start_line":197,"start_character":0,"end_line":200,"end_character":52},"updated":"2016-11-09 19:57:31.000000000","message":"This code is repeated. It should be a method","commit_id":"4d49c90142870c6dc491f4ad5afcfa75742113a9"},{"author":{"_account_id":15027,"name":"Michael Hoppal","email":"michael.jam.hoppal@hpe.com","username":"michael-hoppal"},"change_message_id":"3214fa3a74f72457495d3aea0431b681a61599de","unresolved":false,"context_lines":[{"line_number":194,"context_line":"                return memory * 1024"},{"line_number":195,"context_line":"            return float(memory) * 1000"},{"line_number":196,"context_line":"        elif \"M\" in memory_string:"},{"line_number":197,"context_line":"            memory \u003d float(memory_string.split(\u0027M\u0027)[0])"},{"line_number":198,"context_line":"            if \"i\" in memory_string:"},{"line_number":199,"context_line":"                return memory * math.pow(1024, 2)"},{"line_number":200,"context_line":"            return float(memory) * math.pow(1000, 2)"},{"line_number":201,"context_line":"        elif \"G\" in memory_string:"},{"line_number":202,"context_line":"            memory \u003d float(memory_string.split(\u0027G\u0027)[0])"},{"line_number":203,"context_line":"            if \"i\" in memory_string:"}],"source_content_type":"text/x-python","patch_set":6,"id":"9a629dbe_9f0f6e87","line":200,"range":{"start_line":197,"start_character":0,"end_line":200,"end_character":52},"in_reply_to":"9a629dbe_e4c9c35a","updated":"2016-11-09 20:28:04.000000000","message":"good call will change","commit_id":"4d49c90142870c6dc491f4ad5afcfa75742113a9"},{"author":{"_account_id":14517,"name":"Ryan Brandt","email":"ryan.brandt@hpe.com","username":"ryan-brandt"},"change_message_id":"4f5ff3464a036d89fc69e219acd9400125cb6540","unresolved":false,"context_lines":[{"line_number":124,"context_line":"        if not self.host:"},{"line_number":125,"context_line":"            self.host \u003d instance.get(\u0027host\u0027)"},{"line_number":126,"context_line":"            derive_host \u003d instance.get(\u0027derive_host\u0027)"},{"line_number":127,"context_line":"            if not self.host:"},{"line_number":128,"context_line":"                if not derive_host:"},{"line_number":129,"context_line":"                    raise Exception(\"host or derive host must be set\")"},{"line_number":130,"context_line":"                else:"},{"line_number":131,"context_line":"                    self.host \u003d self._get_host()"}],"source_content_type":"text/x-python","patch_set":16,"id":"3a71b18c_988a35be","line":128,"range":{"start_line":127,"start_character":12,"end_line":128,"end_character":35},"updated":"2016-12-12 19:59:02.000000000","message":"can combine these","commit_id":"ac30ae9ac5c6e09b83a4d77e02e89f266462ff6d"},{"author":{"_account_id":14517,"name":"Ryan Brandt","email":"ryan.brandt@hpe.com","username":"ryan-brandt"},"change_message_id":"4f5ff3464a036d89fc69e219acd9400125cb6540","unresolved":false,"context_lines":[{"line_number":137,"context_line":"        dimensions \u003d self._set_dimensions(None, instance)"},{"line_number":138,"context_line":"        # Remove hostname from dimensions as the majority of the metrics are not tied to the hostname."},{"line_number":139,"context_line":"        del dimensions[\u0027hostname\u0027]"},{"line_number":140,"context_line":"        kubelet_health_status \u003d self._get_api_health(\"kubelet\", \"{}/healthz\".format(kubelet))"},{"line_number":141,"context_line":"        self.gauge(\"kubelet.health_status\", 0 if kubelet_health_status else 1, dimensions\u003ddimensions)"},{"line_number":142,"context_line":"        try:"},{"line_number":143,"context_line":"            pods \u003d self._get_result(\"{}/pods\".format(kubelet))"}],"source_content_type":"text/x-python","patch_set":16,"id":"1a6eadb0_47acbeed","line":140,"range":{"start_line":140,"start_character":8,"end_line":140,"end_character":29},"updated":"2016-12-12 19:59:02.000000000","message":"This name is confusing since it stores a boolean","commit_id":"ac30ae9ac5c6e09b83a4d77e02e89f266462ff6d"},{"author":{"_account_id":14517,"name":"Ryan Brandt","email":"ryan.brandt@hpe.com","username":"ryan-brandt"},"change_message_id":"4f5ff3464a036d89fc69e219acd9400125cb6540","unresolved":false,"context_lines":[{"line_number":261,"context_line":"            return 4"},{"line_number":262,"context_line":""},{"line_number":263,"context_line":"    def _get_pod_dimensions(self, pod_metadata, kubernetes_labels):"},{"line_number":264,"context_line":"        pod_name \u003d pod_metadata[\u0027name\u0027]"},{"line_number":265,"context_line":"        pod_dimensions \u003d {\u0027pod_name\u0027: pod_name, \u0027namespace\u0027: pod_metadata[\u0027namespace\u0027]}"},{"line_number":266,"context_line":"        if \"labels\" in pod_metadata:"},{"line_number":267,"context_line":"            pod_labels \u003d pod_metadata[\u0027labels\u0027]"}],"source_content_type":"text/x-python","patch_set":16,"id":"1a6eadb0_d59f8fb2","line":264,"range":{"start_line":264,"start_character":8,"end_line":264,"end_character":39},"updated":"2016-12-12 19:59:02.000000000","message":"this could be added to the line below as with namespace","commit_id":"ac30ae9ac5c6e09b83a4d77e02e89f266462ff6d"},{"author":{"_account_id":9276,"name":"David Charles Kennedy","email":"david.c.kennedy@hpe.com","username":"darfed"},"change_message_id":"f8d1fac9ccf1d8799a9417436f1a819e3f836faf","unresolved":false,"context_lines":[{"line_number":81,"context_line":""},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"class Kubernetes(checks.AgentCheck):"},{"line_number":84,"context_line":"    \"\"\"Queries Kubelet for metadata/health data and then Cadvsior for container metrics."},{"line_number":85,"context_line":"    \"\"\""},{"line_number":86,"context_line":"    def __init__(self, name, init_config, agent_config, instances\u003dNone):"},{"line_number":87,"context_line":"        checks.AgentCheck.__init__(self, name, init_config, agent_config, instances)"}],"source_content_type":"text/x-python","patch_set":21,"id":"3a461143_d12bf02e","line":84,"range":{"start_line":84,"start_character":57,"end_line":84,"end_character":65},"updated":"2017-01-26 12:15:12.000000000","message":"Spelling: Cadvisor","commit_id":"a2c10a969ab84da9f85c32ad82131da263a614af"}],"monasca_agent/collector/checks_d/kubernetes_api.py":[{"author":{"_account_id":14517,"name":"Ryan Brandt","email":"ryan.brandt@hpe.com","username":"ryan-brandt"},"change_message_id":"4f5ff3464a036d89fc69e219acd9400125cb6540","unresolved":false,"context_lines":[{"line_number":72,"context_line":"        dimensions \u003d self._set_dimensions(None, instance)"},{"line_number":73,"context_line":"        # Remove hostname from dimensions as the majority of the metrics are not tied to the hostname."},{"line_number":74,"context_line":"        del dimensions[\u0027hostname\u0027]"},{"line_number":75,"context_line":"        kubernetes_api_health \u003d self._get_api_health(\"kubernetes_api\", \"{}/healthz\".format(self.kubernetes_api_url))"},{"line_number":76,"context_line":"        self.gauge(\"kubernetes.api.health_status\", 0 if kubernetes_api_health else 1, dimensions,"},{"line_number":77,"context_line":"                   hostname\u003d\"SUPPRESS\")"},{"line_number":78,"context_line":"        self._report_cluster_component_statuses(dimensions)"}],"source_content_type":"text/x-python","patch_set":16,"id":"1a6eadb0_0bb488f0","line":75,"range":{"start_line":75,"start_character":8,"end_line":75,"end_character":29},"updated":"2016-12-12 19:59:02.000000000","message":"This name seems slightly confusing given the value is a boolean","commit_id":"ac30ae9ac5c6e09b83a4d77e02e89f266462ff6d"}],"monasca_agent/common/aggregator.py":[{"author":{"_account_id":14273,"name":"Joe Keen","email":"joe.keen@hpe.com","username":"jkeen"},"change_message_id":"5142a1f1ea808281e134cf6c4326d92cb6be9582","unresolved":false,"context_lines":[{"line_number":166,"context_line":""},{"line_number":167,"context_line":"        hostname_to_post \u003d self.get_hostname_to_post(hostname)"},{"line_number":168,"context_line":""},{"line_number":169,"context_line":"        dimensions_copy \u003d dimensions.copy()"},{"line_number":170,"context_line":""},{"line_number":171,"context_line":"        if \u0027hostname\u0027 not in dimensions_copy and hostname_to_post:"},{"line_number":172,"context_line":"            dimensions_copy.update({\u0027hostname\u0027: hostname_to_post})"}],"source_content_type":"text/x-python","patch_set":14,"id":"5a74a57a_6d9270a1","line":169,"range":{"start_line":169,"start_character":8,"end_line":169,"end_character":43},"updated":"2016-11-29 20:17:12.000000000","message":"I don\u0027t think this should be part of this patch set.  We\u0027re making a change in behaviour here that effects all plugins so it should be a separate patch we can test independent of the Kubernetes plugin.","commit_id":"39a962c7029ad18ff899b1c1f9356016e8e604ca"}]}
