)]}'
{"conf.d/supervisord.yaml.example":[{"author":{"_account_id":11809,"name":"Craig Bryant","email":"craig.bryant@hpe.com","username":"craig-bryant"},"change_message_id":"c193e63b773ba2e8f7b24a4ca52dd9d3c6deb7bb","unresolved":false,"context_lines":[{"line_number":47,"context_line":"#     port: 9002"},{"line_number":48,"context_line":"#   - name: server2"},{"line_number":49,"context_line":"#     socket: unix:///var/run//supervisor.sock"},{"line_number":50,"context_line":"#     host: http://127.0.0.1        # Optional. Defaults to http://127.0.0.1"}],"source_content_type":"application/octet-stream","patch_set":5,"id":"da6ed579_5607d517","line":50,"range":{"start_line":50,"start_character":12,"end_line":50,"end_character":28},"updated":"2016-01-14 02:23:01.000000000","message":"Why is it localhost above and then have a protocol in this example?","commit_id":"955f69ebf8b46e80acf42cf6aafdca15e0cb5453"},{"author":{"_account_id":13771,"name":"Davide Agnello","email":"dagnello@hp.com","username":"dagnello"},"change_message_id":"b2d58bbe6da5eaf4ddb139a0d4f9179a5d28af6f","unresolved":false,"context_lines":[{"line_number":47,"context_line":"#     port: 9002"},{"line_number":48,"context_line":"#   - name: server2"},{"line_number":49,"context_line":"#     socket: unix:///var/run//supervisor.sock"},{"line_number":50,"context_line":"#     host: http://127.0.0.1        # Optional. Defaults to http://127.0.0.1"}],"source_content_type":"application/octet-stream","patch_set":5,"id":"da6ed579_4cf5d854","line":50,"range":{"start_line":50,"start_character":12,"end_line":50,"end_character":28},"in_reply_to":"da6ed579_5607d517","updated":"2016-01-14 17:08:38.000000000","message":"this is the host format if a socket connection is configured.   this was not changed from DD\u0027s version.","commit_id":"955f69ebf8b46e80acf42cf6aafdca15e0cb5453"},{"author":{"_account_id":11809,"name":"Craig Bryant","email":"craig.bryant@hpe.com","username":"craig-bryant"},"change_message_id":"bb0ad7cb0ff2396251a3020cb9c9c0d1d35f904b","unresolved":false,"context_lines":[{"line_number":32,"context_line":"#"},{"line_number":33,"context_line":"#       [unix_http_server]"},{"line_number":34,"context_line":"#       file\u003d/var/run/supervisor.sock"},{"line_number":35,"context_line":"#       chmod\u003d777"},{"line_number":36,"context_line":"#"},{"line_number":37,"context_line":"#  Reload supervisor, specify the inet or unix socket server information"},{"line_number":38,"context_line":"#  in this yaml file along with an optional list of the processes you want"}],"source_content_type":"application/octet-stream","patch_set":10,"id":"9a68dd71_a2ef4faf","line":35,"range":{"start_line":35,"start_character":14,"end_line":35,"end_character":17},"updated":"2016-01-21 00:53:51.000000000","message":"Maybe 774 or 775 would be a better example","commit_id":"a1bfb6d82f00b1d7f4a0d018959ef5ab1885d466"},{"author":{"_account_id":11809,"name":"Craig Bryant","email":"craig.bryant@hpe.com","username":"craig-bryant"},"change_message_id":"bb0ad7cb0ff2396251a3020cb9c9c0d1d35f904b","unresolved":false,"context_lines":[{"line_number":45,"context_line":"init_config:"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"instances:"},{"line_number":48,"context_line":"#     - name: server0    # Required. An arbitrary name to identify the supervisord server"},{"line_number":49,"context_line":"#     host: localhost  # Optional. Defaults to localhost. The host where supervisord server is running"},{"line_number":50,"context_line":"#     port: 9001       # Optional. Defaults to 9001. The port number."},{"line_number":51,"context_line":"#     user: user       # Optional. Required only if a username is configured."}],"source_content_type":"application/octet-stream","patch_set":10,"id":"9a68dd71_4204537d","line":48,"range":{"start_line":48,"start_character":6,"end_line":48,"end_character":21},"updated":"2016-01-21 00:53:51.000000000","message":"This entry needs to be outdented 2 spaces","commit_id":"a1bfb6d82f00b1d7f4a0d018959ef5ab1885d466"},{"author":{"_account_id":13771,"name":"Davide Agnello","email":"dagnello@hp.com","username":"dagnello"},"change_message_id":"22b9f5ddee623be8625958e22fad3a43b556ff8b","unresolved":false,"context_lines":[{"line_number":45,"context_line":"init_config:"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"instances:"},{"line_number":48,"context_line":"#     - name: server0    # Required. An arbitrary name to identify the supervisord server"},{"line_number":49,"context_line":"#     host: localhost  # Optional. Defaults to localhost. The host where supervisord server is running"},{"line_number":50,"context_line":"#     port: 9001       # Optional. Defaults to 9001. The port number."},{"line_number":51,"context_line":"#     user: user       # Optional. Required only if a username is configured."}],"source_content_type":"application/octet-stream","patch_set":10,"id":"9a68dd71_e0299138","line":48,"range":{"start_line":48,"start_character":6,"end_line":48,"end_character":21},"in_reply_to":"9a68dd71_4204537d","updated":"2016-01-21 20:05:12.000000000","message":"Done","commit_id":"a1bfb6d82f00b1d7f4a0d018959ef5ab1885d466"}],"monasca_agent/collector/checks_d/supervisord.py":[{"author":{"_account_id":11809,"name":"Craig Bryant","email":"craig.bryant@hpe.com","username":"craig-bryant"},"change_message_id":"c193e63b773ba2e8f7b24a4ca52dd9d3c6deb7bb","unresolved":false,"context_lines":[{"line_number":144,"context_line":"            count_by_status[status] +\u003d 1"},{"line_number":145,"context_line":"            process_details \u003d {\u0027process_details\u0027: self._build_message(proc)}"},{"line_number":146,"context_line":"            self.gauge(PROCESS_SERVICE_CHECK, PROCESS_STATE[status],"},{"line_number":147,"context_line":"                       dimensions\u003ddimensions, value_meta\u003dprocess_details)"},{"line_number":148,"context_line":""},{"line_number":149,"context_line":"            # Report Uptime"},{"line_number":150,"context_line":"            uptime \u003d self._extract_uptime(proc)"}],"source_content_type":"text/x-python","patch_set":5,"id":"da6ed579_d660a5d1","line":147,"range":{"start_line":147,"start_character":46,"end_line":147,"end_character":72},"updated":"2016-01-14 02:23:01.000000000","message":"This is a huge amount of data to be adding to each measurement. Is this really needed to be put in the metrics database? Measurements are collect twice a minute. Seems more like data for a log file.","commit_id":"955f69ebf8b46e80acf42cf6aafdca15e0cb5453"},{"author":{"_account_id":13771,"name":"Davide Agnello","email":"dagnello@hp.com","username":"dagnello"},"change_message_id":"b2d58bbe6da5eaf4ddb139a0d4f9179a5d28af6f","unresolved":false,"context_lines":[{"line_number":144,"context_line":"            count_by_status[status] +\u003d 1"},{"line_number":145,"context_line":"            process_details \u003d {\u0027process_details\u0027: self._build_message(proc)}"},{"line_number":146,"context_line":"            self.gauge(PROCESS_SERVICE_CHECK, PROCESS_STATE[status],"},{"line_number":147,"context_line":"                       dimensions\u003ddimensions, value_meta\u003dprocess_details)"},{"line_number":148,"context_line":""},{"line_number":149,"context_line":"            # Report Uptime"},{"line_number":150,"context_line":"            uptime \u003d self._extract_uptime(proc)"}],"source_content_type":"text/x-python","patch_set":5,"id":"da6ed579_0c01206a","line":147,"range":{"start_line":147,"start_character":46,"end_line":147,"end_character":72},"in_reply_to":"da6ed579_d660a5d1","updated":"2016-01-14 17:08:38.000000000","message":"ok, if that is too much data I can move these to INFO log instead.","commit_id":"955f69ebf8b46e80acf42cf6aafdca15e0cb5453"},{"author":{"_account_id":13771,"name":"Davide Agnello","email":"dagnello@hp.com","username":"dagnello"},"change_message_id":"88a6b9fee33e40025f202a2203ebdfe706834ae8","unresolved":false,"context_lines":[{"line_number":157,"context_line":"            count_by_status[status] +\u003d 1"},{"line_number":158,"context_line":"            msg \u003d self._build_message(proc)"},{"line_number":159,"context_line":"            self.log.info(\u0027process details: %s\u0027 % msg)"},{"line_number":160,"context_line":"            self.gauge(PROCESS_SERVICE_CHECK, PROCESS_STATE[status],"},{"line_number":161,"context_line":"                       dimensions\u003ddimensions)"},{"line_number":162,"context_line":""},{"line_number":163,"context_line":"            # Report Uptime"}],"source_content_type":"text/x-python","patch_set":7,"id":"ba63e191_9d964593","line":160,"range":{"start_line":160,"start_character":17,"end_line":160,"end_character":22},"updated":"2016-01-18 22:50:27.000000000","message":"should this be optional based on configuration of this check?  for example when monitoring many processes by count based on states (up, down, unknown) process specific checks are not needed but they will currently be sent anyways regardless.  This can generate considerable amounts of data per check.","commit_id":"bffd1f7c84195c0f53adc24fe2b4934fb10b4379"},{"author":{"_account_id":13771,"name":"Davide Agnello","email":"dagnello@hp.com","username":"dagnello"},"change_message_id":"62d80a15e3f97dfba98029c5ccfd2e0df6a2d20e","unresolved":false,"context_lines":[{"line_number":157,"context_line":"            count_by_status[status] +\u003d 1"},{"line_number":158,"context_line":"            msg \u003d self._build_message(proc)"},{"line_number":159,"context_line":"            self.log.info(\u0027process details: %s\u0027 % msg)"},{"line_number":160,"context_line":"            self.gauge(PROCESS_SERVICE_CHECK, PROCESS_STATE[status],"},{"line_number":161,"context_line":"                       dimensions\u003ddimensions)"},{"line_number":162,"context_line":""},{"line_number":163,"context_line":"            # Report Uptime"}],"source_content_type":"text/x-python","patch_set":7,"id":"ba63e191_b7420f3d","line":160,"range":{"start_line":160,"start_character":17,"end_line":160,"end_character":22},"in_reply_to":"ba63e191_04af2e95","updated":"2016-01-19 18:10:36.000000000","message":"ok, the default behavior can be the same as what DD give you and have a configuration setting to disable these if they are not needed.","commit_id":"bffd1f7c84195c0f53adc24fe2b4934fb10b4379"},{"author":{"_account_id":15027,"name":"Michael Hoppal","email":"michael.jam.hoppal@hpe.com","username":"michael-hoppal"},"change_message_id":"c57f6058f032bfd41ddb1c0c7581e814a0598564","unresolved":false,"context_lines":[{"line_number":157,"context_line":"            count_by_status[status] +\u003d 1"},{"line_number":158,"context_line":"            msg \u003d self._build_message(proc)"},{"line_number":159,"context_line":"            self.log.info(\u0027process details: %s\u0027 % msg)"},{"line_number":160,"context_line":"            self.gauge(PROCESS_SERVICE_CHECK, PROCESS_STATE[status],"},{"line_number":161,"context_line":"                       dimensions\u003ddimensions)"},{"line_number":162,"context_line":""},{"line_number":163,"context_line":"            # Report Uptime"}],"source_content_type":"text/x-python","patch_set":7,"id":"ba63e191_04af2e95","line":160,"range":{"start_line":160,"start_character":17,"end_line":160,"end_character":22},"in_reply_to":"ba63e191_9d964593","updated":"2016-01-19 17:29:06.000000000","message":"That is a good point. I agree with you it should be optional in case the end user doesn\u0027t want the extra data. \n\nAlthough I do think this should be the default to grab the state/uptime by process. The reason I say that is if the count is not what we are looking for each state it would be nice to see which processes are down, up, or unknown in that count.","commit_id":"bffd1f7c84195c0f53adc24fe2b4934fb10b4379"},{"author":{"_account_id":13771,"name":"Davide Agnello","email":"dagnello@hp.com","username":"dagnello"},"change_message_id":"88a6b9fee33e40025f202a2203ebdfe706834ae8","unresolved":false,"context_lines":[{"line_number":162,"context_line":""},{"line_number":163,"context_line":"            # Report Uptime"},{"line_number":164,"context_line":"            uptime \u003d self._extract_uptime(proc)"},{"line_number":165,"context_line":"            self.gauge(PROCESS_UP_TIME_CHECK, uptime, dimensions\u003ddimensions)"},{"line_number":166,"context_line":"            dimensions.pop(PROCESS_TAG, None)"},{"line_number":167,"context_line":""},{"line_number":168,"context_line":"        # Report counts by status"}],"source_content_type":"text/x-python","patch_set":7,"id":"ba63e191_3dee3923","line":165,"range":{"start_line":165,"start_character":17,"end_line":165,"end_character":22},"updated":"2016-01-18 22:50:27.000000000","message":"same as above","commit_id":"bffd1f7c84195c0f53adc24fe2b4934fb10b4379"},{"author":{"_account_id":11809,"name":"Craig Bryant","email":"craig.bryant@hpe.com","username":"craig-bryant"},"change_message_id":"bb0ad7cb0ff2396251a3020cb9c9c0d1d35f904b","unresolved":false,"context_lines":[{"line_number":54,"context_line":"}"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"SERVER_STATE \u003d {"},{"line_number":57,"context_line":"    \u0027DOWN\u0027: 0,"},{"line_number":58,"context_line":"    \u0027UP\u0027: 1"},{"line_number":59,"context_line":"}"},{"line_number":60,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"9a68dd71_e23c6731","line":57,"range":{"start_line":57,"start_character":12,"end_line":57,"end_character":13},"updated":"2016-01-21 00:53:51.000000000","message":"The monasca convention is that 0 is UP, 1 is DOWN","commit_id":"a1bfb6d82f00b1d7f4a0d018959ef5ab1885d466"},{"author":{"_account_id":2419,"name":"Roland Hochmuth","email":"roland.hochmuth@hpe.com","username":"roland-hochmuth-s"},"change_message_id":"56ad0a5b5fb0558f6e0520cd4cf74c3213261a96","unresolved":false,"context_lines":[{"line_number":54,"context_line":"}"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"SERVER_STATE \u003d {"},{"line_number":57,"context_line":"    \u0027DOWN\u0027: 0,"},{"line_number":58,"context_line":"    \u0027UP\u0027: 1"},{"line_number":59,"context_line":"}"},{"line_number":60,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"9a68dd71_ef5e5ae8","line":57,"range":{"start_line":57,"start_character":12,"end_line":57,"end_character":13},"in_reply_to":"9a68dd71_e23c6731","updated":"2016-01-21 20:42:08.000000000","message":"Done","commit_id":"a1bfb6d82f00b1d7f4a0d018959ef5ab1885d466"},{"author":{"_account_id":13771,"name":"Davide Agnello","email":"dagnello@hp.com","username":"dagnello"},"change_message_id":"22b9f5ddee623be8625958e22fad3a43b556ff8b","unresolved":false,"context_lines":[{"line_number":54,"context_line":"}"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"SERVER_STATE \u003d {"},{"line_number":57,"context_line":"    \u0027DOWN\u0027: 0,"},{"line_number":58,"context_line":"    \u0027UP\u0027: 1"},{"line_number":59,"context_line":"}"},{"line_number":60,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"9a68dd71_00a2a5ae","line":57,"range":{"start_line":57,"start_character":12,"end_line":57,"end_character":13},"in_reply_to":"9a68dd71_e23c6731","updated":"2016-01-21 20:05:12.000000000","message":"ok","commit_id":"a1bfb6d82f00b1d7f4a0d018959ef5ab1885d466"},{"author":{"_account_id":11809,"name":"Craig Bryant","email":"craig.bryant@hpe.com","username":"craig-bryant"},"change_message_id":"bb0ad7cb0ff2396251a3020cb9c9c0d1d35f904b","unresolved":false,"context_lines":[{"line_number":132,"context_line":"        # Filter monitored processes on configuration directives"},{"line_number":133,"context_line":"        proc_regex \u003d instance.get(\u0027proc_regex\u0027, [])"},{"line_number":134,"context_line":"        if not isinstance(proc_regex, list):"},{"line_number":135,"context_line":"            raise Exception(\"Empty or invalid proc_regex.\")"},{"line_number":136,"context_line":""},{"line_number":137,"context_line":"        proc_names \u003d instance.get(\u0027proc_names\u0027, [])"},{"line_number":138,"context_line":"        if not isinstance(proc_names, list):"}],"source_content_type":"text/x-python","patch_set":10,"id":"9a68dd71_02d17bcd","line":135,"range":{"start_line":135,"start_character":28,"end_line":135,"end_character":58},"updated":"2016-01-21 00:53:51.000000000","message":"Empty proc_regex is OK, this check is just whether it is a list","commit_id":"a1bfb6d82f00b1d7f4a0d018959ef5ab1885d466"},{"author":{"_account_id":13771,"name":"Davide Agnello","email":"dagnello@hp.com","username":"dagnello"},"change_message_id":"22b9f5ddee623be8625958e22fad3a43b556ff8b","unresolved":false,"context_lines":[{"line_number":132,"context_line":"        # Filter monitored processes on configuration directives"},{"line_number":133,"context_line":"        proc_regex \u003d instance.get(\u0027proc_regex\u0027, [])"},{"line_number":134,"context_line":"        if not isinstance(proc_regex, list):"},{"line_number":135,"context_line":"            raise Exception(\"Empty or invalid proc_regex.\")"},{"line_number":136,"context_line":""},{"line_number":137,"context_line":"        proc_names \u003d instance.get(\u0027proc_names\u0027, [])"},{"line_number":138,"context_line":"        if not isinstance(proc_names, list):"}],"source_content_type":"text/x-python","patch_set":10,"id":"9a68dd71_f404ef7e","line":135,"range":{"start_line":135,"start_character":28,"end_line":135,"end_character":58},"in_reply_to":"9a68dd71_02d17bcd","updated":"2016-01-21 20:05:12.000000000","message":"Done","commit_id":"a1bfb6d82f00b1d7f4a0d018959ef5ab1885d466"},{"author":{"_account_id":11809,"name":"Craig Bryant","email":"craig.bryant@hpe.com","username":"craig-bryant"},"change_message_id":"bb0ad7cb0ff2396251a3020cb9c9c0d1d35f904b","unresolved":false,"context_lines":[{"line_number":136,"context_line":""},{"line_number":137,"context_line":"        proc_names \u003d instance.get(\u0027proc_names\u0027, [])"},{"line_number":138,"context_line":"        if not isinstance(proc_names, list):"},{"line_number":139,"context_line":"            raise Exception(\"Empty or invalid proc_names.\")"},{"line_number":140,"context_line":""},{"line_number":141,"context_line":"        # Collect information on each monitored process"},{"line_number":142,"context_line":"        monitored_processes \u003d []"}],"source_content_type":"text/x-python","patch_set":10,"id":"9a68dd71_a24bcfaf","line":139,"range":{"start_line":139,"start_character":29,"end_line":139,"end_character":57},"updated":"2016-01-21 00:53:51.000000000","message":"Empty proc_names is OK, this check is just whether it is a list","commit_id":"a1bfb6d82f00b1d7f4a0d018959ef5ab1885d466"},{"author":{"_account_id":13771,"name":"Davide Agnello","email":"dagnello@hp.com","username":"dagnello"},"change_message_id":"22b9f5ddee623be8625958e22fad3a43b556ff8b","unresolved":false,"context_lines":[{"line_number":136,"context_line":""},{"line_number":137,"context_line":"        proc_names \u003d instance.get(\u0027proc_names\u0027, [])"},{"line_number":138,"context_line":"        if not isinstance(proc_names, list):"},{"line_number":139,"context_line":"            raise Exception(\"Empty or invalid proc_names.\")"},{"line_number":140,"context_line":""},{"line_number":141,"context_line":"        # Collect information on each monitored process"},{"line_number":142,"context_line":"        monitored_processes \u003d []"}],"source_content_type":"text/x-python","patch_set":10,"id":"9a68dd71_d401ab6b","line":139,"range":{"start_line":139,"start_character":29,"end_line":139,"end_character":57},"in_reply_to":"9a68dd71_a24bcfaf","updated":"2016-01-21 20:05:12.000000000","message":"Done","commit_id":"a1bfb6d82f00b1d7f4a0d018959ef5ab1885d466"},{"author":{"_account_id":11809,"name":"Craig Bryant","email":"craig.bryant@hpe.com","username":"craig-bryant"},"change_message_id":"bb0ad7cb0ff2396251a3020cb9c9c0d1d35f904b","unresolved":false,"context_lines":[{"line_number":146,"context_line":"            monitored_processes \u003d processes"},{"line_number":147,"context_line":""},{"line_number":148,"context_line":"        for pattern, process in itertools.product(proc_regex, processes):"},{"line_number":149,"context_line":"            if re.match(pattern, process[\u0027name\u0027]) and process not in monitored_processes:"},{"line_number":150,"context_line":"                monitored_processes.append(process)"},{"line_number":151,"context_line":""},{"line_number":152,"context_line":"        for process in processes:"}],"source_content_type":"text/x-python","patch_set":10,"id":"9a68dd71_62f39774","line":149,"range":{"start_line":149,"start_character":12,"end_line":149,"end_character":89},"updated":"2016-01-21 00:53:51.000000000","message":"Seems like you should do a try/except here to catch an illegal regex","commit_id":"a1bfb6d82f00b1d7f4a0d018959ef5ab1885d466"},{"author":{"_account_id":13771,"name":"Davide Agnello","email":"dagnello@hp.com","username":"dagnello"},"change_message_id":"22b9f5ddee623be8625958e22fad3a43b556ff8b","unresolved":false,"context_lines":[{"line_number":146,"context_line":"            monitored_processes \u003d processes"},{"line_number":147,"context_line":""},{"line_number":148,"context_line":"        for pattern, process in itertools.product(proc_regex, processes):"},{"line_number":149,"context_line":"            if re.match(pattern, process[\u0027name\u0027]) and process not in monitored_processes:"},{"line_number":150,"context_line":"                monitored_processes.append(process)"},{"line_number":151,"context_line":""},{"line_number":152,"context_line":"        for process in processes:"}],"source_content_type":"text/x-python","patch_set":10,"id":"9a68dd71_54ee1bb5","line":149,"range":{"start_line":149,"start_character":12,"end_line":149,"end_character":89},"in_reply_to":"9a68dd71_62f39774","updated":"2016-01-21 20:05:12.000000000","message":"Done","commit_id":"a1bfb6d82f00b1d7f4a0d018959ef5ab1885d466"},{"author":{"_account_id":12443,"name":"David Schroeder","email":"openstack@a7n.net","username":"dschroeder"},"change_message_id":"15202c7d3072465b556759dcd14120580dc1c3da","unresolved":false,"context_lines":[{"line_number":178,"context_line":""},{"line_number":179,"context_line":"        # Report counts by status"},{"line_number":180,"context_line":"        for status in PROCESS_STATUS:"},{"line_number":181,"context_line":"            dimensions[\u0027status\u0027] \u003d PROCESS_STATUS[status]"},{"line_number":182,"context_line":"            self.gauge(PROCESS_COUNT_CHECK, count_by_status[status],"},{"line_number":183,"context_line":"                       dimensions\u003ddimensions)"},{"line_number":184,"context_line":"            dimensions.pop(\u0027status\u0027, None)"}],"source_content_type":"text/x-python","patch_set":10,"id":"9a68dd71_0fb6848a","line":181,"updated":"2016-01-21 00:15:35.000000000","message":"I\u0027m pretty sure we don\u0027t want to use \u0027status\u0027 as a dimension.  Dimensions are used to uniquely identify a metric, and it looks like this one might change depending on state (up/down/unknown) which, if it changes, would end up creating a whole new metric.","commit_id":"a1bfb6d82f00b1d7f4a0d018959ef5ab1885d466"},{"author":{"_account_id":13771,"name":"Davide Agnello","email":"dagnello@hp.com","username":"dagnello"},"change_message_id":"1daa3a184e6c847dc48f3b9fbd7a378f026f6dff","unresolved":false,"context_lines":[{"line_number":178,"context_line":""},{"line_number":179,"context_line":"        # Report counts by status"},{"line_number":180,"context_line":"        for status in PROCESS_STATUS:"},{"line_number":181,"context_line":"            dimensions[\u0027status\u0027] \u003d PROCESS_STATUS[status]"},{"line_number":182,"context_line":"            self.gauge(PROCESS_COUNT_CHECK, count_by_status[status],"},{"line_number":183,"context_line":"                       dimensions\u003ddimensions)"},{"line_number":184,"context_line":"            dimensions.pop(\u0027status\u0027, None)"}],"source_content_type":"text/x-python","patch_set":10,"id":"9a68dd71_c2dda371","line":181,"in_reply_to":"9a68dd71_0fb6848a","updated":"2016-01-21 00:25:42.000000000","message":"In this case, we have three unique metrics which are counts associated with the status of the process.  These will alway be three and they are up, down and unknown.  Without associating the corresponding status, these metrics will not be useable.  The result would be three counts without any association to what they mean.  In DD, they attached the association with this \u0027tags\u0027 attribute, which doesn\u0027t exist in Monasca (https://github.com/DataDog/dd-agent/blob/master/checks.d/supervisord.py#L145).","commit_id":"a1bfb6d82f00b1d7f4a0d018959ef5ab1885d466"},{"author":{"_account_id":13771,"name":"Davide Agnello","email":"dagnello@hp.com","username":"dagnello"},"change_message_id":"680a1c65bacec33e5da84caea49c0d43f33f9ab7","unresolved":false,"context_lines":[{"line_number":178,"context_line":""},{"line_number":179,"context_line":"        # Report counts by status"},{"line_number":180,"context_line":"        for status in PROCESS_STATUS:"},{"line_number":181,"context_line":"            dimensions[\u0027status\u0027] \u003d PROCESS_STATUS[status]"},{"line_number":182,"context_line":"            self.gauge(PROCESS_COUNT_CHECK, count_by_status[status],"},{"line_number":183,"context_line":"                       dimensions\u003ddimensions)"},{"line_number":184,"context_line":"            dimensions.pop(\u0027status\u0027, None)"}],"source_content_type":"text/x-python","patch_set":10,"id":"9a68dd71_1a7445fb","line":181,"in_reply_to":"9a68dd71_6ba6dd11","updated":"2016-01-21 22:55:15.000000000","message":"Done","commit_id":"a1bfb6d82f00b1d7f4a0d018959ef5ab1885d466"},{"author":{"_account_id":5390,"name":"Steve Leon","username":"steve-leon","inactive":true},"change_message_id":"3bb0adf43367a8350f4f44c3f505b658d569ede1","unresolved":false,"context_lines":[{"line_number":178,"context_line":""},{"line_number":179,"context_line":"        # Report counts by status"},{"line_number":180,"context_line":"        for status in PROCESS_STATUS:"},{"line_number":181,"context_line":"            dimensions[\u0027status\u0027] \u003d PROCESS_STATUS[status]"},{"line_number":182,"context_line":"            self.gauge(PROCESS_COUNT_CHECK, count_by_status[status],"},{"line_number":183,"context_line":"                       dimensions\u003ddimensions)"},{"line_number":184,"context_line":"            dimensions.pop(\u0027status\u0027, None)"}],"source_content_type":"text/x-python","patch_set":10,"id":"9a68dd71_a54679bd","line":181,"in_reply_to":"9a68dd71_a2c18f30","updated":"2016-01-21 01:16:55.000000000","message":"Is the suggestion to have 3 different metrics (as supposed to 3 dimensions). One per status?. I believe this was done to match what datadog had done with this check","commit_id":"a1bfb6d82f00b1d7f4a0d018959ef5ab1885d466"},{"author":{"_account_id":11809,"name":"Craig Bryant","email":"craig.bryant@hpe.com","username":"craig-bryant"},"change_message_id":"ce28e177d8a2134d77181300de18f1d8bf6802af","unresolved":false,"context_lines":[{"line_number":178,"context_line":""},{"line_number":179,"context_line":"        # Report counts by status"},{"line_number":180,"context_line":"        for status in PROCESS_STATUS:"},{"line_number":181,"context_line":"            dimensions[\u0027status\u0027] \u003d PROCESS_STATUS[status]"},{"line_number":182,"context_line":"            self.gauge(PROCESS_COUNT_CHECK, count_by_status[status],"},{"line_number":183,"context_line":"                       dimensions\u003ddimensions)"},{"line_number":184,"context_line":"            dimensions.pop(\u0027status\u0027, None)"}],"source_content_type":"text/x-python","patch_set":10,"id":"9a68dd71_bb48d65c","line":181,"in_reply_to":"9a68dd71_a54679bd","updated":"2016-01-21 02:11:55.000000000","message":"3 different dimensions create 3 different metrics.\n\nThe suggestion is to have 1 metric per process to match what Monasca has done. Better to be consistent with Monasca than Datadog","commit_id":"a1bfb6d82f00b1d7f4a0d018959ef5ab1885d466"},{"author":{"_account_id":11809,"name":"Craig Bryant","email":"craig.bryant@hpe.com","username":"craig-bryant"},"change_message_id":"16a750f00914a2758190ac46dec84e2bffd2fc61","unresolved":false,"context_lines":[{"line_number":178,"context_line":""},{"line_number":179,"context_line":"        # Report counts by status"},{"line_number":180,"context_line":"        for status in PROCESS_STATUS:"},{"line_number":181,"context_line":"            dimensions[\u0027status\u0027] \u003d PROCESS_STATUS[status]"},{"line_number":182,"context_line":"            self.gauge(PROCESS_COUNT_CHECK, count_by_status[status],"},{"line_number":183,"context_line":"                       dimensions\u003ddimensions)"},{"line_number":184,"context_line":"            dimensions.pop(\u0027status\u0027, None)"}],"source_content_type":"text/x-python","patch_set":10,"id":"9a68dd71_6ba6dd11","line":181,"in_reply_to":"9a68dd71_bb48d65c","updated":"2016-01-21 20:39:38.000000000","message":"I see now that I was misreading the loop. The code does have 1 metric per process if proc_details_check is True. The question is how to present the metrics that represent the summary status of the processes that supervisord watches.","commit_id":"a1bfb6d82f00b1d7f4a0d018959ef5ab1885d466"},{"author":{"_account_id":11809,"name":"Craig Bryant","email":"craig.bryant@hpe.com","username":"craig-bryant"},"change_message_id":"bb0ad7cb0ff2396251a3020cb9c9c0d1d35f904b","unresolved":false,"context_lines":[{"line_number":178,"context_line":""},{"line_number":179,"context_line":"        # Report counts by status"},{"line_number":180,"context_line":"        for status in PROCESS_STATUS:"},{"line_number":181,"context_line":"            dimensions[\u0027status\u0027] \u003d PROCESS_STATUS[status]"},{"line_number":182,"context_line":"            self.gauge(PROCESS_COUNT_CHECK, count_by_status[status],"},{"line_number":183,"context_line":"                       dimensions\u003ddimensions)"},{"line_number":184,"context_line":"            dimensions.pop(\u0027status\u0027, None)"}],"source_content_type":"text/x-python","patch_set":10,"id":"9a68dd71_a2c18f30","line":181,"in_reply_to":"9a68dd71_c2dda371","updated":"2016-01-21 00:53:51.000000000","message":"I agree with David Schroeder. It makes more sense for this to follow theprocess.pid_count model where that metric is the number of processes that are up with that name. I think that if the processes are not up, the user needs to go look at the system anyways and having UNKNOWN vs CRITICAL vs OK metrics is confusing and not helpful.","commit_id":"a1bfb6d82f00b1d7f4a0d018959ef5ab1885d466"},{"author":{"_account_id":12443,"name":"David Schroeder","email":"openstack@a7n.net","username":"dschroeder"},"change_message_id":"15202c7d3072465b556759dcd14120580dc1c3da","unresolved":false,"context_lines":[{"line_number":182,"context_line":"            self.gauge(PROCESS_COUNT_CHECK, count_by_status[status],"},{"line_number":183,"context_line":"                       dimensions\u003ddimensions)"},{"line_number":184,"context_line":"            dimensions.pop(\u0027status\u0027, None)"},{"line_number":185,"context_line":""},{"line_number":186,"context_line":"    @staticmethod"},{"line_number":187,"context_line":"    def _connect(instance):"},{"line_number":188,"context_line":"        sock \u003d instance.get(\u0027socket\u0027)"}],"source_content_type":"text/x-python","patch_set":10,"id":"9a68dd71_6f6860f6","line":185,"updated":"2016-01-21 00:15:35.000000000","message":"See above","commit_id":"a1bfb6d82f00b1d7f4a0d018959ef5ab1885d466"},{"author":{"_account_id":13771,"name":"Davide Agnello","email":"dagnello@hp.com","username":"dagnello"},"change_message_id":"680a1c65bacec33e5da84caea49c0d43f33f9ab7","unresolved":false,"context_lines":[{"line_number":182,"context_line":"            self.gauge(PROCESS_COUNT_CHECK, count_by_status[status],"},{"line_number":183,"context_line":"                       dimensions\u003ddimensions)"},{"line_number":184,"context_line":"            dimensions.pop(\u0027status\u0027, None)"},{"line_number":185,"context_line":""},{"line_number":186,"context_line":"    @staticmethod"},{"line_number":187,"context_line":"    def _connect(instance):"},{"line_number":188,"context_line":"        sock \u003d instance.get(\u0027socket\u0027)"}],"source_content_type":"text/x-python","patch_set":10,"id":"9a68dd71_ba61793b","line":185,"in_reply_to":"9a68dd71_6f6860f6","updated":"2016-01-21 22:55:15.000000000","message":"Done","commit_id":"a1bfb6d82f00b1d7f4a0d018959ef5ab1885d466"}],"monasca_setup/detection/plugins/supervisord.py":[{"author":{"_account_id":11809,"name":"Craig Bryant","email":"craig.bryant@hpe.com","username":"craig-bryant"},"change_message_id":"c193e63b773ba2e8f7b24a4ca52dd9d3c6deb7bb","unresolved":false,"context_lines":[{"line_number":45,"context_line":"        \"\"\"Set the configuration to be used for connecting to supervisord"},{"line_number":46,"context_line":"        :return:"},{"line_number":47,"context_line":"        \"\"\""},{"line_number":48,"context_line":"        # Set defaults and read config or use arguments"},{"line_number":49,"context_line":"        if self.args is None:"},{"line_number":50,"context_line":"            self.server \u003d supervisord_server_name"},{"line_number":51,"context_line":"            self.socket \u003d None"}],"source_content_type":"text/x-python","patch_set":5,"id":"da6ed579_36f901c8","line":48,"updated":"2016-01-14 02:23:01.000000000","message":"Maybe you add a process check for supervisord itself? Something like what is done in _get_config in monasca_setup/detection/plugins/kafka_consumer.py","commit_id":"955f69ebf8b46e80acf42cf6aafdca15e0cb5453"},{"author":{"_account_id":13771,"name":"Davide Agnello","email":"dagnello@hp.com","username":"dagnello"},"change_message_id":"c65965e79b7a0c84fcbc4a8a489f6e1447e4b428","unresolved":false,"context_lines":[{"line_number":45,"context_line":"        \"\"\"Set the configuration to be used for connecting to supervisord"},{"line_number":46,"context_line":"        :return:"},{"line_number":47,"context_line":"        \"\"\""},{"line_number":48,"context_line":"        # Set defaults and read config or use arguments"},{"line_number":49,"context_line":"        if self.args is None:"},{"line_number":50,"context_line":"            self.server \u003d supervisord_server_name"},{"line_number":51,"context_line":"            self.socket \u003d None"}],"source_content_type":"text/x-python","patch_set":5,"id":"da6ed579_ef7fde14","line":48,"in_reply_to":"da6ed579_36f901c8","updated":"2016-01-14 17:19:46.000000000","message":"actually the process check is being done above in the _detect function.  At this point we can possibly check if the configuration to connect to the supervisord server is correct but this is already being done by the check itself so I would avoid replicating it here.","commit_id":"955f69ebf8b46e80acf42cf6aafdca15e0cb5453"},{"author":{"_account_id":13771,"name":"Davide Agnello","email":"dagnello@hp.com","username":"dagnello"},"change_message_id":"b2d58bbe6da5eaf4ddb139a0d4f9179a5d28af6f","unresolved":false,"context_lines":[{"line_number":45,"context_line":"        \"\"\"Set the configuration to be used for connecting to supervisord"},{"line_number":46,"context_line":"        :return:"},{"line_number":47,"context_line":"        \"\"\""},{"line_number":48,"context_line":"        # Set defaults and read config or use arguments"},{"line_number":49,"context_line":"        if self.args is None:"},{"line_number":50,"context_line":"            self.server \u003d supervisord_server_name"},{"line_number":51,"context_line":"            self.socket \u003d None"}],"source_content_type":"text/x-python","patch_set":5,"id":"da6ed579_8c4430b7","line":48,"in_reply_to":"da6ed579_36f901c8","updated":"2016-01-14 17:08:38.000000000","message":"ok, adding","commit_id":"955f69ebf8b46e80acf42cf6aafdca15e0cb5453"},{"author":{"_account_id":12443,"name":"David Schroeder","email":"openstack@a7n.net","username":"dschroeder"},"change_message_id":"001d069431b54bd33e57f35fd3b5f12da0b255fb","unresolved":false,"context_lines":[{"line_number":56,"context_line":"            self.process_regex \u003d None"},{"line_number":57,"context_line":"            self.process_names \u003d None"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"            self._read_config(supervisord_conf)"},{"line_number":60,"context_line":"        else:"},{"line_number":61,"context_line":"            self.server \u003d self.args.get(\u0027server\u0027, supervisord_server_name)"},{"line_number":62,"context_line":"            self.socket \u003d self.args.get(\u0027socket\u0027)"}],"source_content_type":"text/x-python","patch_set":5,"id":"da6ed579_acdd74e1","line":59,"updated":"2016-01-14 17:10:24.000000000","message":"You should probably verify that the file exists before trying to read it, either that, or catch the IOError thrown if trying to open a nonexistent file on line 76.","commit_id":"955f69ebf8b46e80acf42cf6aafdca15e0cb5453"},{"author":{"_account_id":13771,"name":"Davide Agnello","email":"dagnello@hp.com","username":"dagnello"},"change_message_id":"c65965e79b7a0c84fcbc4a8a489f6e1447e4b428","unresolved":false,"context_lines":[{"line_number":56,"context_line":"            self.process_regex \u003d None"},{"line_number":57,"context_line":"            self.process_names \u003d None"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"            self._read_config(supervisord_conf)"},{"line_number":60,"context_line":"        else:"},{"line_number":61,"context_line":"            self.server \u003d self.args.get(\u0027server\u0027, supervisord_server_name)"},{"line_number":62,"context_line":"            self.socket \u003d self.args.get(\u0027socket\u0027)"}],"source_content_type":"text/x-python","patch_set":5,"id":"da6ed579_4f0b8a8e","line":59,"in_reply_to":"da6ed579_acdd74e1","updated":"2016-01-14 17:19:46.000000000","message":"agreed.","commit_id":"955f69ebf8b46e80acf42cf6aafdca15e0cb5453"},{"author":{"_account_id":15027,"name":"Michael Hoppal","email":"michael.jam.hoppal@hpe.com","username":"michael-hoppal"},"change_message_id":"c57f6058f032bfd41ddb1c0c7581e814a0598564","unresolved":false,"context_lines":[{"line_number":53,"context_line":"        \"\"\"Run detection, set self.available True if the service is detected."},{"line_number":54,"context_line":"        \"\"\""},{"line_number":55,"context_line":"        if monasca_setup.detection.find_process_cmdline(\u0027supervisord\u0027) is not None:"},{"line_number":56,"context_line":"            self.available \u003d True"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"    def _get_config(self):"},{"line_number":59,"context_line":"        \"\"\"Set the configuration to be used for connecting to supervisord"}],"source_content_type":"text/x-python","patch_set":7,"id":"ba63e191_5fbacf24","line":56,"range":{"start_line":56,"start_character":29,"end_line":56,"end_character":33},"updated":"2016-01-19 17:29:06.000000000","message":"We check if the process is running at detection time but we should set up a process check that will continue to check the supervisord process. That is what craig was bring up a couple of patch sets ago. A good example is \u0027self.config.merge(watch_process([\u0027kafka.Kafka\u0027], \u0027kafka\u0027, exact_match\u003dFalse))\u0027 from build_config in monasca_setup/detection/plugins/kafka_consumer.py","commit_id":"bffd1f7c84195c0f53adc24fe2b4934fb10b4379"},{"author":{"_account_id":13771,"name":"Davide Agnello","email":"dagnello@hp.com","username":"dagnello"},"change_message_id":"3207c869b3f9e9704e7f22a14483474ec68345c5","unresolved":false,"context_lines":[{"line_number":53,"context_line":"        \"\"\"Run detection, set self.available True if the service is detected."},{"line_number":54,"context_line":"        \"\"\""},{"line_number":55,"context_line":"        if monasca_setup.detection.find_process_cmdline(\u0027supervisord\u0027) is not None:"},{"line_number":56,"context_line":"            self.available \u003d True"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"    def _get_config(self):"},{"line_number":59,"context_line":"        \"\"\"Set the configuration to be used for connecting to supervisord"}],"source_content_type":"text/x-python","patch_set":7,"id":"ba63e191_8de1fe9c","line":56,"range":{"start_line":56,"start_character":29,"end_line":56,"end_character":33},"in_reply_to":"ba63e191_5fbacf24","updated":"2016-01-19 19:00:43.000000000","message":"we could be adding a process check for Supervisor here, but the supervisor check itself already has a built-in check that tells us that supervisor is running and reachable:\n# If we\u0027re here, we were able to connect to the server\n        self.gauge(SERVER_SERVICE_CHECK, SERVER_STATE[\u0027UP\u0027], dimensions\u003ddimensions)\n\nwhat will a process check on supervisor give us above this?","commit_id":"bffd1f7c84195c0f53adc24fe2b4934fb10b4379"},{"author":{"_account_id":15027,"name":"Michael Hoppal","email":"michael.jam.hoppal@hpe.com","username":"michael-hoppal"},"change_message_id":"2707a455a11ad99bb89e20304fe97711f2738410","unresolved":false,"context_lines":[{"line_number":53,"context_line":"        \"\"\"Run detection, set self.available True if the service is detected."},{"line_number":54,"context_line":"        \"\"\""},{"line_number":55,"context_line":"        if monasca_setup.detection.find_process_cmdline(\u0027supervisord\u0027) is not None:"},{"line_number":56,"context_line":"            self.available \u003d True"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"    def _get_config(self):"},{"line_number":59,"context_line":"        \"\"\"Set the configuration to be used for connecting to supervisord"}],"source_content_type":"text/x-python","patch_set":7,"id":"ba63e191_907d91b3","line":56,"range":{"start_line":56,"start_character":29,"end_line":56,"end_character":33},"in_reply_to":"ba63e191_8de1fe9c","updated":"2016-01-19 19:28:49.000000000","message":"For one it follows the same concept as the other detection plugins we use. We can look at process.pid_count alarms and from there see which processes are up or down. Second, might not be big for supervisord, but we are working on making default detail process checking where is grabs the memory and cpu usage of each process.","commit_id":"bffd1f7c84195c0f53adc24fe2b4934fb10b4379"},{"author":{"_account_id":13771,"name":"Davide Agnello","email":"dagnello@hp.com","username":"dagnello"},"change_message_id":"8fb6b956ba21051a899d6df9f1ca12ad89068e77","unresolved":false,"context_lines":[{"line_number":53,"context_line":"        \"\"\"Run detection, set self.available True if the service is detected."},{"line_number":54,"context_line":"        \"\"\""},{"line_number":55,"context_line":"        if monasca_setup.detection.find_process_cmdline(\u0027supervisord\u0027) is not None:"},{"line_number":56,"context_line":"            self.available \u003d True"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"    def _get_config(self):"},{"line_number":59,"context_line":"        \"\"\"Set the configuration to be used for connecting to supervisord"}],"source_content_type":"text/x-python","patch_set":7,"id":"ba63e191_2bb47acf","line":56,"range":{"start_line":56,"start_character":29,"end_line":56,"end_character":33},"in_reply_to":"ba63e191_907d91b3","updated":"2016-01-19 19:41:41.000000000","message":"ok will add then","commit_id":"bffd1f7c84195c0f53adc24fe2b4934fb10b4379"},{"author":{"_account_id":15027,"name":"Michael Hoppal","email":"michael.jam.hoppal@hpe.com","username":"michael-hoppal"},"change_message_id":"cf5149db751c9a8022af8964b52617a56f2b6dff","unresolved":false,"context_lines":[{"line_number":133,"context_line":"        \"\"\""},{"line_number":134,"context_line":"        config \u003d monasca_setup.agent_config.Plugins()"},{"line_number":135,"context_line":"        # First watch the process"},{"line_number":136,"context_line":"        config.merge(monasca_setup.detection.watch_process([\u0027supervisord\u0027], \u0027supervisord\u0027))"},{"line_number":137,"context_line":"        log.info(\"\\tWatching the supervisord process.\")"},{"line_number":138,"context_line":""},{"line_number":139,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":8,"id":"ba63e191_77f48886","line":136,"range":{"start_line":136,"start_character":72,"end_line":136,"end_character":75},"updated":"2016-01-19 23:40:22.000000000","message":"i think you want to add the exact match \u003d false","commit_id":"27ae2c69e65105178360c0a1223ee8d84037a1c9"},{"author":{"_account_id":13771,"name":"Davide Agnello","email":"dagnello@hp.com","username":"dagnello"},"change_message_id":"c02611965abf06bfba3c08e2a1f3502d64285637","unresolved":false,"context_lines":[{"line_number":133,"context_line":"        \"\"\""},{"line_number":134,"context_line":"        config \u003d monasca_setup.agent_config.Plugins()"},{"line_number":135,"context_line":"        # First watch the process"},{"line_number":136,"context_line":"        config.merge(monasca_setup.detection.watch_process([\u0027supervisord\u0027], \u0027supervisord\u0027))"},{"line_number":137,"context_line":"        log.info(\"\\tWatching the supervisord process.\")"},{"line_number":138,"context_line":""},{"line_number":139,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":8,"id":"9a68dd71_42c78512","line":136,"range":{"start_line":136,"start_character":72,"end_line":136,"end_character":75},"in_reply_to":"ba63e191_77f48886","updated":"2016-01-20 18:17:03.000000000","message":"Done","commit_id":"27ae2c69e65105178360c0a1223ee8d84037a1c9"},{"author":{"_account_id":11809,"name":"Craig Bryant","email":"craig.bryant@hpe.com","username":"craig-bryant"},"change_message_id":"bb0ad7cb0ff2396251a3020cb9c9c0d1d35f904b","unresolved":false,"context_lines":[{"line_number":52,"context_line":"        \"\"\"Run detection, set self.available True if the service is detected."},{"line_number":53,"context_line":"        \"\"\""},{"line_number":54,"context_line":"        if monasca_setup.detection.find_process_cmdline(\u0027supervisord\u0027) is not None:"},{"line_number":55,"context_line":"            self.available \u003d True"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"    def _get_config(self):"},{"line_number":58,"context_line":"        \"\"\"Set the configuration to be used for connecting to supervisord"}],"source_content_type":"text/x-python","patch_set":10,"id":"9a68dd71_a203cf0e","line":55,"range":{"start_line":55,"start_character":29,"end_line":55,"end_character":33},"updated":"2016-01-21 00:53:51.000000000","message":"This doesn\u0027t seem to be enough to say the detection plugin succeeded. If supervisord is running but the config file can\u0027t be read then setup fails silently","commit_id":"a1bfb6d82f00b1d7f4a0d018959ef5ab1885d466"},{"author":{"_account_id":13771,"name":"Davide Agnello","email":"dagnello@hp.com","username":"dagnello"},"change_message_id":"22b9f5ddee623be8625958e22fad3a43b556ff8b","unresolved":false,"context_lines":[{"line_number":52,"context_line":"        \"\"\"Run detection, set self.available True if the service is detected."},{"line_number":53,"context_line":"        \"\"\""},{"line_number":54,"context_line":"        if monasca_setup.detection.find_process_cmdline(\u0027supervisord\u0027) is not None:"},{"line_number":55,"context_line":"            self.available \u003d True"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"    def _get_config(self):"},{"line_number":58,"context_line":"        \"\"\"Set the configuration to be used for connecting to supervisord"}],"source_content_type":"text/x-python","patch_set":10,"id":"9a68dd71_f4ddcf14","line":55,"range":{"start_line":55,"start_character":29,"end_line":55,"end_character":33},"in_reply_to":"9a68dd71_a203cf0e","updated":"2016-01-21 20:05:12.000000000","message":"if the config file can\u0027t be read an exception is raised in that case.","commit_id":"a1bfb6d82f00b1d7f4a0d018959ef5ab1885d466"}]}
