)]}'
{"ironic/common/s3.py":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"5770c41b8f415509957371bb6278400db3cd50f6","unresolved":true,"context_lines":[{"line_number":69,"context_line":"        secure \u003d CONF.s3.s3_use_presigned_url"},{"line_number":70,"context_line":"        if secure:"},{"line_number":71,"context_line":"            # unfortunately we can only sign for HTTP GET requests, HEAD"},{"line_number":72,"context_line":"            # requests will fail."},{"line_number":73,"context_line":"            try:"},{"line_number":74,"context_line":"                image_url \u003d self.s3.meta.client.generate_presigned_url("},{"line_number":75,"context_line":"                    \u0027get_object\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"d1a10a3b_05c55c7a","line":72,"updated":"2021-04-12 16:00:39.000000000","message":"I wonder if it will work.. some BMCs may not like it.","commit_id":"4126427c279ad12e9d5a5ad713993995b9b24e35"},{"author":{"_account_id":33176,"name":"Francois Rigault","email":"rigault.francois@gmail.com","username":"frigo"},"change_message_id":"f9e348dd31149521448dd05ab2d8bd4216be4c34","unresolved":true,"context_lines":[{"line_number":69,"context_line":"        secure \u003d CONF.s3.s3_use_presigned_url"},{"line_number":70,"context_line":"        if secure:"},{"line_number":71,"context_line":"            # unfortunately we can only sign for HTTP GET requests, HEAD"},{"line_number":72,"context_line":"            # requests will fail."},{"line_number":73,"context_line":"            try:"},{"line_number":74,"context_line":"                image_url \u003d self.s3.meta.client.generate_presigned_url("},{"line_number":75,"context_line":"                    \u0027get_object\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"e644249c_b7a910ad","line":72,"in_reply_to":"d1a10a3b_05c55c7a","updated":"2021-04-12 16:09:07.000000000","message":"Thanks for your comment!\non iLO4 it works fine with signed URLs, on iDRAC(14G) it works with unsigned URLs\nIf it\u0027s possible to benefit from the CI pipelines of the vendors that would be even better","commit_id":"4126427c279ad12e9d5a5ad713993995b9b24e35"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"94a64aecd6f3d0cbc90238cb6727eb94b149baf3","unresolved":true,"context_lines":[{"line_number":28,"context_line":"    \"\"\"API for communicating with S3.\"\"\""},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"    def __init__(self):"},{"line_number":31,"context_line":"        self.s3 \u003d boto3.resource("},{"line_number":32,"context_line":"            \"s3\","},{"line_number":33,"context_line":"            endpoint_url\u003dCONF.s3.endpoint_url,"},{"line_number":34,"context_line":"            verify\u003dCONF.s3.verify)"}],"source_content_type":"text/x-python","patch_set":5,"id":"e570c4e0_7195ae82","line":31,"updated":"2021-06-07 13:50:15.000000000","message":"I guess a critical question is do we want to have boto3 be a required or optional dependency and do we want this module to need it upon startup or not. The pattern we would normally take is check if it is none.\n\nAnother thought: Does this actually initiate a connection upon startup? How long does a token stay valid if it does? I guess it is more a mechanics question, but still kind of valid given the interwoven dependency on startup. I guess the other concern would be is this going to consume memory or CPU resources at all in the background?","commit_id":"14951eb4ac0e41e3a89662735d59339c4a29590e"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"94a64aecd6f3d0cbc90238cb6727eb94b149baf3","unresolved":true,"context_lines":[{"line_number":40,"context_line":"        :param container: The name of the container for the object."},{"line_number":41,"context_line":"        :param obj: The name of the object in Swift"},{"line_number":42,"context_line":"        :param filename: The file to upload, as the object data"},{"line_number":43,"context_line":"        :param object_headers: Ignored"},{"line_number":44,"context_line":"        :raises: SwiftOperationError, if any operation with S3 fails."},{"line_number":45,"context_line":"        \"\"\""},{"line_number":46,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"13991a29_7112ddd3","line":43,"updated":"2021-06-07 13:50:15.000000000","message":"Why are we ignoring this? Can we not pass additional options beyond extra_args?","commit_id":"14951eb4ac0e41e3a89662735d59339c4a29590e"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"94a64aecd6f3d0cbc90238cb6727eb94b149baf3","unresolved":true,"context_lines":[{"line_number":43,"context_line":"        :param object_headers: Ignored"},{"line_number":44,"context_line":"        :raises: SwiftOperationError, if any operation with S3 fails."},{"line_number":45,"context_line":"        \"\"\""},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"        secure \u003d CONF.s3.use_presigned_url"},{"line_number":48,"context_line":"        bucket \u003d self.s3.Bucket(container)"},{"line_number":49,"context_line":"        extra_args \u003d {}"}],"source_content_type":"text/x-python","patch_set":5,"id":"53b007c4_f67b55c6","line":46,"updated":"2021-06-07 13:50:15.000000000","message":"So typically, we would fire up the client connection in the methods to perform the actions. Typically. __init__ does make sense to perform validation if misconfigurations are to be fatal or not. (Well, they would be for the deploy itself.","commit_id":"14951eb4ac0e41e3a89662735d59339c4a29590e"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"94a64aecd6f3d0cbc90238cb6727eb94b149baf3","unresolved":true,"context_lines":[{"line_number":94,"context_line":"            s3_object.delete()"},{"line_number":95,"context_line":"        except (boto3.exceptions.Boto3Error,"},{"line_number":96,"context_line":"                botocore_exceptions.ClientError) as e:"},{"line_number":97,"context_line":"            raise exception.SwiftOperationError(error\u003de, operation\u003d\"delete\")"}],"source_content_type":"text/x-python","patch_set":5,"id":"5149602c_1241abb5","line":97,"range":{"start_line":97,"start_character":27,"end_line":97,"end_character":49},"updated":"2021-06-07 13:50:15.000000000","message":"Hmm, this seems wrong. Perhaps we need to make a new class?","commit_id":"14951eb4ac0e41e3a89662735d59339c4a29590e"}],"ironic/conf/s3.py":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"5770c41b8f415509957371bb6278400db3cd50f6","unresolved":true,"context_lines":[{"line_number":18,"context_line":"from ironic.conf import auth"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"opts \u003d ["},{"line_number":21,"context_line":"    cfg.BoolOpt(\u0027s3_enabled\u0027,"},{"line_number":22,"context_line":"                default\u003dFalse,"},{"line_number":23,"context_line":"                help\u003d_(\u0027Use S3 instead of Swift.\u0027)),"},{"line_number":24,"context_line":"    cfg.BoolOpt(\u0027s3_verify\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"d31feaa2_4dcb80e9","line":21,"updated":"2021-04-12 16:00:39.000000000","message":"Please avoid repeating the group name in the option names (i.e. s/s3_//)","commit_id":"4126427c279ad12e9d5a5ad713993995b9b24e35"},{"author":{"_account_id":33176,"name":"Francois Rigault","email":"rigault.francois@gmail.com","username":"frigo"},"change_message_id":"0b9798bb18e5e33119c5ce037d5db09ad52c669d","unresolved":false,"context_lines":[{"line_number":18,"context_line":"from ironic.conf import auth"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"opts \u003d ["},{"line_number":21,"context_line":"    cfg.BoolOpt(\u0027s3_enabled\u0027,"},{"line_number":22,"context_line":"                default\u003dFalse,"},{"line_number":23,"context_line":"                help\u003d_(\u0027Use S3 instead of Swift.\u0027)),"},{"line_number":24,"context_line":"    cfg.BoolOpt(\u0027s3_verify\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f355051_d89db3a7","line":21,"in_reply_to":"bab927fc_c24dfaf3","updated":"2021-04-15 07:21:01.000000000","message":"Done","commit_id":"4126427c279ad12e9d5a5ad713993995b9b24e35"},{"author":{"_account_id":33176,"name":"Francois Rigault","email":"rigault.francois@gmail.com","username":"frigo"},"change_message_id":"f9e348dd31149521448dd05ab2d8bd4216be4c34","unresolved":true,"context_lines":[{"line_number":18,"context_line":"from ironic.conf import auth"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"opts \u003d ["},{"line_number":21,"context_line":"    cfg.BoolOpt(\u0027s3_enabled\u0027,"},{"line_number":22,"context_line":"                default\u003dFalse,"},{"line_number":23,"context_line":"                help\u003d_(\u0027Use S3 instead of Swift.\u0027)),"},{"line_number":24,"context_line":"    cfg.BoolOpt(\u0027s3_verify\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"e789f84c_0a49fecd","line":21,"in_reply_to":"d31feaa2_4dcb80e9","updated":"2021-04-12 16:09:07.000000000","message":"will fix\nnote this \"s3_enabled\" is really ugly, it tells the code to move from SwiftAPI to S3API. TheJulia mentioned the possibility of a \"shim\" to switch between the implementation. Do you think we can live with this hack?","commit_id":"4126427c279ad12e9d5a5ad713993995b9b24e35"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"01012613e6d417ae75b96730a80b873964b8a1fb","unresolved":true,"context_lines":[{"line_number":18,"context_line":"from ironic.conf import auth"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"opts \u003d ["},{"line_number":21,"context_line":"    cfg.BoolOpt(\u0027s3_enabled\u0027,"},{"line_number":22,"context_line":"                default\u003dFalse,"},{"line_number":23,"context_line":"                help\u003d_(\u0027Use S3 instead of Swift.\u0027)),"},{"line_number":24,"context_line":"    cfg.BoolOpt(\u0027s3_verify\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"bab927fc_c24dfaf3","line":21,"in_reply_to":"e789f84c_0a49fecd","updated":"2021-04-12 16:28:36.000000000","message":"I think having [s3]enabled is fine, we have this pattern in other places","commit_id":"4126427c279ad12e9d5a5ad713993995b9b24e35"},{"author":{"_account_id":5805,"name":"Chris Krelle","email":"nobodycam@gmail.com","username":"nobodycam"},"change_message_id":"674870d5354eff900eab92322afd252a09c44db4","unresolved":true,"context_lines":[{"line_number":34,"context_line":"                       \u0027the S3 presigned URL mechanism. If presigned URL is \u0027"},{"line_number":35,"context_line":"                       \u0027not used, the object is uploaded with public \u0027"},{"line_number":36,"context_line":"                       \u0027visiblity.\u0027))"},{"line_number":37,"context_line":"]"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"def register_opts(conf):"}],"source_content_type":"text/x-python","patch_set":4,"id":"96887f86_127305c0","line":37,"range":{"start_line":37,"start_character":0,"end_line":37,"end_character":1},"updated":"2021-04-14 23:31:10.000000000","message":"Sorry for drop by review:\nHave you thought about including options for: AWS_Access_Key_Id, AWS_Secret_Access_Key, \u0026 AWS_Session_Token? so AWS accounts don\u0027t have to be baked in on the host system?","commit_id":"9d9d4f21e5c14c76c3ef14135c7e25f60f03d25d"},{"author":{"_account_id":33176,"name":"Francois Rigault","email":"rigault.francois@gmail.com","username":"frigo"},"change_message_id":"0b9798bb18e5e33119c5ce037d5db09ad52c669d","unresolved":true,"context_lines":[{"line_number":34,"context_line":"                       \u0027the S3 presigned URL mechanism. If presigned URL is \u0027"},{"line_number":35,"context_line":"                       \u0027not used, the object is uploaded with public \u0027"},{"line_number":36,"context_line":"                       \u0027visiblity.\u0027))"},{"line_number":37,"context_line":"]"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"def register_opts(conf):"}],"source_content_type":"text/x-python","patch_set":4,"id":"ca7b8502_924d41e3","line":37,"range":{"start_line":37,"start_character":0,"end_line":37,"end_character":1},"in_reply_to":"96887f86_127305c0","updated":"2021-04-15 07:21:01.000000000","message":"Hi Chris, yes we thought about it (it was discussed in the story). I will certainly add the options later. I would like to get the \"basics\" right first, like adding the requirements at the right place, and add a shim if needed, checking if a Zuul job is doable... then we can add the rest of the options, should be feasible easily.","commit_id":"9d9d4f21e5c14c76c3ef14135c7e25f60f03d25d"}],"requirements.txt":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"5770c41b8f415509957371bb6278400db3cd50f6","unresolved":true,"context_lines":[{"line_number":42,"context_line":"futurist\u003e\u003d1.2.0 # Apache-2.0"},{"line_number":43,"context_line":"tooz\u003e\u003d2.7.0 # Apache-2.0"},{"line_number":44,"context_line":"openstacksdk\u003e\u003d0.48.0 # Apache-2.0"},{"line_number":45,"context_line":"boto3 # Apache-2.0"},{"line_number":46,"context_line":"botocore # Apache-2.0"},{"line_number":47,"context_line":"s3transfer # Apache-2.0"}],"source_content_type":"text/plain","patch_set":1,"id":"3e45834f_ec29eb10","line":45,"updated":"2021-04-12 16:00:39.000000000","message":"Could you make these optional, like https://opendev.org/openstack/ironic/src/branch/master/setup.cfg#L196?","commit_id":"4126427c279ad12e9d5a5ad713993995b9b24e35"},{"author":{"_account_id":33176,"name":"Francois Rigault","email":"rigault.francois@gmail.com","username":"frigo"},"change_message_id":"f9e348dd31149521448dd05ab2d8bd4216be4c34","unresolved":true,"context_lines":[{"line_number":42,"context_line":"futurist\u003e\u003d1.2.0 # Apache-2.0"},{"line_number":43,"context_line":"tooz\u003e\u003d2.7.0 # Apache-2.0"},{"line_number":44,"context_line":"openstacksdk\u003e\u003d0.48.0 # Apache-2.0"},{"line_number":45,"context_line":"boto3 # Apache-2.0"},{"line_number":46,"context_line":"botocore # Apache-2.0"},{"line_number":47,"context_line":"s3transfer # Apache-2.0"}],"source_content_type":"text/plain","patch_set":1,"id":"324db2a9_dbff74e6","line":45,"in_reply_to":"3e45834f_ec29eb10","updated":"2021-04-12 16:09:07.000000000","message":"yes!","commit_id":"4126427c279ad12e9d5a5ad713993995b9b24e35"}]}
