)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"3e1edd64480272d74f3d671f63f4422eb03976d2","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Adds method to retrieve all jobs from the specific view"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This patch adds new method `get_view_jobs(view_name)`"},{"line_number":10,"context_line":"that returns a list of all jobs configured on view"},{"line_number":11,"context_line":"which name is provided as an argument."},{"line_number":12,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"dae33548_aa3dca90","line":9,"range":{"start_line":9,"start_character":28,"end_line":9,"end_character":41},"updated":"2016-02-17 16:55:47.000000000","message":"This is no longer correct; you\u0027re now just updating get_jobs() with a new view_name parameter.  You should update the commit message to reflect the new approach.","commit_id":"b22a8511061bf563357c510587ab10ad8d378fd3"},{"author":{"_account_id":19094,"name":"Aliaksandr Buhayeu","email":"abuhayeu@mirantis.com","username":"abuhayeu"},"change_message_id":"3675afc68abaa7c19c49a65afa42b300d5ca6896","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Adds method to retrieve all jobs from the specific view"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This patch adds new method `get_view_jobs(view_name)`"},{"line_number":10,"context_line":"that returns a list of all jobs configured on view"},{"line_number":11,"context_line":"which name is provided as an argument."},{"line_number":12,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"dae33548_e08533cf","line":9,"range":{"start_line":9,"start_character":28,"end_line":9,"end_character":41},"in_reply_to":"dae33548_aa3dca90","updated":"2016-02-17 17:45:00.000000000","message":"Done","commit_id":"b22a8511061bf563357c510587ab10ad8d378fd3"}],"doc/source/examples.rst":[{"author":{"_account_id":6987,"name":"Khai Do","email":"zaro0508@gmail.com","username":"zaro0508"},"change_message_id":"6ee18cb2021715627290678ff3cf525594ef8c4d","unresolved":false,"context_lines":[{"line_number":86,"context_line":"    build_info \u003d server.get_job_info(\u0027api-test\u0027, last_build_number)"},{"line_number":87,"context_line":"    print build_info"},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"    # get all jobs from the specific view"},{"line_number":90,"context_line":"    jobs \u003d server.get_view_jobs(\u0027VIEW NAME\u0027)"},{"line_number":91,"context_line":"    print jobs"},{"line_number":92,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"dae33548_08dd1ee0","line":89,"updated":"2016-02-16 18:22:22.000000000","message":"Would make sense to move this into the \u0027working with jenkins views\u0027 section?","commit_id":"27f0079a527e68586669c7e210f1ba47af115c20"},{"author":{"_account_id":19094,"name":"Aliaksandr Buhayeu","email":"abuhayeu@mirantis.com","username":"abuhayeu"},"change_message_id":"b8f344ddda07585fbe0cd69ab0e3b0a3b5bcd253","unresolved":false,"context_lines":[{"line_number":86,"context_line":"    build_info \u003d server.get_job_info(\u0027api-test\u0027, last_build_number)"},{"line_number":87,"context_line":"    print build_info"},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"    # get all jobs from the specific view"},{"line_number":90,"context_line":"    jobs \u003d server.get_view_jobs(\u0027VIEW NAME\u0027)"},{"line_number":91,"context_line":"    print jobs"},{"line_number":92,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"dae33548_83bbd1e4","line":89,"in_reply_to":"dae33548_08dd1ee0","updated":"2016-02-16 19:15:41.000000000","message":"Thought it is more about jobs management, but okey, have moved into the views section.","commit_id":"27f0079a527e68586669c7e210f1ba47af115c20"}],"jenkins/__init__.py":[{"author":{"_account_id":6987,"name":"Khai Do","email":"zaro0508@gmail.com","username":"zaro0508"},"change_message_id":"8ebb32ec53f117ef8a64423846c8c5eb5e328412","unresolved":false,"context_lines":[{"line_number":658,"context_line":""},{"line_number":659,"context_line":"        return plugins_data"},{"line_number":660,"context_line":""},{"line_number":661,"context_line":"    def get_jobs(self, folder_depth\u003d0):"},{"line_number":662,"context_line":"        \"\"\"Get list of jobs."},{"line_number":663,"context_line":""},{"line_number":664,"context_line":"        Each job is a dictionary with \u0027name\u0027, \u0027url\u0027, \u0027color\u0027 and \u0027fullname\u0027"}],"source_content_type":"text/x-python","patch_set":1,"id":"dae33548_36de7711","line":661,"updated":"2016-02-17 00:40:21.000000000","message":"What I was trying to get at in my previous comment is that get_jobs() should just give me a list of jobs.  It shouldn\u0027t matter whether it\u0027s from folder or a view.  All variations seem to return the same dict of jobs.  Filtering by view/folder/none should be done with a parameter.  So if I want to get jobs on a specific view I should just pass in that view name.\n\n\n  get_jobs() - get all jobs on the server\n  get_jobs(my_folder) - get all jobs in my_folder\n  get_jobs(my_view) - get all jobs in my_view\n\n\nI think this is better than requiring the user to use multiple get_jobs methods.","commit_id":"27f0079a527e68586669c7e210f1ba47af115c20"},{"author":{"_account_id":19094,"name":"Aliaksandr Buhayeu","email":"abuhayeu@mirantis.com","username":"abuhayeu"},"change_message_id":"6f6aa2041ddd12a527fa2070db89dfd815ee232d","unresolved":false,"context_lines":[{"line_number":658,"context_line":""},{"line_number":659,"context_line":"        return plugins_data"},{"line_number":660,"context_line":""},{"line_number":661,"context_line":"    def get_jobs(self, folder_depth\u003d0):"},{"line_number":662,"context_line":"        \"\"\"Get list of jobs."},{"line_number":663,"context_line":""},{"line_number":664,"context_line":"        Each job is a dictionary with \u0027name\u0027, \u0027url\u0027, \u0027color\u0027 and \u0027fullname\u0027"}],"source_content_type":"text/x-python","patch_set":1,"id":"dae33548_254aa8ac","line":661,"in_reply_to":"dae33548_36de7711","updated":"2016-02-17 11:41:39.000000000","message":"I got you. The only difference between them is that `fullname` key is absent in results for jobs from the view.","commit_id":"27f0079a527e68586669c7e210f1ba47af115c20"},{"author":{"_account_id":6987,"name":"Khai Do","email":"zaro0508@gmail.com","username":"zaro0508"},"change_message_id":"6ee18cb2021715627290678ff3cf525594ef8c4d","unresolved":false,"context_lines":[{"line_number":671,"context_line":""},{"line_number":672,"context_line":"        return self.get_all_jobs(folder_depth\u003dfolder_depth)"},{"line_number":673,"context_line":""},{"line_number":674,"context_line":"    def get_all_jobs(self, folder_depth\u003dNone):"},{"line_number":675,"context_line":"        \"\"\"Get list of all jobs recursively to the given folder depth."},{"line_number":676,"context_line":""},{"line_number":677,"context_line":"        Each job is a dictionary with \u0027name\u0027, \u0027url\u0027, \u0027color\u0027 and \u0027fullname\u0027"}],"source_content_type":"text/x-python","patch_set":1,"id":"dae33548_287462fb","line":674,"updated":"2016-02-16 18:22:22.000000000","message":"isn\u0027t folder and view the same thing?  I mean can\u0027t you use this method to get info on jobs in a view as well?","commit_id":"27f0079a527e68586669c7e210f1ba47af115c20"},{"author":{"_account_id":19094,"name":"Aliaksandr Buhayeu","email":"abuhayeu@mirantis.com","username":"abuhayeu"},"change_message_id":"b8f344ddda07585fbe0cd69ab0e3b0a3b5bcd253","unresolved":false,"context_lines":[{"line_number":671,"context_line":""},{"line_number":672,"context_line":"        return self.get_all_jobs(folder_depth\u003dfolder_depth)"},{"line_number":673,"context_line":""},{"line_number":674,"context_line":"    def get_all_jobs(self, folder_depth\u003dNone):"},{"line_number":675,"context_line":"        \"\"\"Get list of all jobs recursively to the given folder depth."},{"line_number":676,"context_line":""},{"line_number":677,"context_line":"        Each job is a dictionary with \u0027name\u0027, \u0027url\u0027, \u0027color\u0027 and \u0027fullname\u0027"}],"source_content_type":"text/x-python","patch_set":1,"id":"dae33548_c63de6bc","line":674,"in_reply_to":"dae33548_287462fb","updated":"2016-02-16 19:15:41.000000000","message":"I believe that `get_all_jobs` operates `depth` (int) argument so we need to retrieve additional info for each job to see if it belongs to the view required.\n\nBut after your question I have found another way to achieve the same result as new proposed method:\n`server.get_info(\u0027view/ISO\u0027)[\u0027jobs\u0027]`.\n\nThe cons of it for me are:\n- a bit more cryptic form `view/ISO` rather than just \u0027ISO\u0027\n- in case of nonexistent view name the error message is a bit more generic \"Requested item could not be found\".\n- it actually returns more info than required (could be slower) and we use only part of it (the `jobs` key).\n\nBut the results seems equal.","commit_id":"27f0079a527e68586669c7e210f1ba47af115c20"},{"author":{"_account_id":6987,"name":"Khai Do","email":"zaro0508@gmail.com","username":"zaro0508"},"change_message_id":"8ebb32ec53f117ef8a64423846c8c5eb5e328412","unresolved":false,"context_lines":[{"line_number":671,"context_line":""},{"line_number":672,"context_line":"        return self.get_all_jobs(folder_depth\u003dfolder_depth)"},{"line_number":673,"context_line":""},{"line_number":674,"context_line":"    def get_all_jobs(self, folder_depth\u003dNone):"},{"line_number":675,"context_line":"        \"\"\"Get list of all jobs recursively to the given folder depth."},{"line_number":676,"context_line":""},{"line_number":677,"context_line":"        Each job is a dictionary with \u0027name\u0027, \u0027url\u0027, \u0027color\u0027 and \u0027fullname\u0027"}],"source_content_type":"text/x-python","patch_set":1,"id":"dae33548_369cb7bf","line":674,"in_reply_to":"dae33548_c63de6bc","updated":"2016-02-17 00:40:21.000000000","message":"I see.  I agree that server.get_info(..) is more cryptic and we should use the view endpoint instead.","commit_id":"27f0079a527e68586669c7e210f1ba47af115c20"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"975b7c1e6701ac44a92b556fb5933aee6883b648","unresolved":false,"context_lines":[{"line_number":1296,"context_line":"        \u0027\u0027\u0027Get list of jobs configured on view."},{"line_number":1297,"context_line":""},{"line_number":1298,"context_line":"        :param name: Name of Jenkins view, ``str``"},{"line_number":1299,"context_line":"        :returns: List of jobs, ``[ { str: str, str: str, str: str } ]``"},{"line_number":1300,"context_line":"        \u0027\u0027\u0027"},{"line_number":1301,"context_line":"        try:"},{"line_number":1302,"context_line":"            response \u003d self.jenkins_open(Request("}],"source_content_type":"text/x-python","patch_set":1,"id":"dae33548_8e94d537","line":1299,"updated":"2016-02-15 16:54:11.000000000","message":"It would be nice to document exactly what sort of information is returned for the jobs here; that is, is the information structurally the same as what you get from, say, get_all_jobs()?  The library is quite short on that sort of information, so treat this as a femtonit…","commit_id":"27f0079a527e68586669c7e210f1ba47af115c20"},{"author":{"_account_id":19094,"name":"Aliaksandr Buhayeu","email":"abuhayeu@mirantis.com","username":"abuhayeu"},"change_message_id":"b8f344ddda07585fbe0cd69ab0e3b0a3b5bcd253","unresolved":false,"context_lines":[{"line_number":1296,"context_line":"        \u0027\u0027\u0027Get list of jobs configured on view."},{"line_number":1297,"context_line":""},{"line_number":1298,"context_line":"        :param name: Name of Jenkins view, ``str``"},{"line_number":1299,"context_line":"        :returns: List of jobs, ``[ { str: str, str: str, str: str } ]``"},{"line_number":1300,"context_line":"        \u0027\u0027\u0027"},{"line_number":1301,"context_line":"        try:"},{"line_number":1302,"context_line":"            response \u003d self.jenkins_open(Request("}],"source_content_type":"text/x-python","patch_set":1,"id":"dae33548_88ef6e86","line":1299,"in_reply_to":"dae33548_8e94d537","updated":"2016-02-16 19:15:41.000000000","message":"Yeah, it is pretty similar to results of `get_all_jobs()` just without `fullname` attribute.\n\nI will add result example to the docstring.","commit_id":"27f0079a527e68586669c7e210f1ba47af115c20"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"3e1edd64480272d74f3d671f63f4422eb03976d2","unresolved":false,"context_lines":[{"line_number":659,"context_line":"        return plugins_data"},{"line_number":660,"context_line":""},{"line_number":661,"context_line":"    def get_jobs(self, folder_depth\u003d0, view_name\u003dNone):"},{"line_number":662,"context_line":"        \u0027\u0027\u0027Get list of jobs."},{"line_number":663,"context_line":""},{"line_number":664,"context_line":"        Each job is a dictionary with \u0027name\u0027, \u0027url\u0027, \u0027color\u0027 and \u0027fullname\u0027"},{"line_number":665,"context_line":"        keys."}],"source_content_type":"text/x-python","patch_set":3,"id":"dae33548_0a1e765e","line":662,"range":{"start_line":662,"start_character":8,"end_line":662,"end_character":11},"updated":"2016-02-17 16:55:47.000000000","message":"There\u0027s no need to update the quotes for this docstring.","commit_id":"b22a8511061bf563357c510587ab10ad8d378fd3"},{"author":{"_account_id":19094,"name":"Aliaksandr Buhayeu","email":"abuhayeu@mirantis.com","username":"abuhayeu"},"change_message_id":"3675afc68abaa7c19c49a65afa42b300d5ca6896","unresolved":false,"context_lines":[{"line_number":659,"context_line":"        return plugins_data"},{"line_number":660,"context_line":""},{"line_number":661,"context_line":"    def get_jobs(self, folder_depth\u003d0, view_name\u003dNone):"},{"line_number":662,"context_line":"        \u0027\u0027\u0027Get list of jobs."},{"line_number":663,"context_line":""},{"line_number":664,"context_line":"        Each job is a dictionary with \u0027name\u0027, \u0027url\u0027, \u0027color\u0027 and \u0027fullname\u0027"},{"line_number":665,"context_line":"        keys."}],"source_content_type":"text/x-python","patch_set":3,"id":"dae33548_00581789","line":662,"range":{"start_line":662,"start_character":8,"end_line":662,"end_character":11},"in_reply_to":"dae33548_0a1e765e","updated":"2016-02-17 17:45:00.000000000","message":"Done","commit_id":"b22a8511061bf563357c510587ab10ad8d378fd3"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"3e1edd64480272d74f3d671f63f4422eb03976d2","unresolved":false,"context_lines":[{"line_number":666,"context_line":""},{"line_number":667,"context_line":"        If the ``view_name`` param is present the list of jobs would be limited"},{"line_number":668,"context_line":"        to those configured on view specified."},{"line_number":669,"context_line":"        Jobs dictionaries results in such case doesn\u0027t have the \u0027fullname\u0027 key."},{"line_number":670,"context_line":""},{"line_number":671,"context_line":"        :param folder_depth: Number of levels to search, ``int``. By default"},{"line_number":672,"context_line":"            0, which will limit search to toplevel. None disables the limit."}],"source_content_type":"text/x-python","patch_set":3,"id":"dae33548_ea7072a6","line":669,"updated":"2016-02-17 16:55:47.000000000","message":"English corrections:\n\n    If the ``view_name`` parameter is present, the list of\n    jobs will be limited to only those configured in the\n    specified view.  In this case, the job dictionary will\n    not have the \"fullname\" key.","commit_id":"b22a8511061bf563357c510587ab10ad8d378fd3"},{"author":{"_account_id":19094,"name":"Aliaksandr Buhayeu","email":"abuhayeu@mirantis.com","username":"abuhayeu"},"change_message_id":"3675afc68abaa7c19c49a65afa42b300d5ca6896","unresolved":false,"context_lines":[{"line_number":666,"context_line":""},{"line_number":667,"context_line":"        If the ``view_name`` param is present the list of jobs would be limited"},{"line_number":668,"context_line":"        to those configured on view specified."},{"line_number":669,"context_line":"        Jobs dictionaries results in such case doesn\u0027t have the \u0027fullname\u0027 key."},{"line_number":670,"context_line":""},{"line_number":671,"context_line":"        :param folder_depth: Number of levels to search, ``int``. By default"},{"line_number":672,"context_line":"            0, which will limit search to toplevel. None disables the limit."}],"source_content_type":"text/x-python","patch_set":3,"id":"dae33548_40569f5c","line":669,"in_reply_to":"dae33548_ea7072a6","updated":"2016-02-17 17:45:00.000000000","message":"Thanks!","commit_id":"b22a8511061bf563357c510587ab10ad8d378fd3"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"3e1edd64480272d74f3d671f63f4422eb03976d2","unresolved":false,"context_lines":[{"line_number":671,"context_line":"        :param folder_depth: Number of levels to search, ``int``. By default"},{"line_number":672,"context_line":"            0, which will limit search to toplevel. None disables the limit."},{"line_number":673,"context_line":"        :param view_name: Name of Jenkins view jobs belongs to, ``str``."},{"line_number":674,"context_line":"            By default None, which won\u0027t limit jobs to specific view."},{"line_number":675,"context_line":"        :returns: list of jobs, ``[{str: str, str: str, str: str, str: str}]``"},{"line_number":676,"context_line":""},{"line_number":677,"context_line":"        Example::"}],"source_content_type":"text/x-python","patch_set":3,"id":"dae33548_2a953a86","line":674,"updated":"2016-02-17 16:55:47.000000000","message":"More corrections:\n\n    :param view_name: Name of a Jenkins view for which to\n        retrieve jobs, ``str``.  By default, the job list is\n        not limited to a specific view.","commit_id":"b22a8511061bf563357c510587ab10ad8d378fd3"},{"author":{"_account_id":19094,"name":"Aliaksandr Buhayeu","email":"abuhayeu@mirantis.com","username":"abuhayeu"},"change_message_id":"3675afc68abaa7c19c49a65afa42b300d5ca6896","unresolved":false,"context_lines":[{"line_number":671,"context_line":"        :param folder_depth: Number of levels to search, ``int``. By default"},{"line_number":672,"context_line":"            0, which will limit search to toplevel. None disables the limit."},{"line_number":673,"context_line":"        :param view_name: Name of Jenkins view jobs belongs to, ``str``."},{"line_number":674,"context_line":"            By default None, which won\u0027t limit jobs to specific view."},{"line_number":675,"context_line":"        :returns: list of jobs, ``[{str: str, str: str, str: str, str: str}]``"},{"line_number":676,"context_line":""},{"line_number":677,"context_line":"        Example::"}],"source_content_type":"text/x-python","patch_set":3,"id":"dae33548_2001db38","line":674,"in_reply_to":"dae33548_2a953a86","updated":"2016-02-17 17:45:00.000000000","message":"Done","commit_id":"b22a8511061bf563357c510587ab10ad8d378fd3"},{"author":{"_account_id":6987,"name":"Khai Do","email":"zaro0508@gmail.com","username":"zaro0508"},"change_message_id":"3c173ac21303b7c3bc94a856172e94f0953cfb28","unresolved":false,"context_lines":[{"line_number":667,"context_line":"        If the ``view_name`` parameter is present, the list of"},{"line_number":668,"context_line":"        jobs will be limited to only those configured in the"},{"line_number":669,"context_line":"        specified view. In this case, the job dictionary will"},{"line_number":670,"context_line":"        not have the \u0027fullname\u0027 key."},{"line_number":671,"context_line":""},{"line_number":672,"context_line":"        :param folder_depth: Number of levels to search, ``int``. By default"},{"line_number":673,"context_line":"            0, which will limit search to toplevel. None disables the limit."}],"source_content_type":"text/x-python","patch_set":4,"id":"dae33548_2a5b71f7","line":670,"updated":"2016-02-17 20:03:02.000000000","message":"From a user POV i think having fullname would be better than not having it at all because I would expect to always get the same dict object to be returned from this method.  Maybe add fullname to the dict and make it either empty (or the same as \u0027name\u0027) in this case? \n\nFor example:\n\n jobs \u003d get_jobs();\n print (jobs[\u0027fullname\u0027])  \u003c-- gives me the fullname\n\n my_view_jobs \u003d get_jobs(view_name\u003d\"my_view\");\n print (my_view_jobs[\u0027fullname\u0027])  \u003c-- get a key error!  i would rather get either empty or the same as the name.","commit_id":"f280c3ad903cd603afe0bd9f665dbe7d74168d1c"},{"author":{"_account_id":19094,"name":"Aliaksandr Buhayeu","email":"abuhayeu@mirantis.com","username":"abuhayeu"},"change_message_id":"9d8df8e200d0a0393e559adbb9f896b2c7ec4569","unresolved":false,"context_lines":[{"line_number":667,"context_line":"        If the ``view_name`` parameter is present, the list of"},{"line_number":668,"context_line":"        jobs will be limited to only those configured in the"},{"line_number":669,"context_line":"        specified view. In this case, the job dictionary will"},{"line_number":670,"context_line":"        not have the \u0027fullname\u0027 key."},{"line_number":671,"context_line":""},{"line_number":672,"context_line":"        :param folder_depth: Number of levels to search, ``int``. By default"},{"line_number":673,"context_line":"            0, which will limit search to toplevel. None disables the limit."}],"source_content_type":"text/x-python","patch_set":4,"id":"dae33548_01259d07","line":670,"in_reply_to":"dae33548_2a5b71f7","updated":"2016-02-18 08:53:25.000000000","message":"Okey, I will add `fullname` \u003d\u003d `name` into the result dict. Just thought that in case real `fullname` and `name` are differs it might lead to hard to track issue.\n\nWill assume that this `fullanme` is depth\u003d0 and relative to the view specified.","commit_id":"f280c3ad903cd603afe0bd9f665dbe7d74168d1c"},{"author":{"_account_id":6987,"name":"Khai Do","email":"zaro0508@gmail.com","username":"zaro0508"},"change_message_id":"3c173ac21303b7c3bc94a856172e94f0953cfb28","unresolved":false,"context_lines":[{"line_number":698,"context_line":"        \"\"\""},{"line_number":699,"context_line":""},{"line_number":700,"context_line":"        if view_name:"},{"line_number":701,"context_line":"            try:"},{"line_number":702,"context_line":"                response \u003d self.jenkins_open(Request("},{"line_number":703,"context_line":"                    self._build_url(VIEW_JOBS, {u\u0027name\u0027: view_name})"},{"line_number":704,"context_line":"                ))"}],"source_content_type":"text/x-python","patch_set":4,"id":"dae33548_35447619","line":701,"updated":"2016-02-17 20:03:02.000000000","message":"nit: you probably could have left the function in previous patchset and called it here.  Maybe just add underscore to indicate a private method?","commit_id":"f280c3ad903cd603afe0bd9f665dbe7d74168d1c"},{"author":{"_account_id":19094,"name":"Aliaksandr Buhayeu","email":"abuhayeu@mirantis.com","username":"abuhayeu"},"change_message_id":"9d8df8e200d0a0393e559adbb9f896b2c7ec4569","unresolved":false,"context_lines":[{"line_number":698,"context_line":"        \"\"\""},{"line_number":699,"context_line":""},{"line_number":700,"context_line":"        if view_name:"},{"line_number":701,"context_line":"            try:"},{"line_number":702,"context_line":"                response \u003d self.jenkins_open(Request("},{"line_number":703,"context_line":"                    self._build_url(VIEW_JOBS, {u\u0027name\u0027: view_name})"},{"line_number":704,"context_line":"                ))"}],"source_content_type":"text/x-python","patch_set":4,"id":"dae33548_21df01da","line":701,"in_reply_to":"dae33548_35447619","updated":"2016-02-18 08:53:25.000000000","message":"Done","commit_id":"f280c3ad903cd603afe0bd9f665dbe7d74168d1c"},{"author":{"_account_id":6987,"name":"Khai Do","email":"zaro0508@gmail.com","username":"zaro0508"},"change_message_id":"3c173ac21303b7c3bc94a856172e94f0953cfb28","unresolved":false,"context_lines":[{"line_number":705,"context_line":"                if response:"},{"line_number":706,"context_line":"                    return json.loads(response)[\u0027jobs\u0027]"},{"line_number":707,"context_line":"                else:"},{"line_number":708,"context_line":"                    raise JenkinsException(\u0027view[%s] does not exist\u0027 % view_name)"},{"line_number":709,"context_line":"            except HTTPError:"},{"line_number":710,"context_line":"                raise JenkinsException(\u0027view[%s] does not exist\u0027 % view_name)"},{"line_number":711,"context_line":"            except ValueError:"}],"source_content_type":"text/x-python","patch_set":4,"id":"dae33548_ca9125f3","line":708,"updated":"2016-02-17 20:03:02.000000000","message":"would you mind creating tests to validate these error conditions?  There should be plenty of examples in the existing \u0027jobs\u0027 tests.","commit_id":"f280c3ad903cd603afe0bd9f665dbe7d74168d1c"},{"author":{"_account_id":19094,"name":"Aliaksandr Buhayeu","email":"abuhayeu@mirantis.com","username":"abuhayeu"},"change_message_id":"9d8df8e200d0a0393e559adbb9f896b2c7ec4569","unresolved":false,"context_lines":[{"line_number":705,"context_line":"                if response:"},{"line_number":706,"context_line":"                    return json.loads(response)[\u0027jobs\u0027]"},{"line_number":707,"context_line":"                else:"},{"line_number":708,"context_line":"                    raise JenkinsException(\u0027view[%s] does not exist\u0027 % view_name)"},{"line_number":709,"context_line":"            except HTTPError:"},{"line_number":710,"context_line":"                raise JenkinsException(\u0027view[%s] does not exist\u0027 % view_name)"},{"line_number":711,"context_line":"            except ValueError:"}],"source_content_type":"text/x-python","patch_set":4,"id":"dae33548_41e04596","line":708,"in_reply_to":"dae33548_ca9125f3","updated":"2016-02-18 08:53:25.000000000","message":"Yeah, sure!","commit_id":"f280c3ad903cd603afe0bd9f665dbe7d74168d1c"},{"author":{"_account_id":6987,"name":"Khai Do","email":"zaro0508@gmail.com","username":"zaro0508"},"change_message_id":"d2eda8f22542333143f94ca088e4452eceff3e45","unresolved":false,"context_lines":[{"line_number":687,"context_line":"                u\u0027color\u0027: u\u0027blue\u0027"},{"line_number":688,"context_line":"            }]"},{"line_number":689,"context_line":""},{"line_number":690,"context_line":"            \u003e\u003e\u003e jobs \u003d server.get_jobs(view_name\u003d\u0027stable\u0027)"},{"line_number":691,"context_line":"            \u003e\u003e\u003e print(jobs)"},{"line_number":692,"context_line":"            [{"},{"line_number":693,"context_line":"                u\u0027name\u0027: u\u0027all_tests\u0027,"}],"source_content_type":"text/x-python","patch_set":5,"id":"bae84128_775debe8","line":690,"updated":"2016-02-19 22:26:57.000000000","message":"Now that this example returns the same dict maybe it\u0027s really not needed anymore?","commit_id":"9cccc78918b5bc4c8bc428810ccc8b53b41a4d5a"},{"author":{"_account_id":19094,"name":"Aliaksandr Buhayeu","email":"abuhayeu@mirantis.com","username":"abuhayeu"},"change_message_id":"70532dea77cc38a6586c31c1463acd95ad7e1d9e","unresolved":false,"context_lines":[{"line_number":687,"context_line":"                u\u0027color\u0027: u\u0027blue\u0027"},{"line_number":688,"context_line":"            }]"},{"line_number":689,"context_line":""},{"line_number":690,"context_line":"            \u003e\u003e\u003e jobs \u003d server.get_jobs(view_name\u003d\u0027stable\u0027)"},{"line_number":691,"context_line":"            \u003e\u003e\u003e print(jobs)"},{"line_number":692,"context_line":"            [{"},{"line_number":693,"context_line":"                u\u0027name\u0027: u\u0027all_tests\u0027,"}],"source_content_type":"text/x-python","patch_set":5,"id":"bae84128_bba0c444","line":690,"in_reply_to":"bae84128_775debe8","updated":"2016-02-22 11:32:41.000000000","message":"Done","commit_id":"9cccc78918b5bc4c8bc428810ccc8b53b41a4d5a"},{"author":{"_account_id":6987,"name":"Khai Do","email":"zaro0508@gmail.com","username":"zaro0508"},"change_message_id":"d2eda8f22542333143f94ca088e4452eceff3e45","unresolved":false,"context_lines":[{"line_number":690,"context_line":"            \u003e\u003e\u003e jobs \u003d server.get_jobs(view_name\u003d\u0027stable\u0027)"},{"line_number":691,"context_line":"            \u003e\u003e\u003e print(jobs)"},{"line_number":692,"context_line":"            [{"},{"line_number":693,"context_line":"                u\u0027name\u0027: u\u0027all_tests\u0027,"},{"line_number":694,"context_line":"                u\u0027url\u0027: u\u0027http://your_url.here/job/all_tests/\u0027,"},{"line_number":695,"context_line":"                u\u0027color\u0027: u\u0027blue\u0027"},{"line_number":696,"context_line":"            }]"}],"source_content_type":"text/x-python","patch_set":5,"id":"dae33548_534e3a3b","line":693,"updated":"2016-02-19 22:26:57.000000000","message":"shouldn\u0027t this have \u0027fullname\u0027 as well?","commit_id":"9cccc78918b5bc4c8bc428810ccc8b53b41a4d5a"},{"author":{"_account_id":19094,"name":"Aliaksandr Buhayeu","email":"abuhayeu@mirantis.com","username":"abuhayeu"},"change_message_id":"70532dea77cc38a6586c31c1463acd95ad7e1d9e","unresolved":false,"context_lines":[{"line_number":690,"context_line":"            \u003e\u003e\u003e jobs \u003d server.get_jobs(view_name\u003d\u0027stable\u0027)"},{"line_number":691,"context_line":"            \u003e\u003e\u003e print(jobs)"},{"line_number":692,"context_line":"            [{"},{"line_number":693,"context_line":"                u\u0027name\u0027: u\u0027all_tests\u0027,"},{"line_number":694,"context_line":"                u\u0027url\u0027: u\u0027http://your_url.here/job/all_tests/\u0027,"},{"line_number":695,"context_line":"                u\u0027color\u0027: u\u0027blue\u0027"},{"line_number":696,"context_line":"            }]"}],"source_content_type":"text/x-python","patch_set":5,"id":"bae84128_5b99b81e","line":693,"in_reply_to":"dae33548_534e3a3b","updated":"2016-02-22 11:32:41.000000000","message":"Yeah, sure. I will left just one example for both cases.","commit_id":"9cccc78918b5bc4c8bc428810ccc8b53b41a4d5a"}]}
