)]}'
{"etc/ironic/ironic.conf.sample":[{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"32cfe2f5dcc4b1a5104749347acf230ba02c0e53","unresolved":false,"context_lines":[{"line_number":898,"context_line":"# Set this to True to use http web server to host floppy"},{"line_number":899,"context_line":"# images and generated boot ISO. This requires http_root and"},{"line_number":900,"context_line":"# http_url to be configured in the [deploy] section of the"},{"line_number":901,"context_line":"# url. If this is set to False then the ironic will use swift"},{"line_number":902,"context_line":"# to host the floppy images and generated boot_iso. (boolean"},{"line_number":903,"context_line":"# value)"},{"line_number":904,"context_line":"#use_web_server_for_images\u003dfalse"}],"source_content_type":"application/octet-stream","patch_set":6,"id":"1a4dcd0f_1452c1dd","line":901,"updated":"2015-08-05 07:35:05.000000000","message":"needs to be updated if we update in code.","commit_id":"82f0afb6da54137a14f9201612a3b8522e7f68cb"},{"author":{"_account_id":11297,"name":"Nisha Agarwal","email":"agarwalnisha1980@gmail.com","username":"Nisha"},"change_message_id":"27c5d3b4048763b1da2924023f80ac15871b0a0a","unresolved":false,"context_lines":[{"line_number":898,"context_line":"# Set this to True to use http web server to host floppy"},{"line_number":899,"context_line":"# images and generated boot ISO. This requires http_root and"},{"line_number":900,"context_line":"# http_url to be configured in the [deploy] section of the"},{"line_number":901,"context_line":"# url. If this is set to False then the ironic will use swift"},{"line_number":902,"context_line":"# to host the floppy images and generated boot_iso. (boolean"},{"line_number":903,"context_line":"# value)"},{"line_number":904,"context_line":"#use_web_server_for_images\u003dfalse"}],"source_content_type":"application/octet-stream","patch_set":6,"id":"1a4dcd0f_385b2789","line":901,"in_reply_to":"1a4dcd0f_1452c1dd","updated":"2015-08-05 10:25:20.000000000","message":"This is not changed even after running the command line. This will update only if there is any config variable related changes in the code. While this patch didnt had any such changes it will be same as the previous patch.","commit_id":"82f0afb6da54137a14f9201612a3b8522e7f68cb"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"986011c3e95393386d8075d2ee721cb0ad0eda06","unresolved":false,"context_lines":[{"line_number":895,"context_line":"# (integer value)"},{"line_number":896,"context_line":"#swift_object_expiry_timeout\u003d900"},{"line_number":897,"context_line":""},{"line_number":898,"context_line":"# Set this to True to use http web server to host floppy"},{"line_number":899,"context_line":"# images and generated boot ISO. This requires http_root and"},{"line_number":900,"context_line":"# http_url to be configured in the [deploy] section of the"},{"line_number":901,"context_line":"# url. If this is set to False then the ironic will use swift"}],"source_content_type":"application/octet-stream","patch_set":7,"id":"1a4dcd0f_fe14c744","line":898,"updated":"2015-08-05 10:47:20.000000000","message":"Need to regenerate this file.","commit_id":"4e2527022a06000f0d0b76c0d7eb096f228795a2"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"2659719c180160dad2ea57b363721e9e9b6e8a9d","unresolved":false,"context_lines":[{"line_number":111,"context_line":""},{"line_number":112,"context_line":"# Print more verbose output (set logging level to INFO instead"},{"line_number":113,"context_line":"# of default WARNING level). (boolean value)"},{"line_number":114,"context_line":"#verbose\u003dfalse"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"# The name of a logging configuration file. This file is"},{"line_number":117,"context_line":"# appended to any existing logging configuration files. For"}],"source_content_type":"application/octet-stream","patch_set":23,"id":"da20952f_6cc6114b","line":114,"updated":"2015-09-09 09:31:10.000000000","message":"I think you have an older version of oslo.log in your development environment. Ironic now has oslo.log\u003e\u003d1.8.0 and in 1.8.0, value of verbose\u003dtrue.\nhttp://docs.openstack.org/developer/oslo.log/history.html#id4\n\nCan you please refresh your virtual environment and then try to generate you CONF.sample again within that virtual environment ? We might see some groups moving around, but we shouldn\u0027t be seeing changes in values for these options.  Ditto for other modules.","commit_id":"041d113e8f421eb7ae00094237055d53920d4740"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"232c3e6eceb730b92e7bd52ad70c7c67f95839a5","unresolved":false,"context_lines":[{"line_number":1519,"context_line":"# adopters with a new installations or for testing. Please"},{"line_number":1520,"context_line":"# note, that this option will be removed in M release."},{"line_number":1521,"context_line":"# (boolean value)"},{"line_number":1522,"context_line":"#send_single_reply\u003dfalse"},{"line_number":1523,"context_line":""},{"line_number":1524,"context_line":"# SSL version to use (valid only if SSL enabled). Valid values"},{"line_number":1525,"context_line":"# are TLSv1 and SSLv23. SSLv2, SSLv3, TLSv1_1, and TLSv1_2 may"}],"source_content_type":"application/octet-stream","patch_set":23,"id":"da20952f_77333e63","line":1522,"updated":"2015-09-09 09:54:58.000000000","message":"Yes this is an old version of the string in oslo [1], the ironic.conf.sample is being downdated here.\n\nCan you please regenerated your venv and create this sample file with a newer version of the libs?\n\n $ cd ironic \n $ rm -r .tox\n $ tox -evenv --notest\n $ source .tox/venv/bin/activate\n $ tox -egenconfig\n\n[1] https://github.com/openstack/oslo.messaging/blob/master/oslo_messaging/_drivers/amqp.py#L52-L63","commit_id":"041d113e8f421eb7ae00094237055d53920d4740"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"2659719c180160dad2ea57b363721e9e9b6e8a9d","unresolved":false,"context_lines":[{"line_number":1547,"context_line":""},{"line_number":1548,"context_line":"# The RabbitMQ broker address where a single node is used."},{"line_number":1549,"context_line":"# (string value)"},{"line_number":1550,"context_line":"#rabbit_host\u003dironic"},{"line_number":1551,"context_line":""},{"line_number":1552,"context_line":"# The RabbitMQ broker port where a single node is used."},{"line_number":1553,"context_line":"# (integer value)"}],"source_content_type":"application/octet-stream","patch_set":23,"id":"da20952f_6ccdb15c","line":1550,"updated":"2015-09-09 09:31:10.000000000","message":"Also, I just figured out this can be avoided if we set a fqdn. Set something like\n\n  sudo hostname nisha.controller.net\n\nand then this will be retained as localhost.","commit_id":"041d113e8f421eb7ae00094237055d53920d4740"}],"ironic/common/exception.py":[{"author":{"_account_id":13997,"name":"SHIGEMATSU Mitsuhiro","email":"shigematsu.mitsuhiro@lab.ntt.co.jp","username":"pshige"},"change_message_id":"e42afa418d381f8c863391c5914496a63b87bb17","unresolved":false,"context_lines":[{"line_number":590,"context_line":""},{"line_number":591,"context_line":"class WolOperationError(IronicException):"},{"line_number":592,"context_line":"    pass"},{"line_number":593,"context_line":""},{"line_number":594,"context_line":"class ImageUploadFailed(IronicException):"},{"line_number":595,"context_line":"    message \u003d _(\"Failed to upload image %(image_href)s, reason: %(reason)s\") "}],"source_content_type":"text/x-python","patch_set":11,"id":"fa1b9901_933aa435","line":593,"updated":"2015-08-18 14:07:28.000000000","message":"one more blank line is needed.","commit_id":"f05e6f77d29972f881f7091c3699e87f830cfef6"},{"author":{"_account_id":11297,"name":"Nisha Agarwal","email":"agarwalnisha1980@gmail.com","username":"Nisha"},"change_message_id":"8d2402311099a263d835f04ffe1c85a93be55b90","unresolved":false,"context_lines":[{"line_number":590,"context_line":""},{"line_number":591,"context_line":"class WolOperationError(IronicException):"},{"line_number":592,"context_line":"    pass"},{"line_number":593,"context_line":""},{"line_number":594,"context_line":"class ImageUploadFailed(IronicException):"},{"line_number":595,"context_line":"    message \u003d _(\"Failed to upload image %(image_href)s, reason: %(reason)s\") "}],"source_content_type":"text/x-python","patch_set":11,"id":"fa1b9901_167d06e7","line":593,"in_reply_to":"fa1b9901_933aa435","updated":"2015-08-18 19:23:13.000000000","message":"yeah. same as below.","commit_id":"f05e6f77d29972f881f7091c3699e87f830cfef6"},{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"0ede1d4b4e8ea9b293a8d8b7691e8cbd4bd6cfec","unresolved":false,"context_lines":[{"line_number":592,"context_line":"    pass"},{"line_number":593,"context_line":""},{"line_number":594,"context_line":"class ImageUploadFailed(IronicException):"},{"line_number":595,"context_line":"    message \u003d _(\"Failed to upload image %(image_href)s, reason: %(reason)s\") "}],"source_content_type":"text/x-python","patch_set":11,"id":"fa1b9901_ff8dde7b","line":595,"updated":"2015-08-18 12:28:58.000000000","message":"Whitespace error at end of line.","commit_id":"f05e6f77d29972f881f7091c3699e87f830cfef6"},{"author":{"_account_id":11297,"name":"Nisha Agarwal","email":"agarwalnisha1980@gmail.com","username":"Nisha"},"change_message_id":"8d2402311099a263d835f04ffe1c85a93be55b90","unresolved":false,"context_lines":[{"line_number":592,"context_line":"    pass"},{"line_number":593,"context_line":""},{"line_number":594,"context_line":"class ImageUploadFailed(IronicException):"},{"line_number":595,"context_line":"    message \u003d _(\"Failed to upload image %(image_href)s, reason: %(reason)s\") "}],"source_content_type":"text/x-python","patch_set":11,"id":"fa1b9901_d638ee3f","line":595,"in_reply_to":"fa1b9901_ff8dde7b","updated":"2015-08-18 19:23:13.000000000","message":"yes done. I had done all these trivial fixes but forgot to commit and raised review without these fixes.","commit_id":"f05e6f77d29972f881f7091c3699e87f830cfef6"},{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"142896da63372a5522953371bd0a3af5ab5a6c25","unresolved":false,"context_lines":[{"line_number":593,"context_line":""},{"line_number":594,"context_line":""},{"line_number":595,"context_line":"class ImageUploadFailed(IronicException):"},{"line_number":596,"context_line":"    message \u003d _(\"Failed to upload image %(image_href)s, reason: %(reason)s\")"}],"source_content_type":"text/x-python","patch_set":14,"id":"da20952f_7f79072f","line":596,"updated":"2015-08-26 16:23:40.000000000","message":"To be more explicit, maybe something like \"Failed to upload %(image_name)s image to web server %(web_server)s, reason: %(reason)s\", and then in copy_image_to_web_server do\n\n raise exception.ImageUploadFailed(image_name\u003ddestination, web_server\u003dCONF.deploy.http_url, reason\u003dexc)","commit_id":"61fabfe59363d251fd11ca9ef5b8eb6628c930d5"},{"author":{"_account_id":11297,"name":"Nisha Agarwal","email":"agarwalnisha1980@gmail.com","username":"Nisha"},"change_message_id":"6a3d62b859672b88a54430d19758dc2cc81e2e03","unresolved":false,"context_lines":[{"line_number":593,"context_line":""},{"line_number":594,"context_line":""},{"line_number":595,"context_line":"class ImageUploadFailed(IronicException):"},{"line_number":596,"context_line":"    message \u003d _(\"Failed to upload image %(image_href)s, reason: %(reason)s\")"}],"source_content_type":"text/x-python","patch_set":14,"id":"da20952f_c774fcd0","line":596,"in_reply_to":"da20952f_7f79072f","updated":"2015-08-26 22:22:10.000000000","message":"Thanks vdrok. This looks better.","commit_id":"61fabfe59363d251fd11ca9ef5b8eb6628c930d5"},{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"53f369f98e2d17aee53bf03d0953b62d4ab11cf1","unresolved":false,"context_lines":[{"line_number":595,"context_line":""},{"line_number":596,"context_line":"class ImageUploadFailed(IronicException):"},{"line_number":597,"context_line":"    message \u003d _(\"Failed to upload %(image_name)s image to web server \""},{"line_number":598,"context_line":"                \"s(web_server)%, reason: %(reason)s\")"}],"source_content_type":"text/x-python","patch_set":16,"id":"da20952f_d163fada","line":598,"updated":"2015-08-28 12:44:40.000000000","message":"s/s(web_server)%/%(web_server)s","commit_id":"68cb6adf9ed7d4713aeb0144f089c231fd45d9a0"}],"ironic/common/images.py":[{"author":{"_account_id":14760,"name":"John L. Villalovos","email":"openstack.org@sodarock.com","username":"jlvillal"},"change_message_id":"001fc27b729283fa6618c652a1d22dbe052a00c8","unresolved":false,"context_lines":[{"line_number":473,"context_line":"            params.append(kernel_params)"},{"line_number":474,"context_line":""},{"line_number":475,"context_line":"        if boot_mode \u003d\u003d \u0027uefi\u0027:"},{"line_number":476,"context_line":"            deploy_iso \u003d os.path.join(tmpdir, deploy_iso_uuid.split(\u0027/\u0027)[-1])"},{"line_number":477,"context_line":"            fetch(context, deploy_iso_uuid, deploy_iso)"},{"line_number":478,"context_line":"            create_isolinux_image_for_uefi(output_filename,"},{"line_number":479,"context_line":"                                           deploy_iso,"}],"source_content_type":"text/x-python","patch_set":9,"id":"1a4dcd0f_51038db8","line":476,"updated":"2015-08-18 04:31:44.000000000","message":"Why is this changing?","commit_id":"3421b6e55af07c2d185d356187f20d9d459462f1"},{"author":{"_account_id":14760,"name":"John L. Villalovos","email":"openstack.org@sodarock.com","username":"jlvillal"},"change_message_id":"05e2798ccfc9196fcdf7f210cefc3bfe1c043d9b","unresolved":false,"context_lines":[{"line_number":473,"context_line":"            params.append(kernel_params)"},{"line_number":474,"context_line":""},{"line_number":475,"context_line":"        if boot_mode \u003d\u003d \u0027uefi\u0027:"},{"line_number":476,"context_line":"            deploy_iso \u003d os.path.join(tmpdir, deploy_iso_uuid.split(\u0027/\u0027)[-1])"},{"line_number":477,"context_line":"            fetch(context, deploy_iso_uuid, deploy_iso)"},{"line_number":478,"context_line":"            create_isolinux_image_for_uefi(output_filename,"},{"line_number":479,"context_line":"                                           deploy_iso,"}],"source_content_type":"text/x-python","patch_set":11,"id":"fa1b9901_c8c05b7f","line":476,"updated":"2015-08-18 13:53:31.000000000","message":"Why did this change?","commit_id":"f05e6f77d29972f881f7091c3699e87f830cfef6"},{"author":{"_account_id":11297,"name":"Nisha Agarwal","email":"agarwalnisha1980@gmail.com","username":"Nisha"},"change_message_id":"8d2402311099a263d835f04ffe1c85a93be55b90","unresolved":false,"context_lines":[{"line_number":473,"context_line":"            params.append(kernel_params)"},{"line_number":474,"context_line":""},{"line_number":475,"context_line":"        if boot_mode \u003d\u003d \u0027uefi\u0027:"},{"line_number":476,"context_line":"            deploy_iso \u003d os.path.join(tmpdir, deploy_iso_uuid.split(\u0027/\u0027)[-1])"},{"line_number":477,"context_line":"            fetch(context, deploy_iso_uuid, deploy_iso)"},{"line_number":478,"context_line":"            create_isolinux_image_for_uefi(output_filename,"},{"line_number":479,"context_line":"                                           deploy_iso,"}],"source_content_type":"text/x-python","patch_set":11,"id":"fa1b9901_9d1b7c1b","line":476,"in_reply_to":"fa1b9901_71c9fa77","updated":"2015-08-18 19:23:13.000000000","message":"This is done if deploy iso is a href and available on the webserver. The same way as kernel href and ramdisk href. Since this enhancement for enabling ilo drivers to support webserver, IMO it is not a seperate bug.\n\n@Yuriy, I will rename it to deploy_iso_href.","commit_id":"f05e6f77d29972f881f7091c3699e87f830cfef6"},{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"22b5537dd1f6ce62e1db616db4657f36e359983d","unresolved":false,"context_lines":[{"line_number":473,"context_line":"            params.append(kernel_params)"},{"line_number":474,"context_line":""},{"line_number":475,"context_line":"        if boot_mode \u003d\u003d \u0027uefi\u0027:"},{"line_number":476,"context_line":"            deploy_iso \u003d os.path.join(tmpdir, deploy_iso_uuid.split(\u0027/\u0027)[-1])"},{"line_number":477,"context_line":"            fetch(context, deploy_iso_uuid, deploy_iso)"},{"line_number":478,"context_line":"            create_isolinux_image_for_uefi(output_filename,"},{"line_number":479,"context_line":"                                           deploy_iso,"}],"source_content_type":"text/x-python","patch_set":11,"id":"fa1b9901_71c9fa77","line":476,"in_reply_to":"fa1b9901_76c9f077","updated":"2015-08-18 14:45:06.000000000","message":"+1, and please rename parameter deploy_iso_uuid -\u003e deploy_iso_href","commit_id":"f05e6f77d29972f881f7091c3699e87f830cfef6"},{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"037e51dae0801af41583c4656633956f0dd1b453","unresolved":false,"context_lines":[{"line_number":473,"context_line":"            params.append(kernel_params)"},{"line_number":474,"context_line":""},{"line_number":475,"context_line":"        if boot_mode \u003d\u003d \u0027uefi\u0027:"},{"line_number":476,"context_line":"            deploy_iso \u003d os.path.join(tmpdir, deploy_iso_uuid.split(\u0027/\u0027)[-1])"},{"line_number":477,"context_line":"            fetch(context, deploy_iso_uuid, deploy_iso)"},{"line_number":478,"context_line":"            create_isolinux_image_for_uefi(output_filename,"},{"line_number":479,"context_line":"                                           deploy_iso,"}],"source_content_type":"text/x-python","patch_set":11,"id":"fa1b9901_199f79b5","line":476,"in_reply_to":"fa1b9901_9d1b7c1b","updated":"2015-08-18 19:38:42.000000000","message":"Iirc it is possible to specify http link for deploy_iso already, also glance://uuid is a valid syntax, so I\u0027d say it is a separate bug. But if you don\u0027t want a bug maybe mention it in commit message?","commit_id":"f05e6f77d29972f881f7091c3699e87f830cfef6"},{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"789ed273428661341eb0f64fe399397b2555a206","unresolved":false,"context_lines":[{"line_number":473,"context_line":"            params.append(kernel_params)"},{"line_number":474,"context_line":""},{"line_number":475,"context_line":"        if boot_mode \u003d\u003d \u0027uefi\u0027:"},{"line_number":476,"context_line":"            deploy_iso \u003d os.path.join(tmpdir, deploy_iso_uuid.split(\u0027/\u0027)[-1])"},{"line_number":477,"context_line":"            fetch(context, deploy_iso_uuid, deploy_iso)"},{"line_number":478,"context_line":"            create_isolinux_image_for_uefi(output_filename,"},{"line_number":479,"context_line":"                                           deploy_iso,"}],"source_content_type":"text/x-python","patch_set":11,"id":"fa1b9901_76c9f077","line":476,"in_reply_to":"fa1b9901_c8c05b7f","updated":"2015-08-18 14:36:13.000000000","message":"This seems like a separate bug, could you report it and fix separately?","commit_id":"f05e6f77d29972f881f7091c3699e87f830cfef6"},{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"3822da88ba6bafa672f1cff84775f0812a3e850d","unresolved":false,"context_lines":[{"line_number":452,"context_line":"    :param context: context"},{"line_number":453,"context_line":"    :param output_filename: the absolute path of the output ISO file"},{"line_number":454,"context_line":"    :param kernel_href: URL or glance uuid of the kernel to use"},{"line_number":455,"context_line":"    :param ramdisk_href: URL or glance uuid of the ramdisk to use"},{"line_number":456,"context_line":"    :param deploy_iso_uuid: URL or glance uuid of the deploy iso used"},{"line_number":457,"context_line":"    :param root_uuid: uuid of the root filesystem (optional)"},{"line_number":458,"context_line":"    :param kernel_params: a string containing whitespace separated values"}],"source_content_type":"text/x-python","patch_set":12,"id":"fa1b9901_60ec62f3","line":455,"updated":"2015-08-20 07:37:34.000000000","message":"Please rename here too.","commit_id":"e3082e9dae3a011c372b494accc397d81680957b"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"ee1ea9267f142ba70abb43ecba76668b10b901f5","unresolved":false,"context_lines":[{"line_number":473,"context_line":"            params.append(kernel_params)"},{"line_number":474,"context_line":""},{"line_number":475,"context_line":"        if boot_mode \u003d\u003d \u0027uefi\u0027:"},{"line_number":476,"context_line":"            deploy_iso \u003d os.path.join(tmpdir, deploy_iso_href.split(\u0027/\u0027)[-1])"},{"line_number":477,"context_line":"            fetch(context, deploy_iso_href, deploy_iso)"},{"line_number":478,"context_line":"            create_isolinux_image_for_uefi(output_filename,"},{"line_number":479,"context_line":"                                           deploy_iso,"}],"source_content_type":"text/x-python","patch_set":14,"id":"fa1b9901_b4271611","line":476,"updated":"2015-08-26 09:56:41.000000000","message":"Do we need a unit test for this change ? I hope it was made so that we can pass http urls as deploy_iso_href. Not sure. WDYT ?","commit_id":"61fabfe59363d251fd11ca9ef5b8eb6628c930d5"},{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"142896da63372a5522953371bd0a3af5ab5a6c25","unresolved":false,"context_lines":[{"line_number":473,"context_line":"            params.append(kernel_params)"},{"line_number":474,"context_line":""},{"line_number":475,"context_line":"        if boot_mode \u003d\u003d \u0027uefi\u0027:"},{"line_number":476,"context_line":"            deploy_iso \u003d os.path.join(tmpdir, deploy_iso_href.split(\u0027/\u0027)[-1])"},{"line_number":477,"context_line":"            fetch(context, deploy_iso_href, deploy_iso)"},{"line_number":478,"context_line":"            create_isolinux_image_for_uefi(output_filename,"},{"line_number":479,"context_line":"                                           deploy_iso,"}],"source_content_type":"text/x-python","patch_set":14,"id":"da20952f_bf9d5f5b","line":476,"in_reply_to":"fa1b9901_b4271611","updated":"2015-08-26 16:23:40.000000000","message":"+1","commit_id":"61fabfe59363d251fd11ca9ef5b8eb6628c930d5"},{"author":{"_account_id":11297,"name":"Nisha Agarwal","email":"agarwalnisha1980@gmail.com","username":"Nisha"},"change_message_id":"6a3d62b859672b88a54430d19758dc2cc81e2e03","unresolved":false,"context_lines":[{"line_number":473,"context_line":"            params.append(kernel_params)"},{"line_number":474,"context_line":""},{"line_number":475,"context_line":"        if boot_mode \u003d\u003d \u0027uefi\u0027:"},{"line_number":476,"context_line":"            deploy_iso \u003d os.path.join(tmpdir, deploy_iso_href.split(\u0027/\u0027)[-1])"},{"line_number":477,"context_line":"            fetch(context, deploy_iso_href, deploy_iso)"},{"line_number":478,"context_line":"            create_isolinux_image_for_uefi(output_filename,"},{"line_number":479,"context_line":"                                           deploy_iso,"}],"source_content_type":"text/x-python","patch_set":14,"id":"da20952f_c722bcb9","line":476,"in_reply_to":"fa1b9901_b4271611","updated":"2015-08-26 22:22:10.000000000","message":"yes it was done for parsing http urls in deploy iso.","commit_id":"61fabfe59363d251fd11ca9ef5b8eb6628c930d5"}],"ironic/drivers/modules/ilo/common.py":[{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"2c080e2faca8b605e5d166df451b75bf279a5d8b","unresolved":false,"context_lines":[{"line_number":62,"context_line":""},{"line_number":63,"context_line":"CONF \u003d cfg.CONF"},{"line_number":64,"context_line":"CONF.register_opts(opts, group\u003d\u0027ilo\u0027)"},{"line_number":65,"context_line":"CONF.import_opt(\u0027http_server_url\u0027, \u0027ironic.drivers.modules.deploy_utils\u0027,"},{"line_number":66,"context_line":"                group\u003d\u0027deploy\u0027)"},{"line_number":67,"context_line":"CONF.import_opt(\u0027http_server_root\u0027, \u0027ironic.drivers.modules.deploy_utils\u0027,"},{"line_number":68,"context_line":"                group\u003d\u0027deploy\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a41bdd9_bfa5eeb5","line":65,"updated":"2015-07-14 04:39:34.000000000","message":"deploy_utils is already imported by the time we come here. So there isn\u0027t a need to specifically do import_opt.","commit_id":"8da2366df4ff146ede1be4fb0dddd344c6050c9d"},{"author":{"_account_id":11297,"name":"Nisha Agarwal","email":"agarwalnisha1980@gmail.com","username":"Nisha"},"change_message_id":"f55ccd695456fb7995d574649d5ebbfa962fa962","unresolved":false,"context_lines":[{"line_number":62,"context_line":""},{"line_number":63,"context_line":"CONF \u003d cfg.CONF"},{"line_number":64,"context_line":"CONF.register_opts(opts, group\u003d\u0027ilo\u0027)"},{"line_number":65,"context_line":"CONF.import_opt(\u0027http_server_url\u0027, \u0027ironic.drivers.modules.deploy_utils\u0027,"},{"line_number":66,"context_line":"                group\u003d\u0027deploy\u0027)"},{"line_number":67,"context_line":"CONF.import_opt(\u0027http_server_root\u0027, \u0027ironic.drivers.modules.deploy_utils\u0027,"},{"line_number":68,"context_line":"                group\u003d\u0027deploy\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a41bdd9_d1a715a5","line":65,"in_reply_to":"9a41bdd9_bfa5eeb5","updated":"2015-07-15 23:51:05.000000000","message":"I will recheck. It was failing so i included this here.","commit_id":"8da2366df4ff146ede1be4fb0dddd344c6050c9d"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"2c080e2faca8b605e5d166df451b75bf279a5d8b","unresolved":false,"context_lines":[{"line_number":97,"context_line":"    (v, k) for (k, v) in BOOT_MODE_GENERIC_TO_ILO.items())"},{"line_number":98,"context_line":""},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"def _validate_image_href(image_href):"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"    if not service_utils.is_glance_image(image_href):"},{"line_number":103,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a41bdd9_7f868614","line":100,"updated":"2015-07-14 04:39:34.000000000","message":"This method is prefixed with _ meaning this is supposed to be used only in this module.  But it is called from other modules.\n\nMissing docstrings.","commit_id":"8da2366df4ff146ede1be4fb0dddd344c6050c9d"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"1e9ee5b35437a07ea1db0a0e61d67f158b2288b0","unresolved":false,"context_lines":[{"line_number":97,"context_line":"    (v, k) for (k, v) in BOOT_MODE_GENERIC_TO_ILO.items())"},{"line_number":98,"context_line":""},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"def _validate_image_href(image_href):"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"    if not service_utils.is_glance_image(image_href):"},{"line_number":103,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a41bdd9_c5ab401c","line":100,"in_reply_to":"9a41bdd9_7f868614","updated":"2015-07-14 08:44:33.000000000","message":"++","commit_id":"8da2366df4ff146ede1be4fb0dddd344c6050c9d"},{"author":{"_account_id":11297,"name":"Nisha Agarwal","email":"agarwalnisha1980@gmail.com","username":"Nisha"},"change_message_id":"f55ccd695456fb7995d574649d5ebbfa962fa962","unresolved":false,"context_lines":[{"line_number":97,"context_line":"    (v, k) for (k, v) in BOOT_MODE_GENERIC_TO_ILO.items())"},{"line_number":98,"context_line":""},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"def _validate_image_href(image_href):"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"    if not service_utils.is_glance_image(image_href):"},{"line_number":103,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a41bdd9_b1c37137","line":100,"in_reply_to":"9a41bdd9_7f868614","updated":"2015-07-15 23:51:05.000000000","message":"Ok will remove underscore. and will add docstrings","commit_id":"8da2366df4ff146ede1be4fb0dddd344c6050c9d"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"2c080e2faca8b605e5d166df451b75bf279a5d8b","unresolved":false,"context_lines":[{"line_number":110,"context_line":"                              \"is not a valid HTTP(S) URL or is \""},{"line_number":111,"context_line":"                              \"not reachable.\"), image_href)"},{"line_number":112,"context_line":"    else:"},{"line_number":113,"context_line":"        return \"valid_glance_uuid\""},{"line_number":114,"context_line":""},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"def parse_driver_info(node):"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a41bdd9_1fddfadf","line":113,"updated":"2015-07-14 04:39:34.000000000","message":"Hard-coded magic strings as return values.  Are these really required ? I see it\u0027s just for logging purpose.  If so, we can log it here as well.  But I am not sure if we really need to log this.","commit_id":"8da2366df4ff146ede1be4fb0dddd344c6050c9d"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"1e9ee5b35437a07ea1db0a0e61d67f158b2288b0","unresolved":false,"context_lines":[{"line_number":110,"context_line":"                              \"is not a valid HTTP(S) URL or is \""},{"line_number":111,"context_line":"                              \"not reachable.\"), image_href)"},{"line_number":112,"context_line":"    else:"},{"line_number":113,"context_line":"        return \"valid_glance_uuid\""},{"line_number":114,"context_line":""},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"def parse_driver_info(node):"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a41bdd9_a54e3c94","line":113,"in_reply_to":"9a41bdd9_1fddfadf","updated":"2015-07-14 08:44:33.000000000","message":"Hi Nisha,\n\nI agree with @Ramesh here too about return hardcoded string, let\u0027s avoid it if possible.","commit_id":"8da2366df4ff146ede1be4fb0dddd344c6050c9d"},{"author":{"_account_id":11297,"name":"Nisha Agarwal","email":"agarwalnisha1980@gmail.com","username":"Nisha"},"change_message_id":"f55ccd695456fb7995d574649d5ebbfa962fa962","unresolved":false,"context_lines":[{"line_number":110,"context_line":"                              \"is not a valid HTTP(S) URL or is \""},{"line_number":111,"context_line":"                              \"not reachable.\"), image_href)"},{"line_number":112,"context_line":"    else:"},{"line_number":113,"context_line":"        return \"valid_glance_uuid\""},{"line_number":114,"context_line":""},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"def parse_driver_info(node):"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a41bdd9_51e9c5b5","line":113,"in_reply_to":"9a41bdd9_a54e3c94","updated":"2015-07-15 23:51:05.000000000","message":"Ok let me see if i can do without these.","commit_id":"8da2366df4ff146ede1be4fb0dddd344c6050c9d"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"2c080e2faca8b605e5d166df451b75bf279a5d8b","unresolved":false,"context_lines":[{"line_number":270,"context_line":"        vfat_image_tmpfile \u003d vfat_image_tmpfile_obj.name"},{"line_number":271,"context_line":"        images.create_vfat_image(vfat_image_tmpfile, parameters\u003dparams)"},{"line_number":272,"context_line":"        object_name \u003d _get_floppy_image_name(task.node)"},{"line_number":273,"context_line":"        if CONF.ilo.use_web_server_for_images:"},{"line_number":274,"context_line":"            image_url \u003d os.path.join("},{"line_number":275,"context_line":"                CONF.deploy.http_server_url, os.path.basename(object_name))"},{"line_number":276,"context_line":"            image_path \u003d os.path.join("}],"source_content_type":"text/x-python","patch_set":1,"id":"9a41bdd9_3fa0fe8f","line":273,"updated":"2015-07-14 04:39:34.000000000","message":"This might be a problem, we could end up running this code without ilo.deploy being loaded which will result in the CONF variable not found.  Can we move the CONF definition for use_web_server_for_images to this file ?","commit_id":"8da2366df4ff146ede1be4fb0dddd344c6050c9d"},{"author":{"_account_id":11297,"name":"Nisha Agarwal","email":"agarwalnisha1980@gmail.com","username":"Nisha"},"change_message_id":"f55ccd695456fb7995d574649d5ebbfa962fa962","unresolved":false,"context_lines":[{"line_number":270,"context_line":"        vfat_image_tmpfile \u003d vfat_image_tmpfile_obj.name"},{"line_number":271,"context_line":"        images.create_vfat_image(vfat_image_tmpfile, parameters\u003dparams)"},{"line_number":272,"context_line":"        object_name \u003d _get_floppy_image_name(task.node)"},{"line_number":273,"context_line":"        if CONF.ilo.use_web_server_for_images:"},{"line_number":274,"context_line":"            image_url \u003d os.path.join("},{"line_number":275,"context_line":"                CONF.deploy.http_server_url, os.path.basename(object_name))"},{"line_number":276,"context_line":"            image_path \u003d os.path.join("}],"source_content_type":"text/x-python","patch_set":1,"id":"9a41bdd9_b1da9115","line":273,"in_reply_to":"9a41bdd9_3fa0fe8f","updated":"2015-07-15 23:51:05.000000000","message":"ok.","commit_id":"8da2366df4ff146ede1be4fb0dddd344c6050c9d"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"2c080e2faca8b605e5d166df451b75bf279a5d8b","unresolved":false,"context_lines":[{"line_number":272,"context_line":"        object_name \u003d _get_floppy_image_name(task.node)"},{"line_number":273,"context_line":"        if CONF.ilo.use_web_server_for_images:"},{"line_number":274,"context_line":"            image_url \u003d os.path.join("},{"line_number":275,"context_line":"                CONF.deploy.http_server_url, os.path.basename(object_name))"},{"line_number":276,"context_line":"            image_path \u003d os.path.join("},{"line_number":277,"context_line":"                CONF.deploy.http_server_root, os.path.basename(object_name))"},{"line_number":278,"context_line":"            shutil.copy(vfat_image_tmpfile, image_path)"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a41bdd9_9fdeea0f","line":275,"updated":"2015-07-14 04:39:34.000000000","message":"There is no need to call os.path.basename here because _get_floppy_image_name() returns something like \"image-%s\" which is already a proper basename.","commit_id":"8da2366df4ff146ede1be4fb0dddd344c6050c9d"},{"author":{"_account_id":11297,"name":"Nisha Agarwal","email":"agarwalnisha1980@gmail.com","username":"Nisha"},"change_message_id":"f55ccd695456fb7995d574649d5ebbfa962fa962","unresolved":false,"context_lines":[{"line_number":272,"context_line":"        object_name \u003d _get_floppy_image_name(task.node)"},{"line_number":273,"context_line":"        if CONF.ilo.use_web_server_for_images:"},{"line_number":274,"context_line":"            image_url \u003d os.path.join("},{"line_number":275,"context_line":"                CONF.deploy.http_server_url, os.path.basename(object_name))"},{"line_number":276,"context_line":"            image_path \u003d os.path.join("},{"line_number":277,"context_line":"                CONF.deploy.http_server_root, os.path.basename(object_name))"},{"line_number":278,"context_line":"            shutil.copy(vfat_image_tmpfile, image_path)"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a41bdd9_d1d5d5e4","line":275,"in_reply_to":"9a41bdd9_9fdeea0f","updated":"2015-07-15 23:51:05.000000000","message":"ok","commit_id":"8da2366df4ff146ede1be4fb0dddd344c6050c9d"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"2c080e2faca8b605e5d166df451b75bf279a5d8b","unresolved":false,"context_lines":[{"line_number":443,"context_line":"    elif service_utils.is_glance_image(boot_iso):"},{"line_number":444,"context_line":"        boot_iso_url \u003d ("},{"line_number":445,"context_line":"            images.get_temp_url_for_glance_image(task.context, boot_iso))"},{"line_number":446,"context_line":"    else:"},{"line_number":447,"context_line":"        try:"},{"line_number":448,"context_line":"            image_service.HttpImageService().validate_href(boot_iso)"},{"line_number":449,"context_line":"        except exception.ImageRefValidationFailed:"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a41bdd9_1f417aa9","line":446,"updated":"2015-07-14 04:39:34.000000000","message":"Is this really required here to check if boot_iso is proper ? It might be too late here, rather it\u0027s better if we catch these errors in validate().  But I feel it might not be related to this change and better off if it was in a separate patch.","commit_id":"8da2366df4ff146ede1be4fb0dddd344c6050c9d"},{"author":{"_account_id":11297,"name":"Nisha Agarwal","email":"agarwalnisha1980@gmail.com","username":"Nisha"},"change_message_id":"f55ccd695456fb7995d574649d5ebbfa962fa962","unresolved":false,"context_lines":[{"line_number":443,"context_line":"    elif service_utils.is_glance_image(boot_iso):"},{"line_number":444,"context_line":"        boot_iso_url \u003d ("},{"line_number":445,"context_line":"            images.get_temp_url_for_glance_image(task.context, boot_iso))"},{"line_number":446,"context_line":"    else:"},{"line_number":447,"context_line":"        try:"},{"line_number":448,"context_line":"            image_service.HttpImageService().validate_href(boot_iso)"},{"line_number":449,"context_line":"        except exception.ImageRefValidationFailed:"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a41bdd9_9118add4","line":446,"in_reply_to":"9a41bdd9_1f417aa9","updated":"2015-07-15 23:51:05.000000000","message":"We are not checking if boot_iso was proper or not here. we check where is boot_iso hosted. This is related to this patch, else the code will fail here to find boot_iso when we use only web_server.","commit_id":"8da2366df4ff146ede1be4fb0dddd344c6050c9d"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"23f3c09b915e87c6df3077e315f510114f8cce8c","unresolved":false,"context_lines":[{"line_number":443,"context_line":"    elif service_utils.is_glance_image(boot_iso):"},{"line_number":444,"context_line":"        boot_iso_url \u003d ("},{"line_number":445,"context_line":"            images.get_temp_url_for_glance_image(task.context, boot_iso))"},{"line_number":446,"context_line":"    else:"},{"line_number":447,"context_line":"        try:"},{"line_number":448,"context_line":"            image_service.HttpImageService().validate_href(boot_iso)"},{"line_number":449,"context_line":"        except exception.ImageRefValidationFailed:"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a41bdd9_d8008d36","line":446,"in_reply_to":"9a41bdd9_9118add4","updated":"2015-07-16 06:25:53.000000000","message":"I still don\u0027t get what we are doing with checking where boot_iso is hosted.  The attach_vmedia method accepts only an http url.  So why is this required here ?","commit_id":"8da2366df4ff146ede1be4fb0dddd344c6050c9d"},{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"862348fb1176e5a539643287fcf87c3b81761a5b","unresolved":false,"context_lines":[{"line_number":62,"context_line":"webserver_opts \u003d ["},{"line_number":63,"context_line":"    cfg.BoolOpt(\u0027use_web_server_for_images\u0027,"},{"line_number":64,"context_line":"                default\u003dFalse,"},{"line_number":65,"context_line":"                help\u003d\u0027Set this to True to use http web server to host \u0027"},{"line_number":66,"context_line":"                     \u0027floppy images and generated boot ISO. The http web \u0027"},{"line_number":67,"context_line":"                     \u0027server mentioned in [deploy]http_root and \u0027"},{"line_number":68,"context_line":"                     \u0027[deploy]http_url needs to be configured.\u0027"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a50d1a3_7271aea7","line":65,"updated":"2015-07-22 08:28:43.000000000","message":"This should be in \u0027_()\u0027 for localization support","commit_id":"37d59782a7d70fbd02ea0b98f37ad69874ebb21b"},{"author":{"_account_id":11297,"name":"Nisha Agarwal","email":"agarwalnisha1980@gmail.com","username":"Nisha"},"change_message_id":"9ccc32700722bbfb49d5ce8c2a103e0bf8845779","unresolved":false,"context_lines":[{"line_number":62,"context_line":"webserver_opts \u003d ["},{"line_number":63,"context_line":"    cfg.BoolOpt(\u0027use_web_server_for_images\u0027,"},{"line_number":64,"context_line":"                default\u003dFalse,"},{"line_number":65,"context_line":"                help\u003d\u0027Set this to True to use http web server to host \u0027"},{"line_number":66,"context_line":"                     \u0027floppy images and generated boot ISO. The http web \u0027"},{"line_number":67,"context_line":"                     \u0027server mentioned in [deploy]http_root and \u0027"},{"line_number":68,"context_line":"                     \u0027[deploy]http_url needs to be configured.\u0027"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a50d1a3_6d70f3dc","line":65,"in_reply_to":"3a50d1a3_7271aea7","updated":"2015-07-22 08:49:50.000000000","message":"ok","commit_id":"37d59782a7d70fbd02ea0b98f37ad69874ebb21b"},{"author":{"_account_id":5805,"name":"Chris Krelle","email":"nobodycam@gmail.com","username":"nobodycam"},"change_message_id":"d3397225d219941ea3b8410adbaf01daf7808c95","unresolved":false,"context_lines":[{"line_number":65,"context_line":"                help\u003d\u0027Set this to True to use http web server to host \u0027"},{"line_number":66,"context_line":"                     \u0027floppy images and generated boot ISO. The http web \u0027"},{"line_number":67,"context_line":"                     \u0027server mentioned in [deploy]http_root and \u0027"},{"line_number":68,"context_line":"                     \u0027[deploy]http_url needs to be configured.\u0027"},{"line_number":69,"context_line":"                     \u0027If this is set to False then the ironic will use swift \u0027"},{"line_number":70,"context_line":"                     \u0027to host the floppy images and generated boot_iso.\u0027)"},{"line_number":71,"context_line":"]"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a50d1a3_588eec79","line":68,"updated":"2015-07-22 21:09:08.000000000","message":"suggestion: \"The http web server mentioned in [deploy]http_root and [deploy]http_url needs to be configured.\" might read better as:\n\"This requires http_root and http_url to be configured in the [deploy] section of the conf file.\"","commit_id":"37d59782a7d70fbd02ea0b98f37ad69874ebb21b"},{"author":{"_account_id":11297,"name":"Nisha Agarwal","email":"agarwalnisha1980@gmail.com","username":"Nisha"},"change_message_id":"32da71b2f8b3b3ba48d16b3a975e551a0132140c","unresolved":false,"context_lines":[{"line_number":65,"context_line":"                help\u003d\u0027Set this to True to use http web server to host \u0027"},{"line_number":66,"context_line":"                     \u0027floppy images and generated boot ISO. The http web \u0027"},{"line_number":67,"context_line":"                     \u0027server mentioned in [deploy]http_root and \u0027"},{"line_number":68,"context_line":"                     \u0027[deploy]http_url needs to be configured.\u0027"},{"line_number":69,"context_line":"                     \u0027If this is set to False then the ironic will use swift \u0027"},{"line_number":70,"context_line":"                     \u0027to host the floppy images and generated boot_iso.\u0027)"},{"line_number":71,"context_line":"]"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a50d1a3_15449bb4","line":68,"in_reply_to":"3a50d1a3_588eec79","updated":"2015-07-23 04:57:35.000000000","message":"Ok","commit_id":"37d59782a7d70fbd02ea0b98f37ad69874ebb21b"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"e2adf676a590c705276220eced53154e29efa0d2","unresolved":false,"context_lines":[{"line_number":108,"context_line":"    (v, k) for (k, v) in BOOT_MODE_GENERIC_TO_ILO.items())"},{"line_number":109,"context_line":""},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"def validate_image_href_for_http_web_server(image_href):"},{"line_number":112,"context_line":"    \"\"\"Gets the host for the image href"},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"    This method validates the given image href link"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a50d1a3_dfc72d94","line":111,"updated":"2015-07-23 07:23:31.000000000","message":"As per my comment on https://review.openstack.org/#/c/198656/2/ironic/drivers/modules/ilo/deploy.py L149, this method is not required.","commit_id":"37d59782a7d70fbd02ea0b98f37ad69874ebb21b"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"e2adf676a590c705276220eced53154e29efa0d2","unresolved":false,"context_lines":[{"line_number":109,"context_line":""},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"def validate_image_href_for_http_web_server(image_href):"},{"line_number":112,"context_line":"    \"\"\"Gets the host for the image href"},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"    This method validates the given image href link"},{"line_number":115,"context_line":"    against the possible hosts of the image i.e. glance"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a50d1a3_5c7c8beb","line":112,"updated":"2015-07-23 07:23:31.000000000","message":"Description of this function seems wrong here.","commit_id":"37d59782a7d70fbd02ea0b98f37ad69874ebb21b"},{"author":{"_account_id":5805,"name":"Chris Krelle","email":"nobodycam@gmail.com","username":"nobodycam"},"change_message_id":"d3397225d219941ea3b8410adbaf01daf7808c95","unresolved":false,"context_lines":[{"line_number":116,"context_line":"    or http web server."},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"    :param image_href: The image url"},{"line_number":119,"context_line":"    :raises ImageRefValidationFailed, if the the image is not on"},{"line_number":120,"context_line":"        glance and neither on http web server."},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"    \"\"\""}],"source_content_type":"text/x-python","patch_set":2,"id":"3a50d1a3_738bc968","line":119,"updated":"2015-07-22 21:09:08.000000000","message":"nit: the the","commit_id":"37d59782a7d70fbd02ea0b98f37ad69874ebb21b"},{"author":{"_account_id":11297,"name":"Nisha Agarwal","email":"agarwalnisha1980@gmail.com","username":"Nisha"},"change_message_id":"32da71b2f8b3b3ba48d16b3a975e551a0132140c","unresolved":false,"context_lines":[{"line_number":116,"context_line":"    or http web server."},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"    :param image_href: The image url"},{"line_number":119,"context_line":"    :raises ImageRefValidationFailed, if the the image is not on"},{"line_number":120,"context_line":"        glance and neither on http web server."},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"    \"\"\""}],"source_content_type":"text/x-python","patch_set":2,"id":"3a50d1a3_55254306","line":119,"in_reply_to":"3a50d1a3_738bc968","updated":"2015-07-23 04:57:35.000000000","message":":)","commit_id":"37d59782a7d70fbd02ea0b98f37ad69874ebb21b"},{"author":{"_account_id":5805,"name":"Chris Krelle","email":"nobodycam@gmail.com","username":"nobodycam"},"change_message_id":"d3397225d219941ea3b8410adbaf01daf7808c95","unresolved":false,"context_lines":[{"line_number":120,"context_line":"        glance and neither on http web server."},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"    \"\"\""},{"line_number":123,"context_line":"    if not service_utils.is_glance_image(image_href):"},{"line_number":124,"context_line":"        try:"},{"line_number":125,"context_line":"            image_service.HttpImageService().validate_href(image_href)"},{"line_number":126,"context_line":"        except exception.ImageRefValidationFailed:"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a50d1a3_f3a7d908","line":123,"updated":"2015-07-22 21:09:08.000000000","message":"if the image is a glance image then there is no real validation. validate_href below will actually poke the url while is_glance_image looks only at the protocol and that it looks like a uuid.","commit_id":"37d59782a7d70fbd02ea0b98f37ad69874ebb21b"},{"author":{"_account_id":11297,"name":"Nisha Agarwal","email":"agarwalnisha1980@gmail.com","username":"Nisha"},"change_message_id":"32da71b2f8b3b3ba48d16b3a975e551a0132140c","unresolved":false,"context_lines":[{"line_number":120,"context_line":"        glance and neither on http web server."},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"    \"\"\""},{"line_number":123,"context_line":"    if not service_utils.is_glance_image(image_href):"},{"line_number":124,"context_line":"        try:"},{"line_number":125,"context_line":"            image_service.HttpImageService().validate_href(image_href)"},{"line_number":126,"context_line":"        except exception.ImageRefValidationFailed:"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a50d1a3_b5636741","line":123,"in_reply_to":"3a50d1a3_f3a7d908","updated":"2015-07-23 04:57:35.000000000","message":"Ok.","commit_id":"37d59782a7d70fbd02ea0b98f37ad69874ebb21b"},{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"862348fb1176e5a539643287fcf87c3b81761a5b","unresolved":false,"context_lines":[{"line_number":127,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":128,"context_line":"                LOG.error(_LE(\"Virtual media deploy accepts only Glance \""},{"line_number":129,"context_line":"                              \"images or HTTP(S) URLs. Either %s \""},{"line_number":130,"context_line":"                              \"is not a valid HTTP(S) URL or is \""},{"line_number":131,"context_line":"                              \"not reachable.\"), image_href)"},{"line_number":132,"context_line":""},{"line_number":133,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"3a50d1a3_92df9a0c","line":130,"updated":"2015-07-22 08:28:43.000000000","message":"Better to drop \u0027HTTP(s)\" to make message generic for glance and http URLs.","commit_id":"37d59782a7d70fbd02ea0b98f37ad69874ebb21b"},{"author":{"_account_id":11297,"name":"Nisha Agarwal","email":"agarwalnisha1980@gmail.com","username":"Nisha"},"change_message_id":"9ccc32700722bbfb49d5ce8c2a103e0bf8845779","unresolved":false,"context_lines":[{"line_number":127,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":128,"context_line":"                LOG.error(_LE(\"Virtual media deploy accepts only Glance \""},{"line_number":129,"context_line":"                              \"images or HTTP(S) URLs. Either %s \""},{"line_number":130,"context_line":"                              \"is not a valid HTTP(S) URL or is \""},{"line_number":131,"context_line":"                              \"not reachable.\"), image_href)"},{"line_number":132,"context_line":""},{"line_number":133,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"3a50d1a3_ad6a7bec","line":130,"in_reply_to":"3a50d1a3_92df9a0c","updated":"2015-07-22 08:49:50.000000000","message":"ok","commit_id":"37d59782a7d70fbd02ea0b98f37ad69874ebb21b"},{"author":{"_account_id":5805,"name":"Chris Krelle","email":"nobodycam@gmail.com","username":"nobodycam"},"change_message_id":"d3397225d219941ea3b8410adbaf01daf7808c95","unresolved":false,"context_lines":[{"line_number":132,"context_line":""},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"def copy_image_to_web_server(image):"},{"line_number":135,"context_line":"    \"\"\"Copies the given image at the http web server."},{"line_number":136,"context_line":""},{"line_number":137,"context_line":"    This method copies the given image to the http server location."},{"line_number":138,"context_line":"    It enables read-write access to the image else the deploy fails"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a50d1a3_d3c73d96","line":135,"updated":"2015-07-22 21:09:08.000000000","message":"nit:\ns/at/to/","commit_id":"37d59782a7d70fbd02ea0b98f37ad69874ebb21b"},{"author":{"_account_id":11297,"name":"Nisha Agarwal","email":"agarwalnisha1980@gmail.com","username":"Nisha"},"change_message_id":"32da71b2f8b3b3ba48d16b3a975e551a0132140c","unresolved":false,"context_lines":[{"line_number":132,"context_line":""},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"def copy_image_to_web_server(image):"},{"line_number":135,"context_line":"    \"\"\"Copies the given image at the http web server."},{"line_number":136,"context_line":""},{"line_number":137,"context_line":"    This method copies the given image to the http server location."},{"line_number":138,"context_line":"    It enables read-write access to the image else the deploy fails"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a50d1a3_95d3cbd4","line":135,"in_reply_to":"3a50d1a3_d3c73d96","updated":"2015-07-23 04:57:35.000000000","message":"ok","commit_id":"37d59782a7d70fbd02ea0b98f37ad69874ebb21b"},{"author":{"_account_id":5805,"name":"Chris Krelle","email":"nobodycam@gmail.com","username":"nobodycam"},"change_message_id":"d3397225d219941ea3b8410adbaf01daf7808c95","unresolved":false,"context_lines":[{"line_number":134,"context_line":"def copy_image_to_web_server(image):"},{"line_number":135,"context_line":"    \"\"\"Copies the given image at the http web server."},{"line_number":136,"context_line":""},{"line_number":137,"context_line":"    This method copies the given image to the http server location."},{"line_number":138,"context_line":"    It enables read-write access to the image else the deploy fails"},{"line_number":139,"context_line":"    as the image file at iamge_url is inaccessible."},{"line_number":140,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"3a50d1a3_5301edad","line":137,"updated":"2015-07-22 21:09:08.000000000","message":"the http server location -\u003e http_root location.","commit_id":"37d59782a7d70fbd02ea0b98f37ad69874ebb21b"},{"author":{"_account_id":11297,"name":"Nisha Agarwal","email":"agarwalnisha1980@gmail.com","username":"Nisha"},"change_message_id":"32da71b2f8b3b3ba48d16b3a975e551a0132140c","unresolved":false,"context_lines":[{"line_number":134,"context_line":"def copy_image_to_web_server(image):"},{"line_number":135,"context_line":"    \"\"\"Copies the given image at the http web server."},{"line_number":136,"context_line":""},{"line_number":137,"context_line":"    This method copies the given image to the http server location."},{"line_number":138,"context_line":"    It enables read-write access to the image else the deploy fails"},{"line_number":139,"context_line":"    as the image file at iamge_url is inaccessible."},{"line_number":140,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"3a50d1a3_b5f1276d","line":137,"in_reply_to":"3a50d1a3_5301edad","updated":"2015-07-23 04:57:35.000000000","message":"ok","commit_id":"37d59782a7d70fbd02ea0b98f37ad69874ebb21b"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"e2adf676a590c705276220eced53154e29efa0d2","unresolved":false,"context_lines":[{"line_number":140,"context_line":""},{"line_number":141,"context_line":"    :param image: The image file path which needs to be copied to"},{"line_number":142,"context_line":"                  the web server."},{"line_number":143,"context_line":"    :returns image url after the image is uploaded."},{"line_number":144,"context_line":""},{"line_number":145,"context_line":"    \"\"\""},{"line_number":146,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"3a50d1a3_ea3fc9b1","line":143,"updated":"2015-07-23 07:23:31.000000000","message":"nit: missing colon after returns","commit_id":"37d59782a7d70fbd02ea0b98f37ad69874ebb21b"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"e2adf676a590c705276220eced53154e29efa0d2","unresolved":false,"context_lines":[{"line_number":149,"context_line":"    image_path \u003d os.path.join(CONF.deploy.http_root,"},{"line_number":150,"context_line":"                              os.path.basename(image))"},{"line_number":151,"context_line":"    shutil.copyfile(image, image_path)"},{"line_number":152,"context_line":"    os.chmod(image_path, 0o666)"},{"line_number":153,"context_line":"    return image_url"},{"line_number":154,"context_line":""},{"line_number":155,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"3a50d1a3_ff70e973","line":152,"updated":"2015-07-23 07:23:31.000000000","message":"I think we require just 0o644 instead of 666 to make sure noone else can write to that file.","commit_id":"37d59782a7d70fbd02ea0b98f37ad69874ebb21b"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"6c39f4c47e1e87623abfc531283407785e81a2e3","unresolved":false,"context_lines":[{"line_number":149,"context_line":"    image_path \u003d os.path.join(CONF.deploy.http_root,"},{"line_number":150,"context_line":"                              os.path.basename(image))"},{"line_number":151,"context_line":"    shutil.copyfile(image, image_path)"},{"line_number":152,"context_line":"    os.chmod(image_path, 0o666)"},{"line_number":153,"context_line":"    return image_url"},{"line_number":154,"context_line":""},{"line_number":155,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"3a50d1a3_fd578e55","line":152,"in_reply_to":"3a50d1a3_cbb3ef96","updated":"2015-07-23 08:46:29.000000000","message":"644 is better than 666 because it denies write permissions for other users.","commit_id":"37d59782a7d70fbd02ea0b98f37ad69874ebb21b"},{"author":{"_account_id":11297,"name":"Nisha Agarwal","email":"agarwalnisha1980@gmail.com","username":"Nisha"},"change_message_id":"dbda6e0b1b525e5bfbca26d492a3c2744e23cea5","unresolved":false,"context_lines":[{"line_number":149,"context_line":"    image_path \u003d os.path.join(CONF.deploy.http_root,"},{"line_number":150,"context_line":"                              os.path.basename(image))"},{"line_number":151,"context_line":"    shutil.copyfile(image, image_path)"},{"line_number":152,"context_line":"    os.chmod(image_path, 0o666)"},{"line_number":153,"context_line":"    return image_url"},{"line_number":154,"context_line":""},{"line_number":155,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"3a50d1a3_cbb3ef96","line":152,"in_reply_to":"3a50d1a3_ff70e973","updated":"2015-07-23 08:36:25.000000000","message":"actually it failed with 600 permissions. Ok will try with 644, if that works.","commit_id":"37d59782a7d70fbd02ea0b98f37ad69874ebb21b"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"e2adf676a590c705276220eced53154e29efa0d2","unresolved":false,"context_lines":[{"line_number":480,"context_line":"            images.get_temp_url_for_glance_image(task.context, boot_iso))"},{"line_number":481,"context_line":"    else:"},{"line_number":482,"context_line":"        try:"},{"line_number":483,"context_line":"            image_service.HttpImageService().validate_href(boot_iso)"},{"line_number":484,"context_line":"        except exception.ImageRefValidationFailed:"},{"line_number":485,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":486,"context_line":"                LOG.error(_LE(\"Virtual media deploy accepts only Glance \""}],"source_content_type":"text/x-python","patch_set":2,"id":"3a50d1a3_ea3829d5","line":483,"updated":"2015-07-23 07:23:31.000000000","message":"(As discussed) We don\u0027t need to do this here in this patch for 2 reasons:\n* iLO drivers doesn\u0027t support anything apart from glance/http locations for boot_iso and a validation is required for that even today. So this is not related to this patch and better off if it was in a separate patch.\n* An ideal place to do this might be in validate() of deploy driver rather than here (which fails the deploy after starting it).\n\nSo, better if we filed a bug and fixed it in another patch.","commit_id":"37d59782a7d70fbd02ea0b98f37ad69874ebb21b"},{"author":{"_account_id":11297,"name":"Nisha Agarwal","email":"agarwalnisha1980@gmail.com","username":"Nisha"},"change_message_id":"dbda6e0b1b525e5bfbca26d492a3c2744e23cea5","unresolved":false,"context_lines":[{"line_number":480,"context_line":"            images.get_temp_url_for_glance_image(task.context, boot_iso))"},{"line_number":481,"context_line":"    else:"},{"line_number":482,"context_line":"        try:"},{"line_number":483,"context_line":"            image_service.HttpImageService().validate_href(boot_iso)"},{"line_number":484,"context_line":"        except exception.ImageRefValidationFailed:"},{"line_number":485,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":486,"context_line":"                LOG.error(_LE(\"Virtual media deploy accepts only Glance \""}],"source_content_type":"text/x-python","patch_set":2,"id":"3a50d1a3_0b43176d","line":483,"in_reply_to":"3a50d1a3_ea3829d5","updated":"2015-07-23 08:36:25.000000000","message":"Ok.","commit_id":"37d59782a7d70fbd02ea0b98f37ad69874ebb21b"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"880959c15840defbd360d9de5d2443571b342be3","unresolved":false,"context_lines":[{"line_number":109,"context_line":"    (v, k) for (k, v) in BOOT_MODE_GENERIC_TO_ILO.items())"},{"line_number":110,"context_line":""},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"def copy_image_to_web_server(image):"},{"line_number":113,"context_line":"    \"\"\"Copies the given image to the http web server."},{"line_number":114,"context_line":""},{"line_number":115,"context_line":"    This method copies the given image to the http_root location."}],"source_content_type":"text/x-python","patch_set":3,"id":"3a50d1a3_35cd1766","line":112,"updated":"2015-07-29 05:09:48.000000000","message":"Can we have a test case for this method as this is a public method.","commit_id":"017078a44dd5602b8186870fafe719a088655cc8"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"880959c15840defbd360d9de5d2443571b342be3","unresolved":false,"context_lines":[{"line_number":117,"context_line":"    as the image file at iamge_url is inaccessible."},{"line_number":118,"context_line":""},{"line_number":119,"context_line":"    :param image: The image file path which needs to be copied to"},{"line_number":120,"context_line":"                  the web server."},{"line_number":121,"context_line":"    :returns image url after the image is uploaded."},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"    \"\"\""}],"source_content_type":"text/x-python","patch_set":3,"id":"3a50d1a3_154fbb34","line":120,"updated":"2015-07-29 05:09:48.000000000","message":"nit: copied to the web server root.","commit_id":"017078a44dd5602b8186870fafe719a088655cc8"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"880959c15840defbd360d9de5d2443571b342be3","unresolved":false,"context_lines":[{"line_number":289,"context_line":"        images.create_vfat_image(vfat_image_tmpfile, parameters\u003dparams)"},{"line_number":290,"context_line":"        object_name \u003d _get_floppy_image_name(task.node)"},{"line_number":291,"context_line":"        if CONF.ilo.use_web_server_for_images:"},{"line_number":292,"context_line":"            image_url \u003d copy_image_to_web_server(object_name)"},{"line_number":293,"context_line":"            return image_url"},{"line_number":294,"context_line":"        else:"},{"line_number":295,"context_line":"            container \u003d CONF.ilo.swift_ilo_container"}],"source_content_type":"text/x-python","patch_set":3,"id":"3a50d1a3_f501efaf","line":292,"updated":"2015-07-29 05:09:48.000000000","message":"Shouldn\u0027t this be vfat_image_tmpfile instead of object_name ?  object_name is just a filename and no file actually exists there.  \n\nThat said I think we should move the vfat_image_tmpfile inside the http_root with the file name object_name.  It makes it easy to identify for an admin.  So, I think copy_image_to_web_server() should accept two arguments, the source file and the target file name.","commit_id":"017078a44dd5602b8186870fafe719a088655cc8"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"880959c15840defbd360d9de5d2443571b342be3","unresolved":false,"context_lines":[{"line_number":456,"context_line":"    elif service_utils.is_glance_image(boot_iso):"},{"line_number":457,"context_line":"        boot_iso_url \u003d ("},{"line_number":458,"context_line":"            images.get_temp_url_for_glance_image(task.context, boot_iso))"},{"line_number":459,"context_line":"    else:"},{"line_number":460,"context_line":"        try:"},{"line_number":461,"context_line":"            image_service.HttpImageService().validate_href(boot_iso)"},{"line_number":462,"context_line":"        except exception.ImageRefValidationFailed:"}],"source_content_type":"text/x-python","patch_set":3,"id":"3a50d1a3_9542eb0d","line":459,"updated":"2015-07-29 05:09:48.000000000","message":"I think there was a comment on the previous patch set and we agreed to remove this (and file a separate bug if it deserves to be fixed).","commit_id":"017078a44dd5602b8186870fafe719a088655cc8"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"357fcd9da412dbfb431798806f4f887540fca631","unresolved":false,"context_lines":[{"line_number":63,"context_line":"                help\u003d_(\u0027Set this to True to use http web server to host \u0027"},{"line_number":64,"context_line":"                       \u0027floppy images and generated boot ISO. This \u0027"},{"line_number":65,"context_line":"                       \u0027requires http_root and http_url to be configured \u0027"},{"line_number":66,"context_line":"                       \u0027in the [deploy] section of the url. If this is \u0027"},{"line_number":67,"context_line":"                       \u0027set to False then the ironic will use swift \u0027"},{"line_number":68,"context_line":"                       \u0027to host the floppy images and generated \u0027"},{"line_number":69,"context_line":"                       \u0027boot_iso.\u0027))"}],"source_content_type":"text/x-python","patch_set":5,"id":"1a4dcd0f_a3bb99e4","line":66,"updated":"2015-08-05 06:11:10.000000000","message":"[deploy] section of the CONF file.","commit_id":"cb4dbc91a4c2fa8ad3292fe2ab5c52863ef04fd6"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"357fcd9da412dbfb431798806f4f887540fca631","unresolved":false,"context_lines":[{"line_number":114,"context_line":"    It enables read-write access to the image else the deploy fails"},{"line_number":115,"context_line":"    as the image file at iamge_url is inaccessible."},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"    :param image: The image file path which needs to be copied to"},{"line_number":118,"context_line":"                  the web server."},{"line_number":119,"context_line":"    :returns image url after the image is uploaded."},{"line_number":120,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"1a4dcd0f_038dad7a","line":117,"updated":"2015-08-05 06:11:10.000000000","message":"Needs to be updated","commit_id":"cb4dbc91a4c2fa8ad3292fe2ab5c52863ef04fd6"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"357fcd9da412dbfb431798806f4f887540fca631","unresolved":false,"context_lines":[{"line_number":115,"context_line":"    as the image file at iamge_url is inaccessible."},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"    :param image: The image file path which needs to be copied to"},{"line_number":118,"context_line":"                  the web server."},{"line_number":119,"context_line":"    :returns image url after the image is uploaded."},{"line_number":120,"context_line":""},{"line_number":121,"context_line":"    \"\"\""}],"source_content_type":"text/x-python","patch_set":5,"id":"1a4dcd0f_63f4b1f1","line":118,"updated":"2015-08-05 06:11:10.000000000","message":"s/web server/web server root.","commit_id":"cb4dbc91a4c2fa8ad3292fe2ab5c52863ef04fd6"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"32cfe2f5dcc4b1a5104749347acf230ba02c0e53","unresolved":false,"context_lines":[{"line_number":63,"context_line":"                help\u003d_(\u0027Set this to True to use http web server to host \u0027"},{"line_number":64,"context_line":"                       \u0027floppy images and generated boot ISO. This \u0027"},{"line_number":65,"context_line":"                       \u0027requires http_root and http_url to be configured \u0027"},{"line_number":66,"context_line":"                       \u0027in the [deploy] section of the url. If this is \u0027"},{"line_number":67,"context_line":"                       \u0027set to False then the ironic will use swift \u0027"},{"line_number":68,"context_line":"                       \u0027to host the floppy images and generated \u0027"},{"line_number":69,"context_line":"                       \u0027boot_iso.\u0027))"}],"source_content_type":"text/x-python","patch_set":6,"id":"1a4dcd0f_148de17a","line":66,"updated":"2015-08-05 07:35:05.000000000","message":"[deploy] section of the config file.","commit_id":"82f0afb6da54137a14f9201612a3b8522e7f68cb"},{"author":{"_account_id":11297,"name":"Nisha Agarwal","email":"agarwalnisha1980@gmail.com","username":"Nisha"},"change_message_id":"27c5d3b4048763b1da2924023f80ac15871b0a0a","unresolved":false,"context_lines":[{"line_number":63,"context_line":"                help\u003d_(\u0027Set this to True to use http web server to host \u0027"},{"line_number":64,"context_line":"                       \u0027floppy images and generated boot ISO. This \u0027"},{"line_number":65,"context_line":"                       \u0027requires http_root and http_url to be configured \u0027"},{"line_number":66,"context_line":"                       \u0027in the [deploy] section of the url. If this is \u0027"},{"line_number":67,"context_line":"                       \u0027set to False then the ironic will use swift \u0027"},{"line_number":68,"context_line":"                       \u0027to host the floppy images and generated \u0027"},{"line_number":69,"context_line":"                       \u0027boot_iso.\u0027))"}],"source_content_type":"text/x-python","patch_set":6,"id":"1a4dcd0f_d8eec3b3","line":66,"in_reply_to":"1a4dcd0f_148de17a","updated":"2015-08-05 10:25:20.000000000","message":"ok","commit_id":"82f0afb6da54137a14f9201612a3b8522e7f68cb"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"32cfe2f5dcc4b1a5104749347acf230ba02c0e53","unresolved":false,"context_lines":[{"line_number":107,"context_line":"    (v, k) for (k, v) in BOOT_MODE_GENERIC_TO_ILO.items())"},{"line_number":108,"context_line":""},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"def copy_image_to_web_server(source, destination):"},{"line_number":111,"context_line":"    \"\"\"Copies the given image to the http web server."},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"    This method copies the given image to the http_root location."}],"source_content_type":"text/x-python","patch_set":6,"id":"1a4dcd0f_b4d18d59","line":110,"updated":"2015-08-05 07:35:05.000000000","message":"better if we rename them to source_file_path and destination_file_name as one is absolute path and other is just filename","commit_id":"82f0afb6da54137a14f9201612a3b8522e7f68cb"},{"author":{"_account_id":11297,"name":"Nisha Agarwal","email":"agarwalnisha1980@gmail.com","username":"Nisha"},"change_message_id":"27c5d3b4048763b1da2924023f80ac15871b0a0a","unresolved":false,"context_lines":[{"line_number":107,"context_line":"    (v, k) for (k, v) in BOOT_MODE_GENERIC_TO_ILO.items())"},{"line_number":108,"context_line":""},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"def copy_image_to_web_server(source, destination):"},{"line_number":111,"context_line":"    \"\"\"Copies the given image to the http web server."},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"    This method copies the given image to the http_root location."}],"source_content_type":"text/x-python","patch_set":6,"id":"1a4dcd0f_f8405fa7","line":110,"in_reply_to":"1a4dcd0f_b4d18d59","updated":"2015-08-05 10:25:20.000000000","message":"ok","commit_id":"82f0afb6da54137a14f9201612a3b8522e7f68cb"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"32cfe2f5dcc4b1a5104749347acf230ba02c0e53","unresolved":false,"context_lines":[{"line_number":114,"context_line":"    It enables read-write access to the image else the deploy fails"},{"line_number":115,"context_line":"    as the image file at iamge_url is inaccessible."},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"    :param image: The image file path which needs to be copied to"},{"line_number":118,"context_line":"                  the web server."},{"line_number":119,"context_line":"    :returns image url after the image is uploaded."},{"line_number":120,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"1a4dcd0f_34dfbd6a","line":117,"updated":"2015-08-05 07:35:05.000000000","message":"needs to be updated.","commit_id":"82f0afb6da54137a14f9201612a3b8522e7f68cb"},{"author":{"_account_id":11297,"name":"Nisha Agarwal","email":"agarwalnisha1980@gmail.com","username":"Nisha"},"change_message_id":"27c5d3b4048763b1da2924023f80ac15871b0a0a","unresolved":false,"context_lines":[{"line_number":114,"context_line":"    It enables read-write access to the image else the deploy fails"},{"line_number":115,"context_line":"    as the image file at iamge_url is inaccessible."},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"    :param image: The image file path which needs to be copied to"},{"line_number":118,"context_line":"                  the web server."},{"line_number":119,"context_line":"    :returns image url after the image is uploaded."},{"line_number":120,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"1a4dcd0f_b84ad7c3","line":117,"in_reply_to":"1a4dcd0f_34dfbd6a","updated":"2015-08-05 10:25:20.000000000","message":"done","commit_id":"82f0afb6da54137a14f9201612a3b8522e7f68cb"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"32cfe2f5dcc4b1a5104749347acf230ba02c0e53","unresolved":false,"context_lines":[{"line_number":115,"context_line":"    as the image file at iamge_url is inaccessible."},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"    :param image: The image file path which needs to be copied to"},{"line_number":118,"context_line":"                  the web server."},{"line_number":119,"context_line":"    :returns image url after the image is uploaded."},{"line_number":120,"context_line":""},{"line_number":121,"context_line":"    \"\"\""}],"source_content_type":"text/x-python","patch_set":6,"id":"1a4dcd0f_14bba10f","line":118,"updated":"2015-08-05 07:35:05.000000000","message":"s/web server/web server root","commit_id":"82f0afb6da54137a14f9201612a3b8522e7f68cb"},{"author":{"_account_id":11297,"name":"Nisha Agarwal","email":"agarwalnisha1980@gmail.com","username":"Nisha"},"change_message_id":"27c5d3b4048763b1da2924023f80ac15871b0a0a","unresolved":false,"context_lines":[{"line_number":115,"context_line":"    as the image file at iamge_url is inaccessible."},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"    :param image: The image file path which needs to be copied to"},{"line_number":118,"context_line":"                  the web server."},{"line_number":119,"context_line":"    :returns image url after the image is uploaded."},{"line_number":120,"context_line":""},{"line_number":121,"context_line":"    \"\"\""}],"source_content_type":"text/x-python","patch_set":6,"id":"1a4dcd0f_7813efb8","line":118,"in_reply_to":"1a4dcd0f_14bba10f","updated":"2015-08-05 10:25:20.000000000","message":"ok","commit_id":"82f0afb6da54137a14f9201612a3b8522e7f68cb"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"986011c3e95393386d8075d2ee721cb0ad0eda06","unresolved":false,"context_lines":[{"line_number":107,"context_line":"    (v, k) for (k, v) in BOOT_MODE_GENERIC_TO_ILO.items())"},{"line_number":108,"context_line":""},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"def copy_image_to_web_server(source_file_path, destination_file_path):"},{"line_number":111,"context_line":"    \"\"\"Copies the given image to the http web server."},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"    This method copies the given image to the http_root location."}],"source_content_type":"text/x-python","patch_set":7,"id":"1a4dcd0f_5e24dbad","line":110,"updated":"2015-08-05 10:47:20.000000000","message":"Keeping both as source_file_path, destination_file_path is confusing.  Please keep it as source_file_path and  destination_file_name.","commit_id":"4e2527022a06000f0d0b76c0d7eb096f228795a2"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"f1e39ea7fdccd6f1f689bc0203c9cd935805ae0f","unresolved":false,"context_lines":[{"line_number":57,"context_line":"                      \u0027auto-expire.\u0027)),"},{"line_number":58,"context_line":"]"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"webserver_opts \u003d ["},{"line_number":61,"context_line":"    cfg.BoolOpt(\u0027use_web_server_for_images\u0027,"},{"line_number":62,"context_line":"                default\u003dFalse,"},{"line_number":63,"context_line":"                help\u003d_(\u0027Set this to True to use http web server to host \u0027"}],"source_content_type":"text/x-python","patch_set":9,"id":"1a4dcd0f_7ed5bb40","line":60,"updated":"2015-08-12 21:57:02.000000000","message":"wondering why you put this config here instead of above in opts.","commit_id":"3421b6e55af07c2d185d356187f20d9d459462f1"},{"author":{"_account_id":11297,"name":"Nisha Agarwal","email":"agarwalnisha1980@gmail.com","username":"Nisha"},"change_message_id":"df14160f7ef14169efa199aa81bd412fbaadf6b3","unresolved":false,"context_lines":[{"line_number":57,"context_line":"                      \u0027auto-expire.\u0027)),"},{"line_number":58,"context_line":"]"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"webserver_opts \u003d ["},{"line_number":61,"context_line":"    cfg.BoolOpt(\u0027use_web_server_for_images\u0027,"},{"line_number":62,"context_line":"                default\u003dFalse,"},{"line_number":63,"context_line":"                help\u003d_(\u0027Set this to True to use http web server to host \u0027"}],"source_content_type":"text/x-python","patch_set":9,"id":"1a4dcd0f_79b8de75","line":60,"in_reply_to":"1a4dcd0f_7ed5bb40","updated":"2015-08-18 03:15:29.000000000","message":"will merge it with existing.","commit_id":"3421b6e55af07c2d185d356187f20d9d459462f1"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"f1e39ea7fdccd6f1f689bc0203c9cd935805ae0f","unresolved":false,"context_lines":[{"line_number":64,"context_line":"                       \u0027floppy images and generated boot ISO. This \u0027"},{"line_number":65,"context_line":"                       \u0027requires http_root and http_url to be configured \u0027"},{"line_number":66,"context_line":"                       \u0027in the [deploy] section of the config file. If this \u0027"},{"line_number":67,"context_line":"                       \u0027is set to False then the ironic will use swift \u0027"},{"line_number":68,"context_line":"                       \u0027to host the floppy images and generated \u0027"},{"line_number":69,"context_line":"                       \u0027boot_iso.\u0027))"},{"line_number":70,"context_line":"]"}],"source_content_type":"text/x-python","patch_set":9,"id":"1a4dcd0f_9ebc4707","line":67,"updated":"2015-08-12 21:57:02.000000000","message":"s/the ironic will use/use/","commit_id":"3421b6e55af07c2d185d356187f20d9d459462f1"},{"author":{"_account_id":11297,"name":"Nisha Agarwal","email":"agarwalnisha1980@gmail.com","username":"Nisha"},"change_message_id":"df14160f7ef14169efa199aa81bd412fbaadf6b3","unresolved":false,"context_lines":[{"line_number":64,"context_line":"                       \u0027floppy images and generated boot ISO. This \u0027"},{"line_number":65,"context_line":"                       \u0027requires http_root and http_url to be configured \u0027"},{"line_number":66,"context_line":"                       \u0027in the [deploy] section of the config file. If this \u0027"},{"line_number":67,"context_line":"                       \u0027is set to False then the ironic will use swift \u0027"},{"line_number":68,"context_line":"                       \u0027to host the floppy images and generated \u0027"},{"line_number":69,"context_line":"                       \u0027boot_iso.\u0027))"},{"line_number":70,"context_line":"]"}],"source_content_type":"text/x-python","patch_set":9,"id":"1a4dcd0f_59b5e27b","line":67,"in_reply_to":"1a4dcd0f_9ebc4707","updated":"2015-08-18 03:15:29.000000000","message":"ok","commit_id":"3421b6e55af07c2d185d356187f20d9d459462f1"},{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"c4ac5cecd7678ce9d9b54d768b52bf45fd1046a0","unresolved":false,"context_lines":[{"line_number":72,"context_line":"CONF \u003d cfg.CONF"},{"line_number":73,"context_line":"CONF.register_opts(opts, group\u003d\u0027ilo\u0027)"},{"line_number":74,"context_line":"CONF.register_opts(webserver_opts, group\u003d\u0027ilo\u0027)"},{"line_number":75,"context_line":"CONF.import_opt(\u0027http_url\u0027, \u0027ironic.drivers.modules.deploy_utils\u0027,"},{"line_number":76,"context_line":"                group\u003d\u0027deploy\u0027)"},{"line_number":77,"context_line":"CONF.import_opt(\u0027http_root\u0027, \u0027ironic.drivers.modules.deploy_utils\u0027,"},{"line_number":78,"context_line":"                group\u003d\u0027deploy\u0027)"}],"source_content_type":"text/x-python","patch_set":9,"id":"1a4dcd0f_9a98736c","line":75,"updated":"2015-08-10 09:34:27.000000000","message":"This module is imported here:\n\n from ironic.drivers.modules import deploy_utils\n\nso I think there is no need to do import_opt","commit_id":"3421b6e55af07c2d185d356187f20d9d459462f1"},{"author":{"_account_id":14923,"name":"Sinval Vieira Mendes Neto","email":"sinvalneto01@gmail.com","username":"sinvalvieira"},"change_message_id":"6d2ed91278ceed6b1ac8c2f3255a72045a39406c","unresolved":false,"context_lines":[{"line_number":72,"context_line":"CONF \u003d cfg.CONF"},{"line_number":73,"context_line":"CONF.register_opts(opts, group\u003d\u0027ilo\u0027)"},{"line_number":74,"context_line":"CONF.register_opts(webserver_opts, group\u003d\u0027ilo\u0027)"},{"line_number":75,"context_line":"CONF.import_opt(\u0027http_url\u0027, \u0027ironic.drivers.modules.deploy_utils\u0027,"},{"line_number":76,"context_line":"                group\u003d\u0027deploy\u0027)"},{"line_number":77,"context_line":"CONF.import_opt(\u0027http_root\u0027, \u0027ironic.drivers.modules.deploy_utils\u0027,"},{"line_number":78,"context_line":"                group\u003d\u0027deploy\u0027)"}],"source_content_type":"text/x-python","patch_set":9,"id":"1a4dcd0f_41ec76f3","line":75,"in_reply_to":"1a4dcd0f_9a98736c","updated":"2015-08-13 16:43:32.000000000","message":"+1","commit_id":"3421b6e55af07c2d185d356187f20d9d459462f1"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"f1e39ea7fdccd6f1f689bc0203c9cd935805ae0f","unresolved":false,"context_lines":[{"line_number":72,"context_line":"CONF \u003d cfg.CONF"},{"line_number":73,"context_line":"CONF.register_opts(opts, group\u003d\u0027ilo\u0027)"},{"line_number":74,"context_line":"CONF.register_opts(webserver_opts, group\u003d\u0027ilo\u0027)"},{"line_number":75,"context_line":"CONF.import_opt(\u0027http_url\u0027, \u0027ironic.drivers.modules.deploy_utils\u0027,"},{"line_number":76,"context_line":"                group\u003d\u0027deploy\u0027)"},{"line_number":77,"context_line":"CONF.import_opt(\u0027http_root\u0027, \u0027ironic.drivers.modules.deploy_utils\u0027,"},{"line_number":78,"context_line":"                group\u003d\u0027deploy\u0027)"}],"source_content_type":"text/x-python","patch_set":9,"id":"1a4dcd0f_feac6bee","line":75,"in_reply_to":"1a4dcd0f_9a98736c","updated":"2015-08-12 21:57:02.000000000","message":"there may not be a need, but it is useful to be explicit. (Basically, I\u0027m fine either way. I don\u0027t know if there is a \u0027best\u0027 practise on this.)","commit_id":"3421b6e55af07c2d185d356187f20d9d459462f1"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"f1e39ea7fdccd6f1f689bc0203c9cd935805ae0f","unresolved":false,"context_lines":[{"line_number":112,"context_line":""},{"line_number":113,"context_line":"    This method copies the given image to the http_root location."},{"line_number":114,"context_line":"    It enables read-write access to the image else the deploy fails"},{"line_number":115,"context_line":"    as the image file at iamge_url is inaccessible."},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"    :param source_file_path: The image file path which needs to be"},{"line_number":118,"context_line":"                             copied to the web server root."}],"source_content_type":"text/x-python","patch_set":9,"id":"1a4dcd0f_fe48eb2e","line":115,"updated":"2015-08-12 21:57:02.000000000","message":"what is \u0027iamge_url\u0027?","commit_id":"3421b6e55af07c2d185d356187f20d9d459462f1"},{"author":{"_account_id":11297,"name":"Nisha Agarwal","email":"agarwalnisha1980@gmail.com","username":"Nisha"},"change_message_id":"df14160f7ef14169efa199aa81bd412fbaadf6b3","unresolved":false,"context_lines":[{"line_number":112,"context_line":""},{"line_number":113,"context_line":"    This method copies the given image to the http_root location."},{"line_number":114,"context_line":"    It enables read-write access to the image else the deploy fails"},{"line_number":115,"context_line":"    as the image file at iamge_url is inaccessible."},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"    :param source_file_path: The image file path which needs to be"},{"line_number":118,"context_line":"                             copied to the web server root."}],"source_content_type":"text/x-python","patch_set":9,"id":"1a4dcd0f_99edaa90","line":115,"in_reply_to":"1a4dcd0f_fe48eb2e","updated":"2015-08-18 03:15:29.000000000","message":":) Thanks for the catch. I had renamed the variable. will update the text accordingly.","commit_id":"3421b6e55af07c2d185d356187f20d9d459462f1"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"f1e39ea7fdccd6f1f689bc0203c9cd935805ae0f","unresolved":false,"context_lines":[{"line_number":115,"context_line":"    as the image file at iamge_url is inaccessible."},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"    :param source_file_path: The image file path which needs to be"},{"line_number":118,"context_line":"                             copied to the web server root."},{"line_number":119,"context_line":"    :param destination_file_path: The file name with which the"},{"line_number":120,"context_line":"                                  source should be copied."},{"line_number":121,"context_line":"    :returns: image url after the source image is uploaded."}],"source_content_type":"text/x-python","patch_set":9,"id":"1a4dcd0f_1ea91790","line":118,"updated":"2015-08-12 21:57:02.000000000","message":"you aren\u0027t copying the path, you\u0027re coping the contents of that file, right?","commit_id":"3421b6e55af07c2d185d356187f20d9d459462f1"},{"author":{"_account_id":11297,"name":"Nisha Agarwal","email":"agarwalnisha1980@gmail.com","username":"Nisha"},"change_message_id":"df14160f7ef14169efa199aa81bd412fbaadf6b3","unresolved":false,"context_lines":[{"line_number":115,"context_line":"    as the image file at iamge_url is inaccessible."},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"    :param source_file_path: The image file path which needs to be"},{"line_number":118,"context_line":"                             copied to the web server root."},{"line_number":119,"context_line":"    :param destination_file_path: The file name with which the"},{"line_number":120,"context_line":"                                  source should be copied."},{"line_number":121,"context_line":"    :returns: image url after the source image is uploaded."}],"source_content_type":"text/x-python","patch_set":9,"id":"1a4dcd0f_59e722ac","line":118,"in_reply_to":"1a4dcd0f_1ea91790","updated":"2015-08-18 03:15:29.000000000","message":"yes. will update the text accordingly.","commit_id":"3421b6e55af07c2d185d356187f20d9d459462f1"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"3d98a2055451032ef6b47d01eda50de5dbeb4ed2","unresolved":false,"context_lines":[{"line_number":116,"context_line":""},{"line_number":117,"context_line":"    :param source_file_path: The image file path which needs to be"},{"line_number":118,"context_line":"                             copied to the web server root."},{"line_number":119,"context_line":"    :param destination_file_path: The file name with which the"},{"line_number":120,"context_line":"                                  source should be copied."},{"line_number":121,"context_line":"    :returns: image url after the source image is uploaded."},{"line_number":122,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"1a4dcd0f_c75c3a4d","line":119,"updated":"2015-08-07 07:03:49.000000000","message":"nit: destination_file_name","commit_id":"3421b6e55af07c2d185d356187f20d9d459462f1"},{"author":{"_account_id":11297,"name":"Nisha Agarwal","email":"agarwalnisha1980@gmail.com","username":"Nisha"},"change_message_id":"df14160f7ef14169efa199aa81bd412fbaadf6b3","unresolved":false,"context_lines":[{"line_number":116,"context_line":""},{"line_number":117,"context_line":"    :param source_file_path: The image file path which needs to be"},{"line_number":118,"context_line":"                             copied to the web server root."},{"line_number":119,"context_line":"    :param destination_file_path: The file name with which the"},{"line_number":120,"context_line":"                                  source should be copied."},{"line_number":121,"context_line":"    :returns: image url after the source image is uploaded."},{"line_number":122,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"1a4dcd0f_1902fa3e","line":119,"in_reply_to":"1a4dcd0f_c75c3a4d","updated":"2015-08-18 03:15:29.000000000","message":"ok","commit_id":"3421b6e55af07c2d185d356187f20d9d459462f1"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"f1e39ea7fdccd6f1f689bc0203c9cd935805ae0f","unresolved":false,"context_lines":[{"line_number":117,"context_line":"    :param source_file_path: The image file path which needs to be"},{"line_number":118,"context_line":"                             copied to the web server root."},{"line_number":119,"context_line":"    :param destination_file_path: The file name with which the"},{"line_number":120,"context_line":"                                  source should be copied."},{"line_number":121,"context_line":"    :returns: image url after the source image is uploaded."},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"    \"\"\""}],"source_content_type":"text/x-python","patch_set":9,"id":"1a4dcd0f_3eb5f3eb","line":120,"updated":"2015-08-12 21:57:02.000000000","message":"how about \u0027The name of the file that will contain the copied image.\u0027","commit_id":"3421b6e55af07c2d185d356187f20d9d459462f1"},{"author":{"_account_id":11297,"name":"Nisha Agarwal","email":"agarwalnisha1980@gmail.com","username":"Nisha"},"change_message_id":"df14160f7ef14169efa199aa81bd412fbaadf6b3","unresolved":false,"context_lines":[{"line_number":117,"context_line":"    :param source_file_path: The image file path which needs to be"},{"line_number":118,"context_line":"                             copied to the web server root."},{"line_number":119,"context_line":"    :param destination_file_path: The file name with which the"},{"line_number":120,"context_line":"                                  source should be copied."},{"line_number":121,"context_line":"    :returns: image url after the source image is uploaded."},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"    \"\"\""}],"source_content_type":"text/x-python","patch_set":9,"id":"1a4dcd0f_39fd763b","line":120,"in_reply_to":"1a4dcd0f_3eb5f3eb","updated":"2015-08-18 03:15:29.000000000","message":"ok :) yes better.","commit_id":"3421b6e55af07c2d185d356187f20d9d459462f1"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"3d98a2055451032ef6b47d01eda50de5dbeb4ed2","unresolved":false,"context_lines":[{"line_number":122,"context_line":""},{"line_number":123,"context_line":"    \"\"\""},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"    destination \u003d os.path.basename(destination_file_name)"},{"line_number":126,"context_line":"    image_url \u003d os.path.join(CONF.deploy.http_url, destination)"},{"line_number":127,"context_line":"    image_path \u003d os.path.join(CONF.deploy.http_root, destination)"},{"line_number":128,"context_line":"    shutil.copyfile(source_file_path, image_path)"}],"source_content_type":"text/x-python","patch_set":9,"id":"1a4dcd0f_8729529d","line":125,"updated":"2015-08-07 07:03:49.000000000","message":"Since it\u0027s just a filename we don\u0027t need to do os.path.basename() once more.","commit_id":"3421b6e55af07c2d185d356187f20d9d459462f1"},{"author":{"_account_id":14923,"name":"Sinval Vieira Mendes Neto","email":"sinvalneto01@gmail.com","username":"sinvalvieira"},"change_message_id":"6d2ed91278ceed6b1ac8c2f3255a72045a39406c","unresolved":false,"context_lines":[{"line_number":122,"context_line":""},{"line_number":123,"context_line":"    \"\"\""},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"    destination \u003d os.path.basename(destination_file_name)"},{"line_number":126,"context_line":"    image_url \u003d os.path.join(CONF.deploy.http_url, destination)"},{"line_number":127,"context_line":"    image_path \u003d os.path.join(CONF.deploy.http_root, destination)"},{"line_number":128,"context_line":"    shutil.copyfile(source_file_path, image_path)"}],"source_content_type":"text/x-python","patch_set":9,"id":"1a4dcd0f_4171d643","line":125,"in_reply_to":"1a4dcd0f_8729529d","updated":"2015-08-13 16:43:32.000000000","message":"+1","commit_id":"3421b6e55af07c2d185d356187f20d9d459462f1"},{"author":{"_account_id":11297,"name":"Nisha Agarwal","email":"agarwalnisha1980@gmail.com","username":"Nisha"},"change_message_id":"df14160f7ef14169efa199aa81bd412fbaadf6b3","unresolved":false,"context_lines":[{"line_number":122,"context_line":""},{"line_number":123,"context_line":"    \"\"\""},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"    destination \u003d os.path.basename(destination_file_name)"},{"line_number":126,"context_line":"    image_url \u003d os.path.join(CONF.deploy.http_url, destination)"},{"line_number":127,"context_line":"    image_path \u003d os.path.join(CONF.deploy.http_root, destination)"},{"line_number":128,"context_line":"    shutil.copyfile(source_file_path, image_path)"}],"source_content_type":"text/x-python","patch_set":9,"id":"1a4dcd0f_f9f62e5c","line":125,"in_reply_to":"1a4dcd0f_8729529d","updated":"2015-08-18 03:15:29.000000000","message":"ok","commit_id":"3421b6e55af07c2d185d356187f20d9d459462f1"},{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"5d1235bb1f4c5d5a7e6491ed52876a13722e1151","unresolved":false,"context_lines":[{"line_number":123,"context_line":"    \"\"\""},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"    destination \u003d os.path.basename(destination_file_name)"},{"line_number":126,"context_line":"    image_url \u003d os.path.join(CONF.deploy.http_url, destination)"},{"line_number":127,"context_line":"    image_path \u003d os.path.join(CONF.deploy.http_root, destination)"},{"line_number":128,"context_line":"    shutil.copyfile(source_file_path, image_path)"},{"line_number":129,"context_line":"    os.chmod(image_path, 0o644)"}],"source_content_type":"text/x-python","patch_set":9,"id":"1a4dcd0f_e23b52e8","line":126,"updated":"2015-08-13 12:46:13.000000000","message":"Please use urljoin() for urls.","commit_id":"3421b6e55af07c2d185d356187f20d9d459462f1"},{"author":{"_account_id":14923,"name":"Sinval Vieira Mendes Neto","email":"sinvalneto01@gmail.com","username":"sinvalvieira"},"change_message_id":"6d2ed91278ceed6b1ac8c2f3255a72045a39406c","unresolved":false,"context_lines":[{"line_number":123,"context_line":"    \"\"\""},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"    destination \u003d os.path.basename(destination_file_name)"},{"line_number":126,"context_line":"    image_url \u003d os.path.join(CONF.deploy.http_url, destination)"},{"line_number":127,"context_line":"    image_path \u003d os.path.join(CONF.deploy.http_root, destination)"},{"line_number":128,"context_line":"    shutil.copyfile(source_file_path, image_path)"},{"line_number":129,"context_line":"    os.chmod(image_path, 0o644)"}],"source_content_type":"text/x-python","patch_set":9,"id":"1a4dcd0f_617ad227","line":126,"in_reply_to":"1a4dcd0f_e23b52e8","updated":"2015-08-13 16:43:32.000000000","message":"+1","commit_id":"3421b6e55af07c2d185d356187f20d9d459462f1"},{"author":{"_account_id":11297,"name":"Nisha Agarwal","email":"agarwalnisha1980@gmail.com","username":"Nisha"},"change_message_id":"df14160f7ef14169efa199aa81bd412fbaadf6b3","unresolved":false,"context_lines":[{"line_number":123,"context_line":"    \"\"\""},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"    destination \u003d os.path.basename(destination_file_name)"},{"line_number":126,"context_line":"    image_url \u003d os.path.join(CONF.deploy.http_url, destination)"},{"line_number":127,"context_line":"    image_path \u003d os.path.join(CONF.deploy.http_root, destination)"},{"line_number":128,"context_line":"    shutil.copyfile(source_file_path, image_path)"},{"line_number":129,"context_line":"    os.chmod(image_path, 0o644)"}],"source_content_type":"text/x-python","patch_set":9,"id":"1a4dcd0f_9994cae8","line":126,"in_reply_to":"1a4dcd0f_e23b52e8","updated":"2015-08-18 03:15:29.000000000","message":"ok","commit_id":"3421b6e55af07c2d185d356187f20d9d459462f1"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"f1e39ea7fdccd6f1f689bc0203c9cd935805ae0f","unresolved":false,"context_lines":[{"line_number":127,"context_line":"    image_path \u003d os.path.join(CONF.deploy.http_root, destination)"},{"line_number":128,"context_line":"    shutil.copyfile(source_file_path, image_path)"},{"line_number":129,"context_line":"    os.chmod(image_path, 0o644)"},{"line_number":130,"context_line":"    return image_url"},{"line_number":131,"context_line":""},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"def parse_driver_info(node):"}],"source_content_type":"text/x-python","patch_set":9,"id":"1a4dcd0f_5eb8ffc7","line":130,"updated":"2015-08-12 21:57:02.000000000","message":"are you OK if exceptions are raised from here? eg, what if shutil.copyfile() raises an exception?","commit_id":"3421b6e55af07c2d185d356187f20d9d459462f1"},{"author":{"_account_id":11297,"name":"Nisha Agarwal","email":"agarwalnisha1980@gmail.com","username":"Nisha"},"change_message_id":"df14160f7ef14169efa199aa81bd412fbaadf6b3","unresolved":false,"context_lines":[{"line_number":127,"context_line":"    image_path \u003d os.path.join(CONF.deploy.http_root, destination)"},{"line_number":128,"context_line":"    shutil.copyfile(source_file_path, image_path)"},{"line_number":129,"context_line":"    os.chmod(image_path, 0o644)"},{"line_number":130,"context_line":"    return image_url"},{"line_number":131,"context_line":""},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"def parse_driver_info(node):"}],"source_content_type":"text/x-python","patch_set":9,"id":"1a4dcd0f_b9be6662","line":130,"in_reply_to":"1a4dcd0f_5eb8ffc7","updated":"2015-08-18 03:15:29.000000000","message":"Ok will add exception handling here.","commit_id":"3421b6e55af07c2d185d356187f20d9d459462f1"},{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"c4ac5cecd7678ce9d9b54d768b52bf45fd1046a0","unresolved":false,"context_lines":[{"line_number":293,"context_line":"            return image_url"},{"line_number":294,"context_line":"        else:"},{"line_number":295,"context_line":"            container \u003d CONF.ilo.swift_ilo_container"},{"line_number":296,"context_line":"            object_name \u003d _get_floppy_image_name(task.node)"},{"line_number":297,"context_line":"            timeout \u003d CONF.ilo.swift_object_expiry_timeout"},{"line_number":298,"context_line":""},{"line_number":299,"context_line":"            object_headers \u003d {\u0027X-Delete-After\u0027: timeout}"}],"source_content_type":"text/x-python","patch_set":9,"id":"1a4dcd0f_baebefaf","line":296,"updated":"2015-08-10 09:34:27.000000000","message":"This line is duplicated.","commit_id":"3421b6e55af07c2d185d356187f20d9d459462f1"},{"author":{"_account_id":14923,"name":"Sinval Vieira Mendes Neto","email":"sinvalneto01@gmail.com","username":"sinvalvieira"},"change_message_id":"6d2ed91278ceed6b1ac8c2f3255a72045a39406c","unresolved":false,"context_lines":[{"line_number":293,"context_line":"            return image_url"},{"line_number":294,"context_line":"        else:"},{"line_number":295,"context_line":"            container \u003d CONF.ilo.swift_ilo_container"},{"line_number":296,"context_line":"            object_name \u003d _get_floppy_image_name(task.node)"},{"line_number":297,"context_line":"            timeout \u003d CONF.ilo.swift_object_expiry_timeout"},{"line_number":298,"context_line":""},{"line_number":299,"context_line":"            object_headers \u003d {\u0027X-Delete-After\u0027: timeout}"}],"source_content_type":"text/x-python","patch_set":9,"id":"1a4dcd0f_61a17295","line":296,"in_reply_to":"1a4dcd0f_baebefaf","updated":"2015-08-13 16:43:32.000000000","message":"+1","commit_id":"3421b6e55af07c2d185d356187f20d9d459462f1"},{"author":{"_account_id":11297,"name":"Nisha Agarwal","email":"agarwalnisha1980@gmail.com","username":"Nisha"},"change_message_id":"df14160f7ef14169efa199aa81bd412fbaadf6b3","unresolved":false,"context_lines":[{"line_number":293,"context_line":"            return image_url"},{"line_number":294,"context_line":"        else:"},{"line_number":295,"context_line":"            container \u003d CONF.ilo.swift_ilo_container"},{"line_number":296,"context_line":"            object_name \u003d _get_floppy_image_name(task.node)"},{"line_number":297,"context_line":"            timeout \u003d CONF.ilo.swift_object_expiry_timeout"},{"line_number":298,"context_line":""},{"line_number":299,"context_line":"            object_headers \u003d {\u0027X-Delete-After\u0027: timeout}"}],"source_content_type":"text/x-python","patch_set":9,"id":"1a4dcd0f_99bb6a75","line":296,"in_reply_to":"1a4dcd0f_baebefaf","updated":"2015-08-18 03:15:29.000000000","message":":) will remove.","commit_id":"3421b6e55af07c2d185d356187f20d9d459462f1"},{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"0ede1d4b4e8ea9b293a8d8b7691e8cbd4bd6cfec","unresolved":false,"context_lines":[{"line_number":19,"context_line":"import os"},{"line_number":20,"context_line":"import shutil"},{"line_number":21,"context_line":"import tempfile"},{"line_number":22,"context_line":"from urlparse import urljoin"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"from oslo_config import cfg"},{"line_number":25,"context_line":"from oslo_log import log as logging"}],"source_content_type":"text/x-python","patch_set":11,"id":"fa1b9901_9fd38238","line":22,"updated":"2015-08-18 12:28:58.000000000","message":"Please use six.moves for Py3 compatibility.","commit_id":"f05e6f77d29972f881f7091c3699e87f830cfef6"},{"author":{"_account_id":11297,"name":"Nisha Agarwal","email":"agarwalnisha1980@gmail.com","username":"Nisha"},"change_message_id":"8d2402311099a263d835f04ffe1c85a93be55b90","unresolved":false,"context_lines":[{"line_number":19,"context_line":"import os"},{"line_number":20,"context_line":"import shutil"},{"line_number":21,"context_line":"import tempfile"},{"line_number":22,"context_line":"from urlparse import urljoin"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"from oslo_config import cfg"},{"line_number":25,"context_line":"from oslo_log import log as logging"}],"source_content_type":"text/x-python","patch_set":11,"id":"fa1b9901_16e186d0","line":22,"in_reply_to":"fa1b9901_9fd38238","updated":"2015-08-18 19:23:13.000000000","message":"ok","commit_id":"f05e6f77d29972f881f7091c3699e87f830cfef6"},{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"0ede1d4b4e8ea9b293a8d8b7691e8cbd4bd6cfec","unresolved":false,"context_lines":[{"line_number":111,"context_line":"                             which needs to be copied to the"},{"line_number":112,"context_line":"                             web server root."},{"line_number":113,"context_line":"    :param destination: The name of the file that"},{"line_number":114,"context_line":"                        will contain the copied image."},{"line_number":115,"context_line":"    :returns: image url after the source image is uploaded."},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"    \"\"\""}],"source_content_type":"text/x-python","patch_set":11,"id":"fa1b9901_faaacc6f","line":114,"updated":"2015-08-18 12:28:58.000000000","message":"Missing :raises:","commit_id":"f05e6f77d29972f881f7091c3699e87f830cfef6"},{"author":{"_account_id":11297,"name":"Nisha Agarwal","email":"agarwalnisha1980@gmail.com","username":"Nisha"},"change_message_id":"8d2402311099a263d835f04ffe1c85a93be55b90","unresolved":false,"context_lines":[{"line_number":111,"context_line":"                             which needs to be copied to the"},{"line_number":112,"context_line":"                             web server root."},{"line_number":113,"context_line":"    :param destination: The name of the file that"},{"line_number":114,"context_line":"                        will contain the copied image."},{"line_number":115,"context_line":"    :returns: image url after the source image is uploaded."},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"    \"\"\""}],"source_content_type":"text/x-python","patch_set":11,"id":"fa1b9901_909fde4f","line":114,"in_reply_to":"fa1b9901_faaacc6f","updated":"2015-08-18 19:23:13.000000000","message":"ok","commit_id":"f05e6f77d29972f881f7091c3699e87f830cfef6"},{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"0ede1d4b4e8ea9b293a8d8b7691e8cbd4bd6cfec","unresolved":false,"context_lines":[{"line_number":120,"context_line":"    image_path \u003d os.path.join(CONF.deploy.http_root, destination)"},{"line_number":121,"context_line":"    try:"},{"line_number":122,"context_line":"        shutil.copyfile(source_file_path, image_path)"},{"line_number":123,"context_line":"    except OSError as exc:"},{"line_number":124,"context_line":"        raise ImageUploadFailed(\"Failed to upload image %(image_href)s \""},{"line_number":125,"context_line":"                                \"reason: %(reason)s\","},{"line_number":126,"context_line":"                                {\u0027image_href\u0027: image_url, \u0027reason\u0027: exc})"}],"source_content_type":"text/x-python","patch_set":11,"id":"fa1b9901_fabbac0c","line":123,"updated":"2015-08-18 12:28:58.000000000","message":"Should catch IOError.","commit_id":"f05e6f77d29972f881f7091c3699e87f830cfef6"},{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"0ede1d4b4e8ea9b293a8d8b7691e8cbd4bd6cfec","unresolved":false,"context_lines":[{"line_number":121,"context_line":"    try:"},{"line_number":122,"context_line":"        shutil.copyfile(source_file_path, image_path)"},{"line_number":123,"context_line":"    except OSError as exc:"},{"line_number":124,"context_line":"        raise ImageUploadFailed(\"Failed to upload image %(image_href)s \""},{"line_number":125,"context_line":"                                \"reason: %(reason)s\","},{"line_number":126,"context_line":"                                {\u0027image_href\u0027: image_url, \u0027reason\u0027: exc})"},{"line_number":127,"context_line":"    os.chmod(image_path, 0o644)"}],"source_content_type":"text/x-python","patch_set":11,"id":"fa1b9901_dfdb3a1a","line":124,"updated":"2015-08-18 12:28:58.000000000","message":"exception.ImageUploadFailed(...","commit_id":"f05e6f77d29972f881f7091c3699e87f830cfef6"},{"author":{"_account_id":11297,"name":"Nisha Agarwal","email":"agarwalnisha1980@gmail.com","username":"Nisha"},"change_message_id":"8d2402311099a263d835f04ffe1c85a93be55b90","unresolved":false,"context_lines":[{"line_number":121,"context_line":"    try:"},{"line_number":122,"context_line":"        shutil.copyfile(source_file_path, image_path)"},{"line_number":123,"context_line":"    except OSError as exc:"},{"line_number":124,"context_line":"        raise ImageUploadFailed(\"Failed to upload image %(image_href)s \""},{"line_number":125,"context_line":"                                \"reason: %(reason)s\","},{"line_number":126,"context_line":"                                {\u0027image_href\u0027: image_url, \u0027reason\u0027: exc})"},{"line_number":127,"context_line":"    os.chmod(image_path, 0o644)"}],"source_content_type":"text/x-python","patch_set":11,"id":"fa1b9901_1093ce50","line":124,"in_reply_to":"fa1b9901_dfdb3a1a","updated":"2015-08-18 19:23:13.000000000","message":"yeah","commit_id":"f05e6f77d29972f881f7091c3699e87f830cfef6"},{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"0ede1d4b4e8ea9b293a8d8b7691e8cbd4bd6cfec","unresolved":false,"context_lines":[{"line_number":122,"context_line":"        shutil.copyfile(source_file_path, image_path)"},{"line_number":123,"context_line":"    except OSError as exc:"},{"line_number":124,"context_line":"        raise ImageUploadFailed(\"Failed to upload image %(image_href)s \""},{"line_number":125,"context_line":"                                \"reason: %(reason)s\","},{"line_number":126,"context_line":"                                {\u0027image_href\u0027: image_url, \u0027reason\u0027: exc})"},{"line_number":127,"context_line":"    os.chmod(image_path, 0o644)"},{"line_number":128,"context_line":"    return image_url"}],"source_content_type":"text/x-python","patch_set":11,"id":"fa1b9901_ffe2be9e","line":125,"updated":"2015-08-18 12:28:58.000000000","message":"This message is the same as in exception module, just provide kwargs for formatting exception.ImageUploadFailed(image_href\u003dimage_url, reason\u003dreason)","commit_id":"f05e6f77d29972f881f7091c3699e87f830cfef6"},{"author":{"_account_id":11297,"name":"Nisha Agarwal","email":"agarwalnisha1980@gmail.com","username":"Nisha"},"change_message_id":"8d2402311099a263d835f04ffe1c85a93be55b90","unresolved":false,"context_lines":[{"line_number":122,"context_line":"        shutil.copyfile(source_file_path, image_path)"},{"line_number":123,"context_line":"    except OSError as exc:"},{"line_number":124,"context_line":"        raise ImageUploadFailed(\"Failed to upload image %(image_href)s \""},{"line_number":125,"context_line":"                                \"reason: %(reason)s\","},{"line_number":126,"context_line":"                                {\u0027image_href\u0027: image_url, \u0027reason\u0027: exc})"},{"line_number":127,"context_line":"    os.chmod(image_path, 0o644)"},{"line_number":128,"context_line":"    return image_url"}],"source_content_type":"text/x-python","patch_set":11,"id":"fa1b9901_f0889a24","line":125,"in_reply_to":"fa1b9901_ffe2be9e","updated":"2015-08-18 19:23:13.000000000","message":"Ok","commit_id":"f05e6f77d29972f881f7091c3699e87f830cfef6"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"ee1ea9267f142ba70abb43ecba76668b10b901f5","unresolved":false,"context_lines":[{"line_number":18,"context_line":""},{"line_number":19,"context_line":"import os"},{"line_number":20,"context_line":"import shutil"},{"line_number":21,"context_line":"from six.moves.urllib.parse import urljoin"},{"line_number":22,"context_line":"import tempfile"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"from oslo_config import cfg"}],"source_content_type":"text/x-python","patch_set":14,"id":"fa1b9901_f2c121e5","line":21,"updated":"2015-08-26 09:56:41.000000000","message":"six is a third-party library, so should belong down","commit_id":"61fabfe59363d251fd11ca9ef5b8eb6628c930d5"},{"author":{"_account_id":11297,"name":"Nisha Agarwal","email":"agarwalnisha1980@gmail.com","username":"Nisha"},"change_message_id":"6a3d62b859672b88a54430d19758dc2cc81e2e03","unresolved":false,"context_lines":[{"line_number":18,"context_line":""},{"line_number":19,"context_line":"import os"},{"line_number":20,"context_line":"import shutil"},{"line_number":21,"context_line":"from six.moves.urllib.parse import urljoin"},{"line_number":22,"context_line":"import tempfile"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"from oslo_config import cfg"}],"source_content_type":"text/x-python","patch_set":14,"id":"da20952f_ea08e52a","line":21,"in_reply_to":"fa1b9901_f2c121e5","updated":"2015-08-26 22:22:10.000000000","message":"ok.","commit_id":"61fabfe59363d251fd11ca9ef5b8eb6628c930d5"},{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"142896da63372a5522953371bd0a3af5ab5a6c25","unresolved":false,"context_lines":[{"line_number":122,"context_line":"    image_url \u003d urljoin(CONF.deploy.http_url, destination)"},{"line_number":123,"context_line":"    image_path \u003d os.path.join(CONF.deploy.http_root, destination)"},{"line_number":124,"context_line":"    try:"},{"line_number":125,"context_line":"        shutil.copyfile(source_file_path, image_path)"},{"line_number":126,"context_line":"    except IOError as exc:"},{"line_number":127,"context_line":"        raise exception.ImageUploadFailed(image_href\u003dimage_url,"},{"line_number":128,"context_line":"                                          reason\u003dexc)"}],"source_content_type":"text/x-python","patch_set":14,"id":"da20952f_bcb48dd1","line":125,"updated":"2015-08-26 16:23:40.000000000","message":"One more suggestion - you could use sendfile here as it is considered to be faster.","commit_id":"61fabfe59363d251fd11ca9ef5b8eb6628c930d5"},{"author":{"_account_id":11297,"name":"Nisha Agarwal","email":"agarwalnisha1980@gmail.com","username":"Nisha"},"change_message_id":"6a3d62b859672b88a54430d19758dc2cc81e2e03","unresolved":false,"context_lines":[{"line_number":122,"context_line":"    image_url \u003d urljoin(CONF.deploy.http_url, destination)"},{"line_number":123,"context_line":"    image_path \u003d os.path.join(CONF.deploy.http_root, destination)"},{"line_number":124,"context_line":"    try:"},{"line_number":125,"context_line":"        shutil.copyfile(source_file_path, image_path)"},{"line_number":126,"context_line":"    except IOError as exc:"},{"line_number":127,"context_line":"        raise exception.ImageUploadFailed(image_href\u003dimage_url,"},{"line_number":128,"context_line":"                                          reason\u003dexc)"}],"source_content_type":"text/x-python","patch_set":14,"id":"da20952f_cd373be2","line":125,"in_reply_to":"da20952f_bcb48dd1","updated":"2015-08-26 22:22:10.000000000","message":"i couldnt find sendfile in python. Is it fine to use copyfile here?","commit_id":"61fabfe59363d251fd11ca9ef5b8eb6628c930d5"},{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"63de7d7eca1c9fc51e08531f0317342541ff0371","unresolved":false,"context_lines":[{"line_number":122,"context_line":"    image_url \u003d urljoin(CONF.deploy.http_url, destination)"},{"line_number":123,"context_line":"    image_path \u003d os.path.join(CONF.deploy.http_root, destination)"},{"line_number":124,"context_line":"    try:"},{"line_number":125,"context_line":"        shutil.copyfile(source_file_path, image_path)"},{"line_number":126,"context_line":"    except IOError as exc:"},{"line_number":127,"context_line":"        raise exception.ImageUploadFailed(image_href\u003dimage_url,"},{"line_number":128,"context_line":"                                          reason\u003dexc)"}],"source_content_type":"text/x-python","patch_set":14,"id":"da20952f_caaccf37","line":125,"in_reply_to":"da20952f_cd373be2","updated":"2015-08-27 16:57:16.000000000","message":"jfyi:\n\n* https://github.com/openstack/ironic/blob/master/ironic/common/image_service.py#L264-L265\n\n* http://linux.die.net/man/2/sendfile\n\n* https://github.com/giampaolo/pysendfile\n\nOf course it\u0027s up to you to decide whether you want to use it or not.","commit_id":"61fabfe59363d251fd11ca9ef5b8eb6628c930d5"},{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"53f369f98e2d17aee53bf03d0953b62d4ab11cf1","unresolved":false,"context_lines":[{"line_number":317,"context_line":"    \"\"\""},{"line_number":318,"context_line":""},{"line_number":319,"context_line":"    object_name \u003d _get_floppy_image_name(task.node)"},{"line_number":320,"context_line":"    image_path \u003d urljoin(CONF.deploy.http_root, object_name)"},{"line_number":321,"context_line":"    utils.unlink_without_raise(image_path)"},{"line_number":322,"context_line":""},{"line_number":323,"context_line":""}],"source_content_type":"text/x-python","patch_set":16,"id":"da20952f_114df23d","line":320,"updated":"2015-08-28 12:44:40.000000000","message":"This is regular path, please use os.path.join().","commit_id":"68cb6adf9ed7d4713aeb0144f089c231fd45d9a0"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"5108ad998f74d672d7334802b2460d7cf761d0a1","unresolved":false,"context_lines":[{"line_number":63,"context_line":"                       \u0027floppy images and generated boot ISO. This \u0027"},{"line_number":64,"context_line":"                       \u0027requires http_root and http_url to be configured \u0027"},{"line_number":65,"context_line":"                       \u0027in the [deploy] section of the config file. If this \u0027"},{"line_number":66,"context_line":"                       \u0027is set to False then the ironic will use swift \u0027"},{"line_number":67,"context_line":"                       \u0027to host the floppy images and generated \u0027"},{"line_number":68,"context_line":"                       \u0027boot_iso.\u0027)),"},{"line_number":69,"context_line":"]"}],"source_content_type":"text/x-python","patch_set":17,"id":"da20952f_70017f05","line":66,"updated":"2015-08-31 11:05:17.000000000","message":"s/False then the ironic/False, then Ironic\n\ns/swift/Swift","commit_id":"c829ffa00b5f10440ed716d103bc1b50be28517d"},{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"ea0d99289d889f6176f65a5ac28a7f9b95a59e8a","unresolved":false,"context_lines":[{"line_number":45,"context_line":"               help\u003d_(\u0027Timeout (in seconds) for iLO operations\u0027)),"},{"line_number":46,"context_line":"    cfg.IntOpt(\u0027client_port\u0027,"},{"line_number":47,"context_line":"               default\u003d443,"},{"line_number":48,"context_line":"               min\u003d1, max\u003d65535,"},{"line_number":49,"context_line":"               help\u003d_(\u0027Port to be used for iLO operations\u0027)),"},{"line_number":50,"context_line":"    cfg.StrOpt(\u0027swift_ilo_container\u0027,"},{"line_number":51,"context_line":"               default\u003d\u0027ironic_ilo_container\u0027,"}],"source_content_type":"text/x-python","patch_set":18,"id":"da20952f_5e43f7ae","side":"PARENT","line":48,"updated":"2015-09-01 09:17:32.000000000","message":"This should not be deleted","commit_id":"ec461e7e38cdfe9b59e5b374abf44902784fd9a0"},{"author":{"_account_id":11297,"name":"Nisha Agarwal","email":"agarwalnisha1980@gmail.com","username":"Nisha"},"change_message_id":"ee59ef7b70ddb3bfcc7310643d4d237c33d7fc1e","unresolved":false,"context_lines":[{"line_number":45,"context_line":"               help\u003d_(\u0027Timeout (in seconds) for iLO operations\u0027)),"},{"line_number":46,"context_line":"    cfg.IntOpt(\u0027client_port\u0027,"},{"line_number":47,"context_line":"               default\u003d443,"},{"line_number":48,"context_line":"               min\u003d1, max\u003d65535,"},{"line_number":49,"context_line":"               help\u003d_(\u0027Port to be used for iLO operations\u0027)),"},{"line_number":50,"context_line":"    cfg.StrOpt(\u0027swift_ilo_container\u0027,"},{"line_number":51,"context_line":"               default\u003d\u0027ironic_ilo_container\u0027,"}],"source_content_type":"text/x-python","patch_set":18,"id":"da20952f_04020e0a","side":"PARENT","line":48,"in_reply_to":"da20952f_5e43f7ae","updated":"2015-09-01 09:55:45.000000000","message":"yes. Thanks for catching this. But i think this got added recently.","commit_id":"ec461e7e38cdfe9b59e5b374abf44902784fd9a0"},{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"a50c77891ba7594b375afeea0f133929ba3d6cd3","unresolved":false,"context_lines":[{"line_number":270,"context_line":"    \"\"\"Prepares the floppy image for passing the parameters."},{"line_number":271,"context_line":""},{"line_number":272,"context_line":"    This method prepares a temporary vfat filesystem image. Then it adds"},{"line_number":273,"context_line":"    a file into the image which contains the parameters to be passed to"},{"line_number":274,"context_line":"    the ramdisk. After adding the parameters, it then uploads the file to Swift"},{"line_number":275,"context_line":"    in \u0027swift_ilo_container\u0027, setting it to auto-expire after"},{"line_number":276,"context_line":"    \u0027swift_object_expiry_timeout\u0027 seconds. Then it returns the temp url for the"}],"source_content_type":"text/x-python","patch_set":19,"id":"da20952f_a4cf9d27","line":273,"updated":"2015-09-01 11:43:42.000000000","message":"Docstring should be updated, we can also use web server.","commit_id":"a5e2256d77c369de7c8571d51a8ea35501fe8e98"},{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"a50c77891ba7594b375afeea0f133929ba3d6cd3","unresolved":false,"context_lines":[{"line_number":310,"context_line":"            return temp_url"},{"line_number":311,"context_line":""},{"line_number":312,"context_line":""},{"line_number":313,"context_line":"def destroy_floppy_image_from_web_server(task):"},{"line_number":314,"context_line":"    \"\"\"Removes the temporary floppy image."},{"line_number":315,"context_line":""},{"line_number":316,"context_line":"    It removes the floppy image created for deploy."}],"source_content_type":"text/x-python","patch_set":19,"id":"da20952f_c70ad31f","line":313,"updated":"2015-09-01 11:43:42.000000000","message":"nit: you can use \"node\" argument instead of \"task\".","commit_id":"a5e2256d77c369de7c8571d51a8ea35501fe8e98"},{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"a50c77891ba7594b375afeea0f133929ba3d6cd3","unresolved":false,"context_lines":[{"line_number":500,"context_line":"    \"\"\"Cleans a node after a virtual media boot."},{"line_number":501,"context_line":""},{"line_number":502,"context_line":"    This method cleans up a node after a virtual media boot. It deletes the"},{"line_number":503,"context_line":"    floppy image if it exists in CONF.ilo.swift_ilo_container. It also"},{"line_number":504,"context_line":"    ejects both virtual media cdrom and virtual media floppy."},{"line_number":505,"context_line":""},{"line_number":506,"context_line":"    :param task: a TaskManager instance containing the node to act on."}],"source_content_type":"text/x-python","patch_set":19,"id":"da20952f_e4bef563","line":503,"updated":"2015-09-01 11:43:42.000000000","message":"Docstring should be updated, we do destroy on the web server also.","commit_id":"a5e2256d77c369de7c8571d51a8ea35501fe8e98"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"2659719c180160dad2ea57b363721e9e9b6e8a9d","unresolved":false,"context_lines":[{"line_number":275,"context_line":"    to Swift in \u0027swift_ilo_container\u0027, setting it to auto-expire after"},{"line_number":276,"context_line":"    \u0027swift_object_expiry_timeout\u0027 seconds or in web server. Then it returns"},{"line_number":277,"context_line":"    the temp url for the Swift object or the http url for the uploaded floppy"},{"line_number":278,"context_line":"    image."},{"line_number":279,"context_line":""},{"line_number":280,"context_line":"    :param task: a TaskManager instance containing the node to act on."},{"line_number":281,"context_line":"    :param params: a dictionary containing \u0027parameter name\u0027-\u003e\u0027value\u0027 mapping"}],"source_content_type":"text/x-python","patch_set":23,"id":"da20952f_c9294ff4","line":278,"updated":"2015-09-09 09:31:10.000000000","message":"or the http url for the uploaded floppy image depending upon value of CONF.ilo.use_web_server_for_images","commit_id":"041d113e8f421eb7ae00094237055d53920d4740"}],"ironic/drivers/modules/ilo/deploy.py":[{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"2c080e2faca8b605e5d166df451b75bf279a5d8b","unresolved":false,"context_lines":[{"line_number":58,"context_line":"webserver_opts \u003d ["},{"line_number":59,"context_line":"    cfg.BoolOpt(\u0027use_web_server_for_images\u0027,"},{"line_number":60,"context_line":"                default\u003dFalse,"},{"line_number":61,"context_line":"                help\u003d\u0027To host the automated boot_iso on a http web \u0027"},{"line_number":62,"context_line":"                     \u0027server otherwise the ironic will use swift \u0027"},{"line_number":63,"context_line":"                     \u0027to host the boot_iso.\u0027)"},{"line_number":64,"context_line":"]"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a41bdd9_dfab121c","line":61,"updated":"2015-07-14 04:39:34.000000000","message":"Set this to True to use http web server to host floppy images and generated boot ISO.  The http web server mentioned in [deploy]http_server_root and [deploy]http_server_url needs to be configured.","commit_id":"8da2366df4ff146ede1be4fb0dddd344c6050c9d"},{"author":{"_account_id":11297,"name":"Nisha Agarwal","email":"agarwalnisha1980@gmail.com","username":"Nisha"},"change_message_id":"f55ccd695456fb7995d574649d5ebbfa962fa962","unresolved":false,"context_lines":[{"line_number":58,"context_line":"webserver_opts \u003d ["},{"line_number":59,"context_line":"    cfg.BoolOpt(\u0027use_web_server_for_images\u0027,"},{"line_number":60,"context_line":"                default\u003dFalse,"},{"line_number":61,"context_line":"                help\u003d\u0027To host the automated boot_iso on a http web \u0027"},{"line_number":62,"context_line":"                     \u0027server otherwise the ironic will use swift \u0027"},{"line_number":63,"context_line":"                     \u0027to host the boot_iso.\u0027)"},{"line_number":64,"context_line":"]"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a41bdd9_b11ff1b5","line":61,"in_reply_to":"9a41bdd9_dfab121c","updated":"2015-07-15 23:51:05.000000000","message":"Ok will update the description.","commit_id":"8da2366df4ff146ede1be4fb0dddd344c6050c9d"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"2c080e2faca8b605e5d166df451b75bf279a5d8b","unresolved":false,"context_lines":[{"line_number":74,"context_line":"                group\u003d\u0027pxe\u0027)"},{"line_number":75,"context_line":"CONF.import_opt(\u0027swift_ilo_container\u0027, \u0027ironic.drivers.modules.ilo.common\u0027,"},{"line_number":76,"context_line":"                group\u003d\u0027ilo\u0027)"},{"line_number":77,"context_line":"CONF.import_opt(\u0027http_server_url\u0027, \u0027ironic.drivers.modules.deploy_utils\u0027,"},{"line_number":78,"context_line":"                group\u003d\u0027deploy\u0027)"},{"line_number":79,"context_line":"CONF.import_opt(\u0027http_server_root\u0027, \u0027ironic.drivers.modules.deploy_utils\u0027,"},{"line_number":80,"context_line":"                group\u003d\u0027deploy\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a41bdd9_5f84e2d2","line":77,"updated":"2015-07-14 04:39:34.000000000","message":"Ditto as in common.py, no need to import explicitly as deploy_utils is already imported above.","commit_id":"8da2366df4ff146ede1be4fb0dddd344c6050c9d"},{"author":{"_account_id":11297,"name":"Nisha Agarwal","email":"agarwalnisha1980@gmail.com","username":"Nisha"},"change_message_id":"f55ccd695456fb7995d574649d5ebbfa962fa962","unresolved":false,"context_lines":[{"line_number":74,"context_line":"                group\u003d\u0027pxe\u0027)"},{"line_number":75,"context_line":"CONF.import_opt(\u0027swift_ilo_container\u0027, \u0027ironic.drivers.modules.ilo.common\u0027,"},{"line_number":76,"context_line":"                group\u003d\u0027ilo\u0027)"},{"line_number":77,"context_line":"CONF.import_opt(\u0027http_server_url\u0027, \u0027ironic.drivers.modules.deploy_utils\u0027,"},{"line_number":78,"context_line":"                group\u003d\u0027deploy\u0027)"},{"line_number":79,"context_line":"CONF.import_opt(\u0027http_server_root\u0027, \u0027ironic.drivers.modules.deploy_utils\u0027,"},{"line_number":80,"context_line":"                group\u003d\u0027deploy\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a41bdd9_518545cc","line":77,"in_reply_to":"9a41bdd9_5f84e2d2","updated":"2015-07-15 23:51:05.000000000","message":"Ditto. I will recheck, my build was not going through before i added this.","commit_id":"8da2366df4ff146ede1be4fb0dddd344c6050c9d"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"1e9ee5b35437a07ea1db0a0e61d67f158b2288b0","unresolved":false,"context_lines":[{"line_number":148,"context_line":"        response \u003d ilo_common._validate_image_href(boot_iso_uuid)"},{"line_number":149,"context_line":"        if response \u003d\u003d \u0027valid_href\u0027:"},{"line_number":150,"context_line":"            LOG.debug(\"Found boot_iso %s as a valid HTTP(s) URL\","},{"line_number":151,"context_line":"                      boot_iso_uuid)"},{"line_number":152,"context_line":"        else:"},{"line_number":153,"context_line":"            LOG.debug(\"Found boot_iso %s in Glance\", boot_iso_uuid)"},{"line_number":154,"context_line":"        return boot_iso_uuid"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a41bdd9_48f425f1","line":151,"updated":"2015-07-14 08:44:33.000000000","message":"The string return code seems to be only used for logging. I think we could log it inside the \"validate_image_href\" method (no \u0027_\u0027 prefix as well, cause it means private for the ilo_common module)","commit_id":"8da2366df4ff146ede1be4fb0dddd344c6050c9d"},{"author":{"_account_id":11297,"name":"Nisha Agarwal","email":"agarwalnisha1980@gmail.com","username":"Nisha"},"change_message_id":"f55ccd695456fb7995d574649d5ebbfa962fa962","unresolved":false,"context_lines":[{"line_number":148,"context_line":"        response \u003d ilo_common._validate_image_href(boot_iso_uuid)"},{"line_number":149,"context_line":"        if response \u003d\u003d \u0027valid_href\u0027:"},{"line_number":150,"context_line":"            LOG.debug(\"Found boot_iso %s as a valid HTTP(s) URL\","},{"line_number":151,"context_line":"                      boot_iso_uuid)"},{"line_number":152,"context_line":"        else:"},{"line_number":153,"context_line":"            LOG.debug(\"Found boot_iso %s in Glance\", boot_iso_uuid)"},{"line_number":154,"context_line":"        return boot_iso_uuid"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a41bdd9_515c657c","line":151,"in_reply_to":"9a41bdd9_48f425f1","updated":"2015-07-15 23:51:05.000000000","message":"Logging can be done there in validate_image_href() since it is used for boot iso only.","commit_id":"8da2366df4ff146ede1be4fb0dddd344c6050c9d"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"2c080e2faca8b605e5d166df451b75bf279a5d8b","unresolved":false,"context_lines":[{"line_number":182,"context_line":"                               kernel_params, boot_mode)"},{"line_number":183,"context_line":""},{"line_number":184,"context_line":"        if CONF.ilo.use_web_server_for_images:"},{"line_number":185,"context_line":"            boot_iso_url \u003d os.path.join("},{"line_number":186,"context_line":"                CONF.deploy.http_server_url,"},{"line_number":187,"context_line":"                os.path.basename(boot_iso_tmp_file))"},{"line_number":188,"context_line":"            boot_iso_path \u003d os.path.join("}],"source_content_type":"text/x-python","patch_set":1,"id":"9a41bdd9_5f5b8287","line":185,"updated":"2015-07-14 04:39:34.000000000","message":"Same lines of code as with ilo/common.py for floppy image.  Can we make it into a single method please.","commit_id":"8da2366df4ff146ede1be4fb0dddd344c6050c9d"},{"author":{"_account_id":11297,"name":"Nisha Agarwal","email":"agarwalnisha1980@gmail.com","username":"Nisha"},"change_message_id":"f55ccd695456fb7995d574649d5ebbfa962fa962","unresolved":false,"context_lines":[{"line_number":182,"context_line":"                               kernel_params, boot_mode)"},{"line_number":183,"context_line":""},{"line_number":184,"context_line":"        if CONF.ilo.use_web_server_for_images:"},{"line_number":185,"context_line":"            boot_iso_url \u003d os.path.join("},{"line_number":186,"context_line":"                CONF.deploy.http_server_url,"},{"line_number":187,"context_line":"                os.path.basename(boot_iso_tmp_file))"},{"line_number":188,"context_line":"            boot_iso_path \u003d os.path.join("}],"source_content_type":"text/x-python","patch_set":1,"id":"9a41bdd9_91cd0d33","line":185,"in_reply_to":"9a41bdd9_5f5b8287","updated":"2015-07-15 23:51:05.000000000","message":"Ok","commit_id":"8da2366df4ff146ede1be4fb0dddd344c6050c9d"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"e2adf676a590c705276220eced53154e29efa0d2","unresolved":false,"context_lines":[{"line_number":146,"context_line":"                  {\u0027image\u0027: image_href, \u0027node\u0027: task.node.uuid})"},{"line_number":147,"context_line":"        return"},{"line_number":148,"context_line":"    else:"},{"line_number":149,"context_line":"        ilo_common.validate_image_href_for_http_web_server(kernel_href)"},{"line_number":150,"context_line":"        ilo_common.validate_image_href_for_http_web_server(ramdisk_href)"},{"line_number":151,"context_line":""},{"line_number":152,"context_line":"    # NOTE(rameshg87): Functionality to share the boot ISOs created for"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a50d1a3_9f61a5d5","line":149,"updated":"2015-07-23 07:23:31.000000000","message":"I think there is no validation required here.  kernel_href and ramdisk_href can be anywhere.  We will download the image from the appropriate place to the conductor for building the boot iso and then host it in required place (either swift or glance).  \n\nSince I assume you refactored some of the code above into ilo_common.validate_image_href_for_http_web_server() to reuse it, I think it\u0027s not required as it is not needed here. If that\u0027s the case, I suggest to refrain from refactoring it and keep the code as it is (i.e refrain from moving the code in L121 to a new method)","commit_id":"37d59782a7d70fbd02ea0b98f37ad69874ebb21b"},{"author":{"_account_id":11297,"name":"Nisha Agarwal","email":"agarwalnisha1980@gmail.com","username":"Nisha"},"change_message_id":"dbda6e0b1b525e5bfbca26d492a3c2744e23cea5","unresolved":false,"context_lines":[{"line_number":146,"context_line":"                  {\u0027image\u0027: image_href, \u0027node\u0027: task.node.uuid})"},{"line_number":147,"context_line":"        return"},{"line_number":148,"context_line":"    else:"},{"line_number":149,"context_line":"        ilo_common.validate_image_href_for_http_web_server(kernel_href)"},{"line_number":150,"context_line":"        ilo_common.validate_image_href_for_http_web_server(ramdisk_href)"},{"line_number":151,"context_line":""},{"line_number":152,"context_line":"    # NOTE(rameshg87): Functionality to share the boot ISOs created for"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a50d1a3_7dd37e60","line":149,"in_reply_to":"3a50d1a3_9f61a5d5","updated":"2015-07-23 08:36:25.000000000","message":"Ok will retain previous code","commit_id":"37d59782a7d70fbd02ea0b98f37ad69874ebb21b"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"e2adf676a590c705276220eced53154e29efa0d2","unresolved":false,"context_lines":[{"line_number":194,"context_line":"    if CONF.ilo.use_web_server_for_images:"},{"line_number":195,"context_line":"        boot_iso_path \u003d os.path.join("},{"line_number":196,"context_line":"            CONF.deploy.http_root, os.path.basename(ilo_boot_iso))"},{"line_number":197,"context_line":"        os.remove(boot_iso_path)"},{"line_number":198,"context_line":"        return"},{"line_number":199,"context_line":"    elif (ilo_boot_iso.startswith(\u0027swift\u0027)):"},{"line_number":200,"context_line":"        swift_api \u003d swift.SwiftAPI()"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a50d1a3_0aa47505","line":197,"updated":"2015-07-23 07:23:31.000000000","message":"Better \n\n  utils.unlink_without_raise","commit_id":"37d59782a7d70fbd02ea0b98f37ad69874ebb21b"},{"author":{"_account_id":11297,"name":"Nisha Agarwal","email":"agarwalnisha1980@gmail.com","username":"Nisha"},"change_message_id":"dbda6e0b1b525e5bfbca26d492a3c2744e23cea5","unresolved":false,"context_lines":[{"line_number":194,"context_line":"    if CONF.ilo.use_web_server_for_images:"},{"line_number":195,"context_line":"        boot_iso_path \u003d os.path.join("},{"line_number":196,"context_line":"            CONF.deploy.http_root, os.path.basename(ilo_boot_iso))"},{"line_number":197,"context_line":"        os.remove(boot_iso_path)"},{"line_number":198,"context_line":"        return"},{"line_number":199,"context_line":"    elif (ilo_boot_iso.startswith(\u0027swift\u0027)):"},{"line_number":200,"context_line":"        swift_api \u003d swift.SwiftAPI()"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a50d1a3_9d53ea16","line":197,"in_reply_to":"3a50d1a3_0aa47505","updated":"2015-07-23 08:36:25.000000000","message":"ok","commit_id":"37d59782a7d70fbd02ea0b98f37ad69874ebb21b"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"e2adf676a590c705276220eced53154e29efa0d2","unresolved":false,"context_lines":[{"line_number":196,"context_line":"            CONF.deploy.http_root, os.path.basename(ilo_boot_iso))"},{"line_number":197,"context_line":"        os.remove(boot_iso_path)"},{"line_number":198,"context_line":"        return"},{"line_number":199,"context_line":"    elif (ilo_boot_iso.startswith(\u0027swift\u0027)):"},{"line_number":200,"context_line":"        swift_api \u003d swift.SwiftAPI()"},{"line_number":201,"context_line":"        container \u003d CONF.ilo.swift_ilo_container"},{"line_number":202,"context_line":"        boot_iso_object_name \u003d _get_boot_iso_object_name(node)"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a50d1a3_7f2cd998","line":199,"updated":"2015-07-23 07:23:31.000000000","message":"Though it\u0027s okay, I would like if this condition was first and CONF.ilo.use_web_server_for_images was next, so that we clean up any swift images for instances that were deployed before this support.\n\n  if ilo_boot_iso.startswith(\u0027swift\u0027):\n    \u003cremove the boot iso from swift\u003e\n  elif CONF.ilo.use_web_server_for_images:\n    \u003cremove from http web server\u003e","commit_id":"37d59782a7d70fbd02ea0b98f37ad69874ebb21b"},{"author":{"_account_id":11297,"name":"Nisha Agarwal","email":"agarwalnisha1980@gmail.com","username":"Nisha"},"change_message_id":"dbda6e0b1b525e5bfbca26d492a3c2744e23cea5","unresolved":false,"context_lines":[{"line_number":196,"context_line":"            CONF.deploy.http_root, os.path.basename(ilo_boot_iso))"},{"line_number":197,"context_line":"        os.remove(boot_iso_path)"},{"line_number":198,"context_line":"        return"},{"line_number":199,"context_line":"    elif (ilo_boot_iso.startswith(\u0027swift\u0027)):"},{"line_number":200,"context_line":"        swift_api \u003d swift.SwiftAPI()"},{"line_number":201,"context_line":"        container \u003d CONF.ilo.swift_ilo_container"},{"line_number":202,"context_line":"        boot_iso_object_name \u003d _get_boot_iso_object_name(node)"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a50d1a3_dd8ad263","line":199,"in_reply_to":"3a50d1a3_7f2cd998","updated":"2015-07-23 08:36:25.000000000","message":"I dont think the sequence of if condition here matters.","commit_id":"37d59782a7d70fbd02ea0b98f37ad69874ebb21b"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"6c39f4c47e1e87623abfc531283407785e81a2e3","unresolved":false,"context_lines":[{"line_number":196,"context_line":"            CONF.deploy.http_root, os.path.basename(ilo_boot_iso))"},{"line_number":197,"context_line":"        os.remove(boot_iso_path)"},{"line_number":198,"context_line":"        return"},{"line_number":199,"context_line":"    elif (ilo_boot_iso.startswith(\u0027swift\u0027)):"},{"line_number":200,"context_line":"        swift_api \u003d swift.SwiftAPI()"},{"line_number":201,"context_line":"        container \u003d CONF.ilo.swift_ilo_container"},{"line_number":202,"context_line":"        boot_iso_object_name \u003d _get_boot_iso_object_name(node)"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a50d1a3_7d985e1c","line":199,"in_reply_to":"3a50d1a3_dd8ad263","updated":"2015-07-23 08:46:29.000000000","message":"The order matters if someone was using swift now starts using http web server.  They might have instances deployed which was making use of swift and might have it in ilo_boot_iso.  With current code, we will check and try to remove the boot_iso_path instead of cleaning up the previously used swift boot iso.","commit_id":"37d59782a7d70fbd02ea0b98f37ad69874ebb21b"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"880959c15840defbd360d9de5d2443571b342be3","unresolved":false,"context_lines":[{"line_number":127,"context_line":"            except exception.ImageRefValidationFailed:"},{"line_number":128,"context_line":"                with excutils.save_and_reraise_exception():"},{"line_number":129,"context_line":"                    LOG.error(_LE(\"Virtual media deploy accepts only Glance \""},{"line_number":130,"context_line":"                                  \"images or HTTP(S) URLs. Either %s \""},{"line_number":131,"context_line":"                                  \"is not a valid HTTP(s) URL or is \""},{"line_number":132,"context_line":"                                  \"not reachable.\"), boot_iso)"},{"line_number":133,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"3a50d1a3_f5c6cf66","line":130,"updated":"2015-07-29 05:09:48.000000000","message":"Why are we changing this.  I think this is correct for now.","commit_id":"017078a44dd5602b8186870fafe719a088655cc8"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"880959c15840defbd360d9de5d2443571b342be3","unresolved":false,"context_lines":[{"line_number":180,"context_line":"        if CONF.ilo.use_web_server_for_images:"},{"line_number":181,"context_line":"            boot_iso_url \u003d ("},{"line_number":182,"context_line":"                ilo_common.copy_image_to_web_server(boot_iso_tmp_file))"},{"line_number":183,"context_line":"            LOG.debug(\"Created boot_iso %s at http web server\", boot_iso_url)"},{"line_number":184,"context_line":"            return boot_iso_url"},{"line_number":185,"context_line":"        else:"},{"line_number":186,"context_line":"            container \u003d CONF.ilo.swift_ilo_container"}],"source_content_type":"text/x-python","patch_set":3,"id":"3a50d1a3_75807ff7","line":183,"updated":"2015-07-29 05:09:48.000000000","message":"Better to log node uuid as well. As noted in the previous comment on ilo/common.py, better to preserve the name for the target file as boot-\u003cnode-uuid\u003e.  So we should be moving the file to http_root with the name boot-\u003cnode-uuid\u003e","commit_id":"017078a44dd5602b8186870fafe719a088655cc8"},{"author":{"_account_id":11297,"name":"Nisha Agarwal","email":"agarwalnisha1980@gmail.com","username":"Nisha"},"change_message_id":"82505fd8cb31271314cbce941db330a1112a7783","unresolved":false,"context_lines":[{"line_number":180,"context_line":"        if CONF.ilo.use_web_server_for_images:"},{"line_number":181,"context_line":"            boot_iso_url \u003d ("},{"line_number":182,"context_line":"                ilo_common.copy_image_to_web_server(boot_iso_tmp_file))"},{"line_number":183,"context_line":"            LOG.debug(\"Created boot_iso %s at http web server\", boot_iso_url)"},{"line_number":184,"context_line":"            return boot_iso_url"},{"line_number":185,"context_line":"        else:"},{"line_number":186,"context_line":"            container \u003d CONF.ilo.swift_ilo_container"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a4dcd0f_71527269","line":183,"in_reply_to":"3a50d1a3_75807ff7","updated":"2015-08-04 10:43:23.000000000","message":"yes it is same one only","commit_id":"017078a44dd5602b8186870fafe719a088655cc8"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"880959c15840defbd360d9de5d2443571b342be3","unresolved":false,"context_lines":[{"line_number":192,"context_line":"            return \u0027swift:%s\u0027 % boot_iso_object_name"},{"line_number":193,"context_line":""},{"line_number":194,"context_line":""},{"line_number":195,"context_line":"def _clean_up_boot_iso_for_instance(node):"},{"line_number":196,"context_line":"    \"\"\"Deletes the boot ISO if it was created in Swift for the instance."},{"line_number":197,"context_line":""},{"line_number":198,"context_line":"    :param node: an ironic node object."}],"source_content_type":"text/x-python","patch_set":3,"id":"3a50d1a3_d57e33e3","line":195,"updated":"2015-07-29 05:09:48.000000000","message":"Missing test cases for this change.","commit_id":"017078a44dd5602b8186870fafe719a088655cc8"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"880959c15840defbd360d9de5d2443571b342be3","unresolved":false,"context_lines":[{"line_number":211,"context_line":"                              \"Error: %(error)s.\"),"},{"line_number":212,"context_line":"                          {\u0027node\u0027: node.uuid, \u0027error\u0027: e})"},{"line_number":213,"context_line":""},{"line_number":214,"context_line":"    if CONF.ilo.use_web_server_for_images:"},{"line_number":215,"context_line":"        boot_iso_path \u003d os.path.join("},{"line_number":216,"context_line":"            CONF.deploy.http_root, os.path.basename(ilo_boot_iso))"},{"line_number":217,"context_line":"        utils.unlink_without_raise(boot_iso_path)"}],"source_content_type":"text/x-python","patch_set":3,"id":"3a50d1a3_55a1c392","line":214,"updated":"2015-07-29 05:09:48.000000000","message":"nit: Only elif because they are mutually exclusive.","commit_id":"017078a44dd5602b8186870fafe719a088655cc8"},{"author":{"_account_id":11297,"name":"Nisha Agarwal","email":"agarwalnisha1980@gmail.com","username":"Nisha"},"change_message_id":"82505fd8cb31271314cbce941db330a1112a7783","unresolved":false,"context_lines":[{"line_number":211,"context_line":"                              \"Error: %(error)s.\"),"},{"line_number":212,"context_line":"                          {\u0027node\u0027: node.uuid, \u0027error\u0027: e})"},{"line_number":213,"context_line":""},{"line_number":214,"context_line":"    if CONF.ilo.use_web_server_for_images:"},{"line_number":215,"context_line":"        boot_iso_path \u003d os.path.join("},{"line_number":216,"context_line":"            CONF.deploy.http_root, os.path.basename(ilo_boot_iso))"},{"line_number":217,"context_line":"        utils.unlink_without_raise(boot_iso_path)"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a4dcd0f_34b7f83a","line":214,"in_reply_to":"3a50d1a3_55a1c392","updated":"2015-08-04 10:43:23.000000000","message":"ok","commit_id":"017078a44dd5602b8186870fafe719a088655cc8"},{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"c4ac5cecd7678ce9d9b54d768b52bf45fd1046a0","unresolved":false,"context_lines":[{"line_number":68,"context_line":"CONF.import_opt(\u0027swift_ilo_container\u0027, \u0027ironic.drivers.modules.ilo.common\u0027,"},{"line_number":69,"context_line":"                group\u003d\u0027ilo\u0027)"},{"line_number":70,"context_line":"CONF.import_opt(\u0027http_url\u0027, \u0027ironic.drivers.modules.deploy_utils\u0027,"},{"line_number":71,"context_line":"                group\u003d\u0027deploy\u0027)"},{"line_number":72,"context_line":"CONF.import_opt(\u0027http_root\u0027, \u0027ironic.drivers.modules.deploy_utils\u0027,"},{"line_number":73,"context_line":"                group\u003d\u0027deploy\u0027)"},{"line_number":74,"context_line":"CONF.import_opt(\u0027use_web_server_for_images\u0027,"}],"source_content_type":"text/x-python","patch_set":9,"id":"1a4dcd0f_1a20e3f6","line":71,"updated":"2015-08-10 09:34:27.000000000","message":"ditto","commit_id":"3421b6e55af07c2d185d356187f20d9d459462f1"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"f1e39ea7fdccd6f1f689bc0203c9cd935805ae0f","unresolved":false,"context_lines":[{"line_number":182,"context_line":"            boot_iso_url \u003d ("},{"line_number":183,"context_line":"                ilo_common.copy_image_to_web_server(boot_iso_tmp_file,"},{"line_number":184,"context_line":"                                                    boot_iso_object_name))"},{"line_number":185,"context_line":"            LOG.debug(\"Created boot_iso %(boot_iso)s at http web server \""},{"line_number":186,"context_line":"                      \"for node %(node)s\","},{"line_number":187,"context_line":"                      {\u0027boot_iso\u0027: boot_iso_url, \u0027node\u0027: task.node.uuid})"},{"line_number":188,"context_line":"            return boot_iso_url"}],"source_content_type":"text/x-python","patch_set":9,"id":"1a4dcd0f_7e65bb42","line":185,"updated":"2015-08-12 21:57:02.000000000","message":"It is a URL so I don\u0027t know that you need to mention \u0027at http web server\u0027 but if you find it helpful it is fine.","commit_id":"3421b6e55af07c2d185d356187f20d9d459462f1"},{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"c4ac5cecd7678ce9d9b54d768b52bf45fd1046a0","unresolved":false,"context_lines":[{"line_number":197,"context_line":""},{"line_number":198,"context_line":""},{"line_number":199,"context_line":"def _clean_up_boot_iso_for_instance(node):"},{"line_number":200,"context_line":"    \"\"\"Deletes the boot ISO if it was created in Swift for the instance."},{"line_number":201,"context_line":""},{"line_number":202,"context_line":"    :param node: an ironic node object."},{"line_number":203,"context_line":"    \"\"\""}],"source_content_type":"text/x-python","patch_set":9,"id":"1a4dcd0f_baec4f90","line":200,"updated":"2015-08-10 09:34:27.000000000","message":"nit - Deletes the boot ISO if it was created for the instance.","commit_id":"3421b6e55af07c2d185d356187f20d9d459462f1"},{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"5d1235bb1f4c5d5a7e6491ed52876a13722e1151","unresolved":false,"context_lines":[{"line_number":216,"context_line":"                          {\u0027node\u0027: node.uuid, \u0027error\u0027: e})"},{"line_number":217,"context_line":"    elif CONF.ilo.use_web_server_for_images:"},{"line_number":218,"context_line":"        boot_iso_path \u003d os.path.join("},{"line_number":219,"context_line":"            CONF.deploy.http_root, os.path.basename(ilo_boot_iso))"},{"line_number":220,"context_line":"        utils.unlink_without_raise(boot_iso_path)"},{"line_number":221,"context_line":""},{"line_number":222,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"1a4dcd0f_4dbd97af","line":219,"updated":"2015-08-13 12:46:13.000000000","message":"Looks like it is url, please use urlparse().","commit_id":"3421b6e55af07c2d185d356187f20d9d459462f1"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"f1e39ea7fdccd6f1f689bc0203c9cd935805ae0f","unresolved":false,"context_lines":[{"line_number":216,"context_line":"                          {\u0027node\u0027: node.uuid, \u0027error\u0027: e})"},{"line_number":217,"context_line":"    elif CONF.ilo.use_web_server_for_images:"},{"line_number":218,"context_line":"        boot_iso_path \u003d os.path.join("},{"line_number":219,"context_line":"            CONF.deploy.http_root, os.path.basename(ilo_boot_iso))"},{"line_number":220,"context_line":"        utils.unlink_without_raise(boot_iso_path)"},{"line_number":221,"context_line":""},{"line_number":222,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"1a4dcd0f_de040f4b","line":219,"updated":"2015-08-12 21:57:02.000000000","message":"is ilo_boot_iso a URL or a unix path?","commit_id":"3421b6e55af07c2d185d356187f20d9d459462f1"},{"author":{"_account_id":11297,"name":"Nisha Agarwal","email":"agarwalnisha1980@gmail.com","username":"Nisha"},"change_message_id":"df14160f7ef14169efa199aa81bd412fbaadf6b3","unresolved":false,"context_lines":[{"line_number":216,"context_line":"                          {\u0027node\u0027: node.uuid, \u0027error\u0027: e})"},{"line_number":217,"context_line":"    elif CONF.ilo.use_web_server_for_images:"},{"line_number":218,"context_line":"        boot_iso_path \u003d os.path.join("},{"line_number":219,"context_line":"            CONF.deploy.http_root, os.path.basename(ilo_boot_iso))"},{"line_number":220,"context_line":"        utils.unlink_without_raise(boot_iso_path)"},{"line_number":221,"context_line":""},{"line_number":222,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"fa1b9901_77b6fc3e","line":219,"in_reply_to":"1a4dcd0f_4dbd97af","updated":"2015-08-18 03:15:29.000000000","message":"Even if it is URL, the os.path.basename works well over the boot iso urls becuase there is no possibility of any extra params. I can use urlparse but that just increases complexity.","commit_id":"3421b6e55af07c2d185d356187f20d9d459462f1"},{"author":{"_account_id":14760,"name":"John L. Villalovos","email":"openstack.org@sodarock.com","username":"jlvillal"},"change_message_id":"d63162b9d8963d29f108438e9fb90047f46f8f6e","unresolved":false,"context_lines":[{"line_number":17,"context_line":""},{"line_number":18,"context_line":"import os"},{"line_number":19,"context_line":"import tempfile"},{"line_number":20,"context_line":"from urlparse import urlparse"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"from oslo_config import cfg"},{"line_number":23,"context_line":"from oslo_log import log as logging"}],"source_content_type":"text/x-python","patch_set":11,"id":"fa1b9901_287a37f2","line":20,"updated":"2015-08-18 14:01:01.000000000","message":"As mentioned in a different file.  Should use six.moves for Python 3 compatibility\n\nhttps://pythonhosted.org/six/","commit_id":"f05e6f77d29972f881f7091c3699e87f830cfef6"},{"author":{"_account_id":11297,"name":"Nisha Agarwal","email":"agarwalnisha1980@gmail.com","username":"Nisha"},"change_message_id":"8d2402311099a263d835f04ffe1c85a93be55b90","unresolved":false,"context_lines":[{"line_number":17,"context_line":""},{"line_number":18,"context_line":"import os"},{"line_number":19,"context_line":"import tempfile"},{"line_number":20,"context_line":"from urlparse import urlparse"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"from oslo_config import cfg"},{"line_number":23,"context_line":"from oslo_log import log as logging"}],"source_content_type":"text/x-python","patch_set":11,"id":"fa1b9901_d6ea2eac","line":20,"in_reply_to":"fa1b9901_287a37f2","updated":"2015-08-18 19:23:13.000000000","message":"ok","commit_id":"f05e6f77d29972f881f7091c3699e87f830cfef6"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"ee1ea9267f142ba70abb43ecba76668b10b901f5","unresolved":false,"context_lines":[{"line_number":16,"context_line":"\"\"\""},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"import os"},{"line_number":19,"context_line":"import six.moves.urllib.parse as urlparse"},{"line_number":20,"context_line":"import tempfile"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"from oslo_config import cfg"}],"source_content_type":"text/x-python","patch_set":14,"id":"fa1b9901_d4664aec","line":19,"updated":"2015-08-26 09:56:41.000000000","message":"again six should be down on the second section","commit_id":"61fabfe59363d251fd11ca9ef5b8eb6628c930d5"},{"author":{"_account_id":11297,"name":"Nisha Agarwal","email":"agarwalnisha1980@gmail.com","username":"Nisha"},"change_message_id":"6a3d62b859672b88a54430d19758dc2cc81e2e03","unresolved":false,"context_lines":[{"line_number":16,"context_line":"\"\"\""},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"import os"},{"line_number":19,"context_line":"import six.moves.urllib.parse as urlparse"},{"line_number":20,"context_line":"import tempfile"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"from oslo_config import cfg"}],"source_content_type":"text/x-python","patch_set":14,"id":"da20952f_8a1a896d","line":19,"in_reply_to":"fa1b9901_d4664aec","updated":"2015-08-26 22:22:10.000000000","message":"k","commit_id":"61fabfe59363d251fd11ca9ef5b8eb6628c930d5"},{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"142896da63372a5522953371bd0a3af5ab5a6c25","unresolved":false,"context_lines":[{"line_number":204,"context_line":"        try:"},{"line_number":205,"context_line":"            swift_api.delete_object(container, boot_iso_object_name)"},{"line_number":206,"context_line":"        except exception.SwiftOperationError as e:"},{"line_number":207,"context_line":"            LOG.exception(_LE(\"Failed to clean up boot ISO for %(node)s.\""},{"line_number":208,"context_line":"                              \"Error: %(error)s.\"),"},{"line_number":209,"context_line":"                          {\u0027node\u0027: node.uuid, \u0027error\u0027: e})"},{"line_number":210,"context_line":"    elif CONF.ilo.use_web_server_for_images:"}],"source_content_type":"text/x-python","patch_set":14,"id":"da20952f_fc2f65f4","line":207,"updated":"2015-08-26 16:23:40.000000000","message":"nit - for node %(node)s.","commit_id":"61fabfe59363d251fd11ca9ef5b8eb6628c930d5"},{"author":{"_account_id":11297,"name":"Nisha Agarwal","email":"agarwalnisha1980@gmail.com","username":"Nisha"},"change_message_id":"6a3d62b859672b88a54430d19758dc2cc81e2e03","unresolved":false,"context_lines":[{"line_number":204,"context_line":"        try:"},{"line_number":205,"context_line":"            swift_api.delete_object(container, boot_iso_object_name)"},{"line_number":206,"context_line":"        except exception.SwiftOperationError as e:"},{"line_number":207,"context_line":"            LOG.exception(_LE(\"Failed to clean up boot ISO for %(node)s.\""},{"line_number":208,"context_line":"                              \"Error: %(error)s.\"),"},{"line_number":209,"context_line":"                          {\u0027node\u0027: node.uuid, \u0027error\u0027: e})"},{"line_number":210,"context_line":"    elif CONF.ilo.use_web_server_for_images:"}],"source_content_type":"text/x-python","patch_set":14,"id":"da20952f_0a2519aa","line":207,"in_reply_to":"da20952f_fc2f65f4","updated":"2015-08-26 22:22:10.000000000","message":"ok","commit_id":"61fabfe59363d251fd11ca9ef5b8eb6628c930d5"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"61d4f2e1f9239cf787e90604dfbb212caa358d4e","unresolved":false,"context_lines":[{"line_number":197,"context_line":"    ilo_boot_iso \u003d node.instance_info.get(\u0027ilo_boot_iso\u0027)"},{"line_number":198,"context_line":"    if not ilo_boot_iso:"},{"line_number":199,"context_line":"        return"},{"line_number":200,"context_line":"    if (ilo_boot_iso.startswith(\u0027swift\u0027)):"},{"line_number":201,"context_line":"        swift_api \u003d swift.SwiftAPI()"},{"line_number":202,"context_line":"        container \u003d CONF.ilo.swift_ilo_container"},{"line_number":203,"context_line":"        boot_iso_object_name \u003d _get_boot_iso_object_name(node)"}],"source_content_type":"text/x-python","patch_set":17,"id":"da20952f_d5063d1b","line":200,"updated":"2015-08-31 10:23:20.000000000","message":"nit: () not needed","commit_id":"c829ffa00b5f10440ed716d103bc1b50be28517d"},{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"cad9f288f49ce2b9bf3474c3862abd5a352369d1","unresolved":false,"context_lines":[{"line_number":159,"context_line":"    # will require synchronisation across conductor nodes for the shared boot"},{"line_number":160,"context_line":"    # ISO.  Such a synchronisation mechanism doesn\u0027t exist in ironic as of now."},{"line_number":161,"context_line":""},{"line_number":162,"context_line":"    # Option 3 - Create boot_iso from kernel/ramdisk, upload to Swift"},{"line_number":163,"context_line":"    # and provide its name."},{"line_number":164,"context_line":"    deploy_iso_uuid \u003d deploy_info[\u0027ilo_deploy_iso\u0027]"},{"line_number":165,"context_line":"    boot_mode \u003d deploy_utils.get_boot_mode_for_deploy(task.node)"}],"source_content_type":"text/x-python","patch_set":18,"id":"da20952f_be425366","line":162,"updated":"2015-09-01 09:18:33.000000000","message":"to swift or web server.","commit_id":"1f8daee97095bebb784e425f7fc8a0023fb1f947"},{"author":{"_account_id":11297,"name":"Nisha Agarwal","email":"agarwalnisha1980@gmail.com","username":"Nisha"},"change_message_id":"ee59ef7b70ddb3bfcc7310643d4d237c33d7fc1e","unresolved":false,"context_lines":[{"line_number":159,"context_line":"    # will require synchronisation across conductor nodes for the shared boot"},{"line_number":160,"context_line":"    # ISO.  Such a synchronisation mechanism doesn\u0027t exist in ironic as of now."},{"line_number":161,"context_line":""},{"line_number":162,"context_line":"    # Option 3 - Create boot_iso from kernel/ramdisk, upload to Swift"},{"line_number":163,"context_line":"    # and provide its name."},{"line_number":164,"context_line":"    deploy_iso_uuid \u003d deploy_info[\u0027ilo_deploy_iso\u0027]"},{"line_number":165,"context_line":"    boot_mode \u003d deploy_utils.get_boot_mode_for_deploy(task.node)"}],"source_content_type":"text/x-python","patch_set":18,"id":"da20952f_64174a45","line":162,"in_reply_to":"da20952f_be425366","updated":"2015-09-01 09:55:45.000000000","message":"ok","commit_id":"1f8daee97095bebb784e425f7fc8a0023fb1f947"},{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"3427dc028995dca65236c0b5f7f9bfe92c9d5f85","unresolved":false,"context_lines":[{"line_number":86,"context_line":"    1. Does nothing if \u0027ilo_boot_iso\u0027 is present in node\u0027s instance_info."},{"line_number":87,"context_line":"    2. Image deployed has a meta-property \u0027boot_iso\u0027 in Glance. This should"},{"line_number":88,"context_line":"       refer to the UUID of the boot_iso which exists in Glance."},{"line_number":89,"context_line":"    3. Generates a boot ISO on the fly using kernel and ramdisk mentioned in"},{"line_number":90,"context_line":"       the image deployed. It uploads the generated boot ISO to Swift."},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"    :param task: a TaskManager instance containing the node to act on."}],"source_content_type":"text/x-python","patch_set":19,"id":"da20952f_6f75e361","line":89,"updated":"2015-09-01 10:08:56.000000000","message":"Oh, I missed docstring too, but it can be in a followup.","commit_id":"a5e2256d77c369de7c8571d51a8ea35501fe8e98"},{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"a50c77891ba7594b375afeea0f133929ba3d6cd3","unresolved":false,"context_lines":[{"line_number":210,"context_line":"    elif CONF.ilo.use_web_server_for_images:"},{"line_number":211,"context_line":"        result \u003d urlparse.urlparse(ilo_boot_iso)"},{"line_number":212,"context_line":"        ilo_boot_iso_name \u003d os.path.basename(result.path)"},{"line_number":213,"context_line":"        boot_iso_path \u003d os.path.join("},{"line_number":214,"context_line":"            CONF.deploy.http_root, ilo_boot_iso_name)"},{"line_number":215,"context_line":"        utils.unlink_without_raise(boot_iso_path)"},{"line_number":216,"context_line":""}],"source_content_type":"text/x-python","patch_set":19,"id":"da20952f_845cd94b","line":213,"updated":"2015-09-01 11:43:42.000000000","message":"We have destroy_floppy_image_from_web_server() function in common, can be used here.","commit_id":"a5e2256d77c369de7c8571d51a8ea35501fe8e98"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"2659719c180160dad2ea57b363721e9e9b6e8a9d","unresolved":false,"context_lines":[{"line_number":123,"context_line":"                    LOG.error(_LE(\"Virtual media deploy accepts only Glance \""},{"line_number":124,"context_line":"                                  \"images or HTTP(S) URLs as \""},{"line_number":125,"context_line":"                                  \"instance_info[\u0027ilo_boot_iso\u0027]. Either %s \""},{"line_number":126,"context_line":"                                  \"is not a valid HTTP(s) URL or is \""},{"line_number":127,"context_line":"                                  \"not reachable.\"), boot_iso)"},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"        return task.node.instance_info[\u0027ilo_boot_iso\u0027]"}],"source_content_type":"text/x-python","patch_set":23,"id":"da20952f_0948a7cb","line":126,"updated":"2015-09-09 09:31:10.000000000","message":"It is HTTP(S), right ? Why is this changed ?","commit_id":"041d113e8f421eb7ae00094237055d53920d4740"}],"ironic/tests/common/test_images.py":[{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"61d4f2e1f9239cf787e90604dfbb212caa358d4e","unresolved":false,"context_lines":[{"line_number":743,"context_line":"        fetch_images_mock.assert_any_call("},{"line_number":744,"context_line":"            \u0027ctx\u0027, \u0027http://ramdisk-href\u0027, \u0027tmpdir/ramdisk-href\u0027)"},{"line_number":745,"context_line":"        fetch_images_mock.assert_any_call("},{"line_number":746,"context_line":"            \u0027ctx\u0027, \u0027http://deploy_iso-href\u0027, \u0027tmpdir/deploy_iso-href\u0027)"},{"line_number":747,"context_line":""},{"line_number":748,"context_line":"        params \u003d [\u0027root\u003dUUID\u003droot-uuid\u0027, \u0027kernel-params\u0027]"},{"line_number":749,"context_line":"        create_isolinux_mock.assert_called_once_with("}],"source_content_type":"text/x-python","patch_set":17,"id":"da20952f_157b55f6","line":746,"updated":"2015-08-31 10:23:20.000000000","message":"Can we test here that only those calls are made and in the right order?\n\nI find the assert_any_call kinda weak, I think we are better off testing exactly what is being called and in the right order, i.e:\n\n expected_calls \u003d [mock.call(\u0027ctx\u0027, \u0027http://kernel-href\u0027, \u0027tmpdir/kernel-href\u0027),\n                   mock.call(\u0027ctx\u0027, \u0027http://ramdisk-href\u0027, \u0027tmpdir/ramdisk-href\u0027),\n                   mock.call(\u0027ctx\u0027, \u0027http://deploy_iso-href\u0027, \u0027tmpdir/deploy_iso-href\u0027)]\n fetch_images_mock.assert_has_calls(expected_calls)","commit_id":"c829ffa00b5f10440ed716d103bc1b50be28517d"},{"author":{"_account_id":11297,"name":"Nisha Agarwal","email":"agarwalnisha1980@gmail.com","username":"Nisha"},"change_message_id":"bb46c5ad15542ea729924e733a1937de0e7587be","unresolved":false,"context_lines":[{"line_number":743,"context_line":"        fetch_images_mock.assert_any_call("},{"line_number":744,"context_line":"            \u0027ctx\u0027, \u0027http://ramdisk-href\u0027, \u0027tmpdir/ramdisk-href\u0027)"},{"line_number":745,"context_line":"        fetch_images_mock.assert_any_call("},{"line_number":746,"context_line":"            \u0027ctx\u0027, \u0027http://deploy_iso-href\u0027, \u0027tmpdir/deploy_iso-href\u0027)"},{"line_number":747,"context_line":""},{"line_number":748,"context_line":"        params \u003d [\u0027root\u003dUUID\u003droot-uuid\u0027, \u0027kernel-params\u0027]"},{"line_number":749,"context_line":"        create_isolinux_mock.assert_called_once_with("}],"source_content_type":"text/x-python","patch_set":17,"id":"da20952f_e2cdae66","line":746,"in_reply_to":"da20952f_157b55f6","updated":"2015-09-01 04:03:34.000000000","message":"Ok done. Thanks fo rthe suggestion.","commit_id":"c829ffa00b5f10440ed716d103bc1b50be28517d"}],"ironic/tests/drivers/ilo/test_common.py":[{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"880959c15840defbd360d9de5d2443571b342be3","unresolved":false,"context_lines":[{"line_number":224,"context_line":"                       autospec\u003dTrue)"},{"line_number":225,"context_line":"    @mock.patch.object(tempfile, \u0027NamedTemporaryFile\u0027, spec_set\u003dTrue,"},{"line_number":226,"context_line":"                       autospec\u003dTrue)"},{"line_number":227,"context_line":"    def test__prepare_floppy_image_use_webserver(self, tempfile_mock,"},{"line_number":228,"context_line":"                                                 fatimage_mock,"},{"line_number":229,"context_line":"                                                 shutil_mock, chmod_mock):"},{"line_number":230,"context_line":"        mock_image_file_handle \u003d mock.MagicMock(spec\u003dfile)"}],"source_content_type":"text/x-python","patch_set":3,"id":"3a50d1a3_15bedbad","line":227,"updated":"2015-07-29 05:09:48.000000000","message":"We can just mock copy_image_to_web_server if we had a separate test case for copy_image_to_web_server","commit_id":"017078a44dd5602b8186870fafe719a088655cc8"},{"author":{"_account_id":11297,"name":"Nisha Agarwal","email":"agarwalnisha1980@gmail.com","username":"Nisha"},"change_message_id":"82505fd8cb31271314cbce941db330a1112a7783","unresolved":false,"context_lines":[{"line_number":224,"context_line":"                       autospec\u003dTrue)"},{"line_number":225,"context_line":"    @mock.patch.object(tempfile, \u0027NamedTemporaryFile\u0027, spec_set\u003dTrue,"},{"line_number":226,"context_line":"                       autospec\u003dTrue)"},{"line_number":227,"context_line":"    def test__prepare_floppy_image_use_webserver(self, tempfile_mock,"},{"line_number":228,"context_line":"                                                 fatimage_mock,"},{"line_number":229,"context_line":"                                                 shutil_mock, chmod_mock):"},{"line_number":230,"context_line":"        mock_image_file_handle \u003d mock.MagicMock(spec\u003dfile)"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a4dcd0f_d4e9f41b","line":227,"in_reply_to":"3a50d1a3_15bedbad","updated":"2015-08-04 10:43:23.000000000","message":"i havent changed this but i have added test case for copy_image_to_web_server()","commit_id":"017078a44dd5602b8186870fafe719a088655cc8"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"880959c15840defbd360d9de5d2443571b342be3","unresolved":false,"context_lines":[{"line_number":455,"context_line":""},{"line_number":456,"context_line":"    @mock.patch.object(ilo_common, \u0027attach_vmedia\u0027, spec_set\u003dTrue,"},{"line_number":457,"context_line":"                       autospec\u003dTrue)"},{"line_number":458,"context_line":"    @mock.patch.object(image_service.HttpImageService, \u0027validate_href\u0027,"},{"line_number":459,"context_line":"                       spec_set\u003dTrue, autospec\u003dTrue)"},{"line_number":460,"context_line":"    def test_setup_vmedia_for_boot_with_url(self, validate_mock,"},{"line_number":461,"context_line":"                                            attach_vmedia_mock):"}],"source_content_type":"text/x-python","patch_set":3,"id":"3a50d1a3_95e8abb4","line":458,"updated":"2015-07-29 05:09:48.000000000","message":"Should be removed once the corresponding code is removed.","commit_id":"017078a44dd5602b8186870fafe719a088655cc8"},{"author":{"_account_id":11297,"name":"Nisha Agarwal","email":"agarwalnisha1980@gmail.com","username":"Nisha"},"change_message_id":"82505fd8cb31271314cbce941db330a1112a7783","unresolved":false,"context_lines":[{"line_number":455,"context_line":""},{"line_number":456,"context_line":"    @mock.patch.object(ilo_common, \u0027attach_vmedia\u0027, spec_set\u003dTrue,"},{"line_number":457,"context_line":"                       autospec\u003dTrue)"},{"line_number":458,"context_line":"    @mock.patch.object(image_service.HttpImageService, \u0027validate_href\u0027,"},{"line_number":459,"context_line":"                       spec_set\u003dTrue, autospec\u003dTrue)"},{"line_number":460,"context_line":"    def test_setup_vmedia_for_boot_with_url(self, validate_mock,"},{"line_number":461,"context_line":"                                            attach_vmedia_mock):"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a4dcd0f_b4f8e8e6","line":458,"in_reply_to":"3a50d1a3_95e8abb4","updated":"2015-08-04 10:43:23.000000000","message":"ok","commit_id":"017078a44dd5602b8186870fafe719a088655cc8"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"357fcd9da412dbfb431798806f4f887540fca631","unresolved":false,"context_lines":[{"line_number":217,"context_line":"            \u0027ilo_cont\u0027, object_name, timeout)"},{"line_number":218,"context_line":"        self.assertEqual(\u0027temp-url\u0027, temp_url)"},{"line_number":219,"context_line":""},{"line_number":220,"context_line":"    @mock.patch.object(os, \u0027chmod\u0027, spec_set\u003dTrue, autospec\u003dTrue)"},{"line_number":221,"context_line":"    @mock.patch.object(shutil, \u0027copyfile\u0027, spec_set\u003dTrue, autospec\u003dTrue)"},{"line_number":222,"context_line":"    @mock.patch.object(images, \u0027create_vfat_image\u0027, spec_set\u003dTrue,"},{"line_number":223,"context_line":"                       autospec\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":5,"id":"1a4dcd0f_83453d18","line":220,"updated":"2015-08-05 06:11:10.000000000","message":"we may just mock ilo_common.copy_image_to_web_server","commit_id":"cb4dbc91a4c2fa8ad3292fe2ab5c52863ef04fd6"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"32cfe2f5dcc4b1a5104749347acf230ba02c0e53","unresolved":false,"context_lines":[{"line_number":218,"context_line":"        self.assertEqual(\u0027temp-url\u0027, temp_url)"},{"line_number":219,"context_line":""},{"line_number":220,"context_line":"    @mock.patch.object(os, \u0027chmod\u0027, spec_set\u003dTrue, autospec\u003dTrue)"},{"line_number":221,"context_line":"    @mock.patch.object(shutil, \u0027copyfile\u0027, spec_set\u003dTrue, autospec\u003dTrue)"},{"line_number":222,"context_line":"    @mock.patch.object(images, \u0027create_vfat_image\u0027, spec_set\u003dTrue,"},{"line_number":223,"context_line":"                       autospec\u003dTrue)"},{"line_number":224,"context_line":"    @mock.patch.object(tempfile, \u0027NamedTemporaryFile\u0027, spec_set\u003dTrue,"}],"source_content_type":"text/x-python","patch_set":6,"id":"1a4dcd0f_546fe991","line":221,"updated":"2015-08-05 07:35:05.000000000","message":"better if we just mock copy_image_to_web_server","commit_id":"82f0afb6da54137a14f9201612a3b8522e7f68cb"},{"author":{"_account_id":11297,"name":"Nisha Agarwal","email":"agarwalnisha1980@gmail.com","username":"Nisha"},"change_message_id":"27c5d3b4048763b1da2924023f80ac15871b0a0a","unresolved":false,"context_lines":[{"line_number":218,"context_line":"        self.assertEqual(\u0027temp-url\u0027, temp_url)"},{"line_number":219,"context_line":""},{"line_number":220,"context_line":"    @mock.patch.object(os, \u0027chmod\u0027, spec_set\u003dTrue, autospec\u003dTrue)"},{"line_number":221,"context_line":"    @mock.patch.object(shutil, \u0027copyfile\u0027, spec_set\u003dTrue, autospec\u003dTrue)"},{"line_number":222,"context_line":"    @mock.patch.object(images, \u0027create_vfat_image\u0027, spec_set\u003dTrue,"},{"line_number":223,"context_line":"                       autospec\u003dTrue)"},{"line_number":224,"context_line":"    @mock.patch.object(tempfile, \u0027NamedTemporaryFile\u0027, spec_set\u003dTrue,"}],"source_content_type":"text/x-python","patch_set":6,"id":"1a4dcd0f_5802b370","line":221,"in_reply_to":"1a4dcd0f_546fe991","updated":"2015-08-05 10:25:20.000000000","message":"ok.","commit_id":"82f0afb6da54137a14f9201612a3b8522e7f68cb"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"ee1ea9267f142ba70abb43ecba76668b10b901f5","unresolved":false,"context_lines":[{"line_number":235,"context_line":"        tempfile_mock.return_value \u003d mock_image_file_handle"},{"line_number":236,"context_line":"        self.config(use_web_server_for_images\u003dTrue, group\u003d\u0027ilo\u0027)"},{"line_number":237,"context_line":"        deploy_args \u003d {\u0027arg1\u0027: \u0027val1\u0027, \u0027arg2\u0027: \u0027val2\u0027}"},{"line_number":238,"context_line":"        CONF.deploy.http_url \u003d \"http://abc.com/httpboot\""},{"line_number":239,"context_line":"        CONF.deploy.http_root \u003d \"/httpboot\""},{"line_number":240,"context_line":""},{"line_number":241,"context_line":"        with task_manager.acquire(self.context, self.node.uuid,"}],"source_content_type":"text/x-python","patch_set":14,"id":"fa1b9901_14b602f9","line":238,"updated":"2015-08-26 09:56:41.000000000","message":"These are not required as the CONF variables are not used in this part of the code.","commit_id":"61fabfe59363d251fd11ca9ef5b8eb6628c930d5"},{"author":{"_account_id":11297,"name":"Nisha Agarwal","email":"agarwalnisha1980@gmail.com","username":"Nisha"},"change_message_id":"6a3d62b859672b88a54430d19758dc2cc81e2e03","unresolved":false,"context_lines":[{"line_number":235,"context_line":"        tempfile_mock.return_value \u003d mock_image_file_handle"},{"line_number":236,"context_line":"        self.config(use_web_server_for_images\u003dTrue, group\u003d\u0027ilo\u0027)"},{"line_number":237,"context_line":"        deploy_args \u003d {\u0027arg1\u0027: \u0027val1\u0027, \u0027arg2\u0027: \u0027val2\u0027}"},{"line_number":238,"context_line":"        CONF.deploy.http_url \u003d \"http://abc.com/httpboot\""},{"line_number":239,"context_line":"        CONF.deploy.http_root \u003d \"/httpboot\""},{"line_number":240,"context_line":""},{"line_number":241,"context_line":"        with task_manager.acquire(self.context, self.node.uuid,"}],"source_content_type":"text/x-python","patch_set":14,"id":"da20952f_aa68adbb","line":238,"in_reply_to":"fa1b9901_14b602f9","updated":"2015-08-26 22:22:10.000000000","message":"It is used down in line 245","commit_id":"61fabfe59363d251fd11ca9ef5b8eb6628c930d5"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"5108ad998f74d672d7334802b2460d7cf761d0a1","unresolved":false,"context_lines":[{"line_number":637,"context_line":"        destination \u003d \"image-UUID\""},{"line_number":638,"context_line":"        image_path \u003d \"/webserver/image-UUID\""},{"line_number":639,"context_line":"        actual_url \u003d ilo_common.copy_image_to_web_server(source, destination)"},{"line_number":640,"context_line":"        self.assertTrue(actual_url, expected_url)"},{"line_number":641,"context_line":"        copy_mock.assert_called_once_with(source, image_path)"},{"line_number":642,"context_line":"        chmod_mock.assert_called_once_with(image_path, 0o644)"},{"line_number":643,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"da20952f_0b76d2a3","line":640,"updated":"2015-08-31 11:05:17.000000000","message":"self.assertEqual() and that too better in reverse order \n\n  self.assertEqual(expected_url, actual_url)","commit_id":"c829ffa00b5f10440ed716d103bc1b50be28517d"}],"ironic/tests/drivers/ilo/test_deploy.py":[{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"880959c15840defbd360d9de5d2443571b342be3","unresolved":false,"context_lines":[{"line_number":238,"context_line":"                       autospec\u003dTrue)"},{"line_number":239,"context_line":"    @mock.patch.object(ilo_deploy, \u0027_parse_deploy_info\u0027, spec_set\u003dTrue,"},{"line_number":240,"context_line":"                       autospec\u003dTrue)"},{"line_number":241,"context_line":"    def test__get_boot_iso_create_use_webserver_true_ramdisk_webserver("},{"line_number":242,"context_line":"            self, deploy_info_mock, image_props_mock,"},{"line_number":243,"context_line":"            capability_mock, boot_object_name_mock,"},{"line_number":244,"context_line":"            create_boot_iso_mock, tempfile_mock,"}],"source_content_type":"text/x-python","patch_set":3,"id":"3a50d1a3_b52da7ff","line":241,"updated":"2015-07-29 05:09:48.000000000","message":"Can we just mock copy_image_to_web_server here.","commit_id":"017078a44dd5602b8186870fafe719a088655cc8"},{"author":{"_account_id":11297,"name":"Nisha Agarwal","email":"agarwalnisha1980@gmail.com","username":"Nisha"},"change_message_id":"82505fd8cb31271314cbce941db330a1112a7783","unresolved":false,"context_lines":[{"line_number":238,"context_line":"                       autospec\u003dTrue)"},{"line_number":239,"context_line":"    @mock.patch.object(ilo_deploy, \u0027_parse_deploy_info\u0027, spec_set\u003dTrue,"},{"line_number":240,"context_line":"                       autospec\u003dTrue)"},{"line_number":241,"context_line":"    def test__get_boot_iso_create_use_webserver_true_ramdisk_webserver("},{"line_number":242,"context_line":"            self, deploy_info_mock, image_props_mock,"},{"line_number":243,"context_line":"            capability_mock, boot_object_name_mock,"},{"line_number":244,"context_line":"            create_boot_iso_mock, tempfile_mock,"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a4dcd0f_973b6eeb","line":241,"in_reply_to":"3a50d1a3_b52da7ff","updated":"2015-08-04 10:43:23.000000000","message":"ok","commit_id":"017078a44dd5602b8186870fafe719a088655cc8"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"880959c15840defbd360d9de5d2443571b342be3","unresolved":false,"context_lines":[{"line_number":300,"context_line":"                       autospec\u003dTrue)"},{"line_number":301,"context_line":"    @mock.patch.object(ilo_deploy, \u0027_parse_deploy_info\u0027, spec_set\u003dTrue,"},{"line_number":302,"context_line":"                       autospec\u003dTrue)"},{"line_number":303,"context_line":"    def test__get_boot_iso_create_use_webserver_true_ramdisk_kernel_glance("},{"line_number":304,"context_line":"            self, deploy_info_mock, image_props_mock,"},{"line_number":305,"context_line":"            capability_mock, boot_object_name_mock,"},{"line_number":306,"context_line":"            create_boot_iso_mock, tempfile_mock,"}],"source_content_type":"text/x-python","patch_set":3,"id":"3a50d1a3_f51ecfb9","line":303,"updated":"2015-07-29 05:09:48.000000000","message":"Why do we need two different test cases kernel/ramdisk in glance and kernel/ramdisk in http location. How does that relate to the change that we are making as part of the patch ?","commit_id":"017078a44dd5602b8186870fafe719a088655cc8"},{"author":{"_account_id":11297,"name":"Nisha Agarwal","email":"agarwalnisha1980@gmail.com","username":"Nisha"},"change_message_id":"82505fd8cb31271314cbce941db330a1112a7783","unresolved":false,"context_lines":[{"line_number":300,"context_line":"                       autospec\u003dTrue)"},{"line_number":301,"context_line":"    @mock.patch.object(ilo_deploy, \u0027_parse_deploy_info\u0027, spec_set\u003dTrue,"},{"line_number":302,"context_line":"                       autospec\u003dTrue)"},{"line_number":303,"context_line":"    def test__get_boot_iso_create_use_webserver_true_ramdisk_kernel_glance("},{"line_number":304,"context_line":"            self, deploy_info_mock, image_props_mock,"},{"line_number":305,"context_line":"            capability_mock, boot_object_name_mock,"},{"line_number":306,"context_line":"            create_boot_iso_mock, tempfile_mock,"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a4dcd0f_54cba453","line":303,"in_reply_to":"3a50d1a3_f51ecfb9","updated":"2015-08-04 10:43:23.000000000","message":"it is to test that creation of boot iso works irrespective of deploy_iso/kernel ramdisk location.","commit_id":"017078a44dd5602b8186870fafe719a088655cc8"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"32cfe2f5dcc4b1a5104749347acf230ba02c0e53","unresolved":false,"context_lines":[{"line_number":113,"context_line":"            self.assertRaises(exception.ImageRefValidationFailed,"},{"line_number":114,"context_line":"                              ilo_deploy._get_boot_iso, task, \u0027root-uuid\u0027)"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"    @mock.patch.object(image_service.HttpImageService, \u0027validate_href\u0027,"},{"line_number":117,"context_line":"                       spec_set\u003dTrue, autospec\u003dTrue)"},{"line_number":118,"context_line":"    @mock.patch.object(images, \u0027get_image_properties\u0027, spec_set\u003dTrue,"},{"line_number":119,"context_line":"                       autospec\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":6,"id":"1a4dcd0f_1473a14e","line":116,"updated":"2015-08-05 07:35:05.000000000","message":"I think this mock is not required.","commit_id":"82f0afb6da54137a14f9201612a3b8522e7f68cb"},{"author":{"_account_id":11297,"name":"Nisha Agarwal","email":"agarwalnisha1980@gmail.com","username":"Nisha"},"change_message_id":"27c5d3b4048763b1da2924023f80ac15871b0a0a","unresolved":false,"context_lines":[{"line_number":113,"context_line":"            self.assertRaises(exception.ImageRefValidationFailed,"},{"line_number":114,"context_line":"                              ilo_deploy._get_boot_iso, task, \u0027root-uuid\u0027)"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"    @mock.patch.object(image_service.HttpImageService, \u0027validate_href\u0027,"},{"line_number":117,"context_line":"                       spec_set\u003dTrue, autospec\u003dTrue)"},{"line_number":118,"context_line":"    @mock.patch.object(images, \u0027get_image_properties\u0027, spec_set\u003dTrue,"},{"line_number":119,"context_line":"                       autospec\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":6,"id":"1a4dcd0f_58eb93b0","line":116,"in_reply_to":"1a4dcd0f_1473a14e","updated":"2015-08-05 10:25:20.000000000","message":"ok","commit_id":"82f0afb6da54137a14f9201612a3b8522e7f68cb"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"32cfe2f5dcc4b1a5104749347acf230ba02c0e53","unresolved":false,"context_lines":[{"line_number":182,"context_line":"                                  swift_api_mock,"},{"line_number":183,"context_line":"                                  create_boot_iso_mock, tempfile_mock):"},{"line_number":184,"context_line":"        CONF.ilo.swift_ilo_container \u003d \u0027ilo-cont\u0027"},{"line_number":185,"context_line":"        CONF.ilo.use_web_server_for_images \u003d False"},{"line_number":186,"context_line":"        CONF.pxe.pxe_append_params \u003d \u0027kernel-params\u0027"},{"line_number":187,"context_line":""},{"line_number":188,"context_line":"        swift_obj_mock \u003d swift_api_mock.return_value"}],"source_content_type":"text/x-python","patch_set":6,"id":"1a4dcd0f_34d01d1f","line":185,"updated":"2015-08-05 07:35:05.000000000","message":"Better if we just didn\u0027t put this (as False is default) as that will be confirm that we haven\u0027t broken any existing use cases.","commit_id":"82f0afb6da54137a14f9201612a3b8522e7f68cb"},{"author":{"_account_id":11297,"name":"Nisha Agarwal","email":"agarwalnisha1980@gmail.com","username":"Nisha"},"change_message_id":"27c5d3b4048763b1da2924023f80ac15871b0a0a","unresolved":false,"context_lines":[{"line_number":182,"context_line":"                                  swift_api_mock,"},{"line_number":183,"context_line":"                                  create_boot_iso_mock, tempfile_mock):"},{"line_number":184,"context_line":"        CONF.ilo.swift_ilo_container \u003d \u0027ilo-cont\u0027"},{"line_number":185,"context_line":"        CONF.ilo.use_web_server_for_images \u003d False"},{"line_number":186,"context_line":"        CONF.pxe.pxe_append_params \u003d \u0027kernel-params\u0027"},{"line_number":187,"context_line":""},{"line_number":188,"context_line":"        swift_obj_mock \u003d swift_api_mock.return_value"}],"source_content_type":"text/x-python","patch_set":6,"id":"1a4dcd0f_18ce6b5a","line":185,"in_reply_to":"1a4dcd0f_34d01d1f","updated":"2015-08-05 10:25:20.000000000","message":"Ok.","commit_id":"82f0afb6da54137a14f9201612a3b8522e7f68cb"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"986011c3e95393386d8075d2ee721cb0ad0eda06","unresolved":false,"context_lines":[{"line_number":113,"context_line":"            self.assertRaises(exception.ImageRefValidationFailed,"},{"line_number":114,"context_line":"                              ilo_deploy._get_boot_iso, task, \u0027root-uuid\u0027)"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"    @mock.patch.object(image_service.HttpImageService, \u0027validate_href\u0027,"},{"line_number":117,"context_line":"                       spec_set\u003dTrue, autospec\u003dTrue)"},{"line_number":118,"context_line":"    @mock.patch.object(images, \u0027get_image_properties\u0027, spec_set\u003dTrue,"},{"line_number":119,"context_line":"                       autospec\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":7,"id":"1a4dcd0f_6316e456","line":116,"updated":"2015-08-05 10:47:20.000000000","message":"This hasn\u0027t been removed yet.","commit_id":"4e2527022a06000f0d0b76c0d7eb096f228795a2"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"986011c3e95393386d8075d2ee721cb0ad0eda06","unresolved":false,"context_lines":[{"line_number":182,"context_line":"                                  swift_api_mock,"},{"line_number":183,"context_line":"                                  create_boot_iso_mock, tempfile_mock):"},{"line_number":184,"context_line":"        CONF.ilo.swift_ilo_container \u003d \u0027ilo-cont\u0027"},{"line_number":185,"context_line":"        CONF.ilo.use_web_server_for_images \u003d False"},{"line_number":186,"context_line":"        CONF.pxe.pxe_append_params \u003d \u0027kernel-params\u0027"},{"line_number":187,"context_line":""},{"line_number":188,"context_line":"        swift_obj_mock \u003d swift_api_mock.return_value"}],"source_content_type":"text/x-python","patch_set":7,"id":"1a4dcd0f_9e03430d","line":185,"updated":"2015-08-05 10:47:20.000000000","message":"This hasn\u0027t been removed yet.","commit_id":"4e2527022a06000f0d0b76c0d7eb096f228795a2"}]}
