)]}'
{"api-ref/source/v3/parameters.yaml":[{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"664918944cacc8accf6aebf8e8fa6b3a62123156","unresolved":false,"context_lines":[{"line_number":2754,"context_line":"  type: array"},{"line_number":2755,"context_line":"trusted_image_certificates:"},{"line_number":2756,"context_line":"  description: |"},{"line_number":2757,"context_line":"  \tA list of trusted certificate IDs, which are used during image signature"},{"line_number":2758,"context_line":"  \tverification to verify the signing certificate. The list is restricted"},{"line_number":2759,"context_line":"  \tto a maximum of 50 IDs. This parameter is only used when volume source"},{"line_number":2760,"context_line":"  \tis image."}],"source_content_type":"text/x-yaml","patch_set":1,"id":"5f7c97a3_277d146d","line":2757,"range":{"start_line":2757,"start_character":0,"end_line":2757,"end_character":3},"updated":"2018-07-24 12:13:30.000000000","message":"Need to convert tabs to spaces.","commit_id":"3d9cf8f2cbec6ea64dc719647d1c2e6480b4f73a"}],"cinder/api/microversions.py":[{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"664918944cacc8accf6aebf8e8fa6b3a62123156","unresolved":false,"context_lines":[{"line_number":149,"context_line":""},{"line_number":150,"context_line":"TRANSFER_WITH_SNAPSHOTS \u003d \u00273.55\u0027"},{"line_number":151,"context_line":""},{"line_number":152,"context_line":"SUPPORT_TRUSTED_IMAGE_CERTIFICATES \u003d \u00273.56\u0027"},{"line_number":153,"context_line":""},{"line_number":154,"context_line":""},{"line_number":155,"context_line":"def get_mv_header(version):"}],"source_content_type":"text/x-python","patch_set":1,"id":"5f7c97a3_87e0a829","line":152,"range":{"start_line":152,"start_character":0,"end_line":152,"end_character":8},"updated":"2018-07-24 12:13:30.000000000","message":"Minor, but I would prefer \"SUPPORT_\" be dropped from the constant name.","commit_id":"3d9cf8f2cbec6ea64dc719647d1c2e6480b4f73a"}],"cinder/image/glance.py":[{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"664918944cacc8accf6aebf8e8fa6b3a62123156","unresolved":false,"context_lines":[{"line_number":72,"context_line":"    cfg.BoolOpt(\u0027enable_certificate_validation\u0027,"},{"line_number":73,"context_line":"                default\u003dFalse,"},{"line_number":74,"context_line":"                help\u003d\"\"\""},{"line_number":75,"context_line":"            Enable certificate validation for image signature verification."},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"            During image signature verification nova will first verify the"},{"line_number":78,"context_line":"            validity of the image\u0027s signing certificate using the set of"}],"source_content_type":"text/x-python","patch_set":1,"id":"5f7c97a3_87c3c858","line":75,"updated":"2018-07-24 12:13:30.000000000","message":"This will end up with odd indentation in the generated config file. Use textwrap.dedent like in the previous option.","commit_id":"3d9cf8f2cbec6ea64dc719647d1c2e6480b4f73a"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"df5db0c26f5153a898cea395fb839a303bdaa39e","unresolved":false,"context_lines":[{"line_number":72,"context_line":"    cfg.BoolOpt(\u0027enable_certificate_validation\u0027,"},{"line_number":73,"context_line":"                default\u003dFalse,"},{"line_number":74,"context_line":"                help\u003d\"\"\""},{"line_number":75,"context_line":"            Enable certificate validation for image signature verification."},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"            During image signature verification nova will first verify the"},{"line_number":78,"context_line":"            validity of the image\u0027s signing certificate using the set of"},{"line_number":79,"context_line":"            trusted certificates associated with the instance. If"},{"line_number":80,"context_line":"            certificate validation fails, signature verification"},{"line_number":81,"context_line":"            will not be performed and the instance will be placed into an"},{"line_number":82,"context_line":"            error state. This provides end users with stronger assurances"},{"line_number":83,"context_line":"            that the image data is unmodified and trustworthy. If left"},{"line_number":84,"context_line":"            disabled, image signature verification can still"},{"line_number":85,"context_line":"            occur but the end user will not have any assurance that the"},{"line_number":86,"context_line":"            signing certificate used to generate the image signature is"},{"line_number":87,"context_line":"            still trustworthy."},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"            Related options:"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"            * This option only takes effect if verify_glance_signatures is"},{"line_number":92,"context_line":"              enabled."},{"line_number":93,"context_line":"            * The value of default_trusted_certificate_ids may be used"},{"line_number":94,"context_line":"              when this option is enabled."},{"line_number":95,"context_line":"            \"\"\"),"},{"line_number":96,"context_line":"    cfg.ListOpt(\u0027default_trusted_certificate_ids\u0027,"},{"line_number":97,"context_line":"                default\u003d[],"}],"source_content_type":"text/x-python","patch_set":1,"id":"5f7c97a3_538ecd26","line":94,"range":{"start_line":75,"start_character":2,"end_line":94,"end_character":42},"updated":"2018-07-24 17:24:39.000000000","message":"I am concerned with having this much text in the help text.  I am thinking making this more of a summary and then putting details into documentation might be a better approach.\n\nSame for the help text below.","commit_id":"3d9cf8f2cbec6ea64dc719647d1c2e6480b4f73a"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"664918944cacc8accf6aebf8e8fa6b3a62123156","unresolved":false,"context_lines":[{"line_number":110,"context_line":""},{"line_number":111,"context_line":"            Related options:"},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"            * The value of this option may be used if both "},{"line_number":114,"context_line":"              verify_glance_signatures and enable_certificate_validation"},{"line_number":115,"context_line":"              are enabled."},{"line_number":116,"context_line":"            \"\"\"),"}],"source_content_type":"text/x-python","patch_set":1,"id":"5f7c97a3_67a0eca5","line":113,"range":{"start_line":113,"start_character":57,"end_line":113,"end_character":59},"updated":"2018-07-24 12:13:30.000000000","message":"Trailing space.","commit_id":"3d9cf8f2cbec6ea64dc719647d1c2e6480b4f73a"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"0b62a4565adab3c06f8577ddc58065a223580446","unresolved":false,"context_lines":[{"line_number":117,"context_line":""},{"line_number":118,"context_line":"                    * The value of this option may be used if both"},{"line_number":119,"context_line":"                      verify_glance_signatures and"},{"line_number":120,"context_line":"                      enable_certificate_validation are enabled."},{"line_number":121,"context_line":"                    \"\"\")),"},{"line_number":122,"context_line":"    cfg.StrOpt(\u0027glance_catalog_info\u0027,"},{"line_number":123,"context_line":"               default\u003d\u0027image:glance:publicURL\u0027,"}],"source_content_type":"text/x-python","patch_set":5,"id":"3f79a3b5_3edab0e5","line":120,"updated":"2018-10-23 15:05:01.000000000","message":"This should probably include an item_type\u003d field specifying that these are strings.","commit_id":"5b2b29e3870979e3ab931b3173f854891768862f"}],"cinder/image/image_utils.py":[{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"664918944cacc8accf6aebf8e8fa6b3a62123156","unresolved":false,"context_lines":[{"line_number":347,"context_line":"    if trusted_certs:"},{"line_number":348,"context_line":"        verify_certs(context, img_sig_cert_uuid, trusted_certs)"},{"line_number":349,"context_line":"    elif CONF.glance.enable_certificate_validation:"},{"line_number":350,"context_line":"        msg \u003d (\u0027Image signature certificate validation enabled, \u0027"},{"line_number":351,"context_line":"               \u0027but no trusted certificate IDs were provided. \u0027"},{"line_number":352,"context_line":"               \u0027Unable to validate the certificate used to \u0027"},{"line_number":353,"context_line":"               \u0027verify the image signature.\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"5f7c97a3_2783d405","line":350,"range":{"start_line":350,"start_character":14,"end_line":350,"end_character":16},"updated":"2018-07-24 12:13:30.000000000","message":"If this exception can surface to the end user, this should have _() translation.","commit_id":"3d9cf8f2cbec6ea64dc719647d1c2e6480b4f73a"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"df5db0c26f5153a898cea395fb839a303bdaa39e","unresolved":false,"context_lines":[{"line_number":352,"context_line":"               \u0027Unable to validate the certificate used to \u0027"},{"line_number":353,"context_line":"               \u0027verify the image signature.\u0027)"},{"line_number":354,"context_line":"        LOG.warning(msg)"},{"line_number":355,"context_line":"        raise exception.CertificateValidationFailed(msg)"},{"line_number":356,"context_line":""},{"line_number":357,"context_line":"    if verifier:"},{"line_number":358,"context_line":"        with fileutils.remove_path_on_error(path):"}],"source_content_type":"text/x-python","patch_set":1,"id":"5f7c97a3_b3c5e140","line":355,"range":{"start_line":355,"start_character":52,"end_line":355,"end_character":55},"updated":"2018-07-24 17:24:39.000000000","message":"Doesn\u0027t this need the certificate ID and the message?","commit_id":"3d9cf8f2cbec6ea64dc719647d1c2e6480b4f73a"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"43951e3fe9d3cc4b4b6c22d8264291a51353883a","unresolved":false,"context_lines":[{"line_number":299,"context_line":"                  \u0027succeeded for certificate: %s\u0027,"},{"line_number":300,"context_line":"                  img_sig_cert_uuid)"},{"line_number":301,"context_line":"    except cursive_exception.SignatureVerificationError as e:"},{"line_number":302,"context_line":"        LOG.warning(\u0027Image signature certificate validation \u0027"},{"line_number":303,"context_line":"                    \u0027failed for certificate: %s\u0027,"},{"line_number":304,"context_line":"                    img_sig_cert_uuid)"},{"line_number":305,"context_line":"        raise exception.CertificateValidationFailed("}],"source_content_type":"text/x-python","patch_set":5,"id":"3f79a3b5_25646ee4","line":302,"updated":"2018-09-21 09:44:45.000000000","message":"If I don\u0027t miss anything, we\u0027ll re-raise this exception later in the code. So why do we log it as warning not as error here?","commit_id":"5b2b29e3870979e3ab931b3173f854891768862f"}],"cinder/message/message_field.py":[{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"564171f35ddc7333a7fbf9d3f2b8943c96e09ff2","unresolved":false,"context_lines":[{"line_number":81,"context_line":"        _(\"Image signature verification failed.\"))"},{"line_number":82,"context_line":"    CERTS_VERIFICATION_FAILED \u003d ("},{"line_number":83,"context_line":"        \u0027012\u0027,"},{"line_number":84,"context_line":"        _(\"Image certificate verification failed.\"))"},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"    ALL \u003d (UNKNOWN_ERROR,"},{"line_number":87,"context_line":"           DRIVER_NOT_INITIALIZED,"}],"source_content_type":"text/x-python","patch_set":1,"id":"5f7c97a3_6628e597","line":84,"updated":"2018-07-24 18:26:15.000000000","message":"Should this really be a separate message from the message above?  This may be one of those cases where being a bit vague is better...","commit_id":"3d9cf8f2cbec6ea64dc719647d1c2e6480b4f73a"}],"cinder/objects/request_spec.py":[{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"664918944cacc8accf6aebf8e8fa6b3a62123156","unresolved":false,"context_lines":[{"line_number":50,"context_line":"        \u0027backup_id\u0027: fields.UUIDField(nullable\u003dTrue),"},{"line_number":51,"context_line":"        \u0027operation\u0027: fields.StringField(nullable\u003dTrue),"},{"line_number":52,"context_line":"        \u0027availability_zones\u0027: fields.ListOfStringsField(nullable\u003dTrue),"},{"line_number":53,"context_line":"        \u0027trusted_image_certificates\u0027: fields.ListOfStringsField(nullable\u003dTrue)"},{"line_number":54,"context_line":"    }"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"    obj_extra_fields \u003d [\u0027resource_properties\u0027]"}],"source_content_type":"text/x-python","patch_set":1,"id":"5f7c97a3_c721c0ff","line":53,"updated":"2018-07-24 12:13:30.000000000","message":"I believe we need to remove this when converting to pre-1.6:\n\nhttps://github.com/openstack/cinder/commit/3449e74d8b959a103b4dbca7e6fb3a281728a07a","commit_id":"3d9cf8f2cbec6ea64dc719647d1c2e6480b4f73a"}],"cinder/volume/flows/manager/create_volume.py":[{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"664918944cacc8accf6aebf8e8fa6b3a62123156","unresolved":false,"context_lines":[{"line_number":821,"context_line":"                            if not trusted_certs and ("},{"line_number":822,"context_line":"                                    CONF.enable_certificate_validation"},{"line_number":823,"context_line":"                                    and CONF.default_trusted_certificate_ids):"},{"line_number":824,"context_line":"                                trusted_certs \u003d \\"},{"line_number":825,"context_line":"                                    CONF.default_trusted_certificate_ids"},{"line_number":826,"context_line":"                            # Verify image signature via reading content from"},{"line_number":827,"context_line":"                            # temp image, and store the verification flag if"}],"source_content_type":"text/x-python","patch_set":1,"id":"5f7c97a3_6761cc38","line":824,"range":{"start_line":824,"start_character":48,"end_line":824,"end_character":49},"updated":"2018-07-24 12:13:30.000000000","message":"Please avoid using \\ to span lines.","commit_id":"3d9cf8f2cbec6ea64dc719647d1c2e6480b4f73a"}],"releasenotes/notes/support-image-certificate-verification-7ru7451318271398.yaml":[{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"664918944cacc8accf6aebf8e8fa6b3a62123156","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - Add support for the ``trusted_image_certificates`` parameter in volume"},{"line_number":4,"context_line":"    create API, which is used to define a list of trusted certificate IDs that"},{"line_number":5,"context_line":"    can be used during image signature verification and certificate validation."},{"line_number":6,"context_line":"    The list is restricted to a maximum of 50 IDs."}],"source_content_type":"text/x-yaml","patch_set":1,"id":"5f7c97a3_c74f80bd","line":3,"range":{"start_line":3,"start_character":4,"end_line":3,"end_character":7},"updated":"2018-07-24 12:13:30.000000000","message":"Added","commit_id":"3d9cf8f2cbec6ea64dc719647d1c2e6480b4f73a"}]}
