)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":9914,"name":"Ade Lee","email":"alee@redhat.com","username":"alee"},"change_message_id":"45e253f318114713bac7c8cb275d37f688606b1c","unresolved":false,"context_lines":[{"line_number":10,"context_line":"- Fixed tests in p27"},{"line_number":11,"context_line":"- Fixed tests in p26"},{"line_number":12,"context_line":"- Fixed flake8 issue"},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Change-Id: Iee1ebad38bbc6b5b552cd2736a04f92ed2d481b6"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":18,"id":"baada198_4d4b8b85","line":13,"updated":"2014-08-12 14:16:44.000000000","message":"Can we update this to be a little more descriptive and specific to this CR?  Blueprint?","commit_id":"c671e5b8369e63913a72214cdfd294026a4dc2e1"},{"author":{"_account_id":994,"name":"Arvind Tiwari","email":"arvindt7@gmail.com","username":"arvind-tiwari"},"change_message_id":"fa03d45461c4d2e4125bd00a33255e0bd25e7b63","unresolved":false,"context_lines":[{"line_number":10,"context_line":"- Fixed tests in p27"},{"line_number":11,"context_line":"- Fixed tests in p26"},{"line_number":12,"context_line":"- Fixed flake8 issue"},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Change-Id: Iee1ebad38bbc6b5b552cd2736a04f92ed2d481b6"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":18,"id":"7ac7a964_96af6c2b","line":13,"in_reply_to":"baada198_4d4b8b85","updated":"2014-08-14 21:59:54.000000000","message":"sure","commit_id":"c671e5b8369e63913a72214cdfd294026a4dc2e1"}],"barbican/api/controllers/containers.py":[{"author":{"_account_id":7789,"name":"John Wood","email":"john.wood@rackspace.com","username":"woodster"},"change_message_id":"4cc6f208c36206afa40674c6a1269b2a8667ff3a","unresolved":false,"context_lines":[{"line_number":141,"context_line":"        tenant \u003d res.get_or_create_tenant(keystone_id, self.tenant_repo)"},{"line_number":142,"context_line":""},{"line_number":143,"context_line":"        data \u003d api.load_body(pecan.request, validator\u003dself.validator)"},{"line_number":144,"context_line":"        LOG.debug(\u0027Start on_post...%s\u0027 % data)"},{"line_number":145,"context_line":""},{"line_number":146,"context_line":"        new_container \u003d models.Container(data)"},{"line_number":147,"context_line":"        new_container.tenant_id \u003d tenant.id"}],"source_content_type":"text/x-python","patch_set":23,"id":"1abeadc6_1c4ec76f","line":144,"range":{"start_line":144,"start_character":8,"end_line":144,"end_character":46},"updated":"2014-08-19 15:45:48.000000000","message":"Arvind, if you added this, the format should be:\n\nLOG.debug(\u0027Start on_post...%s\u0027, data)\n\n...otherwise, just ignore this comment.","commit_id":"f27c311d052b7ac564683b0c00121d8168b71389"},{"author":{"_account_id":994,"name":"Arvind Tiwari","email":"arvindt7@gmail.com","username":"arvind-tiwari"},"change_message_id":"01bb21bc437bf9df3b2e52c422baeca3e153378d","unresolved":false,"context_lines":[{"line_number":141,"context_line":"        tenant \u003d res.get_or_create_tenant(keystone_id, self.tenant_repo)"},{"line_number":142,"context_line":""},{"line_number":143,"context_line":"        data \u003d api.load_body(pecan.request, validator\u003dself.validator)"},{"line_number":144,"context_line":"        LOG.debug(\u0027Start on_post...%s\u0027 % data)"},{"line_number":145,"context_line":""},{"line_number":146,"context_line":"        new_container \u003d models.Container(data)"},{"line_number":147,"context_line":"        new_container.tenant_id \u003d tenant.id"}],"source_content_type":"text/x-python","patch_set":23,"id":"1abeadc6_367d5fb2","line":144,"in_reply_to":"1abeadc6_1c4ec76f","updated":"2014-08-19 16:01:15.000000000","message":"removing it","commit_id":"f27c311d052b7ac564683b0c00121d8168b71389"}],"barbican/api/controllers/orders.py":[{"author":{"_account_id":9234,"name":"Steve Heyman","email":"steve@heyman.com","username":"hockeynut"},"change_message_id":"d298981a939b1d69b268b4b127036fd8536ab95e","unresolved":false,"context_lines":[{"line_number":146,"context_line":"        raw_body \u003d pecan.request.body"},{"line_number":147,"context_line":"        order_type \u003d None"},{"line_number":148,"context_line":"        if raw_body:"},{"line_number":149,"context_line":"            order_type \u003d json.loads(raw_body).get(\u0027type\u0027)"},{"line_number":150,"context_line":""},{"line_number":151,"context_line":"        if order_type:"},{"line_number":152,"context_line":"            body \u003d api.load_body(pecan.request,"}],"source_content_type":"text/x-python","patch_set":20,"id":"7ac7a964_81398e43","line":149,"updated":"2014-08-15 16:57:02.000000000","message":"what happens if the body isn\u0027t json?  500?","commit_id":"1c9bd5be0b13253b69370e63cc3babc4d512bcb1"},{"author":{"_account_id":994,"name":"Arvind Tiwari","email":"arvindt7@gmail.com","username":"arvind-tiwari"},"change_message_id":"fac325d8f2781548396f58975149ce770e2e2f42","unresolved":false,"context_lines":[{"line_number":146,"context_line":"        raw_body \u003d pecan.request.body"},{"line_number":147,"context_line":"        order_type \u003d None"},{"line_number":148,"context_line":"        if raw_body:"},{"line_number":149,"context_line":"            order_type \u003d json.loads(raw_body).get(\u0027type\u0027)"},{"line_number":150,"context_line":""},{"line_number":151,"context_line":"        if order_type:"},{"line_number":152,"context_line":"            body \u003d api.load_body(pecan.request,"}],"source_content_type":"text/x-python","patch_set":20,"id":"7ac7a964_f6684723","line":149,"in_reply_to":"7ac7a964_81398e43","updated":"2014-08-15 17:45:43.000000000","message":"Yes, I it a temporary workaround for backward compatibility. We will clean it soon.","commit_id":"1c9bd5be0b13253b69370e63cc3babc4d512bcb1"},{"author":{"_account_id":9234,"name":"Steve Heyman","email":"steve@heyman.com","username":"hockeynut"},"change_message_id":"d298981a939b1d69b268b4b127036fd8536ab95e","unresolved":false,"context_lines":[{"line_number":150,"context_line":""},{"line_number":151,"context_line":"        if order_type:"},{"line_number":152,"context_line":"            body \u003d api.load_body(pecan.request,"},{"line_number":153,"context_line":"                                 validator\u003dself.type_order_validator)"},{"line_number":154,"context_line":"            LOG.debug(\u0027Start on_post...{0}\u0027.format(body))"},{"line_number":155,"context_line":"            name \u003d body.get(\u0027meta\u0027).get(\u0027name\u0027)"},{"line_number":156,"context_line":"            LOG.debug(\u0027Order to create is {0}\u0027.format(name))"}],"source_content_type":"text/x-python","patch_set":20,"id":"7ac7a964_01c01e29","line":153,"updated":"2014-08-15 16:57:02.000000000","message":"this code is repeated below in the else clause","commit_id":"1c9bd5be0b13253b69370e63cc3babc4d512bcb1"},{"author":{"_account_id":994,"name":"Arvind Tiwari","email":"arvindt7@gmail.com","username":"arvind-tiwari"},"change_message_id":"fac325d8f2781548396f58975149ce770e2e2f42","unresolved":false,"context_lines":[{"line_number":150,"context_line":""},{"line_number":151,"context_line":"        if order_type:"},{"line_number":152,"context_line":"            body \u003d api.load_body(pecan.request,"},{"line_number":153,"context_line":"                                 validator\u003dself.type_order_validator)"},{"line_number":154,"context_line":"            LOG.debug(\u0027Start on_post...{0}\u0027.format(body))"},{"line_number":155,"context_line":"            name \u003d body.get(\u0027meta\u0027).get(\u0027name\u0027)"},{"line_number":156,"context_line":"            LOG.debug(\u0027Order to create is {0}\u0027.format(name))"}],"source_content_type":"text/x-python","patch_set":20,"id":"7ac7a964_d6026b3d","line":153,"in_reply_to":"7ac7a964_01c01e29","updated":"2014-08-15 17:45:43.000000000","message":"If you are taking about line #152 and 153, it has two different validators","commit_id":"1c9bd5be0b13253b69370e63cc3babc4d512bcb1"},{"author":{"_account_id":9234,"name":"Steve Heyman","email":"steve@heyman.com","username":"hockeynut"},"change_message_id":"d298981a939b1d69b268b4b127036fd8536ab95e","unresolved":false,"context_lines":[{"line_number":152,"context_line":"            body \u003d api.load_body(pecan.request,"},{"line_number":153,"context_line":"                                 validator\u003dself.type_order_validator)"},{"line_number":154,"context_line":"            LOG.debug(\u0027Start on_post...{0}\u0027.format(body))"},{"line_number":155,"context_line":"            name \u003d body.get(\u0027meta\u0027).get(\u0027name\u0027)"},{"line_number":156,"context_line":"            LOG.debug(\u0027Order to create is {0}\u0027.format(name))"},{"line_number":157,"context_line":"            new_order \u003d models.Order(body)"},{"line_number":158,"context_line":"            #TODO(atiwari): we need to make another round of model"}],"source_content_type":"text/x-python","patch_set":20,"id":"7ac7a964_a1f84a7d","line":155,"updated":"2014-08-15 16:57:02.000000000","message":"what happens if no \u0027meta\u0027?  Looks like it will result in a 500.","commit_id":"1c9bd5be0b13253b69370e63cc3babc4d512bcb1"},{"author":{"_account_id":994,"name":"Arvind Tiwari","email":"arvindt7@gmail.com","username":"arvind-tiwari"},"change_message_id":"fac325d8f2781548396f58975149ce770e2e2f42","unresolved":false,"context_lines":[{"line_number":152,"context_line":"            body \u003d api.load_body(pecan.request,"},{"line_number":153,"context_line":"                                 validator\u003dself.type_order_validator)"},{"line_number":154,"context_line":"            LOG.debug(\u0027Start on_post...{0}\u0027.format(body))"},{"line_number":155,"context_line":"            name \u003d body.get(\u0027meta\u0027).get(\u0027name\u0027)"},{"line_number":156,"context_line":"            LOG.debug(\u0027Order to create is {0}\u0027.format(name))"},{"line_number":157,"context_line":"            new_order \u003d models.Order(body)"},{"line_number":158,"context_line":"            #TODO(atiwari): we need to make another round of model"}],"source_content_type":"text/x-python","patch_set":20,"id":"7ac7a964_b6a32f4e","line":155,"in_reply_to":"7ac7a964_a1f84a7d","updated":"2014-08-15 17:45:43.000000000","message":"In that case it will not come here. Validator will handle it","commit_id":"1c9bd5be0b13253b69370e63cc3babc4d512bcb1"},{"author":{"_account_id":9234,"name":"Steve Heyman","email":"steve@heyman.com","username":"hockeynut"},"change_message_id":"d298981a939b1d69b268b4b127036fd8536ab95e","unresolved":false,"context_lines":[{"line_number":168,"context_line":"                _secret_not_in_order()"},{"line_number":169,"context_line":"            secret_info \u003d body[\u0027secret\u0027]"},{"line_number":170,"context_line":"            name \u003d secret_info.get(\u0027name\u0027)"},{"line_number":171,"context_line":"            LOG.debug(\u0027Secret to create is {0}\u0027.format(name))"},{"line_number":172,"context_line":""},{"line_number":173,"context_line":"            new_order \u003d models.Order()"},{"line_number":174,"context_line":"            new_order.secret_name \u003d secret_info.get(\u0027name\u0027)"}],"source_content_type":"text/x-python","patch_set":20,"id":"7ac7a964_615b9287","line":171,"updated":"2014-08-15 16:57:02.000000000","message":"howsabout \"name of secret is {0}\".  Otherwise implies that its the secret itself rather than its name.","commit_id":"1c9bd5be0b13253b69370e63cc3babc4d512bcb1"},{"author":{"_account_id":994,"name":"Arvind Tiwari","email":"arvindt7@gmail.com","username":"arvind-tiwari"},"change_message_id":"fac325d8f2781548396f58975149ce770e2e2f42","unresolved":false,"context_lines":[{"line_number":168,"context_line":"                _secret_not_in_order()"},{"line_number":169,"context_line":"            secret_info \u003d body[\u0027secret\u0027]"},{"line_number":170,"context_line":"            name \u003d secret_info.get(\u0027name\u0027)"},{"line_number":171,"context_line":"            LOG.debug(\u0027Secret to create is {0}\u0027.format(name))"},{"line_number":172,"context_line":""},{"line_number":173,"context_line":"            new_order \u003d models.Order()"},{"line_number":174,"context_line":"            new_order.secret_name \u003d secret_info.get(\u0027name\u0027)"}],"source_content_type":"text/x-python","patch_set":20,"id":"7ac7a964_d6b0ab8d","line":171,"in_reply_to":"7ac7a964_615b9287","updated":"2014-08-15 17:45:43.000000000","message":"This code will be coming from old impl. will be removed soon.","commit_id":"1c9bd5be0b13253b69370e63cc3babc4d512bcb1"},{"author":{"_account_id":9234,"name":"Steve Heyman","email":"steve@heyman.com","username":"hockeynut"},"change_message_id":"d298981a939b1d69b268b4b127036fd8536ab95e","unresolved":false,"context_lines":[{"line_number":171,"context_line":"            LOG.debug(\u0027Secret to create is {0}\u0027.format(name))"},{"line_number":172,"context_line":""},{"line_number":173,"context_line":"            new_order \u003d models.Order()"},{"line_number":174,"context_line":"            new_order.secret_name \u003d secret_info.get(\u0027name\u0027)"},{"line_number":175,"context_line":"            new_order.secret_algorithm \u003d secret_info.get(\u0027algorithm\u0027)"},{"line_number":176,"context_line":"            new_order.secret_bit_length \u003d secret_info.get(\u0027bit_length\u0027, 0)"},{"line_number":177,"context_line":"            new_order.secret_mode \u003d secret_info.get(\u0027mode\u0027)"}],"source_content_type":"text/x-python","patch_set":20,"id":"7ac7a964_014adeab","line":174,"updated":"2014-08-15 16:57:02.000000000","message":"already have this in variable \"name\"","commit_id":"1c9bd5be0b13253b69370e63cc3babc4d512bcb1"},{"author":{"_account_id":994,"name":"Arvind Tiwari","email":"arvindt7@gmail.com","username":"arvind-tiwari"},"change_message_id":"fac325d8f2781548396f58975149ce770e2e2f42","unresolved":false,"context_lines":[{"line_number":171,"context_line":"            LOG.debug(\u0027Secret to create is {0}\u0027.format(name))"},{"line_number":172,"context_line":""},{"line_number":173,"context_line":"            new_order \u003d models.Order()"},{"line_number":174,"context_line":"            new_order.secret_name \u003d secret_info.get(\u0027name\u0027)"},{"line_number":175,"context_line":"            new_order.secret_algorithm \u003d secret_info.get(\u0027algorithm\u0027)"},{"line_number":176,"context_line":"            new_order.secret_bit_length \u003d secret_info.get(\u0027bit_length\u0027, 0)"},{"line_number":177,"context_line":"            new_order.secret_mode \u003d secret_info.get(\u0027mode\u0027)"}],"source_content_type":"text/x-python","patch_set":20,"id":"7ac7a964_16ab031e","line":174,"in_reply_to":"7ac7a964_014adeab","updated":"2014-08-15 17:45:43.000000000","message":"This code will be coming from old impl. will be removed soon.","commit_id":"1c9bd5be0b13253b69370e63cc3babc4d512bcb1"},{"author":{"_account_id":9234,"name":"Steve Heyman","email":"steve@heyman.com","username":"hockeynut"},"change_message_id":"d298981a939b1d69b268b4b127036fd8536ab95e","unresolved":false,"context_lines":[{"line_number":172,"context_line":""},{"line_number":173,"context_line":"            new_order \u003d models.Order()"},{"line_number":174,"context_line":"            new_order.secret_name \u003d secret_info.get(\u0027name\u0027)"},{"line_number":175,"context_line":"            new_order.secret_algorithm \u003d secret_info.get(\u0027algorithm\u0027)"},{"line_number":176,"context_line":"            new_order.secret_bit_length \u003d secret_info.get(\u0027bit_length\u0027, 0)"},{"line_number":177,"context_line":"            new_order.secret_mode \u003d secret_info.get(\u0027mode\u0027)"},{"line_number":178,"context_line":"            new_order.secret_payload_content_type \u003d secret_info.get("}],"source_content_type":"text/x-python","patch_set":20,"id":"7ac7a964_41cbf61d","line":175,"updated":"2014-08-15 16:57:02.000000000","message":"Are alg/bitlen/mode required?  If so then no need for default bit_length.  If they aren\u0027t required then should probably have something for defaults for algorithm and mode (aes and cbc perhaps?)","commit_id":"1c9bd5be0b13253b69370e63cc3babc4d512bcb1"},{"author":{"_account_id":994,"name":"Arvind Tiwari","email":"arvindt7@gmail.com","username":"arvind-tiwari"},"change_message_id":"fac325d8f2781548396f58975149ce770e2e2f42","unresolved":false,"context_lines":[{"line_number":172,"context_line":""},{"line_number":173,"context_line":"            new_order \u003d models.Order()"},{"line_number":174,"context_line":"            new_order.secret_name \u003d secret_info.get(\u0027name\u0027)"},{"line_number":175,"context_line":"            new_order.secret_algorithm \u003d secret_info.get(\u0027algorithm\u0027)"},{"line_number":176,"context_line":"            new_order.secret_bit_length \u003d secret_info.get(\u0027bit_length\u0027, 0)"},{"line_number":177,"context_line":"            new_order.secret_mode \u003d secret_info.get(\u0027mode\u0027)"},{"line_number":178,"context_line":"            new_order.secret_payload_content_type \u003d secret_info.get("}],"source_content_type":"text/x-python","patch_set":20,"id":"7ac7a964_56649b21","line":175,"in_reply_to":"7ac7a964_41cbf61d","updated":"2014-08-15 17:45:43.000000000","message":"This code will be coming from old impl. will be removed soon.","commit_id":"1c9bd5be0b13253b69370e63cc3babc4d512bcb1"},{"author":{"_account_id":9234,"name":"Steve Heyman","email":"steve@heyman.com","username":"hockeynut"},"change_message_id":"d298981a939b1d69b268b4b127036fd8536ab95e","unresolved":false,"context_lines":[{"line_number":173,"context_line":"            new_order \u003d models.Order()"},{"line_number":174,"context_line":"            new_order.secret_name \u003d secret_info.get(\u0027name\u0027)"},{"line_number":175,"context_line":"            new_order.secret_algorithm \u003d secret_info.get(\u0027algorithm\u0027)"},{"line_number":176,"context_line":"            new_order.secret_bit_length \u003d secret_info.get(\u0027bit_length\u0027, 0)"},{"line_number":177,"context_line":"            new_order.secret_mode \u003d secret_info.get(\u0027mode\u0027)"},{"line_number":178,"context_line":"            new_order.secret_payload_content_type \u003d secret_info.get("},{"line_number":179,"context_line":"                \u0027payload_content_type\u0027)"}],"source_content_type":"text/x-python","patch_set":20,"id":"7ac7a964_e1fc0241","line":176,"updated":"2014-08-15 16:57:02.000000000","message":"0 is an invalid bit-length - seems strange to use that as a default","commit_id":"1c9bd5be0b13253b69370e63cc3babc4d512bcb1"},{"author":{"_account_id":994,"name":"Arvind Tiwari","email":"arvindt7@gmail.com","username":"arvind-tiwari"},"change_message_id":"fac325d8f2781548396f58975149ce770e2e2f42","unresolved":false,"context_lines":[{"line_number":173,"context_line":"            new_order \u003d models.Order()"},{"line_number":174,"context_line":"            new_order.secret_name \u003d secret_info.get(\u0027name\u0027)"},{"line_number":175,"context_line":"            new_order.secret_algorithm \u003d secret_info.get(\u0027algorithm\u0027)"},{"line_number":176,"context_line":"            new_order.secret_bit_length \u003d secret_info.get(\u0027bit_length\u0027, 0)"},{"line_number":177,"context_line":"            new_order.secret_mode \u003d secret_info.get(\u0027mode\u0027)"},{"line_number":178,"context_line":"            new_order.secret_payload_content_type \u003d secret_info.get("},{"line_number":179,"context_line":"                \u0027payload_content_type\u0027)"}],"source_content_type":"text/x-python","patch_set":20,"id":"7ac7a964_966e3300","line":176,"in_reply_to":"7ac7a964_e1fc0241","updated":"2014-08-15 17:45:43.000000000","message":"This code will be coming from old impl. will be removed soon.","commit_id":"1c9bd5be0b13253b69370e63cc3babc4d512bcb1"},{"author":{"_account_id":9234,"name":"Steve Heyman","email":"steve@heyman.com","username":"hockeynut"},"change_message_id":"d298981a939b1d69b268b4b127036fd8536ab95e","unresolved":false,"context_lines":[{"line_number":190,"context_line":"                                          keystone_id\u003dkeystone_id)"},{"line_number":191,"context_line":"        else:"},{"line_number":192,"context_line":"            self.queue.process_order(order_id\u003dnew_order.id,"},{"line_number":193,"context_line":"                                     keystone_id\u003dkeystone_id)"},{"line_number":194,"context_line":""},{"line_number":195,"context_line":"        pecan.response.status \u003d 202"},{"line_number":196,"context_line":"        pecan.response.headers[\u0027Location\u0027] \u003d \u0027/{0}/orders/{1}\u0027.format("}],"source_content_type":"text/x-python","patch_set":20,"id":"7ac7a964_81718ee2","line":193,"updated":"2014-08-15 16:57:02.000000000","message":"seems odd that we have different functions here.  Is type-order logically a subclass of order?","commit_id":"1c9bd5be0b13253b69370e63cc3babc4d512bcb1"},{"author":{"_account_id":994,"name":"Arvind Tiwari","email":"arvindt7@gmail.com","username":"arvind-tiwari"},"change_message_id":"fac325d8f2781548396f58975149ce770e2e2f42","unresolved":false,"context_lines":[{"line_number":190,"context_line":"                                          keystone_id\u003dkeystone_id)"},{"line_number":191,"context_line":"        else:"},{"line_number":192,"context_line":"            self.queue.process_order(order_id\u003dnew_order.id,"},{"line_number":193,"context_line":"                                     keystone_id\u003dkeystone_id)"},{"line_number":194,"context_line":""},{"line_number":195,"context_line":"        pecan.response.status \u003d 202"},{"line_number":196,"context_line":"        pecan.response.headers[\u0027Location\u0027] \u003d \u0027/{0}/orders/{1}\u0027.format("}],"source_content_type":"text/x-python","patch_set":20,"id":"7ac7a964_f67207e2","line":193,"in_reply_to":"7ac7a964_81718ee2","updated":"2014-08-15 17:45:43.000000000","message":"This code will be coming from old impl. will be removed soon.","commit_id":"1c9bd5be0b13253b69370e63cc3babc4d512bcb1"},{"author":{"_account_id":6783,"name":"Nathan Reller","email":"nathan.s.reller@gmail.com","username":"rellerreller"},"change_message_id":"79b1da74febff624423c33352ad0edcf5097cba1","unresolved":false,"context_lines":[{"line_number":151,"context_line":"        if order_type:"},{"line_number":152,"context_line":"            body \u003d api.load_body(pecan.request,"},{"line_number":153,"context_line":"                                 validator\u003dself.type_order_validator)"},{"line_number":154,"context_line":"            LOG.debug(\u0027Start on_post...{0}\u0027.format(body))"},{"line_number":155,"context_line":"            name \u003d body.get(\u0027meta\u0027).get(\u0027name\u0027)"},{"line_number":156,"context_line":"            LOG.debug(\u0027Order to create is {0}\u0027.format(name))"},{"line_number":157,"context_line":"            new_order \u003d models.Order(body)"}],"source_content_type":"text/x-python","patch_set":22,"id":"1abeadc6_0388551e","line":154,"updated":"2014-08-18 20:09:10.000000000","message":"Log statements should use the %s style formatting. This is to help improve the efficiency of the logging.","commit_id":"d9610513f44efe8a9489bc82855168d792335da4"},{"author":{"_account_id":994,"name":"Arvind Tiwari","email":"arvindt7@gmail.com","username":"arvind-tiwari"},"change_message_id":"d162d7a217b37a1808599612d0dc82976fc2587e","unresolved":false,"context_lines":[{"line_number":151,"context_line":"        if order_type:"},{"line_number":152,"context_line":"            body \u003d api.load_body(pecan.request,"},{"line_number":153,"context_line":"                                 validator\u003dself.type_order_validator)"},{"line_number":154,"context_line":"            LOG.debug(\u0027Start on_post...{0}\u0027.format(body))"},{"line_number":155,"context_line":"            name \u003d body.get(\u0027meta\u0027).get(\u0027name\u0027)"},{"line_number":156,"context_line":"            LOG.debug(\u0027Order to create is {0}\u0027.format(name))"},{"line_number":157,"context_line":"            new_order \u003d models.Order(body)"}],"source_content_type":"text/x-python","patch_set":22,"id":"1abeadc6_e9eed3eb","line":154,"in_reply_to":"1abeadc6_0388551e","updated":"2014-08-18 20:12:58.000000000","message":"I will fix it but it is legacy code copy paste from line #165","commit_id":"d9610513f44efe8a9489bc82855168d792335da4"},{"author":{"_account_id":6783,"name":"Nathan Reller","email":"nathan.s.reller@gmail.com","username":"rellerreller"},"change_message_id":"e9b3b2dd9a0d2931a3d62425b803c8d375692532","unresolved":false,"context_lines":[{"line_number":151,"context_line":"        if order_type:"},{"line_number":152,"context_line":"            body \u003d api.load_body(pecan.request,"},{"line_number":153,"context_line":"                                 validator\u003dself.type_order_validator)"},{"line_number":154,"context_line":"            LOG.debug(\u0027Start on_post...{0}\u0027.format(body))"},{"line_number":155,"context_line":"            name \u003d body.get(\u0027meta\u0027).get(\u0027name\u0027)"},{"line_number":156,"context_line":"            LOG.debug(\u0027Order to create is {0}\u0027.format(name))"},{"line_number":157,"context_line":"            new_order \u003d models.Order(body)"}],"source_content_type":"text/x-python","patch_set":23,"id":"1abeadc6_ec3181ed","line":154,"updated":"2014-08-18 20:37:25.000000000","message":"You need to change all of the log statements.","commit_id":"f27c311d052b7ac564683b0c00121d8168b71389"},{"author":{"_account_id":7789,"name":"John Wood","email":"john.wood@rackspace.com","username":"woodster"},"change_message_id":"4cc6f208c36206afa40674c6a1269b2a8667ff3a","unresolved":false,"context_lines":[{"line_number":151,"context_line":"        if order_type:"},{"line_number":152,"context_line":"            body \u003d api.load_body(pecan.request,"},{"line_number":153,"context_line":"                                 validator\u003dself.type_order_validator)"},{"line_number":154,"context_line":"            LOG.debug(\u0027Start on_post...{0}\u0027.format(body))"},{"line_number":155,"context_line":"            name \u003d body.get(\u0027meta\u0027).get(\u0027name\u0027)"},{"line_number":156,"context_line":"            LOG.debug(\u0027Order to create is {0}\u0027.format(name))"},{"line_number":157,"context_line":"            new_order \u003d models.Order(body)"}],"source_content_type":"text/x-python","patch_set":23,"id":"1abeadc6_5c6f5fc5","line":154,"in_reply_to":"1abeadc6_ec3181ed","updated":"2014-08-19 15:45:48.000000000","message":"...so like this:\n\nLOG.debug(\u0027Start on_post...%s\u0027, body)","commit_id":"f27c311d052b7ac564683b0c00121d8168b71389"},{"author":{"_account_id":6783,"name":"Nathan Reller","email":"nathan.s.reller@gmail.com","username":"rellerreller"},"change_message_id":"e9b3b2dd9a0d2931a3d62425b803c8d375692532","unresolved":false,"context_lines":[{"line_number":162,"context_line":"                \u0027payload_content_type\u0027)"},{"line_number":163,"context_line":"        else:"},{"line_number":164,"context_line":"            body \u003d api.load_body(pecan.request, validator\u003dself.validator)"},{"line_number":165,"context_line":"            LOG.debug(\u0027Start on_post...{0}\u0027.format(body))"},{"line_number":166,"context_line":""},{"line_number":167,"context_line":"            if \u0027secret\u0027 not in body:"},{"line_number":168,"context_line":"                _secret_not_in_order()"}],"source_content_type":"text/x-python","patch_set":23,"id":"1abeadc6_6c5d7121","line":165,"updated":"2014-08-18 20:37:25.000000000","message":"Change log.","commit_id":"f27c311d052b7ac564683b0c00121d8168b71389"},{"author":{"_account_id":6783,"name":"Nathan Reller","email":"nathan.s.reller@gmail.com","username":"rellerreller"},"change_message_id":"e9b3b2dd9a0d2931a3d62425b803c8d375692532","unresolved":false,"context_lines":[{"line_number":168,"context_line":"                _secret_not_in_order()"},{"line_number":169,"context_line":"            secret_info \u003d body[\u0027secret\u0027]"},{"line_number":170,"context_line":"            name \u003d secret_info.get(\u0027name\u0027)"},{"line_number":171,"context_line":"            LOG.debug(\u0027Secret to create is {0}\u0027.format(name))"},{"line_number":172,"context_line":""},{"line_number":173,"context_line":"            new_order \u003d models.Order()"},{"line_number":174,"context_line":"            new_order.secret_name \u003d secret_info.get(\u0027name\u0027)"}],"source_content_type":"text/x-python","patch_set":23,"id":"1abeadc6_2c537918","line":171,"updated":"2014-08-18 20:37:25.000000000","message":"Change log","commit_id":"f27c311d052b7ac564683b0c00121d8168b71389"}],"barbican/common/validators.py":[{"author":{"_account_id":7789,"name":"John Wood","email":"john.wood@rackspace.com","username":"woodster"},"change_message_id":"026facdb4daf6831793698aab8803730abdf4d36","unresolved":false,"context_lines":[{"line_number":253,"context_line":"        self.schema \u003d \\"},{"line_number":254,"context_line":"            {\"type\": \"object\","},{"line_number":255,"context_line":"                \"$schema\": \"http://json-schema.org/draft-03/schema\","},{"line_number":256,"context_line":"                \"properties\": {\"meta\": {\"type\": \"object\","},{"line_number":257,"context_line":"                                        \"properties\": {"},{"line_number":258,"context_line":"                                        \"name\": {\"type\": \"string\"},"},{"line_number":259,"context_line":"                                        \"algorithm\": {\"type\": \"string\"},"}],"source_content_type":"text/x-python","patch_set":17,"id":"baada198_21561b5f","line":256,"updated":"2014-08-06 16:05:11.000000000","message":"The \u0027meta\u0027 section is schema-less...i.e. we should be able to use it for any order type we wish, including certificate types that can include CSR and form type data that varies depending on the certificate type. At some point, the plugins will be used to perform additional validation, but for this top level validation, this has to be a generic type.","commit_id":"037bc41a04337432714bdf170f1c2f461a3482d3"},{"author":{"_account_id":994,"name":"Arvind Tiwari","email":"arvindt7@gmail.com","username":"arvind-tiwari"},"change_message_id":"fef7ba53ab784008b90c4fa8d77b994ecfc613f8","unresolved":false,"context_lines":[{"line_number":253,"context_line":"        self.schema \u003d \\"},{"line_number":254,"context_line":"            {\"type\": \"object\","},{"line_number":255,"context_line":"                \"$schema\": \"http://json-schema.org/draft-03/schema\","},{"line_number":256,"context_line":"                \"properties\": {\"meta\": {\"type\": \"object\","},{"line_number":257,"context_line":"                                        \"properties\": {"},{"line_number":258,"context_line":"                                        \"name\": {\"type\": \"string\"},"},{"line_number":259,"context_line":"                                        \"algorithm\": {\"type\": \"string\"},"}],"source_content_type":"text/x-python","patch_set":17,"id":"baada198_e7e6e9e6","line":256,"in_reply_to":"baada198_21561b5f","updated":"2014-08-06 21:25:00.000000000","message":"so you don\u0027t need any validation here?","commit_id":"037bc41a04337432714bdf170f1c2f461a3482d3"},{"author":{"_account_id":7789,"name":"John Wood","email":"john.wood@rackspace.com","username":"woodster"},"change_message_id":"a7a793745e90156e5efae8f478e7fd1564b43d87","unresolved":false,"context_lines":[{"line_number":253,"context_line":"        self.schema \u003d \\"},{"line_number":254,"context_line":"            {\"type\": \"object\","},{"line_number":255,"context_line":"                \"$schema\": \"http://json-schema.org/draft-03/schema\","},{"line_number":256,"context_line":"                \"properties\": {\"meta\": {\"type\": \"object\","},{"line_number":257,"context_line":"                                        \"properties\": {"},{"line_number":258,"context_line":"                                        \"name\": {\"type\": \"string\"},"},{"line_number":259,"context_line":"                                        \"algorithm\": {\"type\": \"string\"},"}],"source_content_type":"text/x-python","patch_set":17,"id":"baada198_20efe7b3","line":256,"in_reply_to":"baada198_e7e6e9e6","updated":"2014-08-06 23:16:45.000000000","message":"Not really. I think the meta section isn\u0027t even really required...if the order is a simple request to do something that doesn\u0027t require additional parameters for example.","commit_id":"037bc41a04337432714bdf170f1c2f461a3482d3"},{"author":{"_account_id":7789,"name":"John Wood","email":"john.wood@rackspace.com","username":"woodster"},"change_message_id":"026facdb4daf6831793698aab8803730abdf4d36","unresolved":false,"context_lines":[{"line_number":294,"context_line":"                                                             \" implemented for\""},{"line_number":295,"context_line":"                                                             \" \u0027certificate\u0027\")"},{"line_number":296,"context_line":"                                                  )"},{"line_number":297,"context_line":""},{"line_number":298,"context_line":"        meta \u003d json_data.get(\u0027meta\u0027)"},{"line_number":299,"context_line":"        # Algorithm is required for key/asymmetric keys"},{"line_number":300,"context_line":"        if order_type \u003d\u003d \u0027key\u0027 or order_type \u003d\u003d \u0027asymmetric\u0027:"}],"source_content_type":"text/x-python","patch_set":17,"id":"baada198_c1271fc6","line":297,"updated":"2014-08-06 16:05:11.000000000","message":"I think we should do an order_type \u003d\u003d \u0027asymmetric\u0027 check, and then throw feature not implemented (for this CR). \nFor order_type \u003d\u003d \u0027key\u0027, I\u0027d call the SecretValidator, such as per line #403 below. Then the rest of the logic in this new validator would not be required. \nAlso, there should be a final else: that throws a FeatureNotImplemented for order_types that aren\u0027t supported.","commit_id":"037bc41a04337432714bdf170f1c2f461a3482d3"},{"author":{"_account_id":7789,"name":"John Wood","email":"john.wood@rackspace.com","username":"woodster"},"change_message_id":"a7a793745e90156e5efae8f478e7fd1564b43d87","unresolved":false,"context_lines":[{"line_number":294,"context_line":"                                                             \" implemented for\""},{"line_number":295,"context_line":"                                                             \" \u0027certificate\u0027\")"},{"line_number":296,"context_line":"                                                  )"},{"line_number":297,"context_line":""},{"line_number":298,"context_line":"        meta \u003d json_data.get(\u0027meta\u0027)"},{"line_number":299,"context_line":"        # Algorithm is required for key/asymmetric keys"},{"line_number":300,"context_line":"        if order_type \u003d\u003d \u0027key\u0027 or order_type \u003d\u003d \u0027asymmetric\u0027:"}],"source_content_type":"text/x-python","patch_set":17,"id":"baada198_00fe6339","line":297,"in_reply_to":"baada198_474a35ae","updated":"2014-08-06 23:16:45.000000000","message":"Yes, we can fill in the order_type \u003d\u003d \u0027asymmetric\u0027 stuff in a future CR.\n\nAs for the secret/key validation, you should just be able to do this:\n\nkey_meta \u003d json_data.get(\u0027meta\u0027)\nself._assert_validity(key_meta is not None,\n                              schema_name,\n                              u._(\"\u0027key\u0027 attributes are required\"),\n                              \"meta\")\nsecret_validator \u003d NewSecretValidator()\nsecret_validator.validate(key_meta, parent_schema\u003dself.name)\n...see rest of logic from line 404 below...","commit_id":"037bc41a04337432714bdf170f1c2f461a3482d3"},{"author":{"_account_id":994,"name":"Arvind Tiwari","email":"arvindt7@gmail.com","username":"arvind-tiwari"},"change_message_id":"fef7ba53ab784008b90c4fa8d77b994ecfc613f8","unresolved":false,"context_lines":[{"line_number":294,"context_line":"                                                             \" implemented for\""},{"line_number":295,"context_line":"                                                             \" \u0027certificate\u0027\")"},{"line_number":296,"context_line":"                                                  )"},{"line_number":297,"context_line":""},{"line_number":298,"context_line":"        meta \u003d json_data.get(\u0027meta\u0027)"},{"line_number":299,"context_line":"        # Algorithm is required for key/asymmetric keys"},{"line_number":300,"context_line":"        if order_type \u003d\u003d \u0027key\u0027 or order_type \u003d\u003d \u0027asymmetric\u0027:"}],"source_content_type":"text/x-python","patch_set":17,"id":"baada198_474a35ae","line":297,"in_reply_to":"baada198_c1271fc6","updated":"2014-08-06 21:25:00.000000000","message":"for order_type \u003d\u003d \u0027asymmetric\u0027 do you want to add checks later?\n\nTo call secret validate we will just pass meta?","commit_id":"037bc41a04337432714bdf170f1c2f461a3482d3"},{"author":{"_account_id":7789,"name":"John Wood","email":"john.wood@rackspace.com","username":"woodster"},"change_message_id":"20565e2f520abdce2dde8cf066acc0b8214834c3","unresolved":false,"context_lines":[{"line_number":255,"context_line":"            {\"type\": \"object\","},{"line_number":256,"context_line":"                \"$schema\": \"http://json-schema.org/draft-03/schema\","},{"line_number":257,"context_line":"                \"properties\": {\"meta\": {\"type\": \"object\","},{"line_number":258,"context_line":"                                        \"properties\": {"},{"line_number":259,"context_line":"                                        \"name\": {\"type\": \"string\"},"},{"line_number":260,"context_line":"                                        \"algorithm\": {\"type\": \"string\"},"},{"line_number":261,"context_line":"                                        \"bit_length\": {\"type\": \"integer\","}],"source_content_type":"text/x-python","patch_set":18,"id":"baada198_cf8ce8da","line":258,"updated":"2014-08-13 15:45:15.000000000","message":"I\u0027ve added comments on this module to this patch here: https://review.openstack.org/#/c/87405/17/barbican/common/validators.py,cm","commit_id":"c671e5b8369e63913a72214cdfd294026a4dc2e1"},{"author":{"_account_id":994,"name":"Arvind Tiwari","email":"arvindt7@gmail.com","username":"arvind-tiwari"},"change_message_id":"fa03d45461c4d2e4125bd00a33255e0bd25e7b63","unresolved":false,"context_lines":[{"line_number":255,"context_line":"            {\"type\": \"object\","},{"line_number":256,"context_line":"                \"$schema\": \"http://json-schema.org/draft-03/schema\","},{"line_number":257,"context_line":"                \"properties\": {\"meta\": {\"type\": \"object\","},{"line_number":258,"context_line":"                                        \"properties\": {"},{"line_number":259,"context_line":"                                        \"name\": {\"type\": \"string\"},"},{"line_number":260,"context_line":"                                        \"algorithm\": {\"type\": \"string\"},"},{"line_number":261,"context_line":"                                        \"bit_length\": {\"type\": \"integer\","}],"source_content_type":"text/x-python","patch_set":18,"id":"7ac7a964_17c0844f","line":258,"in_reply_to":"baada198_cf8ce8da","updated":"2014-08-14 21:59:54.000000000","message":"Addressed your comment in patch 19, please check.\nThanks","commit_id":"c671e5b8369e63913a72214cdfd294026a4dc2e1"},{"author":{"_account_id":9914,"name":"Ade Lee","email":"alee@redhat.com","username":"alee"},"change_message_id":"45e253f318114713bac7c8cb275d37f688606b1c","unresolved":false,"context_lines":[{"line_number":288,"context_line":""},{"line_number":289,"context_line":"        order_type \u003d json_data.get(\u0027type\u0027).lower()"},{"line_number":290,"context_line":"        #TODO(atiwari): No support for certificate so far"},{"line_number":291,"context_line":"        if order_type \u003d\u003d \u0027certificate\u0027:"},{"line_number":292,"context_line":"            raise exception.FeatureNotImplemented(field\u003d\u0027type\u0027,"},{"line_number":293,"context_line":"                                                  schema\u003dschema_name,"},{"line_number":294,"context_line":"                                                  reason\u003du._(\"Feature not\""}],"source_content_type":"text/x-python","patch_set":18,"id":"baada198_b23c8231","line":291,"updated":"2014-08-12 14:16:44.000000000","message":"We need some fields defined -- probably in orders.py that specify the valid order types.","commit_id":"c671e5b8369e63913a72214cdfd294026a4dc2e1"},{"author":{"_account_id":7789,"name":"John Wood","email":"john.wood@rackspace.com","username":"woodster"},"change_message_id":"20565e2f520abdce2dde8cf066acc0b8214834c3","unresolved":false,"context_lines":[{"line_number":297,"context_line":"                                                  )"},{"line_number":298,"context_line":""},{"line_number":299,"context_line":"        meta \u003d json_data.get(\u0027meta\u0027)"},{"line_number":300,"context_line":"        # Algorithm is required for key/asymmetric keys"},{"line_number":301,"context_line":"        if order_type \u003d\u003d \u0027key\u0027 or order_type \u003d\u003d \u0027asymmetric\u0027:"},{"line_number":302,"context_line":"            if meta.get(\u0027algorithm\u0027).lower() is None:"},{"line_number":303,"context_line":"                raise exception.InvalidObject(field\u003d\u0027algorithm\u0027,"}],"source_content_type":"text/x-python","patch_set":18,"id":"baada198_cfff8801","line":300,"updated":"2014-08-13 15:45:15.000000000","message":"I think we should be utilizing the existing secrets validator for key validation as mentioned per my patch comments here: https://review.openstack.org/#/c/87405/17/barbican/common/validators.py,cm","commit_id":"c671e5b8369e63913a72214cdfd294026a4dc2e1"},{"author":{"_account_id":994,"name":"Arvind Tiwari","email":"arvindt7@gmail.com","username":"arvind-tiwari"},"change_message_id":"fa03d45461c4d2e4125bd00a33255e0bd25e7b63","unresolved":false,"context_lines":[{"line_number":297,"context_line":"                                                  )"},{"line_number":298,"context_line":""},{"line_number":299,"context_line":"        meta \u003d json_data.get(\u0027meta\u0027)"},{"line_number":300,"context_line":"        # Algorithm is required for key/asymmetric keys"},{"line_number":301,"context_line":"        if order_type \u003d\u003d \u0027key\u0027 or order_type \u003d\u003d \u0027asymmetric\u0027:"},{"line_number":302,"context_line":"            if meta.get(\u0027algorithm\u0027).lower() is None:"},{"line_number":303,"context_line":"                raise exception.InvalidObject(field\u003d\u0027algorithm\u0027,"}],"source_content_type":"text/x-python","patch_set":18,"id":"7ac7a964_57b11cf7","line":300,"in_reply_to":"baada198_cfff8801","updated":"2014-08-14 21:59:54.000000000","message":"done","commit_id":"c671e5b8369e63913a72214cdfd294026a4dc2e1"},{"author":{"_account_id":9914,"name":"Ade Lee","email":"alee@redhat.com","username":"alee"},"change_message_id":"45e253f318114713bac7c8cb275d37f688606b1c","unresolved":false,"context_lines":[{"line_number":303,"context_line":"                raise exception.InvalidObject(field\u003d\u0027algorithm\u0027,"},{"line_number":304,"context_line":"                                              schema\u003dschema_name,"},{"line_number":305,"context_line":"                                              reason\u003du._(\"\u0027algorithm\u0027\""},{"line_number":306,"context_line":"                                                         \" attributes\""},{"line_number":307,"context_line":"                                                         \" is required\"))"},{"line_number":308,"context_line":""},{"line_number":309,"context_line":"        # bit_length is required for key/asymmetric keys"}],"source_content_type":"text/x-python","patch_set":18,"id":"baada198_d28d7636","line":306,"updated":"2014-08-12 14:16:44.000000000","message":"algorithm attribute is required (not attributes)","commit_id":"c671e5b8369e63913a72214cdfd294026a4dc2e1"},{"author":{"_account_id":9914,"name":"Ade Lee","email":"alee@redhat.com","username":"alee"},"change_message_id":"45e253f318114713bac7c8cb275d37f688606b1c","unresolved":false,"context_lines":[{"line_number":307,"context_line":"                                                         \" is required\"))"},{"line_number":308,"context_line":""},{"line_number":309,"context_line":"        # bit_length is required for key/asymmetric keys"},{"line_number":310,"context_line":"        if order_type \u003d\u003d \u0027key\u0027 or order_type \u003d\u003d \u0027asymmetric\u0027:"},{"line_number":311,"context_line":"            # TODO(reaperhulk): Future API change will move"},{"line_number":312,"context_line":"            # from bit to byte_length"},{"line_number":313,"context_line":"            bit_length \u003d int(meta.get(\u0027bit_length\u0027, 0))"}],"source_content_type":"text/x-python","patch_set":18,"id":"baada198_12152e94","line":310,"updated":"2014-08-12 14:16:44.000000000","message":"order_type \u003d\u003d \"key\"?  Why key and not, for example, \"symmetric\"?\n\nWhat are the valid order types?  And why the conditional .. at this point, there should be no other order types, right?","commit_id":"c671e5b8369e63913a72214cdfd294026a4dc2e1"},{"author":{"_account_id":994,"name":"Arvind Tiwari","email":"arvindt7@gmail.com","username":"arvind-tiwari"},"change_message_id":"fa03d45461c4d2e4125bd00a33255e0bd25e7b63","unresolved":false,"context_lines":[{"line_number":307,"context_line":"                                                         \" is required\"))"},{"line_number":308,"context_line":""},{"line_number":309,"context_line":"        # bit_length is required for key/asymmetric keys"},{"line_number":310,"context_line":"        if order_type \u003d\u003d \u0027key\u0027 or order_type \u003d\u003d \u0027asymmetric\u0027:"},{"line_number":311,"context_line":"            # TODO(reaperhulk): Future API change will move"},{"line_number":312,"context_line":"            # from bit to byte_length"},{"line_number":313,"context_line":"            bit_length \u003d int(meta.get(\u0027bit_length\u0027, 0))"}],"source_content_type":"text/x-python","patch_set":18,"id":"7ac7a964_97c73445","line":310,"in_reply_to":"baada198_12152e94","updated":"2014-08-14 21:59:54.000000000","message":"Ade I have made some changes as per Jwood\u0027s comment.\nPlease take a look again","commit_id":"c671e5b8369e63913a72214cdfd294026a4dc2e1"},{"author":{"_account_id":9914,"name":"Ade Lee","email":"alee@redhat.com","username":"alee"},"change_message_id":"45e253f318114713bac7c8cb275d37f688606b1c","unresolved":false,"context_lines":[{"line_number":345,"context_line":"                                                         \" time\"),"},{"line_number":346,"context_line":"                                              property\u003d\"expiration\")"},{"line_number":347,"context_line":"        meta[\u0027expiration\u0027] \u003d expiration"},{"line_number":348,"context_line":""},{"line_number":349,"context_line":"        if meta.get(\u0027payload_content_type\u0027) !\u003d \u0027application/octet-stream\u0027:"},{"line_number":350,"context_line":"            raise exception.UnsupportedField(field\u003d\u0027payload_content_type\u0027,"},{"line_number":351,"context_line":"                                             schema\u003dschema_name,"}],"source_content_type":"text/x-python","patch_set":18,"id":"baada198_f28c3ada","line":348,"updated":"2014-08-12 14:16:44.000000000","message":"I can see this function becoming rather large.  Lets extract lines 336-347 to another function.  I could also see lines 310-328 being their own function too.","commit_id":"c671e5b8369e63913a72214cdfd294026a4dc2e1"},{"author":{"_account_id":7789,"name":"John Wood","email":"john.wood@rackspace.com","username":"woodster"},"change_message_id":"20565e2f520abdce2dde8cf066acc0b8214834c3","unresolved":false,"context_lines":[{"line_number":345,"context_line":"                                                         \" time\"),"},{"line_number":346,"context_line":"                                              property\u003d\"expiration\")"},{"line_number":347,"context_line":"        meta[\u0027expiration\u0027] \u003d expiration"},{"line_number":348,"context_line":""},{"line_number":349,"context_line":"        if meta.get(\u0027payload_content_type\u0027) !\u003d \u0027application/octet-stream\u0027:"},{"line_number":350,"context_line":"            raise exception.UnsupportedField(field\u003d\u0027payload_content_type\u0027,"},{"line_number":351,"context_line":"                                             schema\u003dschema_name,"}],"source_content_type":"text/x-python","patch_set":18,"id":"baada198_ea119a50","line":348,"in_reply_to":"baada198_f28c3ada","updated":"2014-08-13 15:45:15.000000000","message":"As I noted above, we are doing a lot of validation that is already done in the secrets validator...see my comments here: https://review.openstack.org/#/c/87405/17/barbican/common/validators.py,cm","commit_id":"c671e5b8369e63913a72214cdfd294026a4dc2e1"},{"author":{"_account_id":9914,"name":"Ade Lee","email":"alee@redhat.com","username":"alee"},"change_message_id":"45e253f318114713bac7c8cb275d37f688606b1c","unresolved":false,"context_lines":[{"line_number":356,"context_line":"        # Note (atiwari): No need to validate mode, plug-in will do if needed."},{"line_number":357,"context_line":"        # Mode will be copied to the symmetric secret entity if provided."},{"line_number":358,"context_line":"        # It is up to client how they want to use it."},{"line_number":359,"context_line":"        return json_data"},{"line_number":360,"context_line":""},{"line_number":361,"context_line":"    def _extract_expiration(self, json_data, schema_name):"},{"line_number":362,"context_line":"        \"\"\"Extracts and returns the expiration date from the JSON data.\"\"\""}],"source_content_type":"text/x-python","patch_set":18,"id":"baada198_4d89cb23","line":359,"updated":"2014-08-12 14:16:44.000000000","message":"Is there any validation for unknown order types?","commit_id":"c671e5b8369e63913a72214cdfd294026a4dc2e1"},{"author":{"_account_id":994,"name":"Arvind Tiwari","email":"arvindt7@gmail.com","username":"arvind-tiwari"},"change_message_id":"fa03d45461c4d2e4125bd00a33255e0bd25e7b63","unresolved":false,"context_lines":[{"line_number":356,"context_line":"        # Note (atiwari): No need to validate mode, plug-in will do if needed."},{"line_number":357,"context_line":"        # Mode will be copied to the symmetric secret entity if provided."},{"line_number":358,"context_line":"        # It is up to client how they want to use it."},{"line_number":359,"context_line":"        return json_data"},{"line_number":360,"context_line":""},{"line_number":361,"context_line":"    def _extract_expiration(self, json_data, schema_name):"},{"line_number":362,"context_line":"        \"\"\"Extracts and returns the expiration date from the JSON data.\"\"\""}],"source_content_type":"text/x-python","patch_set":18,"id":"7ac7a964_77f8d87c","line":359,"in_reply_to":"baada198_4d89cb23","updated":"2014-08-14 21:59:54.000000000","message":"covered in schema definition line #272","commit_id":"c671e5b8369e63913a72214cdfd294026a4dc2e1"},{"author":{"_account_id":7789,"name":"John Wood","email":"john.wood@rackspace.com","username":"woodster"},"change_message_id":"6183c5f7317e601dde24ce7e656329dbe134502a","unresolved":false,"context_lines":[{"line_number":273,"context_line":""},{"line_number":274,"context_line":"        order_type \u003d json_data.get(\u0027type\u0027).lower()"},{"line_number":275,"context_line":"        #TODO(atiwari): No support for certificate so far"},{"line_number":276,"context_line":"        if order_type \u003d\u003d \u0027certificate\u0027:"},{"line_number":277,"context_line":"            raise exception.FeatureNotImplemented(field\u003d\u0027type\u0027,"},{"line_number":278,"context_line":"                                                  schema\u003dschema_name,"},{"line_number":279,"context_line":"                                                  reason\u003du._(\"Feature not\""}],"source_content_type":"text/x-python","patch_set":19,"id":"7ac7a964_6fdd5c70","line":276,"updated":"2014-08-14 22:49:36.000000000","message":"Ade, are you thinking of a order.py module in common that just has these constants defined in a class, similar to plugin.interface.secret_store.py::KeyAlgorithm?","commit_id":"c528a73a128c12426a0ece54d4e9d33f04fb100b"},{"author":{"_account_id":9914,"name":"Ade Lee","email":"alee@redhat.com","username":"alee"},"change_message_id":"8ee89e9c4e14509d22f6b026d48ce1de3ba6ecc6","unresolved":false,"context_lines":[{"line_number":273,"context_line":""},{"line_number":274,"context_line":"        order_type \u003d json_data.get(\u0027type\u0027).lower()"},{"line_number":275,"context_line":"        #TODO(atiwari): No support for certificate so far"},{"line_number":276,"context_line":"        if order_type \u003d\u003d \u0027certificate\u0027:"},{"line_number":277,"context_line":"            raise exception.FeatureNotImplemented(field\u003d\u0027type\u0027,"},{"line_number":278,"context_line":"                                                  schema\u003dschema_name,"},{"line_number":279,"context_line":"                                                  reason\u003du._(\"Feature not\""}],"source_content_type":"text/x-python","patch_set":19,"id":"7ac7a964_2cea790f","line":276,"in_reply_to":"7ac7a964_6fdd5c70","updated":"2014-08-15 13:59:56.000000000","message":"Something like that.  The types of orders that are accepted should be defined somewhere - I was thinking originally in api/orders.py as it is part of the definition of the interface, but somewhere in common could work too.","commit_id":"c528a73a128c12426a0ece54d4e9d33f04fb100b"},{"author":{"_account_id":7789,"name":"John Wood","email":"john.wood@rackspace.com","username":"woodster"},"change_message_id":"6183c5f7317e601dde24ce7e656329dbe134502a","unresolved":false,"context_lines":[{"line_number":281,"context_line":"                                                             \" \u0027certificate\u0027\")"},{"line_number":282,"context_line":"                                                  )"},{"line_number":283,"context_line":""},{"line_number":284,"context_line":"        if order_type \u003d\u003d \u0027asymmetric\u0027:"},{"line_number":285,"context_line":"            asymmetric_meta \u003d json_data.get(\u0027meta\u0027)"},{"line_number":286,"context_line":"            self._validate_asymmetric_meta(asymmetric_meta, schema_name)"},{"line_number":287,"context_line":""}],"source_content_type":"text/x-python","patch_set":19,"id":"7ac7a964_1d6425b8","line":284,"updated":"2014-08-14 22:49:36.000000000","message":"Please change: if --\u003e elif","commit_id":"c528a73a128c12426a0ece54d4e9d33f04fb100b"},{"author":{"_account_id":994,"name":"Arvind Tiwari","email":"arvindt7@gmail.com","username":"arvind-tiwari"},"change_message_id":"e52c485e24ec4ab1f073761eb136cd8cacdb8cd0","unresolved":false,"context_lines":[{"line_number":281,"context_line":"                                                             \" \u0027certificate\u0027\")"},{"line_number":282,"context_line":"                                                  )"},{"line_number":283,"context_line":""},{"line_number":284,"context_line":"        if order_type \u003d\u003d \u0027asymmetric\u0027:"},{"line_number":285,"context_line":"            asymmetric_meta \u003d json_data.get(\u0027meta\u0027)"},{"line_number":286,"context_line":"            self._validate_asymmetric_meta(asymmetric_meta, schema_name)"},{"line_number":287,"context_line":""}],"source_content_type":"text/x-python","patch_set":19,"id":"7ac7a964_32cbcba6","line":284,"in_reply_to":"7ac7a964_1d6425b8","updated":"2014-08-18 20:18:56.000000000","message":"done","commit_id":"c528a73a128c12426a0ece54d4e9d33f04fb100b"},{"author":{"_account_id":7789,"name":"John Wood","email":"john.wood@rackspace.com","username":"woodster"},"change_message_id":"6183c5f7317e601dde24ce7e656329dbe134502a","unresolved":false,"context_lines":[{"line_number":285,"context_line":"            asymmetric_meta \u003d json_data.get(\u0027meta\u0027)"},{"line_number":286,"context_line":"            self._validate_asymmetric_meta(asymmetric_meta, schema_name)"},{"line_number":287,"context_line":""},{"line_number":288,"context_line":"        if order_type \u003d\u003d \u0027key\u0027:"},{"line_number":289,"context_line":"            key_meta \u003d json_data.get(\u0027meta\u0027)"},{"line_number":290,"context_line":"            self._assert_validity(key_meta is not None,"},{"line_number":291,"context_line":"                                  schema_name,"}],"source_content_type":"text/x-python","patch_set":19,"id":"7ac7a964_5d5e9de7","line":288,"updated":"2014-08-14 22:49:36.000000000","message":"if -\u003e elif\n\nAlso, Ade the selection of \u0027key\u0027 came out of this blueprint: https://github.com/openstack/barbican-specs/blob/master/specs/juno/api-orders-add-more-types.rst   I believe.","commit_id":"c528a73a128c12426a0ece54d4e9d33f04fb100b"},{"author":{"_account_id":994,"name":"Arvind Tiwari","email":"arvindt7@gmail.com","username":"arvind-tiwari"},"change_message_id":"e52c485e24ec4ab1f073761eb136cd8cacdb8cd0","unresolved":false,"context_lines":[{"line_number":285,"context_line":"            asymmetric_meta \u003d json_data.get(\u0027meta\u0027)"},{"line_number":286,"context_line":"            self._validate_asymmetric_meta(asymmetric_meta, schema_name)"},{"line_number":287,"context_line":""},{"line_number":288,"context_line":"        if order_type \u003d\u003d \u0027key\u0027:"},{"line_number":289,"context_line":"            key_meta \u003d json_data.get(\u0027meta\u0027)"},{"line_number":290,"context_line":"            self._assert_validity(key_meta is not None,"},{"line_number":291,"context_line":"                                  schema_name,"}],"source_content_type":"text/x-python","patch_set":19,"id":"7ac7a964_b2befbfd","line":288,"in_reply_to":"7ac7a964_5d5e9de7","updated":"2014-08-18 20:18:56.000000000","message":"done","commit_id":"c528a73a128c12426a0ece54d4e9d33f04fb100b"},{"author":{"_account_id":7789,"name":"John Wood","email":"john.wood@rackspace.com","username":"woodster"},"change_message_id":"6183c5f7317e601dde24ce7e656329dbe134502a","unresolved":false,"context_lines":[{"line_number":291,"context_line":"                                  schema_name,"},{"line_number":292,"context_line":"                                  u._(\"\u0027meta\u0027 attributes is required\"), \"meta\")"},{"line_number":293,"context_line":"            self._validate_key_meta(key_meta, schema_name)"},{"line_number":294,"context_line":""},{"line_number":295,"context_line":"        return json_data"},{"line_number":296,"context_line":""},{"line_number":297,"context_line":"    def _validate_key_meta(self, key_meta, schema_name):"}],"source_content_type":"text/x-python","patch_set":19,"id":"7ac7a964_bd0331b7","line":294,"updated":"2014-08-14 22:49:36.000000000","message":"Please add a final else: block to raise on unimplemented order types.","commit_id":"c528a73a128c12426a0ece54d4e9d33f04fb100b"},{"author":{"_account_id":994,"name":"Arvind Tiwari","email":"arvindt7@gmail.com","username":"arvind-tiwari"},"change_message_id":"e52c485e24ec4ab1f073761eb136cd8cacdb8cd0","unresolved":false,"context_lines":[{"line_number":291,"context_line":"                                  schema_name,"},{"line_number":292,"context_line":"                                  u._(\"\u0027meta\u0027 attributes is required\"), \"meta\")"},{"line_number":293,"context_line":"            self._validate_key_meta(key_meta, schema_name)"},{"line_number":294,"context_line":""},{"line_number":295,"context_line":"        return json_data"},{"line_number":296,"context_line":""},{"line_number":297,"context_line":"    def _validate_key_meta(self, key_meta, schema_name):"}],"source_content_type":"text/x-python","patch_set":19,"id":"7ac7a964_f23793ae","line":294,"in_reply_to":"7ac7a964_bd0331b7","updated":"2014-08-18 20:18:56.000000000","message":"done","commit_id":"c528a73a128c12426a0ece54d4e9d33f04fb100b"},{"author":{"_account_id":7789,"name":"John Wood","email":"john.wood@rackspace.com","username":"woodster"},"change_message_id":"6183c5f7317e601dde24ce7e656329dbe134502a","unresolved":false,"context_lines":[{"line_number":315,"context_line":"                                                        \"tet-stream\u0027 \""},{"line_number":316,"context_line":"                                                        \"supported\"))"},{"line_number":317,"context_line":""},{"line_number":318,"context_line":"        # Note (atiwari): No need to validate mode, plug-in will do if needed."},{"line_number":319,"context_line":"        # Mode will be copied to the symmetric secret entity if provided."},{"line_number":320,"context_line":"        # It is up to client how they want to use it."},{"line_number":321,"context_line":""}],"source_content_type":"text/x-python","patch_set":19,"id":"7ac7a964_5d121db2","line":318,"updated":"2014-08-14 22:49:36.000000000","message":"Arvind, please restore the order validation code starting from here:\n\nhttps://github.com/openstack/barbican/blob/master/barbican/common/validators.py#L290\n\n...to line 300.\n\nThe reason for keeping this logic is two fold: (1) the order validator is called by API nodes (so synchronously) and is the last chance to let clients know something is wrong before orders are processed by worker nodes, and (2) plugins are not yet doing validation. Future CRs need to provide that ability, but for the time being, the original orders validation logic ensures clients only make a order request that we know works with the current plugin.","commit_id":"c528a73a128c12426a0ece54d4e9d33f04fb100b"},{"author":{"_account_id":7789,"name":"John Wood","email":"john.wood@rackspace.com","username":"woodster"},"change_message_id":"6183c5f7317e601dde24ce7e656329dbe134502a","unresolved":false,"context_lines":[{"line_number":319,"context_line":"        # Mode will be copied to the symmetric secret entity if provided."},{"line_number":320,"context_line":"        # It is up to client how they want to use it."},{"line_number":321,"context_line":""},{"line_number":322,"context_line":"        self._assert_validity(key_meta.get(\u0027algorithm\u0027) is not None,"},{"line_number":323,"context_line":"                              schema_name,"},{"line_number":324,"context_line":"                              u._(\"\u0027algorithm\u0027 is required in meta for\""},{"line_number":325,"context_line":"                                  \"for key type order\"), \"meta\")"}],"source_content_type":"text/x-python","patch_set":19,"id":"7ac7a964_bdaa5117","line":322,"updated":"2014-08-14 22:49:36.000000000","message":"...so this should be replaced by the original algorithm/mode check logic in the current orders validator, as mentioned above.","commit_id":"c528a73a128c12426a0ece54d4e9d33f04fb100b"},{"author":{"_account_id":7789,"name":"John Wood","email":"john.wood@rackspace.com","username":"woodster"},"change_message_id":"6183c5f7317e601dde24ce7e656329dbe134502a","unresolved":false,"context_lines":[{"line_number":326,"context_line":""},{"line_number":327,"context_line":"        self._validate_bit_length(key_meta, schema_name)"},{"line_number":328,"context_line":""},{"line_number":329,"context_line":"    def _validate_asymmetric_meta(self, asymmetric_meta, schema_name):"},{"line_number":330,"context_line":"        \"\"\"validation specific to meta for asymmetric type order\"\"\""},{"line_number":331,"context_line":""},{"line_number":332,"context_line":"        raise exception.FeatureNotImplemented(field\u003d\u0027type\u0027,"}],"source_content_type":"text/x-python","patch_set":19,"id":"7ac7a964_bd817191","line":329,"updated":"2014-08-14 22:49:36.000000000","message":"For consistency, you could add a _validate_certificate_meta(...) method that raises the FeatureNotImplemented exception as well.","commit_id":"c528a73a128c12426a0ece54d4e9d33f04fb100b"},{"author":{"_account_id":994,"name":"Arvind Tiwari","email":"arvindt7@gmail.com","username":"arvind-tiwari"},"change_message_id":"e52c485e24ec4ab1f073761eb136cd8cacdb8cd0","unresolved":false,"context_lines":[{"line_number":326,"context_line":""},{"line_number":327,"context_line":"        self._validate_bit_length(key_meta, schema_name)"},{"line_number":328,"context_line":""},{"line_number":329,"context_line":"    def _validate_asymmetric_meta(self, asymmetric_meta, schema_name):"},{"line_number":330,"context_line":"        \"\"\"validation specific to meta for asymmetric type order\"\"\""},{"line_number":331,"context_line":""},{"line_number":332,"context_line":"        raise exception.FeatureNotImplemented(field\u003d\u0027type\u0027,"}],"source_content_type":"text/x-python","patch_set":19,"id":"7ac7a964_8f22b8b7","line":329,"in_reply_to":"7ac7a964_bd817191","updated":"2014-08-18 20:18:56.000000000","message":"I will do that","commit_id":"c528a73a128c12426a0ece54d4e9d33f04fb100b"},{"author":{"_account_id":7262,"name":"John Vrbanac","email":"john.vrbanac@linux.com","username":"john.vrbanac"},"change_message_id":"8f3a129843e80b6aa344304e9435c0418c3566c8","unresolved":false,"context_lines":[{"line_number":251,"context_line":""},{"line_number":252,"context_line":"    def __init__(self):"},{"line_number":253,"context_line":"        self.name \u003d \u0027Order\u0027"},{"line_number":254,"context_line":"        self.schema \u003d \\"},{"line_number":255,"context_line":"            {\"type\": \"object\","},{"line_number":256,"context_line":"                \"$schema\": \"http://json-schema.org/draft-03/schema\","},{"line_number":257,"context_line":"                \"properties\": {\"meta\": {\"type\": \"object\"},"}],"source_content_type":"text/x-python","patch_set":20,"id":"7ac7a964_9be74112","line":254,"updated":"2014-08-15 15:55:47.000000000","message":"You don\u0027t need the backslash here. Backslashes should really only used as a last result. Solution, move the squiggly open bracket to where the backslash is; making this more like a json pretty print.","commit_id":"1c9bd5be0b13253b69370e63cc3babc4d512bcb1"},{"author":{"_account_id":994,"name":"Arvind Tiwari","email":"arvindt7@gmail.com","username":"arvind-tiwari"},"change_message_id":"fac325d8f2781548396f58975149ce770e2e2f42","unresolved":false,"context_lines":[{"line_number":251,"context_line":""},{"line_number":252,"context_line":"    def __init__(self):"},{"line_number":253,"context_line":"        self.name \u003d \u0027Order\u0027"},{"line_number":254,"context_line":"        self.schema \u003d \\"},{"line_number":255,"context_line":"            {\"type\": \"object\","},{"line_number":256,"context_line":"                \"$schema\": \"http://json-schema.org/draft-03/schema\","},{"line_number":257,"context_line":"                \"properties\": {\"meta\": {\"type\": \"object\"},"}],"source_content_type":"text/x-python","patch_set":20,"id":"7ac7a964_f6776739","line":254,"in_reply_to":"7ac7a964_9be74112","updated":"2014-08-15 17:45:43.000000000","message":"Sure","commit_id":"1c9bd5be0b13253b69370e63cc3babc4d512bcb1"},{"author":{"_account_id":9234,"name":"Steve Heyman","email":"steve@heyman.com","username":"hockeynut"},"change_message_id":"d298981a939b1d69b268b4b127036fd8536ab95e","unresolved":false,"context_lines":[{"line_number":310,"context_line":"                \u0027application/octet-stream\u0027:"},{"line_number":311,"context_line":"            raise exception.UnsupportedField(field\u003d\u0027payload_content_type\u0027,"},{"line_number":312,"context_line":"                                             schema\u003dschema_name,"},{"line_number":313,"context_line":"                                             reason\u003du._(\"Only \u0027application/oc \""},{"line_number":314,"context_line":"                                                        \"tet-stream\u0027 \""},{"line_number":315,"context_line":"                                                        \"supported\"))"},{"line_number":316,"context_line":""}],"source_content_type":"text/x-python","patch_set":20,"id":"7ac7a964_4135b6f5","line":313,"updated":"2014-08-15 16:57:02.000000000","message":"space after oc?","commit_id":"1c9bd5be0b13253b69370e63cc3babc4d512bcb1"},{"author":{"_account_id":994,"name":"Arvind Tiwari","email":"arvindt7@gmail.com","username":"arvind-tiwari"},"change_message_id":"fac325d8f2781548396f58975149ce770e2e2f42","unresolved":false,"context_lines":[{"line_number":310,"context_line":"                \u0027application/octet-stream\u0027:"},{"line_number":311,"context_line":"            raise exception.UnsupportedField(field\u003d\u0027payload_content_type\u0027,"},{"line_number":312,"context_line":"                                             schema\u003dschema_name,"},{"line_number":313,"context_line":"                                             reason\u003du._(\"Only \u0027application/oc \""},{"line_number":314,"context_line":"                                                        \"tet-stream\u0027 \""},{"line_number":315,"context_line":"                                                        \"supported\"))"},{"line_number":316,"context_line":""}],"source_content_type":"text/x-python","patch_set":20,"id":"7ac7a964_56a2dbae","line":313,"in_reply_to":"7ac7a964_4135b6f5","updated":"2014-08-15 17:45:43.000000000","message":"Great catch, thanks","commit_id":"1c9bd5be0b13253b69370e63cc3babc4d512bcb1"},{"author":{"_account_id":7874,"name":"Venkat Sundaram","email":"tsv@hp.com","username":"tsv"},"change_message_id":"8bd86a0a13fb260de48c33143a8a52870e043162","unresolved":false,"context_lines":[{"line_number":282,"context_line":""},{"line_number":283,"context_line":"        elif order_type \u003d\u003d \u0027key\u0027:"},{"line_number":284,"context_line":"            key_meta \u003d json_data.get(\u0027meta\u0027)"},{"line_number":285,"context_line":"            self._assert_validity(key_meta is not None,"},{"line_number":286,"context_line":"                                  schema_name,"},{"line_number":287,"context_line":"                                  u._(\"\u0027meta\u0027 attributes is required\"), \"meta\")"},{"line_number":288,"context_line":"            self._validate_key_meta(key_meta, schema_name)"}],"source_content_type":"text/x-python","patch_set":21,"id":"7ac7a964_364f1494","line":285,"updated":"2014-08-15 23:40:12.000000000","message":"Shouldn\u0027t this _assert_validity check be done for above two conditions as well ? If that is expected to be done inside the _validate_* methods, then to be consistent, shouldn\u0027t this be moved to the _validate_key_meta method ?","commit_id":"e4d2a836c809c87bdb58307a660ca167863c9d15"},{"author":{"_account_id":994,"name":"Arvind Tiwari","email":"arvindt7@gmail.com","username":"arvind-tiwari"},"change_message_id":"d22372ad4674e9cfb310f1a128d8b345af16edba","unresolved":false,"context_lines":[{"line_number":282,"context_line":""},{"line_number":283,"context_line":"        elif order_type \u003d\u003d \u0027key\u0027:"},{"line_number":284,"context_line":"            key_meta \u003d json_data.get(\u0027meta\u0027)"},{"line_number":285,"context_line":"            self._assert_validity(key_meta is not None,"},{"line_number":286,"context_line":"                                  schema_name,"},{"line_number":287,"context_line":"                                  u._(\"\u0027meta\u0027 attributes is required\"), \"meta\")"},{"line_number":288,"context_line":"            self._validate_key_meta(key_meta, schema_name)"}],"source_content_type":"text/x-python","patch_set":21,"id":"1abeadc6_7d81ab8e","line":285,"in_reply_to":"1abeadc6_324db973","updated":"2014-08-18 15:42:10.000000000","message":"Sure I will do that, thanks TSV","commit_id":"e4d2a836c809c87bdb58307a660ca167863c9d15"},{"author":{"_account_id":7789,"name":"John Wood","email":"john.wood@rackspace.com","username":"woodster"},"change_message_id":"94841e1d115ac539ef0345d6d6443a53ddd87833","unresolved":false,"context_lines":[{"line_number":282,"context_line":""},{"line_number":283,"context_line":"        elif order_type \u003d\u003d \u0027key\u0027:"},{"line_number":284,"context_line":"            key_meta \u003d json_data.get(\u0027meta\u0027)"},{"line_number":285,"context_line":"            self._assert_validity(key_meta is not None,"},{"line_number":286,"context_line":"                                  schema_name,"},{"line_number":287,"context_line":"                                  u._(\"\u0027meta\u0027 attributes is required\"), \"meta\")"},{"line_number":288,"context_line":"            self._validate_key_meta(key_meta, schema_name)"}],"source_content_type":"text/x-python","patch_set":21,"id":"1abeadc6_324db973","line":285,"in_reply_to":"7ac7a964_364f1494","updated":"2014-08-18 02:26:25.000000000","message":"Well, the _validate_key_meta() method is only for the \u0027key\u0027 order type. It would make sense for the three handler methods (_validate_asymmetric_meta(), _validate_key_meta(), _validate_certificate_meta()) to do their own _assert_validity checks though, rather than doing this check here. Arvind, can you move this check to these _validate_xxxx() methods instead?","commit_id":"e4d2a836c809c87bdb58307a660ca167863c9d15"},{"author":{"_account_id":7874,"name":"Venkat Sundaram","email":"tsv@hp.com","username":"tsv"},"change_message_id":"8bd86a0a13fb260de48c33143a8a52870e043162","unresolved":false,"context_lines":[{"line_number":305,"context_line":"        # Validation secret generation related fields."},{"line_number":306,"context_line":"        # TODO(jfwood): Invoke the crypto plugin for this purpose"},{"line_number":307,"context_line":""},{"line_number":308,"context_line":"        if key_meta.get(\u0027payload_content_type\u0027, \u0027\u0027).lower() !\u003d\\"},{"line_number":309,"context_line":"                \u0027application/octet-stream\u0027:"},{"line_number":310,"context_line":"            raise exception.UnsupportedField(field\u003d\u0027payload_content_type\u0027,"},{"line_number":311,"context_line":"                                             schema\u003dschema_name,"}],"source_content_type":"text/x-python","patch_set":21,"id":"7ac7a964_36c1d4e4","line":308,"updated":"2014-08-15 23:40:12.000000000","message":"Shouldn\u0027t this check be removed now ?\nAlso, I don\u0027t see this in https://gist.github.com/jfwood/9080109","commit_id":"e4d2a836c809c87bdb58307a660ca167863c9d15"},{"author":{"_account_id":7874,"name":"Venkat Sundaram","email":"tsv@hp.com","username":"tsv"},"change_message_id":"0fb289f3aeb867aee4ee8a0eb182fa8da36e9413","unresolved":false,"context_lines":[{"line_number":305,"context_line":"        # Validation secret generation related fields."},{"line_number":306,"context_line":"        # TODO(jfwood): Invoke the crypto plugin for this purpose"},{"line_number":307,"context_line":""},{"line_number":308,"context_line":"        if key_meta.get(\u0027payload_content_type\u0027, \u0027\u0027).lower() !\u003d\\"},{"line_number":309,"context_line":"                \u0027application/octet-stream\u0027:"},{"line_number":310,"context_line":"            raise exception.UnsupportedField(field\u003d\u0027payload_content_type\u0027,"},{"line_number":311,"context_line":"                                             schema\u003dschema_name,"}],"source_content_type":"text/x-python","patch_set":21,"id":"1abeadc6_72dd7142","line":308,"in_reply_to":"1abeadc6_b295498a","updated":"2014-08-18 02:36:06.000000000","message":"Got it now. Thanks for clarifying John.","commit_id":"e4d2a836c809c87bdb58307a660ca167863c9d15"},{"author":{"_account_id":7789,"name":"John Wood","email":"john.wood@rackspace.com","username":"woodster"},"change_message_id":"94841e1d115ac539ef0345d6d6443a53ddd87833","unresolved":false,"context_lines":[{"line_number":305,"context_line":"        # Validation secret generation related fields."},{"line_number":306,"context_line":"        # TODO(jfwood): Invoke the crypto plugin for this purpose"},{"line_number":307,"context_line":""},{"line_number":308,"context_line":"        if key_meta.get(\u0027payload_content_type\u0027, \u0027\u0027).lower() !\u003d\\"},{"line_number":309,"context_line":"                \u0027application/octet-stream\u0027:"},{"line_number":310,"context_line":"            raise exception.UnsupportedField(field\u003d\u0027payload_content_type\u0027,"},{"line_number":311,"context_line":"                                             schema\u003dschema_name,"}],"source_content_type":"text/x-python","patch_set":21,"id":"1abeadc6_b295498a","line":308,"in_reply_to":"7ac7a964_36c1d4e4","updated":"2014-08-18 02:26:25.000000000","message":"Venkat, the gist was not complete to the orders that can be generated. This section notes that payload_content_type field can be specified: https://github.com/cloudkeep/barbican/wiki/Application-Programming-Interface#post-1\n\nThis if check is related to the TODO note above it...eventually the plugins will do the validation, but for now, validation logic is present here to reflect the only type of secret that can be generated contently...binary secret types.","commit_id":"e4d2a836c809c87bdb58307a660ca167863c9d15"},{"author":{"_account_id":9914,"name":"Ade Lee","email":"alee@redhat.com","username":"alee"},"change_message_id":"f534b1b6239f29f4454b8733658086ac78f1bf1a","unresolved":false,"context_lines":[{"line_number":248,"context_line":""},{"line_number":249,"context_line":""},{"line_number":250,"context_line":"#TODO(atiwari) - Split this validator module and unit tests"},{"line_number":251,"context_line":"# into smaller modules"},{"line_number":252,"context_line":"class TypeOrderValidator(ValidatorBase):"},{"line_number":253,"context_line":"    \"\"\"Validate a new typed order.\"\"\""},{"line_number":254,"context_line":""}],"source_content_type":"text/x-python","patch_set":23,"id":"1abeadc6_73b1aee0","line":251,"updated":"2014-08-19 14:36:02.000000000","message":"Agreed on splitting this up.  What would be cleaner would be subclasses of TypeOrderValidator ie.\nSymmetricKeyOrderValidator, AsymmetricKeyOrderValidator, CertificateOrderValidator.  Determine the type ahead of time and instantiate the relevant validator.","commit_id":"f27c311d052b7ac564683b0c00121d8168b71389"},{"author":{"_account_id":9914,"name":"Ade Lee","email":"alee@redhat.com","username":"alee"},"change_message_id":"245328341b566a0b7053f2ab1370dbee743da256","unresolved":false,"context_lines":[{"line_number":248,"context_line":""},{"line_number":249,"context_line":""},{"line_number":250,"context_line":"#TODO(atiwari) - Split this validator module and unit tests"},{"line_number":251,"context_line":"# into smaller modules"},{"line_number":252,"context_line":"class TypeOrderValidator(ValidatorBase):"},{"line_number":253,"context_line":"    \"\"\"Validate a new typed order.\"\"\""},{"line_number":254,"context_line":""}],"source_content_type":"text/x-python","patch_set":23,"id":"1abeadc6_62b71687","line":251,"in_reply_to":"1abeadc6_1c832757","updated":"2014-08-19 15:36:18.000000000","message":"Moving the package probably makes sense.  But we can save that for the validator refactoring CR.","commit_id":"f27c311d052b7ac564683b0c00121d8168b71389"},{"author":{"_account_id":7789,"name":"John Wood","email":"john.wood@rackspace.com","username":"woodster"},"change_message_id":"c60b8f2221e92f865b3346173583bfc1561e39e8","unresolved":false,"context_lines":[{"line_number":248,"context_line":""},{"line_number":249,"context_line":""},{"line_number":250,"context_line":"#TODO(atiwari) - Split this validator module and unit tests"},{"line_number":251,"context_line":"# into smaller modules"},{"line_number":252,"context_line":"class TypeOrderValidator(ValidatorBase):"},{"line_number":253,"context_line":"    \"\"\"Validate a new typed order.\"\"\""},{"line_number":254,"context_line":""}],"source_content_type":"text/x-python","patch_set":23,"id":"1abeadc6_b6a32f4e","line":251,"in_reply_to":"1abeadc6_62b71687","updated":"2014-08-19 15:57:19.000000000","message":"That sounds good to me.","commit_id":"f27c311d052b7ac564683b0c00121d8168b71389"},{"author":{"_account_id":994,"name":"Arvind Tiwari","email":"arvindt7@gmail.com","username":"arvind-tiwari"},"change_message_id":"cadaad1b58fa0523a8fc7a014c3b447262106b9d","unresolved":false,"context_lines":[{"line_number":248,"context_line":""},{"line_number":249,"context_line":""},{"line_number":250,"context_line":"#TODO(atiwari) - Split this validator module and unit tests"},{"line_number":251,"context_line":"# into smaller modules"},{"line_number":252,"context_line":"class TypeOrderValidator(ValidatorBase):"},{"line_number":253,"context_line":"    \"\"\"Validate a new typed order.\"\"\""},{"line_number":254,"context_line":""}],"source_content_type":"text/x-python","patch_set":23,"id":"1abeadc6_1c832757","line":251,"in_reply_to":"1abeadc6_73b1aee0","updated":"2014-08-19 15:01:07.000000000","message":"I was thinking of having separate validators based on controller (BaseValidator, OrderValidator, SecretValidator ......) later on we can split OrderValidator as per your direction if needed.\n\nAs part of this split I was also thinking of moving validators in to \"barbican.api.validator\" package. Currently it is in common.\n\nThoughts?","commit_id":"f27c311d052b7ac564683b0c00121d8168b71389"},{"author":{"_account_id":9914,"name":"Ade Lee","email":"alee@redhat.com","username":"alee"},"change_message_id":"f534b1b6239f29f4454b8733658086ac78f1bf1a","unresolved":false,"context_lines":[{"line_number":257,"context_line":"        self.schema \u003d {"},{"line_number":258,"context_line":"            \"type\": \"object\","},{"line_number":259,"context_line":"            \"$schema\": \"http://json-schema.org/draft-03/schema\","},{"line_number":260,"context_line":"            \"properties\": {\"meta\": {\"type\": \"object\"},"},{"line_number":261,"context_line":"                           \"type\": {\"type\": \"string\","},{"line_number":262,"context_line":"                                    \"required\": True,"},{"line_number":263,"context_line":"                                    \"enum\": [\u0027key\u0027, \u0027asymmetric\u0027,"}],"source_content_type":"text/x-python","patch_set":23,"id":"1abeadc6_33ead60f","line":260,"updated":"2014-08-19 14:36:02.000000000","message":"Is meta a required property?","commit_id":"f27c311d052b7ac564683b0c00121d8168b71389"},{"author":{"_account_id":994,"name":"Arvind Tiwari","email":"arvindt7@gmail.com","username":"arvind-tiwari"},"change_message_id":"cadaad1b58fa0523a8fc7a014c3b447262106b9d","unresolved":false,"context_lines":[{"line_number":257,"context_line":"        self.schema \u003d {"},{"line_number":258,"context_line":"            \"type\": \"object\","},{"line_number":259,"context_line":"            \"$schema\": \"http://json-schema.org/draft-03/schema\","},{"line_number":260,"context_line":"            \"properties\": {\"meta\": {\"type\": \"object\"},"},{"line_number":261,"context_line":"                           \"type\": {\"type\": \"string\","},{"line_number":262,"context_line":"                                    \"required\": True,"},{"line_number":263,"context_line":"                                    \"enum\": [\u0027key\u0027, \u0027asymmetric\u0027,"}],"source_content_type":"text/x-python","patch_set":23,"id":"1abeadc6_dcbe0fff","line":260,"in_reply_to":"1abeadc6_33ead60f","updated":"2014-08-19 15:01:07.000000000","message":"No, as per Jwood it is not but it is required for KEY, Cert and Asymmetric, so I am checking it in lower level validation code.","commit_id":"f27c311d052b7ac564683b0c00121d8168b71389"},{"author":{"_account_id":7789,"name":"John Wood","email":"john.wood@rackspace.com","username":"woodster"},"change_message_id":"c60b8f2221e92f865b3346173583bfc1561e39e8","unresolved":false,"context_lines":[{"line_number":257,"context_line":"        self.schema \u003d {"},{"line_number":258,"context_line":"            \"type\": \"object\","},{"line_number":259,"context_line":"            \"$schema\": \"http://json-schema.org/draft-03/schema\","},{"line_number":260,"context_line":"            \"properties\": {\"meta\": {\"type\": \"object\"},"},{"line_number":261,"context_line":"                           \"type\": {\"type\": \"string\","},{"line_number":262,"context_line":"                                    \"required\": True,"},{"line_number":263,"context_line":"                                    \"enum\": [\u0027key\u0027, \u0027asymmetric\u0027,"}],"source_content_type":"text/x-python","patch_set":23,"id":"1abeadc6_966e3300","line":260,"in_reply_to":"1abeadc6_dcbe0fff","updated":"2014-08-19 15:57:19.000000000","message":"As there is just a generic orders resource, the meta block is not required (there could be orders that don\u0027t require any parameters at all).","commit_id":"f27c311d052b7ac564683b0c00121d8168b71389"},{"author":{"_account_id":6783,"name":"Nathan Reller","email":"nathan.s.reller@gmail.com","username":"rellerreller"},"change_message_id":"e9b3b2dd9a0d2931a3d62425b803c8d375692532","unresolved":false,"context_lines":[{"line_number":260,"context_line":"            \"properties\": {\"meta\": {\"type\": \"object\"},"},{"line_number":261,"context_line":"                           \"type\": {\"type\": \"string\","},{"line_number":262,"context_line":"                                    \"required\": True,"},{"line_number":263,"context_line":"                                    \"enum\": [\u0027key\u0027, \u0027asymmetric\u0027,"},{"line_number":264,"context_line":"                                             \u0027certificate\u0027]}"},{"line_number":265,"context_line":"                           }}"},{"line_number":266,"context_line":""}],"source_content_type":"text/x-python","patch_set":23,"id":"1abeadc6_ece4213d","line":263,"updated":"2014-08-18 20:37:25.000000000","message":"This should be symmetric instead of key.\n\nhttps://etherpad.openstack.org/p/create-multi-part-rsa-secrets-with-order","commit_id":"f27c311d052b7ac564683b0c00121d8168b71389"},{"author":{"_account_id":994,"name":"Arvind Tiwari","email":"arvindt7@gmail.com","username":"arvind-tiwari"},"change_message_id":"cadaad1b58fa0523a8fc7a014c3b447262106b9d","unresolved":false,"context_lines":[{"line_number":260,"context_line":"            \"properties\": {\"meta\": {\"type\": \"object\"},"},{"line_number":261,"context_line":"                           \"type\": {\"type\": \"string\","},{"line_number":262,"context_line":"                                    \"required\": True,"},{"line_number":263,"context_line":"                                    \"enum\": [\u0027key\u0027, \u0027asymmetric\u0027,"},{"line_number":264,"context_line":"                                             \u0027certificate\u0027]}"},{"line_number":265,"context_line":"                           }}"},{"line_number":266,"context_line":""}],"source_content_type":"text/x-python","patch_set":23,"id":"1abeadc6_fc502bd6","line":263,"in_reply_to":"1abeadc6_ece4213d","updated":"2014-08-19 15:01:07.000000000","message":"it is as per https://review.openstack.org/#/c/98174/15/specs/juno/api-orders-add-more-types.rst","commit_id":"f27c311d052b7ac564683b0c00121d8168b71389"},{"author":{"_account_id":7789,"name":"John Wood","email":"john.wood@rackspace.com","username":"woodster"},"change_message_id":"c60b8f2221e92f865b3346173583bfc1561e39e8","unresolved":false,"context_lines":[{"line_number":260,"context_line":"            \"properties\": {\"meta\": {\"type\": \"object\"},"},{"line_number":261,"context_line":"                           \"type\": {\"type\": \"string\","},{"line_number":262,"context_line":"                                    \"required\": True,"},{"line_number":263,"context_line":"                                    \"enum\": [\u0027key\u0027, \u0027asymmetric\u0027,"},{"line_number":264,"context_line":"                                             \u0027certificate\u0027]}"},{"line_number":265,"context_line":"                           }}"},{"line_number":266,"context_line":""}],"source_content_type":"text/x-python","patch_set":23,"id":"1abeadc6_36547f20","line":263,"in_reply_to":"1abeadc6_fc502bd6","updated":"2014-08-19 15:57:19.000000000","message":"Yep, the blueprint \u0027trumps\u0027 the etherpad I think. :)  Are we ok with deferring appealing that decision until after this CR?","commit_id":"f27c311d052b7ac564683b0c00121d8168b71389"},{"author":{"_account_id":6783,"name":"Nathan Reller","email":"nathan.s.reller@gmail.com","username":"rellerreller"},"change_message_id":"e9b3b2dd9a0d2931a3d62425b803c8d375692532","unresolved":false,"context_lines":[{"line_number":283,"context_line":"            asymmetric_meta \u003d json_data.get(\u0027meta\u0027)"},{"line_number":284,"context_line":"            self._validate_asymmetric_meta(asymmetric_meta, schema_name)"},{"line_number":285,"context_line":""},{"line_number":286,"context_line":"        elif order_type \u003d\u003d models.OrderType.KEY:"},{"line_number":287,"context_line":"            key_meta \u003d json_data.get(\u0027meta\u0027)"},{"line_number":288,"context_line":"            self._validate_key_meta(key_meta, schema_name)"},{"line_number":289,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":23,"id":"1abeadc6_ecbb410c","line":286,"updated":"2014-08-18 20:37:25.000000000","message":"The etherpad said this would be symmetric. I think that is better because asymmetric are keys as well.","commit_id":"f27c311d052b7ac564683b0c00121d8168b71389"},{"author":{"_account_id":7789,"name":"John Wood","email":"john.wood@rackspace.com","username":"woodster"},"change_message_id":"c60b8f2221e92f865b3346173583bfc1561e39e8","unresolved":false,"context_lines":[{"line_number":283,"context_line":"            asymmetric_meta \u003d json_data.get(\u0027meta\u0027)"},{"line_number":284,"context_line":"            self._validate_asymmetric_meta(asymmetric_meta, schema_name)"},{"line_number":285,"context_line":""},{"line_number":286,"context_line":"        elif order_type \u003d\u003d models.OrderType.KEY:"},{"line_number":287,"context_line":"            key_meta \u003d json_data.get(\u0027meta\u0027)"},{"line_number":288,"context_line":"            self._validate_key_meta(key_meta, schema_name)"},{"line_number":289,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":23,"id":"1abeadc6_f62047b2","line":286,"in_reply_to":"1abeadc6_5c591ffd","updated":"2014-08-19 15:57:19.000000000","message":"See comment/question above.","commit_id":"f27c311d052b7ac564683b0c00121d8168b71389"},{"author":{"_account_id":994,"name":"Arvind Tiwari","email":"arvindt7@gmail.com","username":"arvind-tiwari"},"change_message_id":"cadaad1b58fa0523a8fc7a014c3b447262106b9d","unresolved":false,"context_lines":[{"line_number":283,"context_line":"            asymmetric_meta \u003d json_data.get(\u0027meta\u0027)"},{"line_number":284,"context_line":"            self._validate_asymmetric_meta(asymmetric_meta, schema_name)"},{"line_number":285,"context_line":""},{"line_number":286,"context_line":"        elif order_type \u003d\u003d models.OrderType.KEY:"},{"line_number":287,"context_line":"            key_meta \u003d json_data.get(\u0027meta\u0027)"},{"line_number":288,"context_line":"            self._validate_key_meta(key_meta, schema_name)"},{"line_number":289,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":23,"id":"1abeadc6_5c591ffd","line":286,"in_reply_to":"1abeadc6_ecbb410c","updated":"2014-08-19 15:01:07.000000000","message":"It is as per https://review.openstack.org/#/c/98174/15/specs/juno/api-orders-add-more-types.rst","commit_id":"f27c311d052b7ac564683b0c00121d8168b71389"},{"author":{"_account_id":6783,"name":"Nathan Reller","email":"nathan.s.reller@gmail.com","username":"rellerreller"},"change_message_id":"c42a393146b7df8b47bb14524cb5c788c683659e","unresolved":false,"context_lines":[{"line_number":316,"context_line":"                                                        \"tet-stream\u0027 \""},{"line_number":317,"context_line":"                                                        \"supported\"))"},{"line_number":318,"context_line":""},{"line_number":319,"context_line":"        if key_meta.get(\u0027mode\u0027, \u0027\u0027).lower() !\u003d \u0027cbc\u0027:"},{"line_number":320,"context_line":"                raise exception.UnsupportedField(field\u003d\"mode\","},{"line_number":321,"context_line":"                                                 schema\u003dschema_name,"},{"line_number":322,"context_line":"                                                 reason\u003du._(\"Only \u0027cbc\u0027 \""}],"source_content_type":"text/x-python","patch_set":23,"id":"1abeadc6_9ce73712","line":319,"updated":"2014-08-19 15:24:39.000000000","message":"I think mode should be optional. It should be ok to store a key without including the cipher mode.\n\nNote to woodster: this may be another topic for our discussion as well. The API is limiting certain parameters but we may want to push this down into the SecretStores.","commit_id":"f27c311d052b7ac564683b0c00121d8168b71389"},{"author":{"_account_id":7789,"name":"John Wood","email":"john.wood@rackspace.com","username":"woodster"},"change_message_id":"c60b8f2221e92f865b3346173583bfc1561e39e8","unresolved":false,"context_lines":[{"line_number":316,"context_line":"                                                        \"tet-stream\u0027 \""},{"line_number":317,"context_line":"                                                        \"supported\"))"},{"line_number":318,"context_line":""},{"line_number":319,"context_line":"        if key_meta.get(\u0027mode\u0027, \u0027\u0027).lower() !\u003d \u0027cbc\u0027:"},{"line_number":320,"context_line":"                raise exception.UnsupportedField(field\u003d\"mode\","},{"line_number":321,"context_line":"                                                 schema\u003dschema_name,"},{"line_number":322,"context_line":"                                                 reason\u003du._(\"Only \u0027cbc\u0027 \""}],"source_content_type":"text/x-python","patch_set":23,"id":"1abeadc6_3930f0e7","line":319,"in_reply_to":"1abeadc6_9ce73712","updated":"2014-08-19 15:57:19.000000000","message":"This is what I\u0027ve been referring to when I say the plugins need to validate things. This etherpad is to discussion options for validation: https://etherpad.openstack.org/p/barbican-validation-options\n\nI\u0027m going to slowly add things to that etherpad today. :)\n\nI think for this CR though, I\u0027d prefer to keep these hard code checks in place.","commit_id":"f27c311d052b7ac564683b0c00121d8168b71389"},{"author":{"_account_id":6783,"name":"Nathan Reller","email":"nathan.s.reller@gmail.com","username":"rellerreller"},"change_message_id":"c42a393146b7df8b47bb14524cb5c788c683659e","unresolved":false,"context_lines":[{"line_number":322,"context_line":"                                                 reason\u003du._(\"Only \u0027cbc\u0027 \""},{"line_number":323,"context_line":"                                                            \"supported\"))"},{"line_number":324,"context_line":""},{"line_number":325,"context_line":"        if key_meta.get(\u0027algorithm\u0027, \u0027\u0027).lower() !\u003d \u0027aes\u0027:"},{"line_number":326,"context_line":"                    raise exception.UnsupportedField(field\u003d\"algorithm\","},{"line_number":327,"context_line":"                                                     schema\u003dschema_name,"},{"line_number":328,"context_line":"                                                     reason\u003du._(\"Only \u0027aes\u0027 \""}],"source_content_type":"text/x-python","patch_set":23,"id":"1abeadc6_fcc3cb54","line":325,"updated":"2014-08-19 15:24:39.000000000","message":"This is only supporting aes, but the KMIP secret store supports more algorithms than this. We also support DES and 3DES.\n\nI was looking at new secret generation validation. In the past there was talk about which values are required and which are not. I thought a lot of them were optional. We should be consistent with what is and what is not optional.","commit_id":"f27c311d052b7ac564683b0c00121d8168b71389"},{"author":{"_account_id":7789,"name":"John Wood","email":"john.wood@rackspace.com","username":"woodster"},"change_message_id":"c60b8f2221e92f865b3346173583bfc1561e39e8","unresolved":false,"context_lines":[{"line_number":322,"context_line":"                                                 reason\u003du._(\"Only \u0027cbc\u0027 \""},{"line_number":323,"context_line":"                                                            \"supported\"))"},{"line_number":324,"context_line":""},{"line_number":325,"context_line":"        if key_meta.get(\u0027algorithm\u0027, \u0027\u0027).lower() !\u003d \u0027aes\u0027:"},{"line_number":326,"context_line":"                    raise exception.UnsupportedField(field\u003d\"algorithm\","},{"line_number":327,"context_line":"                                                     schema\u003dschema_name,"},{"line_number":328,"context_line":"                                                     reason\u003du._(\"Only \u0027aes\u0027 \""}],"source_content_type":"text/x-python","patch_set":23,"id":"1abeadc6_19ba5423","line":325,"in_reply_to":"1abeadc6_82d512bb","updated":"2014-08-19 15:57:19.000000000","message":"Yes to the above.","commit_id":"f27c311d052b7ac564683b0c00121d8168b71389"},{"author":{"_account_id":9914,"name":"Ade Lee","email":"alee@redhat.com","username":"alee"},"change_message_id":"245328341b566a0b7053f2ab1370dbee743da256","unresolved":false,"context_lines":[{"line_number":322,"context_line":"                                                 reason\u003du._(\"Only \u0027cbc\u0027 \""},{"line_number":323,"context_line":"                                                            \"supported\"))"},{"line_number":324,"context_line":""},{"line_number":325,"context_line":"        if key_meta.get(\u0027algorithm\u0027, \u0027\u0027).lower() !\u003d \u0027aes\u0027:"},{"line_number":326,"context_line":"                    raise exception.UnsupportedField(field\u003d\"algorithm\","},{"line_number":327,"context_line":"                                                     schema\u003dschema_name,"},{"line_number":328,"context_line":"                                                     reason\u003du._(\"Only \u0027aes\u0027 \""}],"source_content_type":"text/x-python","patch_set":23,"id":"1abeadc6_82d512bb","line":325,"in_reply_to":"1abeadc6_fcc3cb54","updated":"2014-08-19 15:36:18.000000000","message":"I think the answer will eventually be that we will do some basic schema level validations here, but that these types of validations will be done via the supports() method on the plugin.  Dogtag also supports much more than AES.\n\nI think though that atiwari is merely repeating the existing validations.  For the purposes of this CR, we should just allow this, and save the refactoring of validations for a separate CR,","commit_id":"f27c311d052b7ac564683b0c00121d8168b71389"}],"barbican/model/models.py":[{"author":{"_account_id":7789,"name":"John Wood","email":"john.wood@rackspace.com","username":"woodster"},"change_message_id":"026facdb4daf6831793698aab8803730abdf4d36","unresolved":false,"context_lines":[{"line_number":461,"context_line":"            ret[\u0027error_reason\u0027] \u003d self.error_reason"},{"line_number":462,"context_line":"        return ret"},{"line_number":463,"context_line":""},{"line_number":464,"context_line":"    def __init__(self, parsed_request\u003dNone):"},{"line_number":465,"context_line":"            \"\"\"Creates a Order entity from a dict.\"\"\""},{"line_number":466,"context_line":"            super(Order, self).__init__()"},{"line_number":467,"context_line":"            if parsed_request:"}],"source_content_type":"text/x-python","patch_set":17,"id":"baada198_5c35b4da","line":464,"updated":"2014-08-06 16:05:11.000000000","message":"Please move __init__ to above _do_extra_dict_fields() call above.","commit_id":"037bc41a04337432714bdf170f1c2f461a3482d3"},{"author":{"_account_id":994,"name":"Arvind Tiwari","email":"arvindt7@gmail.com","username":"arvind-tiwari"},"change_message_id":"fef7ba53ab784008b90c4fa8d77b994ecfc613f8","unresolved":false,"context_lines":[{"line_number":461,"context_line":"            ret[\u0027error_reason\u0027] \u003d self.error_reason"},{"line_number":462,"context_line":"        return ret"},{"line_number":463,"context_line":""},{"line_number":464,"context_line":"    def __init__(self, parsed_request\u003dNone):"},{"line_number":465,"context_line":"            \"\"\"Creates a Order entity from a dict.\"\"\""},{"line_number":466,"context_line":"            super(Order, self).__init__()"},{"line_number":467,"context_line":"            if parsed_request:"}],"source_content_type":"text/x-python","patch_set":17,"id":"baada198_b7fee904","line":464,"in_reply_to":"baada198_3ca00042","updated":"2014-08-06 21:25:00.000000000","message":"I will be removing it from here","commit_id":"037bc41a04337432714bdf170f1c2f461a3482d3"},{"author":{"_account_id":994,"name":"Arvind Tiwari","email":"arvindt7@gmail.com","username":"arvind-tiwari"},"change_message_id":"c148d7347efa8c8435830d7b7330952d5cce1a40","unresolved":false,"context_lines":[{"line_number":461,"context_line":"            ret[\u0027error_reason\u0027] \u003d self.error_reason"},{"line_number":462,"context_line":"        return ret"},{"line_number":463,"context_line":""},{"line_number":464,"context_line":"    def __init__(self, parsed_request\u003dNone):"},{"line_number":465,"context_line":"            \"\"\"Creates a Order entity from a dict.\"\"\""},{"line_number":466,"context_line":"            super(Order, self).__init__()"},{"line_number":467,"context_line":"            if parsed_request:"}],"source_content_type":"text/x-python","patch_set":17,"id":"baada198_3ca00042","line":464,"in_reply_to":"baada198_5c35b4da","updated":"2014-08-06 16:21:37.000000000","message":"Sure I will do that","commit_id":"037bc41a04337432714bdf170f1c2f461a3482d3"},{"author":{"_account_id":994,"name":"Arvind Tiwari","email":"arvindt7@gmail.com","username":"arvind-tiwari"},"change_message_id":"9867562057ff22d6d430fefed98ed3ef7a75d7e2","unresolved":false,"context_lines":[{"line_number":49,"context_line":""},{"line_number":50,"context_line":"class OrderType(object):"},{"line_number":51,"context_line":"    KEY \u003d \u0027key\u0027"},{"line_number":52,"context_line":"    ASYMMETRIC \u003d \u0027asymmetric\u0027"},{"line_number":53,"context_line":"    CERTIFICATE \u003d \u0027certificate\u0027"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"    @classmethod"}],"source_content_type":"text/x-python","patch_set":22,"id":"1abeadc6_26b644da","line":52,"updated":"2014-08-18 15:43:42.000000000","message":"instead of \"asymmetric\" can we call it \"keypair\"?\n\nThoughts?","commit_id":"d9610513f44efe8a9489bc82855168d792335da4"},{"author":{"_account_id":7789,"name":"John Wood","email":"john.wood@rackspace.com","username":"woodster"},"change_message_id":"dce87997031aa557a8f97e2547e008787fe19928","unresolved":false,"context_lines":[{"line_number":49,"context_line":""},{"line_number":50,"context_line":"class OrderType(object):"},{"line_number":51,"context_line":"    KEY \u003d \u0027key\u0027"},{"line_number":52,"context_line":"    ASYMMETRIC \u003d \u0027asymmetric\u0027"},{"line_number":53,"context_line":"    CERTIFICATE \u003d \u0027certificate\u0027"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"    @classmethod"}],"source_content_type":"text/x-python","patch_set":22,"id":"1abeadc6_b1528cdb","line":52,"in_reply_to":"1abeadc6_26b644da","updated":"2014-08-18 16:02:13.000000000","message":"I\u0027d prefer to stay with \u0027asymmetric\u0027 per the blueprint: https://github.com/openstack/barbican-specs/blob/master/specs/juno/api-orders-add-more-types.rst","commit_id":"d9610513f44efe8a9489bc82855168d792335da4"},{"author":{"_account_id":6783,"name":"Nathan Reller","email":"nathan.s.reller@gmail.com","username":"rellerreller"},"change_message_id":"e9b3b2dd9a0d2931a3d62425b803c8d375692532","unresolved":false,"context_lines":[{"line_number":48,"context_line":""},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"class OrderType(object):"},{"line_number":51,"context_line":"    KEY \u003d \u0027key\u0027"},{"line_number":52,"context_line":"    ASYMMETRIC \u003d \u0027asymmetric\u0027"},{"line_number":53,"context_line":"    CERTIFICATE \u003d \u0027certificate\u0027"},{"line_number":54,"context_line":""}],"source_content_type":"text/x-python","patch_set":23,"id":"1abeadc6_cc6cc59f","line":51,"updated":"2014-08-18 20:37:25.000000000","message":"Again I vote for SYMMETRIC.","commit_id":"f27c311d052b7ac564683b0c00121d8168b71389"},{"author":{"_account_id":994,"name":"Arvind Tiwari","email":"arvindt7@gmail.com","username":"arvind-tiwari"},"change_message_id":"cadaad1b58fa0523a8fc7a014c3b447262106b9d","unresolved":false,"context_lines":[{"line_number":48,"context_line":""},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"class OrderType(object):"},{"line_number":51,"context_line":"    KEY \u003d \u0027key\u0027"},{"line_number":52,"context_line":"    ASYMMETRIC \u003d \u0027asymmetric\u0027"},{"line_number":53,"context_line":"    CERTIFICATE \u003d \u0027certificate\u0027"},{"line_number":54,"context_line":""}],"source_content_type":"text/x-python","patch_set":23,"id":"1abeadc6_1c06c7ce","line":51,"in_reply_to":"1abeadc6_cc6cc59f","updated":"2014-08-19 15:01:07.000000000","message":"as per https://review.openstack.org/#/c/98174/15/specs/juno/api-orders-add-more-types.rst","commit_id":"f27c311d052b7ac564683b0c00121d8168b71389"}],"barbican/model/repositories.py":[{"author":{"_account_id":7789,"name":"John Wood","email":"john.wood@rackspace.com","username":"woodster"},"change_message_id":"824088481b0861cb233075f7f12611999a3590d1","unresolved":false,"context_lines":[{"line_number":265,"context_line":"                           kwargs)"},{"line_number":266,"context_line":"            self._set_repo(\u0027order_repo\u0027, OrderRepo, kwargs)"},{"line_number":267,"context_line":"            self._set_repo(\u0027transport_key_repo\u0027, TransportKeyRepo, kwargs)"},{"line_number":268,"context_line":"            self._set_repo(\u0027container_repo\u0027, ContainerRepo, kwargs)"},{"line_number":269,"context_line":"            self._set_repo(\u0027container_secret_repo\u0027, ContainerSecretRepo,"},{"line_number":270,"context_line":"                           kwargs)"},{"line_number":271,"context_line":""}],"source_content_type":"text/x-python","patch_set":18,"id":"baada198_3c578728","line":268,"updated":"2014-08-11 22:01:24.000000000","message":"Please remove these lines, as they are now in your other CR.","commit_id":"c671e5b8369e63913a72214cdfd294026a4dc2e1"},{"author":{"_account_id":994,"name":"Arvind Tiwari","email":"arvindt7@gmail.com","username":"arvind-tiwari"},"change_message_id":"fa03d45461c4d2e4125bd00a33255e0bd25e7b63","unresolved":false,"context_lines":[{"line_number":265,"context_line":"                           kwargs)"},{"line_number":266,"context_line":"            self._set_repo(\u0027order_repo\u0027, OrderRepo, kwargs)"},{"line_number":267,"context_line":"            self._set_repo(\u0027transport_key_repo\u0027, TransportKeyRepo, kwargs)"},{"line_number":268,"context_line":"            self._set_repo(\u0027container_repo\u0027, ContainerRepo, kwargs)"},{"line_number":269,"context_line":"            self._set_repo(\u0027container_secret_repo\u0027, ContainerSecretRepo,"},{"line_number":270,"context_line":"                           kwargs)"},{"line_number":271,"context_line":""}],"source_content_type":"text/x-python","patch_set":18,"id":"7ac7a964_b7f27098","line":268,"in_reply_to":"baada198_3c578728","updated":"2014-08-14 21:59:54.000000000","message":"removed","commit_id":"c671e5b8369e63913a72214cdfd294026a4dc2e1"},{"author":{"_account_id":7789,"name":"John Wood","email":"john.wood@rackspace.com","username":"woodster"},"change_message_id":"824088481b0861cb233075f7f12611999a3590d1","unresolved":false,"context_lines":[{"line_number":864,"context_line":"        pass"},{"line_number":865,"context_line":""},{"line_number":866,"context_line":""},{"line_number":867,"context_line":"class ContainerSecretRepo(BaseRepo):"},{"line_number":868,"context_line":"        \"\"\"Repository for the ContainerSecret entity.\"\"\""},{"line_number":869,"context_line":"        def _do_entity_name(self):"},{"line_number":870,"context_line":"            \"\"\"Sub-class hook: return entity name, such as for debugging.\"\"\""}],"source_content_type":"text/x-python","patch_set":18,"id":"baada198_5c527b36","line":867,"updated":"2014-08-11 22:01:24.000000000","message":"Please remove these lines as well.","commit_id":"c671e5b8369e63913a72214cdfd294026a4dc2e1"},{"author":{"_account_id":994,"name":"Arvind Tiwari","email":"arvindt7@gmail.com","username":"arvind-tiwari"},"change_message_id":"fa03d45461c4d2e4125bd00a33255e0bd25e7b63","unresolved":false,"context_lines":[{"line_number":864,"context_line":"        pass"},{"line_number":865,"context_line":""},{"line_number":866,"context_line":""},{"line_number":867,"context_line":"class ContainerSecretRepo(BaseRepo):"},{"line_number":868,"context_line":"        \"\"\"Repository for the ContainerSecret entity.\"\"\""},{"line_number":869,"context_line":"        def _do_entity_name(self):"},{"line_number":870,"context_line":"            \"\"\"Sub-class hook: return entity name, such as for debugging.\"\"\""}],"source_content_type":"text/x-python","patch_set":18,"id":"7ac7a964_973c9431","line":867,"in_reply_to":"baada198_5c527b36","updated":"2014-08-14 21:59:54.000000000","message":"removed","commit_id":"c671e5b8369e63913a72214cdfd294026a4dc2e1"}],"barbican/plugin/crypto/simple_crypto.py":[{"author":{"_account_id":7789,"name":"John Wood","email":"john.wood@rackspace.com","username":"woodster"},"change_message_id":"824088481b0861cb233075f7f12611999a3590d1","unresolved":false,"context_lines":[{"line_number":138,"context_line":""},{"line_number":139,"context_line":"        passphrase_dto \u003d None"},{"line_number":140,"context_line":"        if generate_dto.passphrase:"},{"line_number":141,"context_line":"            if isinstance(generate_dto.passphrase, six.text_type):"},{"line_number":142,"context_line":"                generate_dto.passphrase \u003d \\"},{"line_number":143,"context_line":"                    generate_dto.passphrase.encode(\u0027utf-8\u0027)"},{"line_number":144,"context_line":""}],"source_content_type":"text/x-python","patch_set":18,"id":"baada198_a96b5852","line":141,"updated":"2014-08-11 22:01:24.000000000","message":"Please remove these lines as well.","commit_id":"c671e5b8369e63913a72214cdfd294026a4dc2e1"},{"author":{"_account_id":994,"name":"Arvind Tiwari","email":"arvindt7@gmail.com","username":"arvind-tiwari"},"change_message_id":"fa03d45461c4d2e4125bd00a33255e0bd25e7b63","unresolved":false,"context_lines":[{"line_number":138,"context_line":""},{"line_number":139,"context_line":"        passphrase_dto \u003d None"},{"line_number":140,"context_line":"        if generate_dto.passphrase:"},{"line_number":141,"context_line":"            if isinstance(generate_dto.passphrase, six.text_type):"},{"line_number":142,"context_line":"                generate_dto.passphrase \u003d \\"},{"line_number":143,"context_line":"                    generate_dto.passphrase.encode(\u0027utf-8\u0027)"},{"line_number":144,"context_line":""}],"source_content_type":"text/x-python","patch_set":18,"id":"7ac7a964_17cde431","line":141,"in_reply_to":"baada198_a96b5852","updated":"2014-08-14 21:59:54.000000000","message":"sorry for leftover here","commit_id":"c671e5b8369e63913a72214cdfd294026a4dc2e1"}],"barbican/plugin/interface/secret_store.py":[{"author":{"_account_id":7789,"name":"John Wood","email":"john.wood@rackspace.com","username":"woodster"},"change_message_id":"824088481b0861cb233075f7f12611999a3590d1","unresolved":false,"context_lines":[{"line_number":171,"context_line":"    \"\"\"Constant for the DESede (triple-DES) algorithm.\"\"\""},{"line_number":172,"context_line":"    DESEDE \u003d \"desede\""},{"line_number":173,"context_line":""},{"line_number":174,"context_line":"    \"\"\"Constant for the HMACSHA1 algorithm.\"\"\""},{"line_number":175,"context_line":"    HMACSHA1 \u003d \"hmacsha1\""},{"line_number":176,"context_line":"    \"\"\"Constant for the HMACSHA256 algorithm.\"\"\""},{"line_number":177,"context_line":"    HMACSHA256 \u003d \"hmacsha256\""}],"source_content_type":"text/x-python","patch_set":18,"id":"baada198_49a1dc93","line":174,"updated":"2014-08-11 22:01:24.000000000","message":"Please remove these lines as well.","commit_id":"c671e5b8369e63913a72214cdfd294026a4dc2e1"},{"author":{"_account_id":994,"name":"Arvind Tiwari","email":"arvindt7@gmail.com","username":"arvind-tiwari"},"change_message_id":"fa03d45461c4d2e4125bd00a33255e0bd25e7b63","unresolved":false,"context_lines":[{"line_number":171,"context_line":"    \"\"\"Constant for the DESede (triple-DES) algorithm.\"\"\""},{"line_number":172,"context_line":"    DESEDE \u003d \"desede\""},{"line_number":173,"context_line":""},{"line_number":174,"context_line":"    \"\"\"Constant for the HMACSHA1 algorithm.\"\"\""},{"line_number":175,"context_line":"    HMACSHA1 \u003d \"hmacsha1\""},{"line_number":176,"context_line":"    \"\"\"Constant for the HMACSHA256 algorithm.\"\"\""},{"line_number":177,"context_line":"    HMACSHA256 \u003d \"hmacsha256\""}],"source_content_type":"text/x-python","patch_set":18,"id":"7ac7a964_a23eacb6","line":174,"in_reply_to":"baada198_49a1dc93","updated":"2014-08-14 21:59:54.000000000","message":"done","commit_id":"c671e5b8369e63913a72214cdfd294026a4dc2e1"},{"author":{"_account_id":7789,"name":"John Wood","email":"john.wood@rackspace.com","username":"woodster"},"change_message_id":"824088481b0861cb233075f7f12611999a3590d1","unresolved":false,"context_lines":[{"line_number":199,"context_line":"        self.alg \u003d alg"},{"line_number":200,"context_line":"        self.bit_length \u003d bit_length"},{"line_number":201,"context_line":"        self.mode \u003d mode  # TODO(john-wood-w) Paul, is \u0027mode\u0027 required?"},{"line_number":202,"context_line":"        self.passphrase \u003d passphrase"},{"line_number":203,"context_line":""},{"line_number":204,"context_line":""},{"line_number":205,"context_line":"class SecretDTO(object):"}],"source_content_type":"text/x-python","patch_set":18,"id":"baada198_699ce05b","line":202,"updated":"2014-08-11 22:01:24.000000000","message":"Please remove these lines as well.","commit_id":"c671e5b8369e63913a72214cdfd294026a4dc2e1"}],"barbican/plugin/resources.py":[{"author":{"_account_id":7789,"name":"John Wood","email":"john.wood@rackspace.com","username":"woodster"},"change_message_id":"026facdb4daf6831793698aab8803730abdf4d36","unresolved":false,"context_lines":[{"line_number":147,"context_line":"    return secret_model"},{"line_number":148,"context_line":""},{"line_number":149,"context_line":""},{"line_number":150,"context_line":"def generate_asymmetric_secret(spec, content_type,"},{"line_number":151,"context_line":"                               tenant_model, repos):"},{"line_number":152,"context_line":"    \"\"\"Generate a asymmetric secrets and store"},{"line_number":153,"context_line":"        into a secure backend."}],"source_content_type":"text/x-python","patch_set":17,"id":"baada198_3c7d606e","line":150,"updated":"2014-08-06 16:05:11.000000000","message":"I think this should return not-implemented for this CR, and this code should move to another CR.","commit_id":"037bc41a04337432714bdf170f1c2f461a3482d3"},{"author":{"_account_id":994,"name":"Arvind Tiwari","email":"arvindt7@gmail.com","username":"arvind-tiwari"},"change_message_id":"c148d7347efa8c8435830d7b7330952d5cce1a40","unresolved":false,"context_lines":[{"line_number":147,"context_line":"    return secret_model"},{"line_number":148,"context_line":""},{"line_number":149,"context_line":""},{"line_number":150,"context_line":"def generate_asymmetric_secret(spec, content_type,"},{"line_number":151,"context_line":"                               tenant_model, repos):"},{"line_number":152,"context_line":"    \"\"\"Generate a asymmetric secrets and store"},{"line_number":153,"context_line":"        into a secure backend."}],"source_content_type":"text/x-python","patch_set":17,"id":"baada198_1705d50f","line":150,"in_reply_to":"baada198_3c7d606e","updated":"2014-08-06 16:21:37.000000000","message":"correct, I though we will merge https://review.openstack.org/#/c/111412/ first.\nLet me know if you want to move both side by side?","commit_id":"037bc41a04337432714bdf170f1c2f461a3482d3"}],"barbican/plugin/store_crypto.py":[{"author":{"_account_id":7789,"name":"John Wood","email":"john.wood@rackspace.com","username":"woodster"},"change_message_id":"026facdb4daf6831793698aab8803730abdf4d36","unresolved":false,"context_lines":[{"line_number":159,"context_line":"        return None"},{"line_number":160,"context_line":""},{"line_number":161,"context_line":"    def generate_asymmetric_key(self, key_spec, context):"},{"line_number":162,"context_line":"        \"\"\"Generates an asymmetric key."},{"line_number":163,"context_line":""},{"line_number":164,"context_line":"        Returns a tuple object that can be used to retrieve secret"},{"line_number":165,"context_line":"        for private_key, Public_key and passphrase"}],"source_content_type":"text/x-python","patch_set":17,"id":"baada198_3ccba0a5","line":162,"updated":"2014-08-06 16:05:11.000000000","message":"Same comment as for plugin/resources.py...please leave as not-implemented for this CR.","commit_id":"037bc41a04337432714bdf170f1c2f461a3482d3"},{"author":{"_account_id":994,"name":"Arvind Tiwari","email":"arvindt7@gmail.com","username":"arvind-tiwari"},"change_message_id":"c148d7347efa8c8435830d7b7330952d5cce1a40","unresolved":false,"context_lines":[{"line_number":159,"context_line":"        return None"},{"line_number":160,"context_line":""},{"line_number":161,"context_line":"    def generate_asymmetric_key(self, key_spec, context):"},{"line_number":162,"context_line":"        \"\"\"Generates an asymmetric key."},{"line_number":163,"context_line":""},{"line_number":164,"context_line":"        Returns a tuple object that can be used to retrieve secret"},{"line_number":165,"context_line":"        for private_key, Public_key and passphrase"}],"source_content_type":"text/x-python","patch_set":17,"id":"baada198_972f2589","line":162,"in_reply_to":"baada198_3ccba0a5","updated":"2014-08-06 16:21:37.000000000","message":"correct","commit_id":"037bc41a04337432714bdf170f1c2f461a3482d3"}],"barbican/queue/server.py":[{"author":{"_account_id":6783,"name":"Nathan Reller","email":"nathan.s.reller@gmail.com","username":"rellerreller"},"change_message_id":"e9b3b2dd9a0d2931a3d62425b803c8d375692532","unresolved":false,"context_lines":[{"line_number":52,"context_line":""},{"line_number":53,"context_line":"    def process_type_order(self, context, order_id, keystone_id):"},{"line_number":54,"context_line":"        \"\"\"Process TypeOrder.\"\"\""},{"line_number":55,"context_line":"        LOG.debug(\u0027TypeOrder id is {0}\u0027.format(order_id))"},{"line_number":56,"context_line":"        task \u003d resources.BeginTypeOrder()"},{"line_number":57,"context_line":"        try:"},{"line_number":58,"context_line":"            task.process(order_id, keystone_id)"}],"source_content_type":"text/x-python","patch_set":23,"id":"1abeadc6_0cbb1de6","line":55,"updated":"2014-08-18 20:37:25.000000000","message":"Log statement.","commit_id":"f27c311d052b7ac564683b0c00121d8168b71389"}],"barbican/tasks/resources.py":[{"author":{"_account_id":9914,"name":"Ade Lee","email":"alee@redhat.com","username":"alee"},"change_message_id":"45e253f318114713bac7c8cb275d37f688606b1c","unresolved":false,"context_lines":[{"line_number":224,"context_line":"                                          container_repo\u003dcontainer_repo,"},{"line_number":225,"context_line":"                                          container_secret_repo\u003d"},{"line_number":226,"context_line":"                                          container_secret_repo)"},{"line_number":227,"context_line":""},{"line_number":228,"context_line":"    def retrieve_entity(self, order_id, keystone_id):"},{"line_number":229,"context_line":"        return self.repos.order_repo.get(entity_id\u003dorder_id,"},{"line_number":230,"context_line":"                                         keystone_id\u003dkeystone_id)"}],"source_content_type":"text/x-python","patch_set":18,"id":"baada198_4d754b95","line":227,"updated":"2014-08-12 14:16:44.000000000","message":"Just a formatting nit.  It would probably be much more readable if you moved the first arg to the next line.  Then all the repos and their assignments would be on the same line.\n\nNot a super big deal though, as most of this will go away eventually.","commit_id":"c671e5b8369e63913a72214cdfd294026a4dc2e1"},{"author":{"_account_id":994,"name":"Arvind Tiwari","email":"arvindt7@gmail.com","username":"arvind-tiwari"},"change_message_id":"fa03d45461c4d2e4125bd00a33255e0bd25e7b63","unresolved":false,"context_lines":[{"line_number":224,"context_line":"                                          container_repo\u003dcontainer_repo,"},{"line_number":225,"context_line":"                                          container_secret_repo\u003d"},{"line_number":226,"context_line":"                                          container_secret_repo)"},{"line_number":227,"context_line":""},{"line_number":228,"context_line":"    def retrieve_entity(self, order_id, keystone_id):"},{"line_number":229,"context_line":"        return self.repos.order_repo.get(entity_id\u003dorder_id,"},{"line_number":230,"context_line":"                                         keystone_id\u003dkeystone_id)"}],"source_content_type":"text/x-python","patch_set":18,"id":"7ac7a964_6282d450","line":227,"in_reply_to":"baada198_4d754b95","updated":"2014-08-14 21:59:54.000000000","message":"Ade, can I leave it then?","commit_id":"c671e5b8369e63913a72214cdfd294026a4dc2e1"},{"author":{"_account_id":9914,"name":"Ade Lee","email":"alee@redhat.com","username":"alee"},"change_message_id":"45e253f318114713bac7c8cb275d37f688606b1c","unresolved":false,"context_lines":[{"line_number":275,"context_line":"            new_container \u003d plugin.generate_asymmetric_secret("},{"line_number":276,"context_line":"                secret_info, secret_info.get(\u0027payload_content_type\u0027,"},{"line_number":277,"context_line":"                                             \u0027application/octet-stream\u0027),"},{"line_number":278,"context_line":"                tenant, self.repos)"},{"line_number":279,"context_line":"            order.container_id \u003d new_container.id"},{"line_number":280,"context_line":"            LOG.debug(\"...done creating asymmetric order\u0027s secret.\")"}],"source_content_type":"text/x-python","patch_set":18,"id":"baada198_ad234704","line":278,"updated":"2014-08-12 14:16:44.000000000","message":"Formatting -- can we reformat 276 and put secret_info.get(..)\non the next line.  Right now its a little confusing.","commit_id":"c671e5b8369e63913a72214cdfd294026a4dc2e1"},{"author":{"_account_id":994,"name":"Arvind Tiwari","email":"arvindt7@gmail.com","username":"arvind-tiwari"},"change_message_id":"fa03d45461c4d2e4125bd00a33255e0bd25e7b63","unresolved":false,"context_lines":[{"line_number":275,"context_line":"            new_container \u003d plugin.generate_asymmetric_secret("},{"line_number":276,"context_line":"                secret_info, secret_info.get(\u0027payload_content_type\u0027,"},{"line_number":277,"context_line":"                                             \u0027application/octet-stream\u0027),"},{"line_number":278,"context_line":"                tenant, self.repos)"},{"line_number":279,"context_line":"            order.container_id \u003d new_container.id"},{"line_number":280,"context_line":"            LOG.debug(\"...done creating asymmetric order\u0027s secret.\")"}],"source_content_type":"text/x-python","patch_set":18,"id":"7ac7a964_c26c889f","line":278,"in_reply_to":"baada198_ad234704","updated":"2014-08-14 21:59:54.000000000","message":"sure","commit_id":"c671e5b8369e63913a72214cdfd294026a4dc2e1"},{"author":{"_account_id":9914,"name":"Ade Lee","email":"alee@redhat.com","username":"alee"},"change_message_id":"45e253f318114713bac7c8cb275d37f688606b1c","unresolved":false,"context_lines":[{"line_number":277,"context_line":"                                             \u0027application/octet-stream\u0027),"},{"line_number":278,"context_line":"                tenant, self.repos)"},{"line_number":279,"context_line":"            order.container_id \u003d new_container.id"},{"line_number":280,"context_line":"            LOG.debug(\"...done creating asymmetric order\u0027s secret.\")"}],"source_content_type":"text/x-python","patch_set":18,"id":"baada198_2dc57709","line":280,"updated":"2014-08-12 14:16:44.000000000","message":"What happens if type is certificate?  Also, as mentioned before, use definitions in orders.py for the order_types.","commit_id":"c671e5b8369e63913a72214cdfd294026a4dc2e1"},{"author":{"_account_id":994,"name":"Arvind Tiwari","email":"arvindt7@gmail.com","username":"arvind-tiwari"},"change_message_id":"fa03d45461c4d2e4125bd00a33255e0bd25e7b63","unresolved":false,"context_lines":[{"line_number":277,"context_line":"                                             \u0027application/octet-stream\u0027),"},{"line_number":278,"context_line":"                tenant, self.repos)"},{"line_number":279,"context_line":"            order.container_id \u003d new_container.id"},{"line_number":280,"context_line":"            LOG.debug(\"...done creating asymmetric order\u0027s secret.\")"}],"source_content_type":"text/x-python","patch_set":18,"id":"7ac7a964_0238409f","line":280,"in_reply_to":"baada198_2dc57709","updated":"2014-08-14 21:59:54.000000000","message":"if type is certificate it will be handled at validator and not come here","commit_id":"c671e5b8369e63913a72214cdfd294026a4dc2e1"},{"author":{"_account_id":9234,"name":"Steve Heyman","email":"steve@heyman.com","username":"hockeynut"},"change_message_id":"d298981a939b1d69b268b4b127036fd8536ab95e","unresolved":false,"context_lines":[{"line_number":203,"context_line":""},{"line_number":204,"context_line":""},{"line_number":205,"context_line":"class BeginTypeOrder(BaseTask):"},{"line_number":206,"context_line":"    \"\"\"Handles beginning processing an TypeOrder\"\"\""},{"line_number":207,"context_line":""},{"line_number":208,"context_line":"    def get_name(self):"},{"line_number":209,"context_line":"        return u._(\u0027Process TypeOrder\u0027)"}],"source_content_type":"text/x-python","patch_set":20,"id":"7ac7a964_3319f179","line":206,"updated":"2014-08-15 16:57:02.000000000","message":"\"of a TypeOrder\"","commit_id":"1c9bd5be0b13253b69370e63cc3babc4d512bcb1"},{"author":{"_account_id":994,"name":"Arvind Tiwari","email":"arvindt7@gmail.com","username":"arvind-tiwari"},"change_message_id":"fac325d8f2781548396f58975149ce770e2e2f42","unresolved":false,"context_lines":[{"line_number":203,"context_line":""},{"line_number":204,"context_line":""},{"line_number":205,"context_line":"class BeginTypeOrder(BaseTask):"},{"line_number":206,"context_line":"    \"\"\"Handles beginning processing an TypeOrder\"\"\""},{"line_number":207,"context_line":""},{"line_number":208,"context_line":"    def get_name(self):"},{"line_number":209,"context_line":"        return u._(\u0027Process TypeOrder\u0027)"}],"source_content_type":"text/x-python","patch_set":20,"id":"7ac7a964_d6ceeb82","line":206,"in_reply_to":"7ac7a964_3319f179","updated":"2014-08-15 17:45:43.000000000","message":"fixed","commit_id":"1c9bd5be0b13253b69370e63cc3babc4d512bcb1"},{"author":{"_account_id":9914,"name":"Ade Lee","email":"alee@redhat.com","username":"alee"},"change_message_id":"6d479cdc35ce5eb6f1a4b3ec01a94c89caf69caa","unresolved":false,"context_lines":[{"line_number":262,"context_line":"        tenant \u003d self.repos.tenant_repo.get(order.tenant_id)"},{"line_number":263,"context_line":""},{"line_number":264,"context_line":"        if order_type \u003d\u003d \u0027key\u0027:"},{"line_number":265,"context_line":"            # Create Secret"},{"line_number":266,"context_line":"            new_secret \u003d plugin.\\"},{"line_number":267,"context_line":"                generate_secret(secret_info,"},{"line_number":268,"context_line":"                                secret_info.get(\u0027payload_content_type\u0027,"}],"source_content_type":"text/x-python","patch_set":21,"id":"7ac7a964_3d7a9af1","line":265,"updated":"2014-08-15 20:04:34.000000000","message":"I still do not see the types of orders defined somewhere, and referenced accordingly.","commit_id":"e4d2a836c809c87bdb58307a660ca167863c9d15"},{"author":{"_account_id":994,"name":"Arvind Tiwari","email":"arvindt7@gmail.com","username":"arvind-tiwari"},"change_message_id":"d22372ad4674e9cfb310f1a128d8b345af16edba","unresolved":false,"context_lines":[{"line_number":262,"context_line":"        tenant \u003d self.repos.tenant_repo.get(order.tenant_id)"},{"line_number":263,"context_line":""},{"line_number":264,"context_line":"        if order_type \u003d\u003d \u0027key\u0027:"},{"line_number":265,"context_line":"            # Create Secret"},{"line_number":266,"context_line":"            new_secret \u003d plugin.\\"},{"line_number":267,"context_line":"                generate_secret(secret_info,"},{"line_number":268,"context_line":"                                secret_info.get(\u0027payload_content_type\u0027,"}],"source_content_type":"text/x-python","patch_set":21,"id":"1abeadc6_0045b06f","line":265,"in_reply_to":"1abeadc6_32ff7903","updated":"2014-08-18 15:42:10.000000000","message":"Sure, defining a class in models.\nis that ok?","commit_id":"e4d2a836c809c87bdb58307a660ca167863c9d15"},{"author":{"_account_id":994,"name":"Arvind Tiwari","email":"arvindt7@gmail.com","username":"arvind-tiwari"},"change_message_id":"2fe47ee9411b9873bcd80b29c3b53e9c38674195","unresolved":false,"context_lines":[{"line_number":262,"context_line":"        tenant \u003d self.repos.tenant_repo.get(order.tenant_id)"},{"line_number":263,"context_line":""},{"line_number":264,"context_line":"        if order_type \u003d\u003d \u0027key\u0027:"},{"line_number":265,"context_line":"            # Create Secret"},{"line_number":266,"context_line":"            new_secret \u003d plugin.\\"},{"line_number":267,"context_line":"                generate_secret(secret_info,"},{"line_number":268,"context_line":"                                secret_info.get(\u0027payload_content_type\u0027,"}],"source_content_type":"text/x-python","patch_set":21,"id":"7ac7a964_3deffa88","line":265,"in_reply_to":"7ac7a964_3d7a9af1","updated":"2014-08-15 20:07:45.000000000","message":"Ade, I am not sure if I got your comment.\nDo you want a constant defined somewere  for key, certificate and asymmetric?","commit_id":"e4d2a836c809c87bdb58307a660ca167863c9d15"},{"author":{"_account_id":9914,"name":"Ade Lee","email":"alee@redhat.com","username":"alee"},"change_message_id":"239ea16d8b3d24e7afa9b1e31d82a64df9d3078c","unresolved":false,"context_lines":[{"line_number":262,"context_line":"        tenant \u003d self.repos.tenant_repo.get(order.tenant_id)"},{"line_number":263,"context_line":""},{"line_number":264,"context_line":"        if order_type \u003d\u003d \u0027key\u0027:"},{"line_number":265,"context_line":"            # Create Secret"},{"line_number":266,"context_line":"            new_secret \u003d plugin.\\"},{"line_number":267,"context_line":"                generate_secret(secret_info,"},{"line_number":268,"context_line":"                                secret_info.get(\u0027payload_content_type\u0027,"}],"source_content_type":"text/x-python","patch_set":21,"id":"7ac7a964_9d3f2ed6","line":265,"in_reply_to":"7ac7a964_3deffa88","updated":"2014-08-15 20:12:44.000000000","message":"Yes.  See the comments I made in validators,py in an earlier version of this patch.  The point is that the types of orders that we support should be defined somewhere - either in api/orders.py or maybe in common.\n\nThe values of types are used in a bunch of places all over the code to drive conditional logic.  Lets make sure they remain consistent.","commit_id":"e4d2a836c809c87bdb58307a660ca167863c9d15"},{"author":{"_account_id":7973,"name":"Douglas Mendizábal","email":"dmendiza@redhat.com","username":"dougmendizabal"},"change_message_id":"54b6f77e1550b3525c0b7c06c214c26bb4815b35","unresolved":false,"context_lines":[{"line_number":262,"context_line":"        tenant \u003d self.repos.tenant_repo.get(order.tenant_id)"},{"line_number":263,"context_line":""},{"line_number":264,"context_line":"        if order_type \u003d\u003d \u0027key\u0027:"},{"line_number":265,"context_line":"            # Create Secret"},{"line_number":266,"context_line":"            new_secret \u003d plugin.\\"},{"line_number":267,"context_line":"                generate_secret(secret_info,"},{"line_number":268,"context_line":"                                secret_info.get(\u0027payload_content_type\u0027,"}],"source_content_type":"text/x-python","patch_set":21,"id":"7ac7a964_b8ddd872","line":265,"in_reply_to":"7ac7a964_786fc0c5","updated":"2014-08-15 20:21:05.000000000","message":"I agree with Ade, but I\u0027m not a big fan of the \"common\" module.  It usually ends up being a bucket of miscellaneous stuff.  I think Order Types should be defined in the models layer, since they\u0027re closely related to the Order class.\n\nI\u0027d like to see a barbican.model.models.OrderTypes class with each type as a class member.  See the existing States class in the models module for an example.","commit_id":"e4d2a836c809c87bdb58307a660ca167863c9d15"},{"author":{"_account_id":994,"name":"Arvind Tiwari","email":"arvindt7@gmail.com","username":"arvind-tiwari"},"change_message_id":"1d637880618c0be602a1db8af33ece68cfa9af51","unresolved":false,"context_lines":[{"line_number":262,"context_line":"        tenant \u003d self.repos.tenant_repo.get(order.tenant_id)"},{"line_number":263,"context_line":""},{"line_number":264,"context_line":"        if order_type \u003d\u003d \u0027key\u0027:"},{"line_number":265,"context_line":"            # Create Secret"},{"line_number":266,"context_line":"            new_secret \u003d plugin.\\"},{"line_number":267,"context_line":"                generate_secret(secret_info,"},{"line_number":268,"context_line":"                                secret_info.get(\u0027payload_content_type\u0027,"}],"source_content_type":"text/x-python","patch_set":21,"id":"7ac7a964_786fc0c5","line":265,"in_reply_to":"7ac7a964_9d3f2ed6","updated":"2014-08-15 20:17:45.000000000","message":"sure Ade, I will fix it soon.","commit_id":"e4d2a836c809c87bdb58307a660ca167863c9d15"},{"author":{"_account_id":7789,"name":"John Wood","email":"john.wood@rackspace.com","username":"woodster"},"change_message_id":"94841e1d115ac539ef0345d6d6443a53ddd87833","unresolved":false,"context_lines":[{"line_number":262,"context_line":"        tenant \u003d self.repos.tenant_repo.get(order.tenant_id)"},{"line_number":263,"context_line":""},{"line_number":264,"context_line":"        if order_type \u003d\u003d \u0027key\u0027:"},{"line_number":265,"context_line":"            # Create Secret"},{"line_number":266,"context_line":"            new_secret \u003d plugin.\\"},{"line_number":267,"context_line":"                generate_secret(secret_info,"},{"line_number":268,"context_line":"                                secret_info.get(\u0027payload_content_type\u0027,"}],"source_content_type":"text/x-python","patch_set":21,"id":"1abeadc6_32ff7903","line":265,"in_reply_to":"7ac7a964_b872387a","updated":"2014-08-18 02:26:25.000000000","message":"If this is going into the models.py, it would be even better if the order \u0027type\u0027 field was defined as a sa.enum type as per this line:\nhttps://github.com/openstack/barbican/blob/master/barbican/model/models.py#L482\n\nThat doesn\u0027t allow for easy sharing into the validation space though. A constants class in here that could be shared would be the next best thing. Maybe constants class, and then use those constants for the allowed strings in the sa.enum attribute definition?","commit_id":"e4d2a836c809c87bdb58307a660ca167863c9d15"},{"author":{"_account_id":7973,"name":"Douglas Mendizábal","email":"dmendiza@redhat.com","username":"dougmendizabal"},"change_message_id":"317dcf84ffc867bcf388340259e9e9b166335fcc","unresolved":false,"context_lines":[{"line_number":262,"context_line":"        tenant \u003d self.repos.tenant_repo.get(order.tenant_id)"},{"line_number":263,"context_line":""},{"line_number":264,"context_line":"        if order_type \u003d\u003d \u0027key\u0027:"},{"line_number":265,"context_line":"            # Create Secret"},{"line_number":266,"context_line":"            new_secret \u003d plugin.\\"},{"line_number":267,"context_line":"                generate_secret(secret_info,"},{"line_number":268,"context_line":"                                secret_info.get(\u0027payload_content_type\u0027,"}],"source_content_type":"text/x-python","patch_set":21,"id":"7ac7a964_b872387a","line":265,"in_reply_to":"7ac7a964_b8ddd872","updated":"2014-08-15 20:22:01.000000000","message":"https://github.com/openstack/barbican/blob/master/barbican/model/models.py#L39","commit_id":"e4d2a836c809c87bdb58307a660ca167863c9d15"},{"author":{"_account_id":9914,"name":"Ade Lee","email":"alee@redhat.com","username":"alee"},"change_message_id":"f534b1b6239f29f4454b8733658086ac78f1bf1a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":23,"id":"1abeadc6_b35ee643","line":282,"updated":"2014-08-19 14:36:02.000000000","message":"Can we have an \nelse:\n    raise \"Not yet implemented\"  here?","commit_id":"f27c311d052b7ac564683b0c00121d8168b71389"}],"barbican/tests/api/test_resources.py":[{"author":{"_account_id":7262,"name":"John Vrbanac","email":"john.vrbanac@linux.com","username":"john.vrbanac"},"change_message_id":"8f3a129843e80b6aa344304e9435c0418c3566c8","unresolved":false,"context_lines":[{"line_number":1683,"context_line":"    @testtools.skip(\"atiwari: remove skip once CR 111412 merged\")"},{"line_number":1684,"context_line":"    def test_should_add_new_order(self):"},{"line_number":1685,"context_line":"        resp \u003d self.app.post_json("},{"line_number":1686,"context_line":"            \u0027/orders/\u0027 % self.tenant_keystone_id,"},{"line_number":1687,"context_line":"            self.order_req"},{"line_number":1688,"context_line":"        )"},{"line_number":1689,"context_line":"        self.assertEqual(resp.status_int, 202)"}],"source_content_type":"text/x-python","patch_set":20,"id":"7ac7a964_5b9a0964","line":1686,"updated":"2014-08-15 15:55:47.000000000","message":"I don\u0027t think you need \"% self.tenant_keystone_id\"","commit_id":"1c9bd5be0b13253b69370e63cc3babc4d512bcb1"},{"author":{"_account_id":994,"name":"Arvind Tiwari","email":"arvindt7@gmail.com","username":"arvind-tiwari"},"change_message_id":"fac325d8f2781548396f58975149ce770e2e2f42","unresolved":false,"context_lines":[{"line_number":1683,"context_line":"    @testtools.skip(\"atiwari: remove skip once CR 111412 merged\")"},{"line_number":1684,"context_line":"    def test_should_add_new_order(self):"},{"line_number":1685,"context_line":"        resp \u003d self.app.post_json("},{"line_number":1686,"context_line":"            \u0027/orders/\u0027 % self.tenant_keystone_id,"},{"line_number":1687,"context_line":"            self.order_req"},{"line_number":1688,"context_line":"        )"},{"line_number":1689,"context_line":"        self.assertEqual(resp.status_int, 202)"}],"source_content_type":"text/x-python","patch_set":20,"id":"7ac7a964_96271364","line":1686,"in_reply_to":"7ac7a964_5b9a0964","updated":"2014-08-15 17:45:43.000000000","message":"correct","commit_id":"1c9bd5be0b13253b69370e63cc3babc4d512bcb1"},{"author":{"_account_id":9914,"name":"Ade Lee","email":"alee@redhat.com","username":"alee"},"change_message_id":"f534b1b6239f29f4454b8733658086ac78f1bf1a","unresolved":false,"context_lines":[{"line_number":1680,"context_line":"        self.queue_resource \u003d mock.MagicMock()"},{"line_number":1681,"context_line":"        self.queue_resource.process_type_order.return_value \u003d None"},{"line_number":1682,"context_line":""},{"line_number":1683,"context_line":"    @testtools.skip(\"atiwari: remove skip once CR 111412 merged\")"},{"line_number":1684,"context_line":"    def test_should_add_new_order(self):"},{"line_number":1685,"context_line":"        resp \u003d self.app.post_json("},{"line_number":1686,"context_line":"            \u0027/orders/\u0027, self.order_req"}],"source_content_type":"text/x-python","patch_set":23,"id":"1abeadc6_360644cf","line":1683,"updated":"2014-08-19 14:36:02.000000000","message":"Why is this test being skipped?","commit_id":"f27c311d052b7ac564683b0c00121d8168b71389"},{"author":{"_account_id":994,"name":"Arvind Tiwari","email":"arvindt7@gmail.com","username":"arvind-tiwari"},"change_message_id":"cadaad1b58fa0523a8fc7a014c3b447262106b9d","unresolved":false,"context_lines":[{"line_number":1680,"context_line":"        self.queue_resource \u003d mock.MagicMock()"},{"line_number":1681,"context_line":"        self.queue_resource.process_type_order.return_value \u003d None"},{"line_number":1682,"context_line":""},{"line_number":1683,"context_line":"    @testtools.skip(\"atiwari: remove skip once CR 111412 merged\")"},{"line_number":1684,"context_line":"    def test_should_add_new_order(self):"},{"line_number":1685,"context_line":"        resp \u003d self.app.post_json("},{"line_number":1686,"context_line":"            \u0027/orders/\u0027, self.order_req"}],"source_content_type":"text/x-python","patch_set":23,"id":"1abeadc6_7cafbb94","line":1683,"in_reply_to":"1abeadc6_360644cf","updated":"2014-08-19 15:01:07.000000000","message":"Currently the lower level code is not there that is why skipping it.","commit_id":"f27c311d052b7ac564683b0c00121d8168b71389"},{"author":{"_account_id":9914,"name":"Ade Lee","email":"alee@redhat.com","username":"alee"},"change_message_id":"f534b1b6239f29f4454b8733658086ac78f1bf1a","unresolved":false,"context_lines":[{"line_number":1686,"context_line":"            \u0027/orders/\u0027, self.order_req"},{"line_number":1687,"context_line":"        )"},{"line_number":1688,"context_line":"        self.assertEqual(resp.status_int, 202)"},{"line_number":1689,"context_line":""},{"line_number":1690,"context_line":"        self.queue_resource.process_type_order \\"},{"line_number":1691,"context_line":"            .assert_called_once_with(order_id\u003dNone,"},{"line_number":1692,"context_line":"                                     keystone_id\u003dself.tenant_keystone_id)"}],"source_content_type":"text/x-python","patch_set":23,"id":"1abeadc6_363804a0","line":1689,"updated":"2014-08-19 14:36:02.000000000","message":"Under what condition do we return a 202?","commit_id":"f27c311d052b7ac564683b0c00121d8168b71389"},{"author":{"_account_id":994,"name":"Arvind Tiwari","email":"arvindt7@gmail.com","username":"arvind-tiwari"},"change_message_id":"cadaad1b58fa0523a8fc7a014c3b447262106b9d","unresolved":false,"context_lines":[{"line_number":1686,"context_line":"            \u0027/orders/\u0027, self.order_req"},{"line_number":1687,"context_line":"        )"},{"line_number":1688,"context_line":"        self.assertEqual(resp.status_int, 202)"},{"line_number":1689,"context_line":""},{"line_number":1690,"context_line":"        self.queue_resource.process_type_order \\"},{"line_number":1691,"context_line":"            .assert_called_once_with(order_id\u003dNone,"},{"line_number":1692,"context_line":"                                     keystone_id\u003dself.tenant_keystone_id)"}],"source_content_type":"text/x-python","patch_set":23,"id":"1abeadc6_7c9dfb58","line":1689,"in_reply_to":"1abeadc6_363804a0","updated":"2014-08-19 15:01:07.000000000","message":"202 is returned for asynchronous requests if accepted successfully by server..","commit_id":"f27c311d052b7ac564683b0c00121d8168b71389"}],"barbican/tests/plugin/crypto/test_crypto.py":[{"author":{"_account_id":7789,"name":"John Wood","email":"john.wood@rackspace.com","username":"woodster"},"change_message_id":"824088481b0861cb233075f7f12611999a3590d1","unresolved":false,"context_lines":[{"line_number":51,"context_line":"        return plugin.ResponseDTO(\"encrypted insecure key\", None)"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"    def generate_asymmetric(self, generate_dto, kek_meta_dto, keystone_id):"},{"line_number":54,"context_line":"        passwd_res_dto \u003d (plugin.ResponseDTO(\u0027passphrase\u0027, None)"},{"line_number":55,"context_line":"                          if generate_dto.passphrase else None)"},{"line_number":56,"context_line":"        return (plugin.ResponseDTO(\u0027insecure_private_key\u0027, None),"},{"line_number":57,"context_line":"                plugin.ResponseDTO(\u0027insecure_public_key\u0027, None),"}],"source_content_type":"text/x-python","patch_set":18,"id":"baada198_49c8fc55","line":54,"updated":"2014-08-11 22:01:24.000000000","message":"Please remove these lines as well.","commit_id":"c671e5b8369e63913a72214cdfd294026a4dc2e1"},{"author":{"_account_id":994,"name":"Arvind Tiwari","email":"arvindt7@gmail.com","username":"arvind-tiwari"},"change_message_id":"fa03d45461c4d2e4125bd00a33255e0bd25e7b63","unresolved":false,"context_lines":[{"line_number":51,"context_line":"        return plugin.ResponseDTO(\"encrypted insecure key\", None)"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"    def generate_asymmetric(self, generate_dto, kek_meta_dto, keystone_id):"},{"line_number":54,"context_line":"        passwd_res_dto \u003d (plugin.ResponseDTO(\u0027passphrase\u0027, None)"},{"line_number":55,"context_line":"                          if generate_dto.passphrase else None)"},{"line_number":56,"context_line":"        return (plugin.ResponseDTO(\u0027insecure_private_key\u0027, None),"},{"line_number":57,"context_line":"                plugin.ResponseDTO(\u0027insecure_public_key\u0027, None),"}],"source_content_type":"text/x-python","patch_set":18,"id":"7ac7a964_82ca904d","line":54,"in_reply_to":"baada198_49c8fc55","updated":"2014-08-14 21:59:54.000000000","message":"done","commit_id":"c671e5b8369e63913a72214cdfd294026a4dc2e1"},{"author":{"_account_id":7789,"name":"John Wood","email":"john.wood@rackspace.com","username":"woodster"},"change_message_id":"824088481b0861cb233075f7f12611999a3590d1","unresolved":false,"context_lines":[{"line_number":63,"context_line":"            return True"},{"line_number":64,"context_line":"        elif type_enum \u003d\u003d plugin.PluginSupportTypes.SYMMETRIC_KEY_GENERATION:"},{"line_number":65,"context_line":"            return True"},{"line_number":66,"context_line":"        elif type_enum \u003d\u003d plugin.PluginSupportTypes.ASYMMETRIC_KEY_GENERATION:"},{"line_number":67,"context_line":"            return True"},{"line_number":68,"context_line":"        else:"},{"line_number":69,"context_line":"            return False"}],"source_content_type":"text/x-python","patch_set":18,"id":"baada198_69c30039","line":66,"updated":"2014-08-11 22:01:24.000000000","message":"Please remove these lines as well.","commit_id":"c671e5b8369e63913a72214cdfd294026a4dc2e1"}]}
