)]}'
{"monasca_setup/detection/service_plugin.py":[{"author":{"_account_id":14517,"name":"Ryan Brandt","email":"ryan.brandt@hpe.com","username":"ryan-brandt"},"change_message_id":"d01d784751391fa59740bd9fe7a14983fd909d42","unresolved":false,"context_lines":[{"line_number":28,"context_line":"    def __init__(self, kwargs):"},{"line_number":29,"context_line":"        self.service_name \u003d kwargs[\u0027service_name\u0027]"},{"line_number":30,"context_line":"        self.process_names \u003d kwargs.get(\u0027process_names\u0027)"},{"line_number":31,"context_line":"        self.username \u003d kwargs.get(\u0027username\u0027, None)"},{"line_number":32,"context_line":"        self.detailed \u003d kwargs.get(\u0027detailed\u0027, True)"},{"line_number":33,"context_line":"        self.file_dirs_names \u003d kwargs.get(\u0027file_dirs_names\u0027)"},{"line_number":34,"context_line":"        self.directory_names \u003d kwargs.get(\u0027directory_names\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a89bdaa_4e054d78","line":31,"range":{"start_line":31,"start_character":36,"end_line":31,"end_character":44},"updated":"2016-09-06 16:29:00.000000000","message":"Maybe a nitpick, but I think this name could be more specific","commit_id":"937620d7eb5415ea2a06681b3700027b51a3026e"},{"author":{"_account_id":12133,"name":"Cindy O\u0027Neill","email":"cindy.o-neill@hpe.com","username":"oneilcin"},"change_message_id":"b80a37be5ee20f72193ef043bcc8d0025dd1b074","unresolved":false,"context_lines":[{"line_number":28,"context_line":"    def __init__(self, kwargs):"},{"line_number":29,"context_line":"        self.service_name \u003d kwargs[\u0027service_name\u0027]"},{"line_number":30,"context_line":"        self.process_names \u003d kwargs.get(\u0027process_names\u0027)"},{"line_number":31,"context_line":"        self.username \u003d kwargs.get(\u0027username\u0027, None)"},{"line_number":32,"context_line":"        self.detailed \u003d kwargs.get(\u0027detailed\u0027, True)"},{"line_number":33,"context_line":"        self.file_dirs_names \u003d kwargs.get(\u0027file_dirs_names\u0027)"},{"line_number":34,"context_line":"        self.directory_names \u003d kwargs.get(\u0027directory_names\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a89bdaa_ff0409c1","line":31,"range":{"start_line":31,"start_character":36,"end_line":31,"end_character":44},"in_reply_to":"9a89bdaa_4e054d78","updated":"2016-09-06 17:26:54.000000000","message":"Good suggestion, will rename to process_username.","commit_id":"937620d7eb5415ea2a06681b3700027b51a3026e"},{"author":{"_account_id":15027,"name":"Michael Hoppal","email":"michael.jam.hoppal@hpe.com","username":"michael-hoppal"},"change_message_id":"8d5f07da2dd23471dd742b7670523146caa47bbb","unresolved":false,"context_lines":[{"line_number":81,"context_line":"            if len(self.found_processes) \u003e 0:"},{"line_number":82,"context_line":"                self.available \u003d True"},{"line_number":83,"context_line":"        if self.username and len(self.found_processes) \u003d\u003d 0:"},{"line_number":84,"context_line":"            log.warn(\"\\tMissing or invalid process_name for watch process by username: {}. \""},{"line_number":85,"context_line":"                     \"One valid process_name is required.\".format(self.username))"},{"line_number":86,"context_line":"        if self.file_dirs_names:"},{"line_number":87,"context_line":"            self.available \u003d True"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a89bdaa_4b90df43","line":84,"range":{"start_line":84,"start_character":34,"end_line":84,"end_character":35},"updated":"2016-09-06 16:11:34.000000000","message":"for the process check we do not use the search strings or the process_names. We just use the username we ignore the search strings. So we probably shouldnt be logging an warn message if we can not find a process with the name in it.\n\nShould we build up a new list above to check for processes owned by the given user?","commit_id":"937620d7eb5415ea2a06681b3700027b51a3026e"},{"author":{"_account_id":12133,"name":"Cindy O\u0027Neill","email":"cindy.o-neill@hpe.com","username":"oneilcin"},"change_message_id":"ce9e9ce758fa28eb34501fa131bbad1b0a82b80d","unresolved":false,"context_lines":[{"line_number":81,"context_line":"            if len(self.found_processes) \u003e 0:"},{"line_number":82,"context_line":"                self.available \u003d True"},{"line_number":83,"context_line":"        if self.username and len(self.found_processes) \u003d\u003d 0:"},{"line_number":84,"context_line":"            log.warn(\"\\tMissing or invalid process_name for watch process by username: {}. \""},{"line_number":85,"context_line":"                     \"One valid process_name is required.\".format(self.username))"},{"line_number":86,"context_line":"        if self.file_dirs_names:"},{"line_number":87,"context_line":"            self.available \u003d True"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a89bdaa_ae2a592a","line":84,"range":{"start_line":84,"start_character":34,"end_line":84,"end_character":35},"in_reply_to":"9a89bdaa_4b90df43","updated":"2016-09-06 16:25:23.000000000","message":"I looked at plugins that used watch by username and they hardcoded in the component and process name.  I was using the first process name for that.  Do you think in this case it is ok to leave these dimensions blank?  If so I\u0027ll also have to modify the detect, it was relying on the first process name there.  Now detect would be true if username is found.","commit_id":"937620d7eb5415ea2a06681b3700027b51a3026e"},{"author":{"_account_id":12133,"name":"Cindy O\u0027Neill","email":"cindy.o-neill@hpe.com","username":"oneilcin"},"change_message_id":"b80a37be5ee20f72193ef043bcc8d0025dd1b074","unresolved":false,"context_lines":[{"line_number":81,"context_line":"            if len(self.found_processes) \u003e 0:"},{"line_number":82,"context_line":"                self.available \u003d True"},{"line_number":83,"context_line":"        if self.username and len(self.found_processes) \u003d\u003d 0:"},{"line_number":84,"context_line":"            log.warn(\"\\tMissing or invalid process_name for watch process by username: {}. \""},{"line_number":85,"context_line":"                     \"One valid process_name is required.\".format(self.username))"},{"line_number":86,"context_line":"        if self.file_dirs_names:"},{"line_number":87,"context_line":"            self.available \u003d True"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a89bdaa_5fbed5d4","line":84,"range":{"start_line":84,"start_character":34,"end_line":84,"end_character":35},"in_reply_to":"9a89bdaa_ae2a592a","updated":"2016-09-06 17:26:54.000000000","message":"Thanks Michael, I will add a new component_name argument. Since the process names could be different, I will not use that and only use the component_name for a dimension.","commit_id":"937620d7eb5415ea2a06681b3700027b51a3026e"},{"author":{"_account_id":11809,"name":"Craig Bryant","email":"craig.bryant@hpe.com","username":"craig-bryant"},"change_message_id":"c5f904a14181d4a3c7289b5517b02cf7d90d02e7","unresolved":false,"context_lines":[{"line_number":22,"context_line":"        Detection plugins inheriting from this class can easily setup up processes to be watched and"},{"line_number":23,"context_line":"        a http endpoint to be checked."},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"        The process can be watched by process_name or by process_username. Pass in the"},{"line_number":26,"context_line":"        process_names list argument when watching process by name.  Pass in the"},{"line_number":27,"context_line":"        process_username argument and component_name arguments when watching"},{"line_number":28,"context_line":"        process by username. Watching by username is useful for groups of processes that"}],"source_content_type":"text/x-python","patch_set":3,"id":"9a89bdaa_13bb61e6","line":25,"range":{"start_line":25,"start_character":38,"end_line":25,"end_character":50},"updated":"2016-09-06 21:06:37.000000000","message":"process_names","commit_id":"75f33242417a7827971e84da095d7347279b0a97"},{"author":{"_account_id":15027,"name":"Michael Hoppal","email":"michael.jam.hoppal@hpe.com","username":"michael-hoppal"},"change_message_id":"14e8cf26a3a1fbc82d65b53894a480fb6d9aaf9f","unresolved":false,"context_lines":[{"line_number":90,"context_line":"            if len(self.found_processes) \u003e 0:"},{"line_number":91,"context_line":"                self.available \u003d True"},{"line_number":92,"context_line":"        if self.process_username and self.component_name and not self.process_names:"},{"line_number":93,"context_line":"            self.available \u003d True"},{"line_number":94,"context_line":"        if self.file_dirs_names:"},{"line_number":95,"context_line":"            self.available \u003d True"},{"line_number":96,"context_line":"        if self.directory_names:"}],"source_content_type":"text/x-python","patch_set":3,"id":"9a89bdaa_5d6ed801","line":93,"range":{"start_line":93,"start_character":29,"end_line":93,"end_character":33},"updated":"2016-09-06 20:12:58.000000000","message":"should we error if the user tries to set both up? or should we allow them to set up both at the same time in the same plugin?","commit_id":"75f33242417a7827971e84da095d7347279b0a97"},{"author":{"_account_id":11809,"name":"Craig Bryant","email":"craig.bryant@hpe.com","username":"craig-bryant"},"change_message_id":"89dcb20b6465fbc002d811cac761b1cd6c9c5ea5","unresolved":false,"context_lines":[{"line_number":90,"context_line":"            if len(self.found_processes) \u003e 0:"},{"line_number":91,"context_line":"                self.available \u003d True"},{"line_number":92,"context_line":"        if self.process_username and self.component_name and not self.process_names:"},{"line_number":93,"context_line":"            self.available \u003d True"},{"line_number":94,"context_line":"        if self.file_dirs_names:"},{"line_number":95,"context_line":"            self.available \u003d True"},{"line_number":96,"context_line":"        if self.directory_names:"}],"source_content_type":"text/x-python","patch_set":3,"id":"9a89bdaa_73874dd7","line":93,"range":{"start_line":93,"start_character":29,"end_line":93,"end_character":33},"in_reply_to":"9a89bdaa_33d78524","updated":"2016-09-06 21:07:56.000000000","message":"It doesn\u0027t error out if self.file_dirs_names or self.directory_names is also set.","commit_id":"75f33242417a7827971e84da095d7347279b0a97"},{"author":{"_account_id":15027,"name":"Michael Hoppal","email":"michael.jam.hoppal@hpe.com","username":"michael-hoppal"},"change_message_id":"355f6fcfb8a4302669f8d6dacb0c76400eddc112","unresolved":false,"context_lines":[{"line_number":90,"context_line":"            if len(self.found_processes) \u003e 0:"},{"line_number":91,"context_line":"                self.available \u003d True"},{"line_number":92,"context_line":"        if self.process_username and self.component_name and not self.process_names:"},{"line_number":93,"context_line":"            self.available \u003d True"},{"line_number":94,"context_line":"        if self.file_dirs_names:"},{"line_number":95,"context_line":"            self.available \u003d True"},{"line_number":96,"context_line":"        if self.directory_names:"}],"source_content_type":"text/x-python","patch_set":3,"id":"9a89bdaa_530de98e","line":93,"range":{"start_line":93,"start_character":29,"end_line":93,"end_character":33},"in_reply_to":"9a89bdaa_33d78524","updated":"2016-09-06 21:07:18.000000000","message":"sounds good to me! the metrics are probably not duplications though. Can we at least log an warn message when both are passed?","commit_id":"75f33242417a7827971e84da095d7347279b0a97"},{"author":{"_account_id":12133,"name":"Cindy O\u0027Neill","email":"cindy.o-neill@hpe.com","username":"oneilcin"},"change_message_id":"b3146d6719196be91ce71f011f73f82275e19f74","unresolved":false,"context_lines":[{"line_number":90,"context_line":"            if len(self.found_processes) \u003e 0:"},{"line_number":91,"context_line":"                self.available \u003d True"},{"line_number":92,"context_line":"        if self.process_username and self.component_name and not self.process_names:"},{"line_number":93,"context_line":"            self.available \u003d True"},{"line_number":94,"context_line":"        if self.file_dirs_names:"},{"line_number":95,"context_line":"            self.available \u003d True"},{"line_number":96,"context_line":"        if self.directory_names:"}],"source_content_type":"text/x-python","patch_set":3,"id":"9a89bdaa_33d78524","line":93,"range":{"start_line":93,"start_character":29,"end_line":93,"end_character":33},"in_reply_to":"9a89bdaa_5d6ed801","updated":"2016-09-06 21:04:14.000000000","message":"Hi, I am not allowing both right now, since it would be a duplication of metrics.  If both are set the plugin does not set available \u003d True so it errors out.  I was thinking one or the other.  Does this sound ok?","commit_id":"75f33242417a7827971e84da095d7347279b0a97"},{"author":{"_account_id":11809,"name":"Craig Bryant","email":"craig.bryant@hpe.com","username":"craig-bryant"},"change_message_id":"c5f904a14181d4a3c7289b5517b02cf7d90d02e7","unresolved":false,"context_lines":[{"line_number":90,"context_line":"            if len(self.found_processes) \u003e 0:"},{"line_number":91,"context_line":"                self.available \u003d True"},{"line_number":92,"context_line":"        if self.process_username and self.component_name and not self.process_names:"},{"line_number":93,"context_line":"            self.available \u003d True"},{"line_number":94,"context_line":"        if self.file_dirs_names:"},{"line_number":95,"context_line":"            self.available \u003d True"},{"line_number":96,"context_line":"        if self.directory_names:"}],"source_content_type":"text/x-python","patch_set":3,"id":"9a89bdaa_739d8d58","line":93,"range":{"start_line":93,"start_character":29,"end_line":93,"end_character":33},"in_reply_to":"9a89bdaa_5d6ed801","updated":"2016-09-06 21:06:37.000000000","message":"We definitely need to do one or the other. This code will just silently ignore both arguments if they are both set.\n\nI vote for both, I think, I can see a service wanting an alarm if a specific process failed but still wanting metrics about the resource usage of all processes owned by a user.","commit_id":"75f33242417a7827971e84da095d7347279b0a97"},{"author":{"_account_id":11809,"name":"Craig Bryant","email":"craig.bryant@hpe.com","username":"craig-bryant"},"change_message_id":"86fd157b03aaeaf481dc7f9dfc33741a278ffee1","unresolved":false,"context_lines":[{"line_number":90,"context_line":"            if len(self.found_processes) \u003e 0:"},{"line_number":91,"context_line":"                self.available \u003d True"},{"line_number":92,"context_line":"        if self.process_username and self.component_name and not self.process_names:"},{"line_number":93,"context_line":"            self.available \u003d True"},{"line_number":94,"context_line":"        if self.file_dirs_names:"},{"line_number":95,"context_line":"            self.available \u003d True"},{"line_number":96,"context_line":"        if self.directory_names:"}],"source_content_type":"text/x-python","patch_set":3,"id":"9a89bdaa_d3e659b3","line":93,"range":{"start_line":93,"start_character":29,"end_line":93,"end_character":33},"in_reply_to":"9a89bdaa_73874dd7","updated":"2016-09-06 21:09:47.000000000","message":"The MonThresh plugin ends up doing both but not by using these arguments","commit_id":"75f33242417a7827971e84da095d7347279b0a97"},{"author":{"_account_id":15027,"name":"Michael Hoppal","email":"michael.jam.hoppal@hpe.com","username":"michael-hoppal"},"change_message_id":"a6a789c5c3914e0b73b42a4308a9dbd2487fdb65","unresolved":false,"context_lines":[{"line_number":90,"context_line":"            if len(self.found_processes) \u003e 0:"},{"line_number":91,"context_line":"                self.available \u003d True"},{"line_number":92,"context_line":"        if self.process_username and self.component_name and not self.process_names:"},{"line_number":93,"context_line":"            self.available \u003d True"},{"line_number":94,"context_line":"        if self.file_dirs_names:"},{"line_number":95,"context_line":"            self.available \u003d True"},{"line_number":96,"context_line":"        if self.directory_names:"}],"source_content_type":"text/x-python","patch_set":3,"id":"9a89bdaa_d34f39bb","line":93,"range":{"start_line":93,"start_character":29,"end_line":93,"end_character":33},"in_reply_to":"9a89bdaa_73874dd7","updated":"2016-09-06 21:09:29.000000000","message":"actually i agree with craig lets allow both to be set. We do that actually in some of our monitoring of monitoring","commit_id":"75f33242417a7827971e84da095d7347279b0a97"},{"author":{"_account_id":12133,"name":"Cindy O\u0027Neill","email":"cindy.o-neill@hpe.com","username":"oneilcin"},"change_message_id":"b08c8abba35f8c6bc6e57a82f4875b2142a0b81d","unresolved":false,"context_lines":[{"line_number":90,"context_line":"            if len(self.found_processes) \u003e 0:"},{"line_number":91,"context_line":"                self.available \u003d True"},{"line_number":92,"context_line":"        if self.process_username and self.component_name and not self.process_names:"},{"line_number":93,"context_line":"            self.available \u003d True"},{"line_number":94,"context_line":"        if self.file_dirs_names:"},{"line_number":95,"context_line":"            self.available \u003d True"},{"line_number":96,"context_line":"        if self.directory_names:"}],"source_content_type":"text/x-python","patch_set":3,"id":"9a89bdaa_331ce576","line":93,"range":{"start_line":93,"start_character":29,"end_line":93,"end_character":33},"in_reply_to":"9a89bdaa_d3e659b3","updated":"2016-09-06 21:14:17.000000000","message":"Sounds good, I will allow both to be set. thanks!","commit_id":"75f33242417a7827971e84da095d7347279b0a97"},{"author":{"_account_id":15027,"name":"Michael Hoppal","email":"michael.jam.hoppal@hpe.com","username":"michael-hoppal"},"change_message_id":"14e8cf26a3a1fbc82d65b53894a480fb6d9aaf9f","unresolved":false,"context_lines":[{"line_number":109,"context_line":"                config.merge(watch_process([process], self.service_name, process,"},{"line_number":110,"context_line":"                                           exact_match\u003dFalse, detailed\u003dself.detailed))"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"        if self.process_username and not self.found_processes:"},{"line_number":113,"context_line":"            log.info(\"\\tMonitoring by process_username: {0} for \""},{"line_number":114,"context_line":"                     \"service: {1}.\".format(self.process_username, self.service_name))"},{"line_number":115,"context_line":"            config.merge(watch_process_by_username(username\u003dself.process_username,"}],"source_content_type":"text/x-python","patch_set":3,"id":"9a89bdaa_1dbd3068","line":112,"range":{"start_line":112,"start_character":46,"end_line":112,"end_character":61},"updated":"2016-09-06 20:12:58.000000000","message":"this is not set if username is used","commit_id":"75f33242417a7827971e84da095d7347279b0a97"},{"author":{"_account_id":12133,"name":"Cindy O\u0027Neill","email":"cindy.o-neill@hpe.com","username":"oneilcin"},"change_message_id":"b3146d6719196be91ce71f011f73f82275e19f74","unresolved":false,"context_lines":[{"line_number":109,"context_line":"                config.merge(watch_process([process], self.service_name, process,"},{"line_number":110,"context_line":"                                           exact_match\u003dFalse, detailed\u003dself.detailed))"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"        if self.process_username and not self.found_processes:"},{"line_number":113,"context_line":"            log.info(\"\\tMonitoring by process_username: {0} for \""},{"line_number":114,"context_line":"                     \"service: {1}.\".format(self.process_username, self.service_name))"},{"line_number":115,"context_line":"            config.merge(watch_process_by_username(username\u003dself.process_username,"}],"source_content_type":"text/x-python","patch_set":3,"id":"9a89bdaa_937db11e","line":112,"range":{"start_line":112,"start_character":46,"end_line":112,"end_character":61},"in_reply_to":"9a89bdaa_1dbd3068","updated":"2016-09-06 21:04:14.000000000","message":"Yes it would be an empty array when process_username is passed in.  So neither one is setup if both options are passed.  The detect method catches this and exits with an error because self.available is false.  If it gets to this point then i\u0027m just trying to setup the correct watches based on what is initialized.","commit_id":"75f33242417a7827971e84da095d7347279b0a97"},{"author":{"_account_id":20033,"name":"Artur Basiak","email":"artur.basiak@ts.fujitsu.com","username":"abasiak"},"change_message_id":"f3790a35b418d7d056058eb6254a8b9ac7560914","unresolved":false,"context_lines":[{"line_number":60,"context_line":"                    if \u0027component_name\u0027 in args_dict:"},{"line_number":61,"context_line":"                        self.component_name \u003d args_dict[\u0027component_name\u0027]"},{"line_number":62,"context_line":"                    if \u0027detailed\u0027 in args_dict:"},{"line_number":63,"context_line":"                        self.detailed \u003d args_dict[\u0027detailed\u0027]"},{"line_number":64,"context_line":"                    if \u0027file_dirs_names\u0027 in args_dict:"},{"line_number":65,"context_line":"                        self.file_dirs_names \u003d args_dict[\u0027file_dirs_names\u0027]"},{"line_number":66,"context_line":"                    if \u0027directory_names\u0027 in args_dict:"}],"source_content_type":"text/x-python","patch_set":4,"id":"9a89bdaa_7619e4d6","line":63,"range":{"start_line":63,"start_character":20,"end_line":63,"end_character":61},"updated":"2016-09-07 09:16:40.000000000","message":"I tried to test it. Command that I used for keystone plugin:\n/opt/monasca-agent/bin/monasca-setup -d keystone -a \u0027process_username\u003dkeystone detailed\u003dFalse\u0027\n\nIn process.yml new entry was created but value for detailed was inserted as a string:\n- built_by: Keystone\n  detailed: \u0027False\u0027\n  dimensions:\n    service: identity-service\n  name: null\n  username: keystone","commit_id":"c05fd9d3fb3d14dce92f58a39530074a80702079"},{"author":{"_account_id":12133,"name":"Cindy O\u0027Neill","email":"cindy.o-neill@hpe.com","username":"oneilcin"},"change_message_id":"ae0aa473b84ca9040dad39029414d8dcedccfa90","unresolved":false,"context_lines":[{"line_number":60,"context_line":"                    if \u0027component_name\u0027 in args_dict:"},{"line_number":61,"context_line":"                        self.component_name \u003d args_dict[\u0027component_name\u0027]"},{"line_number":62,"context_line":"                    if \u0027detailed\u0027 in args_dict:"},{"line_number":63,"context_line":"                        self.detailed \u003d args_dict[\u0027detailed\u0027]"},{"line_number":64,"context_line":"                    if \u0027file_dirs_names\u0027 in args_dict:"},{"line_number":65,"context_line":"                        self.file_dirs_names \u003d args_dict[\u0027file_dirs_names\u0027]"},{"line_number":66,"context_line":"                    if \u0027directory_names\u0027 in args_dict:"}],"source_content_type":"text/x-python","patch_set":4,"id":"9a89bdaa_e08b5266","line":63,"range":{"start_line":63,"start_character":20,"end_line":63,"end_character":61},"in_reply_to":"9a89bdaa_7619e4d6","updated":"2016-09-07 15:27:04.000000000","message":"Good catch Artur!  I didn\u0027t test that via commandline, I\u0027ll have to convert it from a string if applicable.","commit_id":"c05fd9d3fb3d14dce92f58a39530074a80702079"},{"author":{"_account_id":15027,"name":"Michael Hoppal","email":"michael.jam.hoppal@hpe.com","username":"michael-hoppal"},"change_message_id":"99fc268bda19f5b843104d48bad0f459c7b3fd22","unresolved":false,"context_lines":[{"line_number":26,"context_line":"        process_names list argument when watching process by name.  Pass in the"},{"line_number":27,"context_line":"        process_username argument and component_name arguments when watching"},{"line_number":28,"context_line":"        process by username. Watching by username is useful for groups of processes that"},{"line_number":29,"context_line":"        are started by a specific user."},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"        The http check can be skipped by specifying the argument \u0027disable_http_check\u0027"},{"line_number":32,"context_line":"    \"\"\""}],"source_content_type":"text/x-python","patch_set":6,"id":"7a8ec9b2_3fc95179","line":29,"range":{"start_line":29,"start_character":12,"end_line":29,"end_character":19},"updated":"2016-09-14 13:50:00.000000000","message":"owned?","commit_id":"a9ae52982436e5f2eb191fdde0f6bbdea17c0c75"},{"author":{"_account_id":12133,"name":"Cindy O\u0027Neill","email":"cindy.o-neill@hpe.com","username":"oneilcin"},"change_message_id":"527c41417f85d55fa701b51dc3fe4554b31808b8","unresolved":false,"context_lines":[{"line_number":26,"context_line":"        process_names list argument when watching process by name.  Pass in the"},{"line_number":27,"context_line":"        process_username argument and component_name arguments when watching"},{"line_number":28,"context_line":"        process by username. Watching by username is useful for groups of processes that"},{"line_number":29,"context_line":"        are started by a specific user."},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"        The http check can be skipped by specifying the argument \u0027disable_http_check\u0027"},{"line_number":32,"context_line":"    \"\"\""}],"source_content_type":"text/x-python","patch_set":6,"id":"7a8ec9b2_f8e0c3fc","line":29,"range":{"start_line":29,"start_character":12,"end_line":29,"end_character":19},"in_reply_to":"7a8ec9b2_3fc95179","updated":"2016-09-14 21:55:04.000000000","message":"done","commit_id":"a9ae52982436e5f2eb191fdde0f6bbdea17c0c75"},{"author":{"_account_id":14273,"name":"Joe Keen","email":"joe.keen@hpe.com","username":"jkeen"},"change_message_id":"d0782d365bd5e8a8141a07c8adf2edd0dcbd38ba","unresolved":false,"context_lines":[{"line_number":35,"context_line":"        self.service_name \u003d kwargs[\u0027service_name\u0027]"},{"line_number":36,"context_line":"        self.process_names \u003d kwargs.get(\u0027process_names\u0027)"},{"line_number":37,"context_line":"        self.process_username \u003d kwargs.get(\u0027process_username\u0027, None)"},{"line_number":38,"context_line":"        self.component_name \u003d kwargs.get(\u0027component_name\u0027, None)"},{"line_number":39,"context_line":"        self.file_dirs_names \u003d kwargs.get(\u0027file_dirs_names\u0027)"},{"line_number":40,"context_line":"        self.directory_names \u003d kwargs.get(\u0027directory_names\u0027)"},{"line_number":41,"context_line":"        self.service_api_url \u003d kwargs.get(\u0027service_api_url\u0027)"}],"source_content_type":"text/x-python","patch_set":6,"id":"7a8ec9b2_dfbcdf6e","line":38,"range":{"start_line":38,"start_character":13,"end_line":38,"end_character":27},"updated":"2016-09-14 16:38:45.000000000","message":"I think this will be confusing if we don\u0027t offer any ability to set component_name for anything other than the watch_process_by_username function.","commit_id":"a9ae52982436e5f2eb191fdde0f6bbdea17c0c75"},{"author":{"_account_id":12133,"name":"Cindy O\u0027Neill","email":"cindy.o-neill@hpe.com","username":"oneilcin"},"change_message_id":"527c41417f85d55fa701b51dc3fe4554b31808b8","unresolved":false,"context_lines":[{"line_number":35,"context_line":"        self.service_name \u003d kwargs[\u0027service_name\u0027]"},{"line_number":36,"context_line":"        self.process_names \u003d kwargs.get(\u0027process_names\u0027)"},{"line_number":37,"context_line":"        self.process_username \u003d kwargs.get(\u0027process_username\u0027, None)"},{"line_number":38,"context_line":"        self.component_name \u003d kwargs.get(\u0027component_name\u0027, None)"},{"line_number":39,"context_line":"        self.file_dirs_names \u003d kwargs.get(\u0027file_dirs_names\u0027)"},{"line_number":40,"context_line":"        self.directory_names \u003d kwargs.get(\u0027directory_names\u0027)"},{"line_number":41,"context_line":"        self.service_api_url \u003d kwargs.get(\u0027service_api_url\u0027)"}],"source_content_type":"text/x-python","patch_set":6,"id":"7a8ec9b2_58f297d3","line":38,"range":{"start_line":38,"start_character":13,"end_line":38,"end_character":27},"in_reply_to":"7a8ec9b2_dfbcdf6e","updated":"2016-09-14 21:55:04.000000000","message":"agreed, added it as optional for process_watch","commit_id":"a9ae52982436e5f2eb191fdde0f6bbdea17c0c75"},{"author":{"_account_id":15027,"name":"Michael Hoppal","email":"michael.jam.hoppal@hpe.com","username":"michael-hoppal"},"change_message_id":"99fc268bda19f5b843104d48bad0f459c7b3fd22","unresolved":false,"context_lines":[{"line_number":110,"context_line":"        if self.found_processes:"},{"line_number":111,"context_line":"            for process in self.found_processes:"},{"line_number":112,"context_line":"                # Watch the service processes"},{"line_number":113,"context_line":"                log.info(\"\\tMonitoring by process_name: {0} \""},{"line_number":114,"context_line":"                         \"for service: {1}.\".format(process, self.service_name))"},{"line_number":115,"context_line":"                config.merge(watch_process([process], self.service_name, process,"},{"line_number":116,"context_line":"                                           exact_match\u003dFalse))"}],"source_content_type":"text/x-python","patch_set":6,"id":"7a8ec9b2_3f77913b","line":113,"range":{"start_line":113,"start_character":42,"end_line":113,"end_character":54},"updated":"2016-09-14 13:50:00.000000000","message":"i wonder if this log statement would be better to log once with listing all the process names out of self.found_processes.","commit_id":"a9ae52982436e5f2eb191fdde0f6bbdea17c0c75"},{"author":{"_account_id":12133,"name":"Cindy O\u0027Neill","email":"cindy.o-neill@hpe.com","username":"oneilcin"},"change_message_id":"527c41417f85d55fa701b51dc3fe4554b31808b8","unresolved":false,"context_lines":[{"line_number":110,"context_line":"        if self.found_processes:"},{"line_number":111,"context_line":"            for process in self.found_processes:"},{"line_number":112,"context_line":"                # Watch the service processes"},{"line_number":113,"context_line":"                log.info(\"\\tMonitoring by process_name: {0} \""},{"line_number":114,"context_line":"                         \"for service: {1}.\".format(process, self.service_name))"},{"line_number":115,"context_line":"                config.merge(watch_process([process], self.service_name, process,"},{"line_number":116,"context_line":"                                           exact_match\u003dFalse))"}],"source_content_type":"text/x-python","patch_set":6,"id":"7a8ec9b2_d8b4e7f3","line":113,"range":{"start_line":113,"start_character":42,"end_line":113,"end_character":54},"in_reply_to":"7a8ec9b2_3f77913b","updated":"2016-09-14 21:55:04.000000000","message":"agreed, thanks","commit_id":"a9ae52982436e5f2eb191fdde0f6bbdea17c0c75"}]}
