)]}'
{"monasca_setup/detection/plugins/ironic.py":[{"author":{"_account_id":10375,"name":"Om Kumar","email":"om.kumar@hpe.com","username":"lazy_prince"},"change_message_id":"b71e561a3e0813266c9237181844e92b02d8ef26","unresolved":false,"context_lines":[{"line_number":11,"context_line":"            \u0027template_dir\u0027: template_dir,"},{"line_number":12,"context_line":"            \u0027overwrite\u0027: overwrite,"},{"line_number":13,"context_line":"            \u0027service_name\u0027: \u0027Baremetal\u0027,"},{"line_number":14,"context_line":"            \u0027process_names\u0027: [\u0027ir-api\u0027, \u0027ir-cond\u0027],"},{"line_number":15,"context_line":"            \u0027service_api_url\u0027: \u0027http://localhost:6385\u0027,"},{"line_number":16,"context_line":"            \u0027search_pattern\u0027: \u0027.*200 OK.*\u0027,"},{"line_number":17,"context_line":"        }"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa1b9901_ea0d9a8f","line":14,"updated":"2015-08-26 14:02:58.000000000","message":"ir-api -\u003e ironic-api\nir-cond -\u003e ironic-conductor","commit_id":"e2a1f1b142f271e5871710c97b4a663fd5d4fcd5"},{"author":{"_account_id":11809,"name":"Craig Bryant","email":"craig.bryant@hpe.com","username":"craig-bryant"},"change_message_id":"b335d0d5852103de99b5f96082316490e9703e92","unresolved":false,"context_lines":[{"line_number":12,"context_line":"            \u0027overwrite\u0027: overwrite,"},{"line_number":13,"context_line":"            \u0027service_name\u0027: \u0027Baremetal\u0027,"},{"line_number":14,"context_line":"            \u0027process_names\u0027: [\u0027ironic-api\u0027, \u0027ironic-conductor\u0027],"},{"line_number":15,"context_line":"            \u0027service_api_url\u0027: \u0027http://localhost:6385\u0027,"},{"line_number":16,"context_line":"            \u0027search_pattern\u0027: \u0027.*200 OK.*\u0027,"},{"line_number":17,"context_line":"        }"},{"line_number":18,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"fa1b9901_dbe3c7a2","line":15,"updated":"2015-08-26 15:35:29.000000000","message":"Are you sure this is always going to bound to the loopback interface?","commit_id":"b122d6aeb10bc4e9efac29a96b96945b676a7c29"},{"author":{"_account_id":5805,"name":"Chris Krelle","email":"nobodycam@gmail.com","username":"nobodycam"},"change_message_id":"5a78d0c9016f2fcec94d81efa62597cc5eec0e1b","unresolved":false,"context_lines":[{"line_number":12,"context_line":"            \u0027overwrite\u0027: overwrite,"},{"line_number":13,"context_line":"            \u0027service_name\u0027: \u0027Baremetal\u0027,"},{"line_number":14,"context_line":"            \u0027process_names\u0027: [\u0027ironic-api\u0027, \u0027ironic-conductor\u0027],"},{"line_number":15,"context_line":"            \u0027service_api_url\u0027: \u0027http://localhost:6385\u0027,"},{"line_number":16,"context_line":"            \u0027search_pattern\u0027: \u0027.*200 OK.*\u0027,"},{"line_number":17,"context_line":"        }"},{"line_number":18,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"da20952f_df80534c","line":15,"in_reply_to":"da20952f_032592bf","updated":"2015-09-01 14:24:46.000000000","message":"I also agree, allowing this to be passed as a parameter with a default is the best approach.","commit_id":"b122d6aeb10bc4e9efac29a96b96945b676a7c29"},{"author":{"_account_id":11809,"name":"Craig Bryant","email":"craig.bryant@hpe.com","username":"craig-bryant"},"change_message_id":"a6580499a6b4900775fc2ab17e75ecbc873629be","unresolved":false,"context_lines":[{"line_number":12,"context_line":"            \u0027overwrite\u0027: overwrite,"},{"line_number":13,"context_line":"            \u0027service_name\u0027: \u0027Baremetal\u0027,"},{"line_number":14,"context_line":"            \u0027process_names\u0027: [\u0027ironic-api\u0027, \u0027ironic-conductor\u0027],"},{"line_number":15,"context_line":"            \u0027service_api_url\u0027: \u0027http://localhost:6385\u0027,"},{"line_number":16,"context_line":"            \u0027search_pattern\u0027: \u0027.*200 OK.*\u0027,"},{"line_number":17,"context_line":"        }"},{"line_number":18,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"da20952f_032592bf","line":15,"in_reply_to":"da20952f_3d21fcfb","updated":"2015-08-28 19:21:03.000000000","message":"I think you should add allow the url to be passed in via the args parameter with a default to \u0027http://localhost:6385. That seems to handle all the cases","commit_id":"b122d6aeb10bc4e9efac29a96b96945b676a7c29"},{"author":{"_account_id":10375,"name":"Om Kumar","email":"om.kumar@hpe.com","username":"lazy_prince"},"change_message_id":"946b0cd446049b0715acd12ff491062956fffc25","unresolved":false,"context_lines":[{"line_number":12,"context_line":"            \u0027overwrite\u0027: overwrite,"},{"line_number":13,"context_line":"            \u0027service_name\u0027: \u0027Baremetal\u0027,"},{"line_number":14,"context_line":"            \u0027process_names\u0027: [\u0027ironic-api\u0027, \u0027ironic-conductor\u0027],"},{"line_number":15,"context_line":"            \u0027service_api_url\u0027: \u0027http://localhost:6385\u0027,"},{"line_number":16,"context_line":"            \u0027search_pattern\u0027: \u0027.*200 OK.*\u0027,"},{"line_number":17,"context_line":"        }"},{"line_number":18,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"da20952f_3d21fcfb","line":15,"in_reply_to":"da20952f_77833ecd","updated":"2015-08-28 05:33:40.000000000","message":"I also disagree that it will be always bound to the lo interface.. But this is how other services are using it.\n\nI believe, there is a way to disable http check included here if the URL is not applicable and in that case, user can always use httpcheck monasca plugin for monitoring the applicable url.","commit_id":"b122d6aeb10bc4e9efac29a96b96945b676a7c29"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"f07deb611ea5ffad3be86af737aded90e357a426","unresolved":false,"context_lines":[{"line_number":12,"context_line":"            \u0027overwrite\u0027: overwrite,"},{"line_number":13,"context_line":"            \u0027service_name\u0027: \u0027Baremetal\u0027,"},{"line_number":14,"context_line":"            \u0027process_names\u0027: [\u0027ironic-api\u0027, \u0027ironic-conductor\u0027],"},{"line_number":15,"context_line":"            \u0027service_api_url\u0027: \u0027http://localhost:6385\u0027,"},{"line_number":16,"context_line":"            \u0027search_pattern\u0027: \u0027.*200 OK.*\u0027,"},{"line_number":17,"context_line":"        }"},{"line_number":18,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"da20952f_77833ecd","line":15,"in_reply_to":"da20952f_b55564c7","updated":"2015-08-27 12:40:30.000000000","message":"I disagree that it will always be bound to the loopback interface.  Making the assumption that it is assumes a very specific deployment model.  Besides, is it not the purpose to test if things are working, the API can\u0027t be interacted with remotely if it is bound the loopback.","commit_id":"b122d6aeb10bc4e9efac29a96b96945b676a7c29"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"009b1c1fd979ad342b8cd3527ca1d27fa1a3b13e","unresolved":false,"context_lines":[{"line_number":12,"context_line":"            \u0027overwrite\u0027: overwrite,"},{"line_number":13,"context_line":"            \u0027service_name\u0027: \u0027Baremetal\u0027,"},{"line_number":14,"context_line":"            \u0027process_names\u0027: [\u0027ironic-api\u0027, \u0027ironic-conductor\u0027],"},{"line_number":15,"context_line":"            \u0027service_api_url\u0027: \u0027http://localhost:6385\u0027,"},{"line_number":16,"context_line":"            \u0027search_pattern\u0027: \u0027.*200 OK.*\u0027,"},{"line_number":17,"context_line":"        }"},{"line_number":18,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"da20952f_21b920ed","line":15,"in_reply_to":"da20952f_df80534c","updated":"2015-09-01 20:44:02.000000000","message":"Agreed, param passing is absolutely what should be done.","commit_id":"b122d6aeb10bc4e9efac29a96b96945b676a7c29"},{"author":{"_account_id":10369,"name":"lokesh s","email":"slokesh184@gmail.com","username":"loki"},"change_message_id":"3b391c80a407b1227c594cca3232b11e5890727d","unresolved":false,"context_lines":[{"line_number":12,"context_line":"            \u0027overwrite\u0027: overwrite,"},{"line_number":13,"context_line":"            \u0027service_name\u0027: \u0027Baremetal\u0027,"},{"line_number":14,"context_line":"            \u0027process_names\u0027: [\u0027ironic-api\u0027, \u0027ironic-conductor\u0027],"},{"line_number":15,"context_line":"            \u0027service_api_url\u0027: \u0027http://localhost:6385\u0027,"},{"line_number":16,"context_line":"            \u0027search_pattern\u0027: \u0027.*200 OK.*\u0027,"},{"line_number":17,"context_line":"        }"},{"line_number":18,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"da20952f_b55564c7","line":15,"in_reply_to":"fa1b9901_dbe3c7a2","updated":"2015-08-27 05:50:11.000000000","message":"yes it is bound to lo interface. All the services are using same loopback interface.","commit_id":"b122d6aeb10bc4e9efac29a96b96945b676a7c29"},{"author":{"_account_id":14273,"name":"Joe Keen","email":"joe.keen@hpe.com","username":"jkeen"},"change_message_id":"09084dc9513467bcf423b9d59e55953407a0d164","unresolved":false,"context_lines":[{"line_number":10,"context_line":"        if \"service_api_url\" in args:"},{"line_number":11,"context_line":"            service_api_url \u003d [item.split(\"\u003d\")[1] for item"},{"line_number":12,"context_line":"                               in args.split() if \"service_api_url\""},{"line_number":13,"context_line":"                               in item.strip()][0]"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"        service_params \u003d {"},{"line_number":16,"context_line":"            \u0027args\u0027: args,"}],"source_content_type":"text/x-python","patch_set":5,"id":"da20952f_7a97103a","line":13,"updated":"2015-09-06 05:30:22.000000000","message":"Why not follow the same pattern that is used in monasca_setup/detection/plugins.py when it builds the self.args variable?  Are you expecting the args to look different?","commit_id":"3242f32b6623a994c33834716c3d3570787152cb"},{"author":{"_account_id":11809,"name":"Craig Bryant","email":"craig.bryant@hpe.com","username":"craig-bryant"},"change_message_id":"f9076fea84f7bbd684d115214b524185db6cd23f","unresolved":false,"context_lines":[{"line_number":10,"context_line":"        if \"service_api_url\" in args:"},{"line_number":11,"context_line":"            service_api_url \u003d [item.split(\"\u003d\")[1] for item"},{"line_number":12,"context_line":"                               in args.split() if \"service_api_url\""},{"line_number":13,"context_line":"                               in item.strip()][0]"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"        service_params \u003d {"},{"line_number":16,"context_line":"            \u0027args\u0027: args,"}],"source_content_type":"text/x-python","patch_set":5,"id":"da20952f_8d72a310","line":13,"in_reply_to":"da20952f_72be4366","updated":"2015-09-08 15:29:53.000000000","message":"You missed Joe\u0027s point. If you start with my_args \u003d dict([a.split(\u0027\u003d\u0027) for a in args.split()]), then your logic would be much simpler to follow.\n\nAlso, why aren\u0027t you checking for args is None since that is default and your code will fail if args is None?","commit_id":"3242f32b6623a994c33834716c3d3570787152cb"},{"author":{"_account_id":10369,"name":"lokesh s","email":"slokesh184@gmail.com","username":"loki"},"change_message_id":"48028736db5d1b3d28d13e3f5f9db6a969481ef7","unresolved":false,"context_lines":[{"line_number":10,"context_line":"        if \"service_api_url\" in args:"},{"line_number":11,"context_line":"            service_api_url \u003d [item.split(\"\u003d\")[1] for item"},{"line_number":12,"context_line":"                               in args.split() if \"service_api_url\""},{"line_number":13,"context_line":"                               in item.strip()][0]"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"        service_params \u003d {"},{"line_number":16,"context_line":"            \u0027args\u0027: args,"}],"source_content_type":"text/x-python","patch_set":5,"id":"da20952f_72be4366","line":13,"in_reply_to":"da20952f_7a97103a","updated":"2015-09-07 09:49:51.000000000","message":"Thanks for the review. I m not modifiying args as it is in plugins.py, i need to pass servie_api_url coming from args in service_params. I am passing api_url and using it in here. Please let me know if any better approach","commit_id":"3242f32b6623a994c33834716c3d3570787152cb"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"4220ac623d358219f9fc8953f3a86b2f26e2c0f5","unresolved":false,"context_lines":[{"line_number":10,"context_line":"        if \"service_api_url\" in args:"},{"line_number":11,"context_line":"            service_api_url \u003d [item.split(\"\u003d\")[1] for item"},{"line_number":12,"context_line":"                               in args.split() if \"service_api_url\""},{"line_number":13,"context_line":"                               in item.strip()][0]"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"        service_params \u003d {"},{"line_number":16,"context_line":"            \u0027args\u0027: args,"}],"source_content_type":"text/x-python","patch_set":5,"id":"da20952f_fb37594b","line":13,"in_reply_to":"da20952f_8d72a310","updated":"2015-09-08 16:03:19.000000000","message":"I have to agree with Craig.  Perhaps, change the logic to if args are present then look for a service_api_url key and extract the value then.","commit_id":"3242f32b6623a994c33834716c3d3570787152cb"},{"author":{"_account_id":15799,"name":"Ben Motz","email":"ben.launchpad@ouat.co.uk","username":"bmotz"},"change_message_id":"b98c4b5a5b89abaaab3bdeb503df25c0a10650b1","unresolved":false,"context_lines":[{"line_number":10,"context_line":""},{"line_number":11,"context_line":"    def __init__(self, template_dir, overwrite\u003dTrue, args\u003dNone):"},{"line_number":12,"context_line":"        service_api_url \u003d \"http://localhost:6385\""},{"line_number":13,"context_line":"        if args is not None and isinstance(args, str):"},{"line_number":14,"context_line":"            if \"service_api_url\" in args:"},{"line_number":15,"context_line":"                try:"},{"line_number":16,"context_line":"                    # Turn \u0027service_api_url\u003durl\u0027 into"}],"source_content_type":"text/x-python","patch_set":7,"id":"da20952f_83333862","line":13,"updated":"2015-09-09 08:24:28.000000000","message":"Minor nitpick; tautology. isinstance(args, str) also asserts that args is not None.","commit_id":"5c67ccbe0e953b1e59890a3730191c18f707c65d"},{"author":{"_account_id":10369,"name":"lokesh s","email":"slokesh184@gmail.com","username":"loki"},"change_message_id":"f908ab6cba48e298ba9204a67ba969a2182353f3","unresolved":false,"context_lines":[{"line_number":10,"context_line":""},{"line_number":11,"context_line":"    def __init__(self, template_dir, overwrite\u003dTrue, args\u003dNone):"},{"line_number":12,"context_line":"        service_api_url \u003d \"http://localhost:6385\""},{"line_number":13,"context_line":"        if args is not None and isinstance(args, str):"},{"line_number":14,"context_line":"            if \"service_api_url\" in args:"},{"line_number":15,"context_line":"                try:"},{"line_number":16,"context_line":"                    # Turn \u0027service_api_url\u003durl\u0027 into"}],"source_content_type":"text/x-python","patch_set":7,"id":"da20952f_c2aedd80","line":13,"in_reply_to":"da20952f_83333862","updated":"2015-09-10 06:50:12.000000000","message":"Agreed","commit_id":"5c67ccbe0e953b1e59890a3730191c18f707c65d"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"69bc0cf191ec3a5ee9d992f729724c41e39d2abe","unresolved":false,"context_lines":[{"line_number":11,"context_line":"    def __init__(self, template_dir, overwrite\u003dTrue, args\u003dNone):"},{"line_number":12,"context_line":"        service_api_url \u003d \"http://localhost:6385\""},{"line_number":13,"context_line":"        if args is not None and isinstance(args, str):"},{"line_number":14,"context_line":"            if \"service_api_url\" in args:"},{"line_number":15,"context_line":"                try:"},{"line_number":16,"context_line":"                    # Turn \u0027service_api_url\u003durl\u0027 into"},{"line_number":17,"context_line":"                    # dict {\u0027service_api_url\u0027:\u0027url\u0027}"}],"source_content_type":"text/x-python","patch_set":7,"id":"da20952f_8229e939","line":14,"updated":"2015-09-09 12:04:53.000000000","message":"This would be a nitpick, but if anyone wanted to modify this for future argument detection and parsing, they would make this change anyway. I feel like the conditional check for service_api_url in args should be set after the args are split.  In other words, always try to parse arguments if present, and then only set service_api_url when that argument is found.","commit_id":"5c67ccbe0e953b1e59890a3730191c18f707c65d"},{"author":{"_account_id":10369,"name":"lokesh s","email":"slokesh184@gmail.com","username":"loki"},"change_message_id":"f908ab6cba48e298ba9204a67ba969a2182353f3","unresolved":false,"context_lines":[{"line_number":11,"context_line":"    def __init__(self, template_dir, overwrite\u003dTrue, args\u003dNone):"},{"line_number":12,"context_line":"        service_api_url \u003d \"http://localhost:6385\""},{"line_number":13,"context_line":"        if args is not None and isinstance(args, str):"},{"line_number":14,"context_line":"            if \"service_api_url\" in args:"},{"line_number":15,"context_line":"                try:"},{"line_number":16,"context_line":"                    # Turn \u0027service_api_url\u003durl\u0027 into"},{"line_number":17,"context_line":"                    # dict {\u0027service_api_url\u0027:\u0027url\u0027}"}],"source_content_type":"text/x-python","patch_set":7,"id":"da20952f_a2c40941","line":14,"in_reply_to":"da20952f_8229e939","updated":"2015-09-10 06:50:12.000000000","message":"Done","commit_id":"5c67ccbe0e953b1e59890a3730191c18f707c65d"}]}
