)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":11748,"name":"Chris St. Pierre","email":"cstpierr@cisco.com","username":"stpierre"},"change_message_id":"b0fee6f999aa6fd22a108be8ba4fb5750450a69e","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add CobblerProvider provider"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"CobblerProvider provider spins out servers from bare-metal estate by"},{"line_number":10,"context_line":"applying given cobbler selector"},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Change-Id: Ifdb18835f243c0251c85776de2c99e7484f988b0"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":12,"id":"ba15a1d1_dced6126","line":9,"updated":"2015-09-15 16:56:37.000000000","message":"s/estate/state/ ?","commit_id":"f6de1efb6e4e76f6b2db070c99b7f08ea7e8111e"},{"author":{"_account_id":12632,"name":"Kirill Shileev","email":"kshileev@cisco.com","username":"kshileev"},"change_message_id":"455afa7858779ad27037a3051f61bd495cb733e5","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add CobblerProvider provider"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"CobblerProvider provider spins out servers from bare-metal estate by"},{"line_number":10,"context_line":"applying given cobbler selector"},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Change-Id: Ifdb18835f243c0251c85776de2c99e7484f988b0"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":12,"id":"ba15a1d1_409d1758","line":9,"in_reply_to":"ba15a1d1_dced6126","updated":"2015-09-21 17:41:49.000000000","message":"meant servers estate, probably I\u0027ll re-phrase to pool of bare-metal servers","commit_id":"f6de1efb6e4e76f6b2db070c99b7f08ea7e8111e"}],"rally/deploy/serverprovider/providers/cobbler.py":[{"author":{"_account_id":7369,"name":"Sergey Skripnick","email":"sskripnick@mirantis.com","username":"redixin"},"change_message_id":"d53549efc71fba2cf4d0e5e2b27400b693d00f3a","unresolved":false,"context_lines":[{"line_number":70,"context_line":"            host\u003dconfig[\"host\"]))"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"    @staticmethod"},{"line_number":73,"context_line":"    def ip_for_system(rendered_system):"},{"line_number":74,"context_line":"        for key in filter(lambda x: \"ip_address\" in x, rendered_system.keys()):"},{"line_number":75,"context_line":"            if rendered_system[key]:"},{"line_number":76,"context_line":"                return rendered_system[key]"}],"source_content_type":"text/x-python","patch_set":8,"id":"3a50d1a3_b9915649","line":73,"updated":"2015-07-22 10:47:47.000000000","message":"This looks a bit complicated. Why not just\n\n for key, val in rendered_system.items():\n  if \"ip_address\" in key:\n   return val\n\n?","commit_id":"ff096aa57b7215c6326b7506d5e4d0f945909be1"},{"author":{"_account_id":12632,"name":"Kirill Shileev","email":"kshileev@cisco.com","username":"kshileev"},"change_message_id":"1689966e7d3187b8f55f73ce582a1afe374d13ff","unresolved":false,"context_lines":[{"line_number":70,"context_line":"            host\u003dconfig[\"host\"]))"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"    @staticmethod"},{"line_number":73,"context_line":"    def ip_for_system(rendered_system):"},{"line_number":74,"context_line":"        for key in filter(lambda x: \"ip_address\" in x, rendered_system.keys()):"},{"line_number":75,"context_line":"            if rendered_system[key]:"},{"line_number":76,"context_line":"                return rendered_system[key]"}],"source_content_type":"text/x-python","patch_set":8,"id":"1a4dcd0f_c1ec8bf5","line":73,"in_reply_to":"1a4dcd0f_0b50525d","updated":"2015-08-11 13:20:01.000000000","message":"agree, will change","commit_id":"ff096aa57b7215c6326b7506d5e4d0f945909be1"},{"author":{"_account_id":12632,"name":"Kirill Shileev","email":"kshileev@cisco.com","username":"kshileev"},"change_message_id":"d2cadb32a21c42c17898224b0193b598b0f64757","unresolved":false,"context_lines":[{"line_number":70,"context_line":"            host\u003dconfig[\"host\"]))"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"    @staticmethod"},{"line_number":73,"context_line":"    def ip_for_system(rendered_system):"},{"line_number":74,"context_line":"        for key in filter(lambda x: \"ip_address\" in x, rendered_system.keys()):"},{"line_number":75,"context_line":"            if rendered_system[key]:"},{"line_number":76,"context_line":"                return rendered_system[key]"}],"source_content_type":"text/x-python","patch_set":8,"id":"3a50d1a3_cff5bfed","line":73,"in_reply_to":"3a50d1a3_b9915649","updated":"2015-07-26 20:55:09.000000000","message":"cobbler provide possibility to assign a number of ips for different purposes, ip_address is just a common denominator\nfor them. This login returns the first found ip address which is usually a managment iface","commit_id":"ff096aa57b7215c6326b7506d5e4d0f945909be1"},{"author":{"_account_id":7369,"name":"Sergey Skripnick","email":"sskripnick@mirantis.com","username":"redixin"},"change_message_id":"ab5cbdc127ea88aea4f725bbd94e1416a542e460","unresolved":false,"context_lines":[{"line_number":70,"context_line":"            host\u003dconfig[\"host\"]))"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"    @staticmethod"},{"line_number":73,"context_line":"    def ip_for_system(rendered_system):"},{"line_number":74,"context_line":"        for key in filter(lambda x: \"ip_address\" in x, rendered_system.keys()):"},{"line_number":75,"context_line":"            if rendered_system[key]:"},{"line_number":76,"context_line":"                return rendered_system[key]"}],"source_content_type":"text/x-python","patch_set":8,"id":"1a4dcd0f_0b50525d","line":73,"in_reply_to":"3a50d1a3_cff5bfed","updated":"2015-08-11 12:54:26.000000000","message":"I mean this code is complicated. The code I proposed doing the same","commit_id":"ff096aa57b7215c6326b7506d5e4d0f945909be1"},{"author":{"_account_id":7369,"name":"Sergey Skripnick","email":"sskripnick@mirantis.com","username":"redixin"},"change_message_id":"d53549efc71fba2cf4d0e5e2b27400b693d00f3a","unresolved":false,"context_lines":[{"line_number":78,"context_line":"                           + \"\u0027{0}\u0027\".format(rendered_system[\"name\"]))"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"    def reboot_system(self, system_name):"},{"line_number":81,"context_line":"        token \u003d self.cobbler.login(self.config[\"user\"],"},{"line_number":82,"context_line":"                                   self.config.get(\"password\", \"cobbler\"))"},{"line_number":83,"context_line":"        handle \u003d self.cobbler.get_system_handle(system_name, token)"},{"line_number":84,"context_line":"        self.cobbler.power_system(handle, \"reboot\", token)"}],"source_content_type":"text/x-python","patch_set":8,"id":"3a50d1a3_b97b96f4","line":81,"updated":"2015-07-22 10:47:47.000000000","message":"This will be called within a loop. Is it possible to login once? E.g in __init__?","commit_id":"ff096aa57b7215c6326b7506d5e4d0f945909be1"},{"author":{"_account_id":12632,"name":"Kirill Shileev","email":"kshileev@cisco.com","username":"kshileev"},"change_message_id":"d2cadb32a21c42c17898224b0193b598b0f64757","unresolved":false,"context_lines":[{"line_number":78,"context_line":"                           + \"\u0027{0}\u0027\".format(rendered_system[\"name\"]))"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"    def reboot_system(self, system_name):"},{"line_number":81,"context_line":"        token \u003d self.cobbler.login(self.config[\"user\"],"},{"line_number":82,"context_line":"                                   self.config.get(\"password\", \"cobbler\"))"},{"line_number":83,"context_line":"        handle \u003d self.cobbler.get_system_handle(system_name, token)"},{"line_number":84,"context_line":"        self.cobbler.power_system(handle, \"reboot\", token)"}],"source_content_type":"text/x-python","patch_set":8,"id":"3a50d1a3_2fe78341","line":81,"in_reply_to":"3a50d1a3_b97b96f4","updated":"2015-07-26 20:55:09.000000000","message":"auth expires after a while, if not do this one needs the login to get operations re-done in case \"forbidden\" status received. Since re-booting is always much longer, I think we may spend a second here","commit_id":"ff096aa57b7215c6326b7506d5e4d0f945909be1"},{"author":{"_account_id":14764,"name":"Yuki Nishiwaki","email":"uckey.1067@gmail.com","username":"ukinau"},"change_message_id":"4e2dea66342a697b6ee1b0cd5c1085c24bef36d2","unresolved":false,"context_lines":[{"line_number":84,"context_line":"        self.cobbler.power_system(handle, \"reboot\", token)"},{"line_number":85,"context_line":"        rendered \u003d self.cobbler.get_system_as_rendered(system_name)"},{"line_number":86,"context_line":"        return provider.Server(host\u003dself.ip_for_system(rendered),"},{"line_number":87,"context_line":"                               user\u003drendered[\"power_user\"],"},{"line_number":88,"context_line":"                               key\u003drendered.get(\"redhat_management_key\"),"},{"line_number":89,"context_line":"                               password\u003dself.config.get(\"system_password\", \"\"),"},{"line_number":90,"context_line":"                               port\u003d22)"}],"source_content_type":"text/x-python","patch_set":8,"id":"3a50d1a3_17492760","line":87,"updated":"2015-07-22 14:00:57.000000000","message":"If you don\u0027t have a specific reason,\nI think you should standardize how get value from dict ( [] or get ) at here","commit_id":"ff096aa57b7215c6326b7506d5e4d0f945909be1"},{"author":{"_account_id":12632,"name":"Kirill Shileev","email":"kshileev@cisco.com","username":"kshileev"},"change_message_id":"d2cadb32a21c42c17898224b0193b598b0f64757","unresolved":false,"context_lines":[{"line_number":84,"context_line":"        self.cobbler.power_system(handle, \"reboot\", token)"},{"line_number":85,"context_line":"        rendered \u003d self.cobbler.get_system_as_rendered(system_name)"},{"line_number":86,"context_line":"        return provider.Server(host\u003dself.ip_for_system(rendered),"},{"line_number":87,"context_line":"                               user\u003drendered[\"power_user\"],"},{"line_number":88,"context_line":"                               key\u003drendered.get(\"redhat_management_key\"),"},{"line_number":89,"context_line":"                               password\u003dself.config.get(\"system_password\", \"\"),"},{"line_number":90,"context_line":"                               port\u003d22)"}],"source_content_type":"text/x-python","patch_set":8,"id":"3a50d1a3_efcf5bb1","line":87,"in_reply_to":"3a50d1a3_17492760","updated":"2015-07-26 20:55:09.000000000","message":"I have a reason. [] is used when the key is in response by definition, while get is used for optional keys","commit_id":"ff096aa57b7215c6326b7506d5e4d0f945909be1"},{"author":{"_account_id":14764,"name":"Yuki Nishiwaki","email":"uckey.1067@gmail.com","username":"ukinau"},"change_message_id":"81202e71141ba8b8dd3509d14e3408b4119e74ee","unresolved":false,"context_lines":[{"line_number":85,"context_line":"        rendered \u003d self.cobbler.get_system_as_rendered(system_name)"},{"line_number":86,"context_line":"        return provider.Server(host\u003dself.ip_for_system(rendered),"},{"line_number":87,"context_line":"                               user\u003drendered[\"power_user\"],"},{"line_number":88,"context_line":"                               key\u003drendered.get(\"redhat_management_key\"),"},{"line_number":89,"context_line":"                               password\u003dself.config.get(\"system_password\", \"\"),"},{"line_number":90,"context_line":"                               port\u003d22)"},{"line_number":91,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"3a50d1a3_0d183a1d","line":88,"updated":"2015-07-22 14:25:52.000000000","message":"What purpose do you want to use the value of \u0027redhat_management_key\u0027 ?","commit_id":"ff096aa57b7215c6326b7506d5e4d0f945909be1"},{"author":{"_account_id":12632,"name":"Kirill Shileev","email":"kshileev@cisco.com","username":"kshileev"},"change_message_id":"d2cadb32a21c42c17898224b0193b598b0f64757","unresolved":false,"context_lines":[{"line_number":85,"context_line":"        rendered \u003d self.cobbler.get_system_as_rendered(system_name)"},{"line_number":86,"context_line":"        return provider.Server(host\u003dself.ip_for_system(rendered),"},{"line_number":87,"context_line":"                               user\u003drendered[\"power_user\"],"},{"line_number":88,"context_line":"                               key\u003drendered.get(\"redhat_management_key\"),"},{"line_number":89,"context_line":"                               password\u003dself.config.get(\"system_password\", \"\"),"},{"line_number":90,"context_line":"                               port\u003d22)"},{"line_number":91,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"3a50d1a3_afc953ae","line":88,"in_reply_to":"3a50d1a3_0d183a1d","updated":"2015-07-26 20:55:09.000000000","message":"server in cobbler is described by dict which include the key for server access. So I provide it when available","commit_id":"ff096aa57b7215c6326b7506d5e4d0f945909be1"},{"author":{"_account_id":7369,"name":"Sergey Skripnick","email":"sskripnick@mirantis.com","username":"redixin"},"change_message_id":"d53549efc71fba2cf4d0e5e2b27400b693d00f3a","unresolved":false,"context_lines":[{"line_number":101,"context_line":"            raise CobblerError(_(\"No servers created\"))"},{"line_number":102,"context_line":"        return servers"},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"    def destroy_servers(self):"},{"line_number":105,"context_line":"        pass"}],"source_content_type":"text/x-python","patch_set":8,"id":"3a50d1a3_192baa95","line":104,"updated":"2015-07-22 10:47:47.000000000","message":"What about this? How resources can be freed?","commit_id":"ff096aa57b7215c6326b7506d5e4d0f945909be1"},{"author":{"_account_id":12632,"name":"Kirill Shileev","email":"kshileev@cisco.com","username":"kshileev"},"change_message_id":"1689966e7d3187b8f55f73ce582a1afe374d13ff","unresolved":false,"context_lines":[{"line_number":101,"context_line":"            raise CobblerError(_(\"No servers created\"))"},{"line_number":102,"context_line":"        return servers"},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"    def destroy_servers(self):"},{"line_number":105,"context_line":"        pass"}],"source_content_type":"text/x-python","patch_set":8,"id":"1a4dcd0f_e120a74b","line":104,"in_reply_to":"1a4dcd0f_ab203ef8","updated":"2015-08-11 13:20:01.000000000","message":"theoretically -yes- it\u0027s possible to reboot. But it\u0027s not usually what user needs. The nature of cobbler is to provide op-system from baremetal machine. The opposite process doesn\u0027t make sense. Re-booting will leave your machines in exactly the same state as without rebooting (provided you don\u0027t touch your cobbler profile in a meantime).","commit_id":"ff096aa57b7215c6326b7506d5e4d0f945909be1"},{"author":{"_account_id":7369,"name":"Sergey Skripnick","email":"sskripnick@mirantis.com","username":"redixin"},"change_message_id":"22b38a11832ce6c766b40fe22c20ef816889659e","unresolved":false,"context_lines":[{"line_number":101,"context_line":"            raise CobblerError(_(\"No servers created\"))"},{"line_number":102,"context_line":"        return servers"},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"    def destroy_servers(self):"},{"line_number":105,"context_line":"        pass"}],"source_content_type":"text/x-python","patch_set":8,"id":"fa1b9901_abdd1372","line":104,"in_reply_to":"1a4dcd0f_e120a74b","updated":"2015-08-17 16:03:00.000000000","message":"So how to utilize baremetal machine for another benchmarks?","commit_id":"ff096aa57b7215c6326b7506d5e4d0f945909be1"},{"author":{"_account_id":12632,"name":"Kirill Shileev","email":"kshileev@cisco.com","username":"kshileev"},"change_message_id":"d2cadb32a21c42c17898224b0193b598b0f64757","unresolved":false,"context_lines":[{"line_number":101,"context_line":"            raise CobblerError(_(\"No servers created\"))"},{"line_number":102,"context_line":"        return servers"},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"    def destroy_servers(self):"},{"line_number":105,"context_line":"        pass"}],"source_content_type":"text/x-python","patch_set":8,"id":"3a50d1a3_6fc4ab91","line":104,"in_reply_to":"3a50d1a3_192baa95","updated":"2015-07-26 20:55:09.000000000","message":"there is no way to free them! it\u0027s cobbler! and running servers are going to be freed by user afterwards if he wants to","commit_id":"ff096aa57b7215c6326b7506d5e4d0f945909be1"},{"author":{"_account_id":7369,"name":"Sergey Skripnick","email":"sskripnick@mirantis.com","username":"redixin"},"change_message_id":"ab5cbdc127ea88aea4f725bbd94e1416a542e460","unresolved":false,"context_lines":[{"line_number":101,"context_line":"            raise CobblerError(_(\"No servers created\"))"},{"line_number":102,"context_line":"        return servers"},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"    def destroy_servers(self):"},{"line_number":105,"context_line":"        pass"}],"source_content_type":"text/x-python","patch_set":8,"id":"1a4dcd0f_ab203ef8","line":104,"in_reply_to":"3a50d1a3_6fc4ab91","updated":"2015-08-11 12:54:26.000000000","message":"How this can be done? By reboot?","commit_id":"ff096aa57b7215c6326b7506d5e4d0f945909be1"},{"author":{"_account_id":11748,"name":"Chris St. Pierre","email":"cstpierr@cisco.com","username":"stpierre"},"change_message_id":"b0fee6f999aa6fd22a108be8ba4fb5750450a69e","unresolved":false,"context_lines":[{"line_number":16,"context_line":"from rally.deploy.serverprovider import provider"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"class CobblerError(Exception):"},{"line_number":20,"context_line":"    pass"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"ba15a1d1_7f10c701","line":19,"updated":"2015-09-15 16:56:37.000000000","message":"If we really need a new exception for this, it should be added to rally.exceptions. But there\u0027s a general sentiment that we already have too many exceptions defined, so the provider can probably just use RuntimeError like the openstack provider.","commit_id":"f6de1efb6e4e76f6b2db070c99b7f08ea7e8111e"},{"author":{"_account_id":12632,"name":"Kirill Shileev","email":"kshileev@cisco.com","username":"kshileev"},"change_message_id":"455afa7858779ad27037a3051f61bd495cb733e5","unresolved":false,"context_lines":[{"line_number":16,"context_line":"from rally.deploy.serverprovider import provider"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"class CobblerError(Exception):"},{"line_number":20,"context_line":"    pass"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"ba15a1d1_e61c8479","line":19,"in_reply_to":"ba15a1d1_7f10c701","updated":"2015-09-21 17:41:49.000000000","message":"Done","commit_id":"f6de1efb6e4e76f6b2db070c99b7f08ea7e8111e"},{"author":{"_account_id":11748,"name":"Chris St. Pierre","email":"cstpierr@cisco.com","username":"stpierre"},"change_message_id":"b0fee6f999aa6fd22a108be8ba4fb5750450a69e","unresolved":false,"context_lines":[{"line_number":67,"context_line":"        super(CobblerProvider, self).__init__(deployment, config)"},{"line_number":68,"context_line":"        self.config \u003d config"},{"line_number":69,"context_line":"        self.cobbler \u003d xmlrpclib.Server(uri\u003d\"http://{host}/cobbler_api\".format("},{"line_number":70,"context_line":"            host\u003dconfig[\"host\"]))"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"    @staticmethod"},{"line_number":73,"context_line":"    def ip_for_system(rendered_system):"}],"source_content_type":"text/x-python","patch_set":12,"id":"ba15a1d1_dc6241ad","line":70,"updated":"2015-09-15 16:56:37.000000000","message":"Very little Rally code uses .format(), so I think I\u0027d prefer that you use % here and below. Not to mention it\u0027s easy:\n\n    self.cobbler \u003d xmlrpclib.Server(uri\u003d\"http://%(host)s/cobbler_api\" % config)\n\nTODO(stpierre): Ultimately we should probably consider adding a hacking rule to limit the types of string formatting that can be used.","commit_id":"f6de1efb6e4e76f6b2db070c99b7f08ea7e8111e"},{"author":{"_account_id":12632,"name":"Kirill Shileev","email":"kshileev@cisco.com","username":"kshileev"},"change_message_id":"455afa7858779ad27037a3051f61bd495cb733e5","unresolved":false,"context_lines":[{"line_number":67,"context_line":"        super(CobblerProvider, self).__init__(deployment, config)"},{"line_number":68,"context_line":"        self.config \u003d config"},{"line_number":69,"context_line":"        self.cobbler \u003d xmlrpclib.Server(uri\u003d\"http://{host}/cobbler_api\".format("},{"line_number":70,"context_line":"            host\u003dconfig[\"host\"]))"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"    @staticmethod"},{"line_number":73,"context_line":"    def ip_for_system(rendered_system):"}],"source_content_type":"text/x-python","patch_set":12,"id":"ba15a1d1_a95bbf2d","line":70,"in_reply_to":"ba15a1d1_dc6241ad","updated":"2015-09-21 17:41:49.000000000","message":"done, although there is general community opinion that % style is deprecated","commit_id":"f6de1efb6e4e76f6b2db070c99b7f08ea7e8111e"},{"author":{"_account_id":11748,"name":"Chris St. Pierre","email":"cstpierr@cisco.com","username":"stpierre"},"change_message_id":"b0fee6f999aa6fd22a108be8ba4fb5750450a69e","unresolved":false,"context_lines":[{"line_number":77,"context_line":"        raise CobblerError(_(\"No valid ip address found for system \")"},{"line_number":78,"context_line":"                           + \"\u0027{0}\u0027\".format(rendered_system[\"name\"]))"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"    def reboot_system(self, system_name):"},{"line_number":81,"context_line":"        token \u003d self.cobbler.login(self.config[\"user\"],"},{"line_number":82,"context_line":"                                   self.config.get(\"password\", \"cobbler\"))"},{"line_number":83,"context_line":"        handle \u003d self.cobbler.get_system_handle(system_name, token)"}],"source_content_type":"text/x-python","patch_set":12,"id":"ba15a1d1_bc2c2d03","line":80,"updated":"2015-09-15 16:56:37.000000000","message":"Docstring needed here. Especially since the return value is quite unexpected.","commit_id":"f6de1efb6e4e76f6b2db070c99b7f08ea7e8111e"},{"author":{"_account_id":12632,"name":"Kirill Shileev","email":"kshileev@cisco.com","username":"kshileev"},"change_message_id":"455afa7858779ad27037a3051f61bd495cb733e5","unresolved":false,"context_lines":[{"line_number":77,"context_line":"        raise CobblerError(_(\"No valid ip address found for system \")"},{"line_number":78,"context_line":"                           + \"\u0027{0}\u0027\".format(rendered_system[\"name\"]))"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"    def reboot_system(self, system_name):"},{"line_number":81,"context_line":"        token \u003d self.cobbler.login(self.config[\"user\"],"},{"line_number":82,"context_line":"                                   self.config.get(\"password\", \"cobbler\"))"},{"line_number":83,"context_line":"        handle \u003d self.cobbler.get_system_handle(system_name, token)"}],"source_content_type":"text/x-python","patch_set":12,"id":"ba15a1d1_8c1fe95a","line":80,"in_reply_to":"ba15a1d1_bc2c2d03","updated":"2015-09-21 17:41:49.000000000","message":"Done","commit_id":"f6de1efb6e4e76f6b2db070c99b7f08ea7e8111e"},{"author":{"_account_id":11748,"name":"Chris St. Pierre","email":"cstpierr@cisco.com","username":"stpierre"},"change_message_id":"b0fee6f999aa6fd22a108be8ba4fb5750450a69e","unresolved":false,"context_lines":[{"line_number":79,"context_line":""},{"line_number":80,"context_line":"    def reboot_system(self, system_name):"},{"line_number":81,"context_line":"        token \u003d self.cobbler.login(self.config[\"user\"],"},{"line_number":82,"context_line":"                                   self.config.get(\"password\", \"cobbler\"))"},{"line_number":83,"context_line":"        handle \u003d self.cobbler.get_system_handle(system_name, token)"},{"line_number":84,"context_line":"        self.cobbler.power_system(handle, \"reboot\", token)"},{"line_number":85,"context_line":"        rendered \u003d self.cobbler.get_system_as_rendered(system_name)"}],"source_content_type":"text/x-python","patch_set":12,"id":"ba15a1d1_7cb535ec","line":82,"updated":"2015-09-15 16:56:37.000000000","message":"What\u0027s the value of providing a default password, but not a default user?\n\nWhy is the default buried in the code here, but not documented in the schema?","commit_id":"f6de1efb6e4e76f6b2db070c99b7f08ea7e8111e"},{"author":{"_account_id":12632,"name":"Kirill Shileev","email":"kshileev@cisco.com","username":"kshileev"},"change_message_id":"455afa7858779ad27037a3051f61bd495cb733e5","unresolved":false,"context_lines":[{"line_number":79,"context_line":""},{"line_number":80,"context_line":"    def reboot_system(self, system_name):"},{"line_number":81,"context_line":"        token \u003d self.cobbler.login(self.config[\"user\"],"},{"line_number":82,"context_line":"                                   self.config.get(\"password\", \"cobbler\"))"},{"line_number":83,"context_line":"        handle \u003d self.cobbler.get_system_handle(system_name, token)"},{"line_number":84,"context_line":"        self.cobbler.power_system(handle, \"reboot\", token)"},{"line_number":85,"context_line":"        rendered \u003d self.cobbler.get_system_as_rendered(system_name)"}],"source_content_type":"text/x-python","patch_set":12,"id":"ba15a1d1_ec2a257e","line":82,"in_reply_to":"ba15a1d1_7cb535ec","updated":"2015-09-21 17:41:49.000000000","message":"Done","commit_id":"f6de1efb6e4e76f6b2db070c99b7f08ea7e8111e"},{"author":{"_account_id":11748,"name":"Chris St. Pierre","email":"cstpierr@cisco.com","username":"stpierre"},"change_message_id":"b0fee6f999aa6fd22a108be8ba4fb5750450a69e","unresolved":false,"context_lines":[{"line_number":95,"context_line":"            raise CobblerError(_(\"No associated systems selected by \")"},{"line_number":96,"context_line":"                               + \"{0}\".format(self.config[\"selector\"]))"},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"        servers \u003d [self.reboot_system(system) for system in systems]"},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"        if not servers:"},{"line_number":101,"context_line":"            raise CobblerError(_(\"No servers created\"))"}],"source_content_type":"text/x-python","patch_set":12,"id":"ba15a1d1_dc64814a","line":98,"updated":"2015-09-15 16:56:37.000000000","message":"This line reads really strange, because the return value of reboot_system() is so unexpected. Is there a way we could rename reboot_system() so that this makes more sense?","commit_id":"f6de1efb6e4e76f6b2db070c99b7f08ea7e8111e"},{"author":{"_account_id":12632,"name":"Kirill Shileev","email":"kshileev@cisco.com","username":"kshileev"},"change_message_id":"455afa7858779ad27037a3051f61bd495cb733e5","unresolved":false,"context_lines":[{"line_number":95,"context_line":"            raise CobblerError(_(\"No associated systems selected by \")"},{"line_number":96,"context_line":"                               + \"{0}\".format(self.config[\"selector\"]))"},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"        servers \u003d [self.reboot_system(system) for system in systems]"},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"        if not servers:"},{"line_number":101,"context_line":"            raise CobblerError(_(\"No servers created\"))"}],"source_content_type":"text/x-python","patch_set":12,"id":"ba15a1d1_ac242daf","line":98,"in_reply_to":"ba15a1d1_dc64814a","updated":"2015-09-21 17:41:49.000000000","message":"Done","commit_id":"f6de1efb6e4e76f6b2db070c99b7f08ea7e8111e"},{"author":{"_account_id":11748,"name":"Chris St. Pierre","email":"cstpierr@cisco.com","username":"stpierre"},"change_message_id":"b0fee6f999aa6fd22a108be8ba4fb5750450a69e","unresolved":false,"context_lines":[{"line_number":98,"context_line":"        servers \u003d [self.reboot_system(system) for system in systems]"},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"        if not servers:"},{"line_number":101,"context_line":"            raise CobblerError(_(\"No servers created\"))"},{"line_number":102,"context_line":"        return servers"},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"    def destroy_servers(self):"}],"source_content_type":"text/x-python","patch_set":12,"id":"ba15a1d1_1f8d0b7b","line":101,"updated":"2015-09-15 16:56:37.000000000","message":"This seems like unreachable code. If we get to line 98 then we know that \u0027systems\u0027 has items in it, so either reboot_system() will return a list of values (in which case \u0027servers\u0027 will have a true value), or reboot_system() will raise an exception (in which case this line is never reached).\n\nIf it\u0027s not unreachable code, then it needs unit test coverage.","commit_id":"f6de1efb6e4e76f6b2db070c99b7f08ea7e8111e"},{"author":{"_account_id":12632,"name":"Kirill Shileev","email":"kshileev@cisco.com","username":"kshileev"},"change_message_id":"455afa7858779ad27037a3051f61bd495cb733e5","unresolved":false,"context_lines":[{"line_number":98,"context_line":"        servers \u003d [self.reboot_system(system) for system in systems]"},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"        if not servers:"},{"line_number":101,"context_line":"            raise CobblerError(_(\"No servers created\"))"},{"line_number":102,"context_line":"        return servers"},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"    def destroy_servers(self):"}],"source_content_type":"text/x-python","patch_set":12,"id":"ba15a1d1_e98c5737","line":101,"in_reply_to":"ba15a1d1_1f8d0b7b","updated":"2015-09-21 17:41:49.000000000","message":"Done","commit_id":"f6de1efb6e4e76f6b2db070c99b7f08ea7e8111e"}],"tests/unit/deploy/serverprovider/providers/test_cobbler.py":[{"author":{"_account_id":7369,"name":"Sergey Skripnick","email":"sskripnick@mirantis.com","username":"redixin"},"change_message_id":"d71df08c4573e5a17db1429140378cabf66bdc10","unresolved":false,"context_lines":[{"line_number":30,"context_line":"        super(TestCobblerProvider, self).setUp()"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"    @mock.patch(\"six.moves.xmlrpc_client.Server\")"},{"line_number":33,"context_line":"    def test_create_servers(self, m):"},{"line_number":34,"context_line":"        c \u003d cobbler.CobblerProvider(config\u003dself.config, deployment\u003dNone)"},{"line_number":35,"context_line":"        m.assert_called_with(uri\u003d\"http://h1/cobbler_api\")"},{"line_number":36,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"3a50d1a3_6fc31dee","line":33,"updated":"2015-07-21 22:14:24.000000000","message":"m/mock_server\n\nthats why unittest is failing: https://github.com/openstack/rally/blob/master/tests/unit/test_mock.py#L76","commit_id":"ff096aa57b7215c6326b7506d5e4d0f945909be1"},{"author":{"_account_id":12632,"name":"Kirill Shileev","email":"kshileev@cisco.com","username":"kshileev"},"change_message_id":"1689966e7d3187b8f55f73ce582a1afe374d13ff","unresolved":false,"context_lines":[{"line_number":30,"context_line":"        super(TestCobblerProvider, self).setUp()"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"    @mock.patch(\"six.moves.xmlrpc_client.Server\")"},{"line_number":33,"context_line":"    def test_create_servers(self, m):"},{"line_number":34,"context_line":"        c \u003d cobbler.CobblerProvider(config\u003dself.config, deployment\u003dNone)"},{"line_number":35,"context_line":"        m.assert_called_with(uri\u003d\"http://h1/cobbler_api\")"},{"line_number":36,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"1a4dcd0f_64b5c57c","line":33,"in_reply_to":"3a50d1a3_6fc31dee","updated":"2015-08-11 13:20:01.000000000","message":"Done","commit_id":"ff096aa57b7215c6326b7506d5e4d0f945909be1"},{"author":{"_account_id":7369,"name":"Sergey Skripnick","email":"sskripnick@mirantis.com","username":"redixin"},"change_message_id":"d71df08c4573e5a17db1429140378cabf66bdc10","unresolved":false,"context_lines":[{"line_number":58,"context_line":"                                c.create_servers)"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"    @mock.patch(\"six.moves.xmlrpc_client.Server\")"},{"line_number":61,"context_line":"    def test_create_servers_when_no_ip_found(self, m):"},{"line_number":62,"context_line":"        c \u003d cobbler.CobblerProvider(config\u003dself.config, deployment\u003dNone)"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"        c.cobbler.find_system \u003d mock.Mock(return_value\u003d[\"s1\", \"s2\"])"}],"source_content_type":"text/x-python","patch_set":8,"id":"3a50d1a3_2fb99579","line":61,"updated":"2015-07-21 22:14:24.000000000","message":"ditto","commit_id":"ff096aa57b7215c6326b7506d5e4d0f945909be1"},{"author":{"_account_id":12632,"name":"Kirill Shileev","email":"kshileev@cisco.com","username":"kshileev"},"change_message_id":"1689966e7d3187b8f55f73ce582a1afe374d13ff","unresolved":false,"context_lines":[{"line_number":58,"context_line":"                                c.create_servers)"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"    @mock.patch(\"six.moves.xmlrpc_client.Server\")"},{"line_number":61,"context_line":"    def test_create_servers_when_no_ip_found(self, m):"},{"line_number":62,"context_line":"        c \u003d cobbler.CobblerProvider(config\u003dself.config, deployment\u003dNone)"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"        c.cobbler.find_system \u003d mock.Mock(return_value\u003d[\"s1\", \"s2\"])"}],"source_content_type":"text/x-python","patch_set":8,"id":"1a4dcd0f_44ad2930","line":61,"in_reply_to":"3a50d1a3_2fb99579","updated":"2015-08-11 13:20:01.000000000","message":"Done","commit_id":"ff096aa57b7215c6326b7506d5e4d0f945909be1"},{"author":{"_account_id":12395,"name":"Roman Vasylets","email":"pomeo92@gmail.com","username":"rvasilets"},"change_message_id":"69187d76e75d21f5e5dc7715def1248eda7aae76","unresolved":false,"context_lines":[{"line_number":24,"context_line":"                       \"selector\": {\"profile\": \"p1\", \"owners\": \"o1\"}}"},{"line_number":25,"context_line":"        self.rendered \u003d {\"ip_address_eth3\": \"\","},{"line_number":26,"context_line":"                         \"ip_address_eth1\": \"1.1.1.1\","},{"line_number":27,"context_line":"                         \"power_user\": \"root\","},{"line_number":28,"context_line":"                         \"redhat_management_key\": \"key\","},{"line_number":29,"context_line":"                         \"name\": \"name\"}"},{"line_number":30,"context_line":"        super(TestCobblerProvider, self).setUp()"}],"source_content_type":"text/x-python","patch_set":9,"id":"1a4dcd0f_28822753","line":27,"updated":"2015-08-10 15:03:17.000000000","message":"\"power_user\": \"fake_root\"","commit_id":"434979a4f907fa03f94d03beadd06db8ab6aaebf"},{"author":{"_account_id":12632,"name":"Kirill Shileev","email":"kshileev@cisco.com","username":"kshileev"},"change_message_id":"aed091c0a66865b00593c7702eb7ec021c55fa23","unresolved":false,"context_lines":[{"line_number":24,"context_line":"                       \"selector\": {\"profile\": \"p1\", \"owners\": \"o1\"}}"},{"line_number":25,"context_line":"        self.rendered \u003d {\"ip_address_eth3\": \"\","},{"line_number":26,"context_line":"                         \"ip_address_eth1\": \"1.1.1.1\","},{"line_number":27,"context_line":"                         \"power_user\": \"root\","},{"line_number":28,"context_line":"                         \"redhat_management_key\": \"key\","},{"line_number":29,"context_line":"                         \"name\": \"name\"}"},{"line_number":30,"context_line":"        super(TestCobblerProvider, self).setUp()"}],"source_content_type":"text/x-python","patch_set":9,"id":"1a4dcd0f_7c20f0f7","line":27,"in_reply_to":"1a4dcd0f_28822753","updated":"2015-08-10 15:25:41.000000000","message":"Done","commit_id":"434979a4f907fa03f94d03beadd06db8ab6aaebf"},{"author":{"_account_id":12395,"name":"Roman Vasylets","email":"pomeo92@gmail.com","username":"rvasilets"},"change_message_id":"69187d76e75d21f5e5dc7715def1248eda7aae76","unresolved":false,"context_lines":[{"line_number":25,"context_line":"        self.rendered \u003d {\"ip_address_eth3\": \"\","},{"line_number":26,"context_line":"                         \"ip_address_eth1\": \"1.1.1.1\","},{"line_number":27,"context_line":"                         \"power_user\": \"root\","},{"line_number":28,"context_line":"                         \"redhat_management_key\": \"key\","},{"line_number":29,"context_line":"                         \"name\": \"name\"}"},{"line_number":30,"context_line":"        super(TestCobblerProvider, self).setUp()"},{"line_number":31,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"1a4dcd0f_289b07cb","line":28,"updated":"2015-08-10 15:03:17.000000000","message":"\"redhat_management_key\": \"fake_key\"","commit_id":"434979a4f907fa03f94d03beadd06db8ab6aaebf"},{"author":{"_account_id":12632,"name":"Kirill Shileev","email":"kshileev@cisco.com","username":"kshileev"},"change_message_id":"aed091c0a66865b00593c7702eb7ec021c55fa23","unresolved":false,"context_lines":[{"line_number":25,"context_line":"        self.rendered \u003d {\"ip_address_eth3\": \"\","},{"line_number":26,"context_line":"                         \"ip_address_eth1\": \"1.1.1.1\","},{"line_number":27,"context_line":"                         \"power_user\": \"root\","},{"line_number":28,"context_line":"                         \"redhat_management_key\": \"key\","},{"line_number":29,"context_line":"                         \"name\": \"name\"}"},{"line_number":30,"context_line":"        super(TestCobblerProvider, self).setUp()"},{"line_number":31,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"1a4dcd0f_bcdbd8ec","line":28,"in_reply_to":"1a4dcd0f_289b07cb","updated":"2015-08-10 15:25:41.000000000","message":"Done","commit_id":"434979a4f907fa03f94d03beadd06db8ab6aaebf"},{"author":{"_account_id":12395,"name":"Roman Vasylets","email":"pomeo92@gmail.com","username":"rvasilets"},"change_message_id":"69187d76e75d21f5e5dc7715def1248eda7aae76","unresolved":false,"context_lines":[{"line_number":26,"context_line":"                         \"ip_address_eth1\": \"1.1.1.1\","},{"line_number":27,"context_line":"                         \"power_user\": \"root\","},{"line_number":28,"context_line":"                         \"redhat_management_key\": \"key\","},{"line_number":29,"context_line":"                         \"name\": \"name\"}"},{"line_number":30,"context_line":"        super(TestCobblerProvider, self).setUp()"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"    @mock.patch(\"six.moves.xmlrpc_client.Server\")"}],"source_content_type":"text/x-python","patch_set":9,"id":"1a4dcd0f_284d4772","line":29,"updated":"2015-08-10 15:03:17.000000000","message":"lets write here \"name\": \"fake_name\"","commit_id":"434979a4f907fa03f94d03beadd06db8ab6aaebf"},{"author":{"_account_id":12632,"name":"Kirill Shileev","email":"kshileev@cisco.com","username":"kshileev"},"change_message_id":"aed091c0a66865b00593c7702eb7ec021c55fa23","unresolved":false,"context_lines":[{"line_number":26,"context_line":"                         \"ip_address_eth1\": \"1.1.1.1\","},{"line_number":27,"context_line":"                         \"power_user\": \"root\","},{"line_number":28,"context_line":"                         \"redhat_management_key\": \"key\","},{"line_number":29,"context_line":"                         \"name\": \"name\"}"},{"line_number":30,"context_line":"        super(TestCobblerProvider, self).setUp()"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"    @mock.patch(\"six.moves.xmlrpc_client.Server\")"}],"source_content_type":"text/x-python","patch_set":9,"id":"1a4dcd0f_7ce550a6","line":29,"in_reply_to":"1a4dcd0f_284d4772","updated":"2015-08-10 15:25:41.000000000","message":"Done","commit_id":"434979a4f907fa03f94d03beadd06db8ab6aaebf"},{"author":{"_account_id":12395,"name":"Roman Vasylets","email":"pomeo92@gmail.com","username":"rvasilets"},"change_message_id":"69187d76e75d21f5e5dc7715def1248eda7aae76","unresolved":false,"context_lines":[{"line_number":31,"context_line":""},{"line_number":32,"context_line":"    @mock.patch(\"six.moves.xmlrpc_client.Server\")"},{"line_number":33,"context_line":"    def test_create_servers(self, mock_six_moves_xmlrpc_client_Server):"},{"line_number":34,"context_line":"        c \u003d cobbler.CobblerProvider(config\u003dself.config, deployment\u003dNone)"},{"line_number":35,"context_line":"        m.assert_called_with(uri\u003d\"http://h1/cobbler_api\")"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"        c.cobbler.find_system \u003d mock.Mock(return_value\u003d[\"s1\", \"s2\"])"}],"source_content_type":"text/x-python","patch_set":9,"id":"1a4dcd0f_6d2041f8","line":34,"updated":"2015-08-10 15:03:17.000000000","message":"could we use more meaningful names then \u0027c\u0027 and \u0027m\u0027?","commit_id":"434979a4f907fa03f94d03beadd06db8ab6aaebf"},{"author":{"_account_id":12632,"name":"Kirill Shileev","email":"kshileev@cisco.com","username":"kshileev"},"change_message_id":"aed091c0a66865b00593c7702eb7ec021c55fa23","unresolved":false,"context_lines":[{"line_number":31,"context_line":""},{"line_number":32,"context_line":"    @mock.patch(\"six.moves.xmlrpc_client.Server\")"},{"line_number":33,"context_line":"    def test_create_servers(self, mock_six_moves_xmlrpc_client_Server):"},{"line_number":34,"context_line":"        c \u003d cobbler.CobblerProvider(config\u003dself.config, deployment\u003dNone)"},{"line_number":35,"context_line":"        m.assert_called_with(uri\u003d\"http://h1/cobbler_api\")"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"        c.cobbler.find_system \u003d mock.Mock(return_value\u003d[\"s1\", \"s2\"])"}],"source_content_type":"text/x-python","patch_set":9,"id":"1a4dcd0f_3c9588e3","line":34,"in_reply_to":"1a4dcd0f_6d2041f8","updated":"2015-08-10 15:25:41.000000000","message":"Done for m. c is an instance of cobbler, this local var is used just next to initialization, it would be ugly to say cobbler.xx many times","commit_id":"434979a4f907fa03f94d03beadd06db8ab6aaebf"},{"author":{"_account_id":12395,"name":"Roman Vasylets","email":"pomeo92@gmail.com","username":"rvasilets"},"change_message_id":"69187d76e75d21f5e5dc7715def1248eda7aae76","unresolved":false,"context_lines":[{"line_number":32,"context_line":"    @mock.patch(\"six.moves.xmlrpc_client.Server\")"},{"line_number":33,"context_line":"    def test_create_servers(self, mock_six_moves_xmlrpc_client_Server):"},{"line_number":34,"context_line":"        c \u003d cobbler.CobblerProvider(config\u003dself.config, deployment\u003dNone)"},{"line_number":35,"context_line":"        m.assert_called_with(uri\u003d\"http://h1/cobbler_api\")"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"        c.cobbler.find_system \u003d mock.Mock(return_value\u003d[\"s1\", \"s2\"])"},{"line_number":38,"context_line":"        c.cobbler.login \u003d mock.Mock(return_value\u003d\"token\")"}],"source_content_type":"text/x-python","patch_set":9,"id":"1a4dcd0f_5c297488","line":35,"updated":"2015-08-10 15:03:17.000000000","message":"What is m here?","commit_id":"434979a4f907fa03f94d03beadd06db8ab6aaebf"},{"author":{"_account_id":12632,"name":"Kirill Shileev","email":"kshileev@cisco.com","username":"kshileev"},"change_message_id":"aed091c0a66865b00593c7702eb7ec021c55fa23","unresolved":false,"context_lines":[{"line_number":32,"context_line":"    @mock.patch(\"six.moves.xmlrpc_client.Server\")"},{"line_number":33,"context_line":"    def test_create_servers(self, mock_six_moves_xmlrpc_client_Server):"},{"line_number":34,"context_line":"        c \u003d cobbler.CobblerProvider(config\u003dself.config, deployment\u003dNone)"},{"line_number":35,"context_line":"        m.assert_called_with(uri\u003d\"http://h1/cobbler_api\")"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"        c.cobbler.find_system \u003d mock.Mock(return_value\u003d[\"s1\", \"s2\"])"},{"line_number":38,"context_line":"        c.cobbler.login \u003d mock.Mock(return_value\u003d\"token\")"}],"source_content_type":"text/x-python","patch_set":9,"id":"1a4dcd0f_3c63481c","line":35,"in_reply_to":"1a4dcd0f_5c297488","updated":"2015-08-10 15:25:41.000000000","message":"mistake should have been mock_six_moves_bla","commit_id":"434979a4f907fa03f94d03beadd06db8ab6aaebf"},{"author":{"_account_id":12395,"name":"Roman Vasylets","email":"pomeo92@gmail.com","username":"rvasilets"},"change_message_id":"69187d76e75d21f5e5dc7715def1248eda7aae76","unresolved":false,"context_lines":[{"line_number":42,"context_line":"            return_value\u003dself.rendered)"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"        credentials \u003d c.create_servers()"},{"line_number":45,"context_line":"        self.assertEqual([\"1.1.1.1\", \"1.1.1.1\"], [s.host for s in credentials])"},{"line_number":46,"context_line":"        self.assertEqual([\"root\", \"root\"], [s.user for s in credentials])"},{"line_number":47,"context_line":"        self.assertEqual([\"p2\", \"p2\"], [s.password for s in credentials])"},{"line_number":48,"context_line":"        self.assertEqual([\"key\", \"key\"], [s.key for s in credentials])"}],"source_content_type":"text/x-python","patch_set":9,"id":"1a4dcd0f_a84b972a","line":45,"updated":"2015-08-10 15:03:17.000000000","message":"In pythonic way we could write [\"1.1.1.1\"] * 2","commit_id":"434979a4f907fa03f94d03beadd06db8ab6aaebf"},{"author":{"_account_id":12632,"name":"Kirill Shileev","email":"kshileev@cisco.com","username":"kshileev"},"change_message_id":"aed091c0a66865b00593c7702eb7ec021c55fa23","unresolved":false,"context_lines":[{"line_number":42,"context_line":"            return_value\u003dself.rendered)"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"        credentials \u003d c.create_servers()"},{"line_number":45,"context_line":"        self.assertEqual([\"1.1.1.1\", \"1.1.1.1\"], [s.host for s in credentials])"},{"line_number":46,"context_line":"        self.assertEqual([\"root\", \"root\"], [s.user for s in credentials])"},{"line_number":47,"context_line":"        self.assertEqual([\"p2\", \"p2\"], [s.password for s in credentials])"},{"line_number":48,"context_line":"        self.assertEqual([\"key\", \"key\"], [s.key for s in credentials])"}],"source_content_type":"text/x-python","patch_set":9,"id":"1a4dcd0f_fc6c000a","line":45,"in_reply_to":"1a4dcd0f_a84b972a","updated":"2015-08-10 15:25:41.000000000","message":"Done","commit_id":"434979a4f907fa03f94d03beadd06db8ab6aaebf"},{"author":{"_account_id":12395,"name":"Roman Vasylets","email":"pomeo92@gmail.com","username":"rvasilets"},"change_message_id":"69187d76e75d21f5e5dc7715def1248eda7aae76","unresolved":false,"context_lines":[{"line_number":43,"context_line":""},{"line_number":44,"context_line":"        credentials \u003d c.create_servers()"},{"line_number":45,"context_line":"        self.assertEqual([\"1.1.1.1\", \"1.1.1.1\"], [s.host for s in credentials])"},{"line_number":46,"context_line":"        self.assertEqual([\"root\", \"root\"], [s.user for s in credentials])"},{"line_number":47,"context_line":"        self.assertEqual([\"p2\", \"p2\"], [s.password for s in credentials])"},{"line_number":48,"context_line":"        self.assertEqual([\"key\", \"key\"], [s.key for s in credentials])"},{"line_number":49,"context_line":"        self.assertEqual([22, 22], [s.port for s in credentials])"}],"source_content_type":"text/x-python","patch_set":9,"id":"1a4dcd0f_8867bbb6","line":46,"updated":"2015-08-10 15:03:17.000000000","message":"[\"root\"] * 2","commit_id":"434979a4f907fa03f94d03beadd06db8ab6aaebf"},{"author":{"_account_id":12632,"name":"Kirill Shileev","email":"kshileev@cisco.com","username":"kshileev"},"change_message_id":"aed091c0a66865b00593c7702eb7ec021c55fa23","unresolved":false,"context_lines":[{"line_number":43,"context_line":""},{"line_number":44,"context_line":"        credentials \u003d c.create_servers()"},{"line_number":45,"context_line":"        self.assertEqual([\"1.1.1.1\", \"1.1.1.1\"], [s.host for s in credentials])"},{"line_number":46,"context_line":"        self.assertEqual([\"root\", \"root\"], [s.user for s in credentials])"},{"line_number":47,"context_line":"        self.assertEqual([\"p2\", \"p2\"], [s.password for s in credentials])"},{"line_number":48,"context_line":"        self.assertEqual([\"key\", \"key\"], [s.key for s in credentials])"},{"line_number":49,"context_line":"        self.assertEqual([22, 22], [s.port for s in credentials])"}],"source_content_type":"text/x-python","patch_set":9,"id":"1a4dcd0f_7c81d08e","line":46,"in_reply_to":"1a4dcd0f_8867bbb6","updated":"2015-08-10 15:25:41.000000000","message":"Done","commit_id":"434979a4f907fa03f94d03beadd06db8ab6aaebf"},{"author":{"_account_id":12395,"name":"Roman Vasylets","email":"pomeo92@gmail.com","username":"rvasilets"},"change_message_id":"69187d76e75d21f5e5dc7715def1248eda7aae76","unresolved":false,"context_lines":[{"line_number":44,"context_line":"        credentials \u003d c.create_servers()"},{"line_number":45,"context_line":"        self.assertEqual([\"1.1.1.1\", \"1.1.1.1\"], [s.host for s in credentials])"},{"line_number":46,"context_line":"        self.assertEqual([\"root\", \"root\"], [s.user for s in credentials])"},{"line_number":47,"context_line":"        self.assertEqual([\"p2\", \"p2\"], [s.password for s in credentials])"},{"line_number":48,"context_line":"        self.assertEqual([\"key\", \"key\"], [s.key for s in credentials])"},{"line_number":49,"context_line":"        self.assertEqual([22, 22], [s.port for s in credentials])"},{"line_number":50,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"1a4dcd0f_085babf7","line":47,"updated":"2015-08-10 15:03:17.000000000","message":"[\"p2\"] * 2","commit_id":"434979a4f907fa03f94d03beadd06db8ab6aaebf"},{"author":{"_account_id":12632,"name":"Kirill Shileev","email":"kshileev@cisco.com","username":"kshileev"},"change_message_id":"aed091c0a66865b00593c7702eb7ec021c55fa23","unresolved":false,"context_lines":[{"line_number":44,"context_line":"        credentials \u003d c.create_servers()"},{"line_number":45,"context_line":"        self.assertEqual([\"1.1.1.1\", \"1.1.1.1\"], [s.host for s in credentials])"},{"line_number":46,"context_line":"        self.assertEqual([\"root\", \"root\"], [s.user for s in credentials])"},{"line_number":47,"context_line":"        self.assertEqual([\"p2\", \"p2\"], [s.password for s in credentials])"},{"line_number":48,"context_line":"        self.assertEqual([\"key\", \"key\"], [s.key for s in credentials])"},{"line_number":49,"context_line":"        self.assertEqual([22, 22], [s.port for s in credentials])"},{"line_number":50,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"1a4dcd0f_9c7cdcb6","line":47,"in_reply_to":"1a4dcd0f_085babf7","updated":"2015-08-10 15:25:41.000000000","message":"Done","commit_id":"434979a4f907fa03f94d03beadd06db8ab6aaebf"},{"author":{"_account_id":12395,"name":"Roman Vasylets","email":"pomeo92@gmail.com","username":"rvasilets"},"change_message_id":"69187d76e75d21f5e5dc7715def1248eda7aae76","unresolved":false,"context_lines":[{"line_number":45,"context_line":"        self.assertEqual([\"1.1.1.1\", \"1.1.1.1\"], [s.host for s in credentials])"},{"line_number":46,"context_line":"        self.assertEqual([\"root\", \"root\"], [s.user for s in credentials])"},{"line_number":47,"context_line":"        self.assertEqual([\"p2\", \"p2\"], [s.password for s in credentials])"},{"line_number":48,"context_line":"        self.assertEqual([\"key\", \"key\"], [s.key for s in credentials])"},{"line_number":49,"context_line":"        self.assertEqual([22, 22], [s.port for s in credentials])"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"    def test_create_servers_when_selects_nothing(self):"}],"source_content_type":"text/x-python","patch_set":9,"id":"1a4dcd0f_e8575fc8","line":48,"updated":"2015-08-10 15:03:17.000000000","message":"[\"key\"] * 2","commit_id":"434979a4f907fa03f94d03beadd06db8ab6aaebf"},{"author":{"_account_id":12632,"name":"Kirill Shileev","email":"kshileev@cisco.com","username":"kshileev"},"change_message_id":"aed091c0a66865b00593c7702eb7ec021c55fa23","unresolved":false,"context_lines":[{"line_number":45,"context_line":"        self.assertEqual([\"1.1.1.1\", \"1.1.1.1\"], [s.host for s in credentials])"},{"line_number":46,"context_line":"        self.assertEqual([\"root\", \"root\"], [s.user for s in credentials])"},{"line_number":47,"context_line":"        self.assertEqual([\"p2\", \"p2\"], [s.password for s in credentials])"},{"line_number":48,"context_line":"        self.assertEqual([\"key\", \"key\"], [s.key for s in credentials])"},{"line_number":49,"context_line":"        self.assertEqual([22, 22], [s.port for s in credentials])"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"    def test_create_servers_when_selects_nothing(self):"}],"source_content_type":"text/x-python","patch_set":9,"id":"1a4dcd0f_3c4a6884","line":48,"in_reply_to":"1a4dcd0f_e8575fc8","updated":"2015-08-10 15:25:41.000000000","message":"Done","commit_id":"434979a4f907fa03f94d03beadd06db8ab6aaebf"},{"author":{"_account_id":12395,"name":"Roman Vasylets","email":"pomeo92@gmail.com","username":"rvasilets"},"change_message_id":"69187d76e75d21f5e5dc7715def1248eda7aae76","unresolved":false,"context_lines":[{"line_number":46,"context_line":"        self.assertEqual([\"root\", \"root\"], [s.user for s in credentials])"},{"line_number":47,"context_line":"        self.assertEqual([\"p2\", \"p2\"], [s.password for s in credentials])"},{"line_number":48,"context_line":"        self.assertEqual([\"key\", \"key\"], [s.key for s in credentials])"},{"line_number":49,"context_line":"        self.assertEqual([22, 22], [s.port for s in credentials])"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"    def test_create_servers_when_selects_nothing(self):"},{"line_number":52,"context_line":"        c \u003d cobbler.CobblerProvider(config\u003dself.config, deployment\u003dNone)"}],"source_content_type":"text/x-python","patch_set":9,"id":"1a4dcd0f_c8462321","line":49,"updated":"2015-08-10 15:03:17.000000000","message":"[22] * 2","commit_id":"434979a4f907fa03f94d03beadd06db8ab6aaebf"},{"author":{"_account_id":12632,"name":"Kirill Shileev","email":"kshileev@cisco.com","username":"kshileev"},"change_message_id":"aed091c0a66865b00593c7702eb7ec021c55fa23","unresolved":false,"context_lines":[{"line_number":46,"context_line":"        self.assertEqual([\"root\", \"root\"], [s.user for s in credentials])"},{"line_number":47,"context_line":"        self.assertEqual([\"p2\", \"p2\"], [s.password for s in credentials])"},{"line_number":48,"context_line":"        self.assertEqual([\"key\", \"key\"], [s.key for s in credentials])"},{"line_number":49,"context_line":"        self.assertEqual([22, 22], [s.port for s in credentials])"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"    def test_create_servers_when_selects_nothing(self):"},{"line_number":52,"context_line":"        c \u003d cobbler.CobblerProvider(config\u003dself.config, deployment\u003dNone)"}],"source_content_type":"text/x-python","patch_set":9,"id":"1a4dcd0f_5c4df497","line":49,"in_reply_to":"1a4dcd0f_c8462321","updated":"2015-08-10 15:25:41.000000000","message":"Done","commit_id":"434979a4f907fa03f94d03beadd06db8ab6aaebf"},{"author":{"_account_id":12395,"name":"Roman Vasylets","email":"pomeo92@gmail.com","username":"rvasilets"},"change_message_id":"69187d76e75d21f5e5dc7715def1248eda7aae76","unresolved":false,"context_lines":[{"line_number":65,"context_line":"        c.cobbler.login \u003d mock.Mock(return_value\u003d\"token\")"},{"line_number":66,"context_line":"        c.cobbler.get_system_handle \u003d mock.Mock(return_value\u003d\"handle\")"},{"line_number":67,"context_line":"        c.cobbler.power_system \u003d mock.Mock()"},{"line_number":68,"context_line":"        self.rendered[\"ip_address_eth1\"] \u003d \"\""},{"line_number":69,"context_line":"        c.cobbler.get_system_as_rendered \u003d mock.Mock("},{"line_number":70,"context_line":"            return_value\u003dself.rendered)"},{"line_number":71,"context_line":"        self.assertRaisesRegexp(cobbler.CobblerError,"}],"source_content_type":"text/x-python","patch_set":9,"id":"1a4dcd0f_a8cab74d","line":68,"updated":"2015-08-10 15:03:17.000000000","message":"if its work the same for \"fake_ip\" then its better then \"\"","commit_id":"434979a4f907fa03f94d03beadd06db8ab6aaebf"},{"author":{"_account_id":12632,"name":"Kirill Shileev","email":"kshileev@cisco.com","username":"kshileev"},"change_message_id":"aed091c0a66865b00593c7702eb7ec021c55fa23","unresolved":false,"context_lines":[{"line_number":65,"context_line":"        c.cobbler.login \u003d mock.Mock(return_value\u003d\"token\")"},{"line_number":66,"context_line":"        c.cobbler.get_system_handle \u003d mock.Mock(return_value\u003d\"handle\")"},{"line_number":67,"context_line":"        c.cobbler.power_system \u003d mock.Mock()"},{"line_number":68,"context_line":"        self.rendered[\"ip_address_eth1\"] \u003d \"\""},{"line_number":69,"context_line":"        c.cobbler.get_system_as_rendered \u003d mock.Mock("},{"line_number":70,"context_line":"            return_value\u003dself.rendered)"},{"line_number":71,"context_line":"        self.assertRaisesRegexp(cobbler.CobblerError,"}],"source_content_type":"text/x-python","patch_set":9,"id":"1a4dcd0f_df6336dc","line":68,"in_reply_to":"1a4dcd0f_a8cab74d","updated":"2015-08-10 15:25:41.000000000","message":"no it\u0027s not the same. This tests the situation when cobbler\u0027s not reported ip for the system- possible case. In this case this field is expected to be empty string","commit_id":"434979a4f907fa03f94d03beadd06db8ab6aaebf"},{"author":{"_account_id":11748,"name":"Chris St. Pierre","email":"cstpierr@cisco.com","username":"stpierre"},"change_message_id":"b0fee6f999aa6fd22a108be8ba4fb5750450a69e","unresolved":false,"context_lines":[{"line_number":31,"context_line":""},{"line_number":32,"context_line":"    @mock.patch(\"six.moves.xmlrpc_client.Server\")"},{"line_number":33,"context_line":"    def test_create_servers(self, mock_server):"},{"line_number":34,"context_line":"        c \u003d cobbler.CobblerProvider(config\u003dself.config, deployment\u003dNone)"},{"line_number":35,"context_line":"        mock_server.assert_called_with(uri\u003d\"http://h1/cobbler_api\")"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"        c.cobbler.find_system \u003d mock.Mock(return_value\u003d[\"s1\", \"s2\"])"}],"source_content_type":"text/x-python","patch_set":12,"id":"ba15a1d1_7ca0d543","line":34,"updated":"2015-09-15 16:56:37.000000000","message":"One-letter variable names are the worst.","commit_id":"f6de1efb6e4e76f6b2db070c99b7f08ea7e8111e"},{"author":{"_account_id":12632,"name":"Kirill Shileev","email":"kshileev@cisco.com","username":"kshileev"},"change_message_id":"455afa7858779ad27037a3051f61bd495cb733e5","unresolved":false,"context_lines":[{"line_number":31,"context_line":""},{"line_number":32,"context_line":"    @mock.patch(\"six.moves.xmlrpc_client.Server\")"},{"line_number":33,"context_line":"    def test_create_servers(self, mock_server):"},{"line_number":34,"context_line":"        c \u003d cobbler.CobblerProvider(config\u003dself.config, deployment\u003dNone)"},{"line_number":35,"context_line":"        mock_server.assert_called_with(uri\u003d\"http://h1/cobbler_api\")"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"        c.cobbler.find_system \u003d mock.Mock(return_value\u003d[\"s1\", \"s2\"])"}],"source_content_type":"text/x-python","patch_set":12,"id":"ba15a1d1_6c929559","line":34,"in_reply_to":"ba15a1d1_7ca0d543","updated":"2015-09-21 17:41:49.000000000","message":"Done","commit_id":"f6de1efb6e4e76f6b2db070c99b7f08ea7e8111e"},{"author":{"_account_id":11748,"name":"Chris St. Pierre","email":"cstpierr@cisco.com","username":"stpierre"},"change_message_id":"b0fee6f999aa6fd22a108be8ba4fb5750450a69e","unresolved":false,"context_lines":[{"line_number":32,"context_line":"    @mock.patch(\"six.moves.xmlrpc_client.Server\")"},{"line_number":33,"context_line":"    def test_create_servers(self, mock_server):"},{"line_number":34,"context_line":"        c \u003d cobbler.CobblerProvider(config\u003dself.config, deployment\u003dNone)"},{"line_number":35,"context_line":"        mock_server.assert_called_with(uri\u003d\"http://h1/cobbler_api\")"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"        c.cobbler.find_system \u003d mock.Mock(return_value\u003d[\"s1\", \"s2\"])"},{"line_number":38,"context_line":"        c.cobbler.login \u003d mock.Mock(return_value\u003d\"token\")"}],"source_content_type":"text/x-python","patch_set":12,"id":"ba15a1d1_7cb77586","line":35,"updated":"2015-09-15 16:56:37.000000000","message":"This seems like it should be split off into its own unit test.","commit_id":"f6de1efb6e4e76f6b2db070c99b7f08ea7e8111e"},{"author":{"_account_id":12632,"name":"Kirill Shileev","email":"kshileev@cisco.com","username":"kshileev"},"change_message_id":"455afa7858779ad27037a3051f61bd495cb733e5","unresolved":false,"context_lines":[{"line_number":32,"context_line":"    @mock.patch(\"six.moves.xmlrpc_client.Server\")"},{"line_number":33,"context_line":"    def test_create_servers(self, mock_server):"},{"line_number":34,"context_line":"        c \u003d cobbler.CobblerProvider(config\u003dself.config, deployment\u003dNone)"},{"line_number":35,"context_line":"        mock_server.assert_called_with(uri\u003d\"http://h1/cobbler_api\")"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"        c.cobbler.find_system \u003d mock.Mock(return_value\u003d[\"s1\", \"s2\"])"},{"line_number":38,"context_line":"        c.cobbler.login \u003d mock.Mock(return_value\u003d\"token\")"}],"source_content_type":"text/x-python","patch_set":12,"id":"ba15a1d1_4cca3151","line":35,"in_reply_to":"ba15a1d1_7cb77586","updated":"2015-09-21 17:41:49.000000000","message":"not sure what do you mean","commit_id":"f6de1efb6e4e76f6b2db070c99b7f08ea7e8111e"},{"author":{"_account_id":11748,"name":"Chris St. Pierre","email":"cstpierr@cisco.com","username":"stpierre"},"change_message_id":"b0fee6f999aa6fd22a108be8ba4fb5750450a69e","unresolved":false,"context_lines":[{"line_number":38,"context_line":"        c.cobbler.login \u003d mock.Mock(return_value\u003d\"token\")"},{"line_number":39,"context_line":"        c.cobbler.get_system_handle \u003d mock.Mock(return_value\u003d\"handle\")"},{"line_number":40,"context_line":"        c.cobbler.power_system \u003d mock.Mock()"},{"line_number":41,"context_line":"        c.cobbler.get_system_as_rendered \u003d mock.Mock("},{"line_number":42,"context_line":"            return_value\u003dself.rendered)"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"        credentials \u003d c.create_servers()"}],"source_content_type":"text/x-python","patch_set":12,"id":"ba15a1d1_3f156f3f","line":41,"updated":"2015-09-15 16:56:37.000000000","message":"You should add assertions below to ensure that all of these functions are called as expected.","commit_id":"f6de1efb6e4e76f6b2db070c99b7f08ea7e8111e"},{"author":{"_account_id":12632,"name":"Kirill Shileev","email":"kshileev@cisco.com","username":"kshileev"},"change_message_id":"455afa7858779ad27037a3051f61bd495cb733e5","unresolved":false,"context_lines":[{"line_number":38,"context_line":"        c.cobbler.login \u003d mock.Mock(return_value\u003d\"token\")"},{"line_number":39,"context_line":"        c.cobbler.get_system_handle \u003d mock.Mock(return_value\u003d\"handle\")"},{"line_number":40,"context_line":"        c.cobbler.power_system \u003d mock.Mock()"},{"line_number":41,"context_line":"        c.cobbler.get_system_as_rendered \u003d mock.Mock("},{"line_number":42,"context_line":"            return_value\u003dself.rendered)"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"        credentials \u003d c.create_servers()"}],"source_content_type":"text/x-python","patch_set":12,"id":"ba15a1d1_0fc8ab73","line":41,"in_reply_to":"ba15a1d1_3f156f3f","updated":"2015-09-21 17:41:49.000000000","message":"Done","commit_id":"f6de1efb6e4e76f6b2db070c99b7f08ea7e8111e"},{"author":{"_account_id":11748,"name":"Chris St. Pierre","email":"cstpierr@cisco.com","username":"stpierre"},"change_message_id":"b0fee6f999aa6fd22a108be8ba4fb5750450a69e","unresolved":false,"context_lines":[{"line_number":48,"context_line":"        self.assertEqual([\"fake_key\"] * 2, [s.key for s in credentials])"},{"line_number":49,"context_line":"        self.assertEqual([22] * 2, [s.port for s in credentials])"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"    def test_create_servers_when_selects_nothing(self):"},{"line_number":52,"context_line":"        c \u003d cobbler.CobblerProvider(config\u003dself.config, deployment\u003dNone)"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"        c.cobbler.find_system \u003d mock.Mock(return_value\u003d[])"}],"source_content_type":"text/x-python","patch_set":12,"id":"ba15a1d1_9fcefbb2","line":51,"updated":"2015-09-15 16:56:37.000000000","message":"Shouldn\u0027t this function mock out six.moves.xmlrpc_client.Server?","commit_id":"f6de1efb6e4e76f6b2db070c99b7f08ea7e8111e"},{"author":{"_account_id":12632,"name":"Kirill Shileev","email":"kshileev@cisco.com","username":"kshileev"},"change_message_id":"455afa7858779ad27037a3051f61bd495cb733e5","unresolved":false,"context_lines":[{"line_number":48,"context_line":"        self.assertEqual([\"fake_key\"] * 2, [s.key for s in credentials])"},{"line_number":49,"context_line":"        self.assertEqual([22] * 2, [s.port for s in credentials])"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"    def test_create_servers_when_selects_nothing(self):"},{"line_number":52,"context_line":"        c \u003d cobbler.CobblerProvider(config\u003dself.config, deployment\u003dNone)"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"        c.cobbler.find_system \u003d mock.Mock(return_value\u003d[])"}],"source_content_type":"text/x-python","patch_set":12,"id":"ba15a1d1_8f811bfe","line":51,"in_reply_to":"ba15a1d1_9fcefbb2","updated":"2015-09-21 17:41:49.000000000","message":"yes, but it\u0027s enough to mock find_system, anyway I added @patch","commit_id":"f6de1efb6e4e76f6b2db070c99b7f08ea7e8111e"},{"author":{"_account_id":11748,"name":"Chris St. Pierre","email":"cstpierr@cisco.com","username":"stpierre"},"change_message_id":"b0fee6f999aa6fd22a108be8ba4fb5750450a69e","unresolved":false,"context_lines":[{"line_number":67,"context_line":"        c.cobbler.power_system \u003d mock.Mock()"},{"line_number":68,"context_line":"        self.rendered[\"ip_address_eth1\"] \u003d \"\""},{"line_number":69,"context_line":"        c.cobbler.get_system_as_rendered \u003d mock.Mock("},{"line_number":70,"context_line":"            return_value\u003dself.rendered)"},{"line_number":71,"context_line":"        self.assertRaisesRegexp(cobbler.CobblerError,"},{"line_number":72,"context_line":"                                \"No valid ip address found for system \u0027.*\u0027$\","},{"line_number":73,"context_line":"                                c.create_servers)"}],"source_content_type":"text/x-python","patch_set":12,"id":"ba15a1d1_3fe9efe6","line":70,"updated":"2015-09-15 16:56:37.000000000","message":"Since this set of mocks is done twice, it should probably be moved out into a separate helper function. (You could try to use DDT, but I don\u0027t think it\u0027s a good fit for this set of tests.)","commit_id":"f6de1efb6e4e76f6b2db070c99b7f08ea7e8111e"},{"author":{"_account_id":12632,"name":"Kirill Shileev","email":"kshileev@cisco.com","username":"kshileev"},"change_message_id":"455afa7858779ad27037a3051f61bd495cb733e5","unresolved":false,"context_lines":[{"line_number":67,"context_line":"        c.cobbler.power_system \u003d mock.Mock()"},{"line_number":68,"context_line":"        self.rendered[\"ip_address_eth1\"] \u003d \"\""},{"line_number":69,"context_line":"        c.cobbler.get_system_as_rendered \u003d mock.Mock("},{"line_number":70,"context_line":"            return_value\u003dself.rendered)"},{"line_number":71,"context_line":"        self.assertRaisesRegexp(cobbler.CobblerError,"},{"line_number":72,"context_line":"                                \"No valid ip address found for system \u0027.*\u0027$\","},{"line_number":73,"context_line":"                                c.create_servers)"}],"source_content_type":"text/x-python","patch_set":12,"id":"ba15a1d1_0f766b3e","line":70,"in_reply_to":"ba15a1d1_3fe9efe6","updated":"2015-09-21 17:41:49.000000000","message":"Done","commit_id":"f6de1efb6e4e76f6b2db070c99b7f08ea7e8111e"}]}
