)]}'
{"specs/pike/encryption-with-barbican.rst":[{"author":{"_account_id":13380,"name":"Sridhar Ramaswamy","email":"srics.r@gmail.com","username":"srics-r"},"change_message_id":"84b83d972c4ab38a9c69ae12d4540442344c9c2b","unresolved":false,"context_lines":[{"line_number":22,"context_line":"Tacker supports register VIM with credentials, which are used for nfvo and vnfm"},{"line_number":23,"context_line":"to operation resources in NFVI. The credentials include username, password,"},{"line_number":24,"context_line":"and project information. We can not explicitly store the plain text password"},{"line_number":25,"context_line":"in tacker db for security consideration. So currently we use keyston\u0027s fernet"},{"line_number":26,"context_line":"to generate a key to encrypt the password, save the encrypted secret into"},{"line_number":27,"context_line":"tacker db, and save the fernet key on local file system."},{"line_number":28,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"ffe62b97_e737f0fe","line":25,"range":{"start_line":25,"start_character":61,"end_line":25,"end_character":69},"updated":"2017-03-28 00:03:17.000000000","message":"keystone\u0027s","commit_id":"417d4c35193e853a6747c377ca3102dd3adf6dcc"},{"author":{"_account_id":19644,"name":"Yan Xing\u0027an","email":"yanxingan@cmss.chinamobile.com","username":"yanxingan"},"change_message_id":"ece09faafef14a1f6966336a1ff5be562b70b0ee","unresolved":false,"context_lines":[{"line_number":22,"context_line":"Tacker supports register VIM with credentials, which are used for nfvo and vnfm"},{"line_number":23,"context_line":"to operation resources in NFVI. The credentials include username, password,"},{"line_number":24,"context_line":"and project information. We can not explicitly store the plain text password"},{"line_number":25,"context_line":"in tacker db for security consideration. So currently we use keyston\u0027s fernet"},{"line_number":26,"context_line":"to generate a key to encrypt the password, save the encrypted secret into"},{"line_number":27,"context_line":"tacker db, and save the fernet key on local file system."},{"line_number":28,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"ffe62b97_723a7dcc","line":25,"range":{"start_line":25,"start_character":61,"end_line":25,"end_character":69},"in_reply_to":"ffe62b97_e737f0fe","updated":"2017-03-28 07:34:45.000000000","message":"Done","commit_id":"417d4c35193e853a6747c377ca3102dd3adf6dcc"},{"author":{"_account_id":13380,"name":"Sridhar Ramaswamy","email":"srics.r@gmail.com","username":"srics-r"},"change_message_id":"84b83d972c4ab38a9c69ae12d4540442344c9c2b","unresolved":false,"context_lines":[{"line_number":32,"context_line":"The problem is, if tacker service serves API requests through a load balancer,"},{"line_number":33,"context_line":"then the operation will fail if the request is not fulfilled by the server node"},{"line_number":34,"context_line":"which created and stored the fernet key. We need a possible solution for syncing"},{"line_number":35,"context_line":"the keys across multiple server nodes."},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"Introduce Barbican "},{"line_number":38,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":3,"id":"ffe62b97_99140c46","line":35,"updated":"2017-03-28 00:03:17.000000000","message":"Please add .. \n\n\"This adds operationally complexity for tacker administrators as they add tacker-server instances for scaling.\"","commit_id":"417d4c35193e853a6747c377ca3102dd3adf6dcc"},{"author":{"_account_id":19644,"name":"Yan Xing\u0027an","email":"yanxingan@cmss.chinamobile.com","username":"yanxingan"},"change_message_id":"ece09faafef14a1f6966336a1ff5be562b70b0ee","unresolved":false,"context_lines":[{"line_number":32,"context_line":"The problem is, if tacker service serves API requests through a load balancer,"},{"line_number":33,"context_line":"then the operation will fail if the request is not fulfilled by the server node"},{"line_number":34,"context_line":"which created and stored the fernet key. We need a possible solution for syncing"},{"line_number":35,"context_line":"the keys across multiple server nodes."},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"Introduce Barbican "},{"line_number":38,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":3,"id":"ffe62b97_b2a7e50b","line":35,"in_reply_to":"ffe62b97_99140c46","updated":"2017-03-28 07:34:45.000000000","message":"Done","commit_id":"417d4c35193e853a6747c377ca3102dd3adf6dcc"},{"author":{"_account_id":13380,"name":"Sridhar Ramaswamy","email":"srics.r@gmail.com","username":"srics-r"},"change_message_id":"84b83d972c4ab38a9c69ae12d4540442344c9c2b","unresolved":false,"context_lines":[{"line_number":34,"context_line":"which created and stored the fernet key. We need a possible solution for syncing"},{"line_number":35,"context_line":"the keys across multiple server nodes."},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"Introduce Barbican "},{"line_number":38,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"Barbican[1] is a REST API designed for the secure storage, provisioning and"}],"source_content_type":"text/x-rst","patch_set":3,"id":"ffe62b97_591a046f","line":37,"range":{"start_line":37,"start_character":18,"end_line":37,"end_character":19},"updated":"2017-03-28 00:03:17.000000000","message":"nit: spurious EOL whitespace","commit_id":"417d4c35193e853a6747c377ca3102dd3adf6dcc"},{"author":{"_account_id":19644,"name":"Yan Xing\u0027an","email":"yanxingan@cmss.chinamobile.com","username":"yanxingan"},"change_message_id":"ece09faafef14a1f6966336a1ff5be562b70b0ee","unresolved":false,"context_lines":[{"line_number":34,"context_line":"which created and stored the fernet key. We need a possible solution for syncing"},{"line_number":35,"context_line":"the keys across multiple server nodes."},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"Introduce Barbican "},{"line_number":38,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"Barbican[1] is a REST API designed for the secure storage, provisioning and"}],"source_content_type":"text/x-rst","patch_set":3,"id":"ffe62b97_92b06145","line":37,"range":{"start_line":37,"start_character":18,"end_line":37,"end_character":19},"in_reply_to":"ffe62b97_591a046f","updated":"2017-03-28 07:34:45.000000000","message":"Done","commit_id":"417d4c35193e853a6747c377ca3102dd3adf6dcc"},{"author":{"_account_id":13380,"name":"Sridhar Ramaswamy","email":"srics.r@gmail.com","username":"srics-r"},"change_message_id":"84b83d972c4ab38a9c69ae12d4540442344c9c2b","unresolved":false,"context_lines":[{"line_number":74,"context_line":"In tacker vim use case, we can use the Secrets API to restore the password"},{"line_number":75,"context_line":"of VIM."},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"Let\u0027s look into other projects about how barbican is invoked."},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"Invoked in Nova"},{"line_number":80,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":3,"id":"ffe62b97_99b08c45","line":77,"range":{"start_line":77,"start_character":0,"end_line":77,"end_character":61},"updated":"2017-03-28 00:03:17.000000000","message":"Excellent analysis.. thanks for collecting the data.","commit_id":"417d4c35193e853a6747c377ca3102dd3adf6dcc"},{"author":{"_account_id":19644,"name":"Yan Xing\u0027an","email":"yanxingan@cmss.chinamobile.com","username":"yanxingan"},"change_message_id":"ece09faafef14a1f6966336a1ff5be562b70b0ee","unresolved":false,"context_lines":[{"line_number":74,"context_line":"In tacker vim use case, we can use the Secrets API to restore the password"},{"line_number":75,"context_line":"of VIM."},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"Let\u0027s look into other projects about how barbican is invoked."},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"Invoked in Nova"},{"line_number":80,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":3,"id":"ffe62b97_924ce142","line":77,"range":{"start_line":77,"start_character":0,"end_line":77,"end_character":61},"in_reply_to":"ffe62b97_99b08c45","updated":"2017-03-28 07:34:45.000000000","message":"Thanks.","commit_id":"417d4c35193e853a6747c377ca3102dd3adf6dcc"},{"author":{"_account_id":13380,"name":"Sridhar Ramaswamy","email":"srics.r@gmail.com","username":"srics-r"},"change_message_id":"84b83d972c4ab38a9c69ae12d4540442344c9c2b","unresolved":false,"context_lines":[{"line_number":101,"context_line":"-----------------"},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"Similar with neutron-lbaas, barbican is also introduced in Magnum"},{"line_number":104,"context_line":"to support TLS [6]."},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"How to use barbican"},{"line_number":107,"context_line":"-------------------"}],"source_content_type":"text/x-rst","patch_set":3,"id":"ffe62b97_7996e895","line":104,"range":{"start_line":104,"start_character":3,"end_line":104,"end_character":14},"updated":"2017-03-28 00:03:17.000000000","message":"Bringing Barbican in will also help us to support TLS for Tacker API in the future. We need to register blueprint to keep it in the queue.","commit_id":"417d4c35193e853a6747c377ca3102dd3adf6dcc"},{"author":{"_account_id":19644,"name":"Yan Xing\u0027an","email":"yanxingan@cmss.chinamobile.com","username":"yanxingan"},"change_message_id":"ece09faafef14a1f6966336a1ff5be562b70b0ee","unresolved":false,"context_lines":[{"line_number":101,"context_line":"-----------------"},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"Similar with neutron-lbaas, barbican is also introduced in Magnum"},{"line_number":104,"context_line":"to support TLS [6]."},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"How to use barbican"},{"line_number":107,"context_line":"-------------------"}],"source_content_type":"text/x-rst","patch_set":3,"id":"ffe62b97_92faa1ba","line":104,"range":{"start_line":104,"start_character":3,"end_line":104,"end_character":14},"in_reply_to":"ffe62b97_7996e895","updated":"2017-03-28 07:34:45.000000000","message":"I have reported a bp:\nhttps://blueprints.launchpad.net/tacker/+spec/support-tls-in-api","commit_id":"417d4c35193e853a6747c377ca3102dd3adf6dcc"},{"author":{"_account_id":13380,"name":"Sridhar Ramaswamy","email":"srics.r@gmail.com","username":"srics-r"},"change_message_id":"84b83d972c4ab38a9c69ae12d4540442344c9c2b","unresolved":false,"context_lines":[{"line_number":110,"context_line":""},{"line_number":111,"context_line":"* Use keystone.fernet to encrypt the password as current, and the save"},{"line_number":112,"context_line":"  the fernet key to barbican."},{"line_number":113,"context_line":"  "},{"line_number":114,"context_line":"* Save the vim password into barbican straightly."},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"I propose to use the second method due to barbican is skilled to do this."}],"source_content_type":"text/x-rst","patch_set":3,"id":"ffe62b97_793a68cc","line":113,"range":{"start_line":113,"start_character":0,"end_line":113,"end_character":2},"updated":"2017-03-28 00:03:17.000000000","message":"nit: spurious whitespace","commit_id":"417d4c35193e853a6747c377ca3102dd3adf6dcc"},{"author":{"_account_id":13380,"name":"Sridhar Ramaswamy","email":"srics.r@gmail.com","username":"srics-r"},"change_message_id":"84b83d972c4ab38a9c69ae12d4540442344c9c2b","unresolved":false,"context_lines":[{"line_number":111,"context_line":"* Use keystone.fernet to encrypt the password as current, and the save"},{"line_number":112,"context_line":"  the fernet key to barbican."},{"line_number":113,"context_line":"  "},{"line_number":114,"context_line":"* Save the vim password into barbican straightly."},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"I propose to use the second method due to barbican is skilled to do this."},{"line_number":117,"context_line":"Barbican is an openstack project, so it\u0027s need to get authorization from"}],"source_content_type":"text/x-rst","patch_set":3,"id":"ffe62b97_5948c45a","line":114,"range":{"start_line":114,"start_character":2,"end_line":114,"end_character":48},"updated":"2017-03-28 00:03:17.000000000","message":"Directly save the vim password into Barbican.","commit_id":"417d4c35193e853a6747c377ca3102dd3adf6dcc"},{"author":{"_account_id":13380,"name":"Sridhar Ramaswamy","email":"srics.r@gmail.com","username":"srics-r"},"change_message_id":"84b83d972c4ab38a9c69ae12d4540442344c9c2b","unresolved":false,"context_lines":[{"line_number":113,"context_line":"  "},{"line_number":114,"context_line":"* Save the vim password into barbican straightly."},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"I propose to use the second method due to barbican is skilled to do this."},{"line_number":117,"context_line":"Barbican is an openstack project, so it\u0027s need to get authorization from"},{"line_number":118,"context_line":"the keystone. And the secrets stored in barbican is private to the operator, "},{"line_number":119,"context_line":"so even an user with admin privileges can not retrieval the secrets."}],"source_content_type":"text/x-rst","patch_set":3,"id":"ffe62b97_f9a1d8f9","line":116,"range":{"start_line":116,"start_character":0,"end_line":116,"end_character":73},"updated":"2017-03-28 00:03:17.000000000","message":"I agree this is better option among the two. \n\nHOWEVER, assuming we are sending unencrypted cleartext password from tacker -\u003e barbican, unless tacker -\u003e barbican-secrets api is TLS protected the VIM password will be exposed. We may need to make TLS mandatory in that case - which is a pain. Can you find out what other projects you analyzed above does for this ?","commit_id":"417d4c35193e853a6747c377ca3102dd3adf6dcc"},{"author":{"_account_id":19644,"name":"Yan Xing\u0027an","email":"yanxingan@cmss.chinamobile.com","username":"yanxingan"},"change_message_id":"ece09faafef14a1f6966336a1ff5be562b70b0ee","unresolved":false,"context_lines":[{"line_number":113,"context_line":"  "},{"line_number":114,"context_line":"* Save the vim password into barbican straightly."},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"I propose to use the second method due to barbican is skilled to do this."},{"line_number":117,"context_line":"Barbican is an openstack project, so it\u0027s need to get authorization from"},{"line_number":118,"context_line":"the keystone. And the secrets stored in barbican is private to the operator, "},{"line_number":119,"context_line":"so even an user with admin privileges can not retrieval the secrets."}],"source_content_type":"text/x-rst","patch_set":3,"id":"ffe62b97_e857bcc9","line":116,"range":{"start_line":116,"start_character":0,"end_line":116,"end_character":73},"in_reply_to":"ffe62b97_f9a1d8f9","updated":"2017-03-28 07:34:45.000000000","message":"In the castellan usage as following section in this bpassword is incoded by castellan.common.objects.passphrase.\nDone.","commit_id":"417d4c35193e853a6747c377ca3102dd3adf6dcc"},{"author":{"_account_id":13380,"name":"Sridhar Ramaswamy","email":"srics.r@gmail.com","username":"srics-r"},"change_message_id":"84b83d972c4ab38a9c69ae12d4540442344c9c2b","unresolved":false,"context_lines":[{"line_number":115,"context_line":""},{"line_number":116,"context_line":"I propose to use the second method due to barbican is skilled to do this."},{"line_number":117,"context_line":"Barbican is an openstack project, so it\u0027s need to get authorization from"},{"line_number":118,"context_line":"the keystone. And the secrets stored in barbican is private to the operator, "},{"line_number":119,"context_line":"so even an user with admin privileges can not retrieval the secrets."},{"line_number":120,"context_line":""},{"line_number":121,"context_line":"The command to store the password:"}],"source_content_type":"text/x-rst","patch_set":3,"id":"ffe62b97_593324f7","line":118,"range":{"start_line":118,"start_character":76,"end_line":118,"end_character":77},"updated":"2017-03-28 00:03:17.000000000","message":"nit: spurious whitespace","commit_id":"417d4c35193e853a6747c377ca3102dd3adf6dcc"},{"author":{"_account_id":19644,"name":"Yan Xing\u0027an","email":"yanxingan@cmss.chinamobile.com","username":"yanxingan"},"change_message_id":"ece09faafef14a1f6966336a1ff5be562b70b0ee","unresolved":false,"context_lines":[{"line_number":115,"context_line":""},{"line_number":116,"context_line":"I propose to use the second method due to barbican is skilled to do this."},{"line_number":117,"context_line":"Barbican is an openstack project, so it\u0027s need to get authorization from"},{"line_number":118,"context_line":"the keystone. And the secrets stored in barbican is private to the operator, "},{"line_number":119,"context_line":"so even an user with admin privileges can not retrieval the secrets."},{"line_number":120,"context_line":""},{"line_number":121,"context_line":"The command to store the password:"}],"source_content_type":"text/x-rst","patch_set":3,"id":"ffe62b97_a3ad52ea","line":118,"range":{"start_line":118,"start_character":76,"end_line":118,"end_character":77},"in_reply_to":"ffe62b97_593324f7","updated":"2017-03-28 07:34:45.000000000","message":"Done","commit_id":"417d4c35193e853a6747c377ca3102dd3adf6dcc"},{"author":{"_account_id":13380,"name":"Sridhar Ramaswamy","email":"srics.r@gmail.com","username":"srics-r"},"change_message_id":"84b83d972c4ab38a9c69ae12d4540442344c9c2b","unresolved":false,"context_lines":[{"line_number":146,"context_line":"  | Payload | 123456 |"},{"line_number":147,"context_line":"  +---------+--------+"},{"line_number":148,"context_line":""},{"line_number":149,"context_line":"Introduce castellan "},{"line_number":150,"context_line":"-------------------"},{"line_number":151,"context_line":""},{"line_number":152,"context_line":"Castellan[7] is the library of Barbican, working on the principle of providing"}],"source_content_type":"text/x-rst","patch_set":3,"id":"ffe62b97_1986bc67","line":149,"range":{"start_line":149,"start_character":19,"end_line":149,"end_character":20},"updated":"2017-03-28 00:03:17.000000000","message":"nit: spurious whitespace","commit_id":"417d4c35193e853a6747c377ca3102dd3adf6dcc"},{"author":{"_account_id":19644,"name":"Yan Xing\u0027an","email":"yanxingan@cmss.chinamobile.com","username":"yanxingan"},"change_message_id":"ece09faafef14a1f6966336a1ff5be562b70b0ee","unresolved":false,"context_lines":[{"line_number":146,"context_line":"  | Payload | 123456 |"},{"line_number":147,"context_line":"  +---------+--------+"},{"line_number":148,"context_line":""},{"line_number":149,"context_line":"Introduce castellan "},{"line_number":150,"context_line":"-------------------"},{"line_number":151,"context_line":""},{"line_number":152,"context_line":"Castellan[7] is the library of Barbican, working on the principle of providing"}],"source_content_type":"text/x-rst","patch_set":3,"id":"ffe62b97_c3b05646","line":149,"range":{"start_line":149,"start_character":19,"end_line":149,"end_character":20},"in_reply_to":"ffe62b97_1986bc67","updated":"2017-03-28 07:34:45.000000000","message":"Done","commit_id":"417d4c35193e853a6747c377ca3102dd3adf6dcc"},{"author":{"_account_id":13380,"name":"Sridhar Ramaswamy","email":"srics.r@gmail.com","username":"srics-r"},"change_message_id":"84b83d972c4ab38a9c69ae12d4540442344c9c2b","unresolved":false,"context_lines":[{"line_number":151,"context_line":""},{"line_number":152,"context_line":"Castellan[7] is the library of Barbican, working on the principle of providing"},{"line_number":153,"context_line":"an abstracted key manager based on the configurations. In this manner,"},{"line_number":154,"context_line":"several different management services can be supported through a single "},{"line_number":155,"context_line":"interface. In addition to the key manager, Castellan also provides primitives"},{"line_number":156,"context_line":"for various types of secrets (for example, asymmetric keys,simple"},{"line_number":157,"context_line":"passphrases, and certificates). These primitives are used in conjunction"}],"source_content_type":"text/x-rst","patch_set":3,"id":"ffe62b97_f98af867","line":154,"range":{"start_line":154,"start_character":71,"end_line":154,"end_character":72},"updated":"2017-03-28 00:03:17.000000000","message":"nit: spurious whitespace","commit_id":"417d4c35193e853a6747c377ca3102dd3adf6dcc"},{"author":{"_account_id":19644,"name":"Yan Xing\u0027an","email":"yanxingan@cmss.chinamobile.com","username":"yanxingan"},"change_message_id":"ece09faafef14a1f6966336a1ff5be562b70b0ee","unresolved":false,"context_lines":[{"line_number":151,"context_line":""},{"line_number":152,"context_line":"Castellan[7] is the library of Barbican, working on the principle of providing"},{"line_number":153,"context_line":"an abstracted key manager based on the configurations. In this manner,"},{"line_number":154,"context_line":"several different management services can be supported through a single "},{"line_number":155,"context_line":"interface. In addition to the key manager, Castellan also provides primitives"},{"line_number":156,"context_line":"for various types of secrets (for example, asymmetric keys,simple"},{"line_number":157,"context_line":"passphrases, and certificates). These primitives are used in conjunction"}],"source_content_type":"text/x-rst","patch_set":3,"id":"ffe62b97_63b3ca4e","line":154,"range":{"start_line":154,"start_character":71,"end_line":154,"end_character":72},"in_reply_to":"ffe62b97_f98af867","updated":"2017-03-28 07:34:45.000000000","message":"Done","commit_id":"417d4c35193e853a6747c377ca3102dd3adf6dcc"},{"author":{"_account_id":13380,"name":"Sridhar Ramaswamy","email":"srics.r@gmail.com","username":"srics-r"},"change_message_id":"84b83d972c4ab38a9c69ae12d4540442344c9c2b","unresolved":false,"context_lines":[{"line_number":190,"context_line":"There are many methods to generate the context."},{"line_number":191,"context_line":""},{"line_number":192,"context_line":"* Use the current context of the user operatoring tacker."},{"line_number":193,"context_line":"  This method has a problem, if a user is not the one which "},{"line_number":194,"context_line":"  creates the vim, it will fail to retrieve the vim password"},{"line_number":195,"context_line":"  from barbican. To solve this issue, we need make the vim"},{"line_number":196,"context_line":"  private to each user, meaning that vim can only be used by"}],"source_content_type":"text/x-rst","patch_set":3,"id":"ffe62b97_d97bb478","line":193,"range":{"start_line":193,"start_character":59,"end_line":193,"end_character":60},"updated":"2017-03-28 00:03:17.000000000","message":"nit: spurious whitespace","commit_id":"417d4c35193e853a6747c377ca3102dd3adf6dcc"},{"author":{"_account_id":19644,"name":"Yan Xing\u0027an","email":"yanxingan@cmss.chinamobile.com","username":"yanxingan"},"change_message_id":"ece09faafef14a1f6966336a1ff5be562b70b0ee","unresolved":false,"context_lines":[{"line_number":190,"context_line":"There are many methods to generate the context."},{"line_number":191,"context_line":""},{"line_number":192,"context_line":"* Use the current context of the user operatoring tacker."},{"line_number":193,"context_line":"  This method has a problem, if a user is not the one which "},{"line_number":194,"context_line":"  creates the vim, it will fail to retrieve the vim password"},{"line_number":195,"context_line":"  from barbican. To solve this issue, we need make the vim"},{"line_number":196,"context_line":"  private to each user, meaning that vim can only be used by"}],"source_content_type":"text/x-rst","patch_set":3,"id":"ffe62b97_43868668","line":193,"range":{"start_line":193,"start_character":59,"end_line":193,"end_character":60},"in_reply_to":"ffe62b97_d97bb478","updated":"2017-03-28 07:34:45.000000000","message":"Done","commit_id":"417d4c35193e853a6747c377ca3102dd3adf6dcc"},{"author":{"_account_id":13380,"name":"Sridhar Ramaswamy","email":"srics.r@gmail.com","username":"srics-r"},"change_message_id":"84b83d972c4ab38a9c69ae12d4540442344c9c2b","unresolved":false,"context_lines":[{"line_number":189,"context_line":""},{"line_number":190,"context_line":"There are many methods to generate the context."},{"line_number":191,"context_line":""},{"line_number":192,"context_line":"* Use the current context of the user operatoring tacker."},{"line_number":193,"context_line":"  This method has a problem, if a user is not the one which "},{"line_number":194,"context_line":"  creates the vim, it will fail to retrieve the vim password"},{"line_number":195,"context_line":"  from barbican. To solve this issue, we need make the vim"},{"line_number":196,"context_line":"  private to each user, meaning that vim can only be used by"},{"line_number":197,"context_line":"  who created it."},{"line_number":198,"context_line":""},{"line_number":199,"context_line":"* Save the credentials in configuration like following. All"},{"line_number":200,"context_line":"  vims\u0027 passwords are saved in this tenant\u0027s domain."}],"source_content_type":"text/x-rst","patch_set":3,"id":"ffe62b97_79db887b","line":197,"range":{"start_line":192,"start_character":0,"end_line":197,"end_character":17},"updated":"2017-03-28 00:03:17.000000000","message":"Hmm.. this assumption won\u0027t work. Frequently an NFV \"admin\" might bring in new VIM sites .. but a lower privileged NFV \"user\" account could do the day to day VNF \u0026 NSD creations.","commit_id":"417d4c35193e853a6747c377ca3102dd3adf6dcc"},{"author":{"_account_id":19644,"name":"Yan Xing\u0027an","email":"yanxingan@cmss.chinamobile.com","username":"yanxingan"},"change_message_id":"ece09faafef14a1f6966336a1ff5be562b70b0ee","unresolved":false,"context_lines":[{"line_number":189,"context_line":""},{"line_number":190,"context_line":"There are many methods to generate the context."},{"line_number":191,"context_line":""},{"line_number":192,"context_line":"* Use the current context of the user operatoring tacker."},{"line_number":193,"context_line":"  This method has a problem, if a user is not the one which "},{"line_number":194,"context_line":"  creates the vim, it will fail to retrieve the vim password"},{"line_number":195,"context_line":"  from barbican. To solve this issue, we need make the vim"},{"line_number":196,"context_line":"  private to each user, meaning that vim can only be used by"},{"line_number":197,"context_line":"  who created it."},{"line_number":198,"context_line":""},{"line_number":199,"context_line":"* Save the credentials in configuration like following. All"},{"line_number":200,"context_line":"  vims\u0027 passwords are saved in this tenant\u0027s domain."}],"source_content_type":"text/x-rst","patch_set":3,"id":"ffe62b97_03b4fef0","line":197,"range":{"start_line":192,"start_character":0,"end_line":197,"end_character":17},"in_reply_to":"ffe62b97_79db887b","updated":"2017-03-28 07:34:45.000000000","message":"Ok, i will remove this method.","commit_id":"417d4c35193e853a6747c377ca3102dd3adf6dcc"},{"author":{"_account_id":13380,"name":"Sridhar Ramaswamy","email":"srics.r@gmail.com","username":"srics-r"},"change_message_id":"84b83d972c4ab38a9c69ae12d4540442344c9c2b","unresolved":false,"context_lines":[{"line_number":203,"context_line":"  auth_type \u003d \u0027keystone_password\u0027"},{"line_number":204,"context_line":"  username \u003d \u0027admin\u0027"},{"line_number":205,"context_line":"  password \u003d \u0027passw0rd1\u0027"},{"line_number":206,"context_line":"  project_id \u003d \u00271099302ec608486f9879ba2466c60720\u0027"},{"line_number":207,"context_line":"  user_domain_name \u003d \u0027default\u0027"},{"line_number":208,"context_line":""},{"line_number":209,"context_line":"Proposed change"}],"source_content_type":"text/x-rst","patch_set":3,"id":"ffe62b97_994c0c43","line":206,"range":{"start_line":206,"start_character":0,"end_line":206,"end_character":49},"updated":"2017-03-28 00:03:17.000000000","message":"We need understand typically user pattern for barbican. Could  project be a special \"tacker-vim-credential-store\" project .. created just to store tacker\u0027s vim credentials. Perhaps upto the deployer. For devstack this could default to \"nfv\" project ?","commit_id":"417d4c35193e853a6747c377ca3102dd3adf6dcc"},{"author":{"_account_id":19644,"name":"Yan Xing\u0027an","email":"yanxingan@cmss.chinamobile.com","username":"yanxingan"},"change_message_id":"ece09faafef14a1f6966336a1ff5be562b70b0ee","unresolved":false,"context_lines":[{"line_number":203,"context_line":"  auth_type \u003d \u0027keystone_password\u0027"},{"line_number":204,"context_line":"  username \u003d \u0027admin\u0027"},{"line_number":205,"context_line":"  password \u003d \u0027passw0rd1\u0027"},{"line_number":206,"context_line":"  project_id \u003d \u00271099302ec608486f9879ba2466c60720\u0027"},{"line_number":207,"context_line":"  user_domain_name \u003d \u0027default\u0027"},{"line_number":208,"context_line":""},{"line_number":209,"context_line":"Proposed change"}],"source_content_type":"text/x-rst","patch_set":3,"id":"ffe62b97_a9cf7354","line":206,"range":{"start_line":206,"start_character":0,"end_line":206,"end_character":49},"in_reply_to":"ffe62b97_994c0c43","updated":"2017-03-28 07:34:45.000000000","message":"Done.\nI will ping to barbican team about this in mail list.","commit_id":"417d4c35193e853a6747c377ca3102dd3adf6dcc"},{"author":{"_account_id":20560,"name":"Tung Doan","email":"doantungbk.203@gmail.com","username":"doantungbk"},"change_message_id":"4b24b06d0834d60af7c730735925d02a6c1aad8d","unresolved":false,"context_lines":[{"line_number":80,"context_line":"https://blueprints.launchpad.net/tacker/+spec/support-tls-in-api"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"The command to store the password:"},{"line_number":83,"context_line":".. code-block:: ini"},{"line_number":84,"context_line":"  source devstack/openrc admin"},{"line_number":85,"context_line":"  $ openstack secret store --name \u0027vim_password\u0027 --payload-content-type\u003d\u0027text/plain\u0027 --payload\u003d\"123456\""},{"line_number":86,"context_line":"  +---------------+--------------------------------------------------------------+"},{"line_number":87,"context_line":"  | Field         | Value                                                        |"}],"source_content_type":"text/x-rst","patch_set":6,"id":"dfeb2761_2d592134","line":84,"range":{"start_line":83,"start_character":0,"end_line":84,"end_character":30},"updated":"2017-04-05 05:38:10.000000000","message":"add a new line","commit_id":"88130ecd79ec743d9ad6ea60e0849da4cea990e5"},{"author":{"_account_id":20560,"name":"Tung Doan","email":"doantungbk.203@gmail.com","username":"doantungbk"},"change_message_id":"4b24b06d0834d60af7c730735925d02a6c1aad8d","unresolved":false,"context_lines":[{"line_number":149,"context_line":""},{"line_number":150,"context_line":"* Example. Creating and storing a key."},{"line_number":151,"context_line":""},{"line_number":152,"context_line":".. code-block:: code"},{"line_number":153,"context_line":"  from castellan.common.objects import passphrase"},{"line_number":154,"context_line":"  from castellan import key_manager"},{"line_number":155,"context_line":""},{"line_number":156,"context_line":"  key \u003d passphrase.Passphrase(\u0027super_secret_password\u0027)"}],"source_content_type":"text/x-rst","patch_set":6,"id":"dfeb2761_ad2f7186","line":153,"range":{"start_line":152,"start_character":0,"end_line":153,"end_character":49},"updated":"2017-04-05 05:38:10.000000000","message":"need to have a new line","commit_id":"88130ecd79ec743d9ad6ea60e0849da4cea990e5"},{"author":{"_account_id":20560,"name":"Tung Doan","email":"doantungbk.203@gmail.com","username":"doantungbk"},"change_message_id":"4b24b06d0834d60af7c730735925d02a6c1aad8d","unresolved":false,"context_lines":[{"line_number":159,"context_line":""},{"line_number":160,"context_line":"* Example. Retrieving a key."},{"line_number":161,"context_line":""},{"line_number":162,"context_line":".. code-block:: code"},{"line_number":163,"context_line":"  from castellan import key_manager"},{"line_number":164,"context_line":""},{"line_number":165,"context_line":"  manager \u003d key_manager.API()"},{"line_number":166,"context_line":"  key \u003d manager.get(context, stored_key_id)"}],"source_content_type":"text/x-rst","patch_set":6,"id":"dfeb2761_ed39f9d6","line":163,"range":{"start_line":162,"start_character":0,"end_line":163,"end_character":35},"updated":"2017-04-05 05:38:10.000000000","message":"same here","commit_id":"88130ecd79ec743d9ad6ea60e0849da4cea990e5"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"5047e96b26a8dfcc1692e28963de5b058b894792","unresolved":false,"context_lines":[{"line_number":183,"context_line":"There are two methods to generate the context."},{"line_number":184,"context_line":"* Using a reserved project"},{"line_number":185,"context_line":""},{"line_number":186,"context_line":"Castellan Usage[8] shows a method, saving the credentials in configuration."},{"line_number":187,"context_line":"We can create a reserved tenant (e.g. \u0027tacker-vim-credential-store\u0027 or"},{"line_number":188,"context_line":"long living existing created user), and all vims\u0027 passwords are saved and"},{"line_number":189,"context_line":"retrieved in this tenant\u0027s domain."},{"line_number":190,"context_line":""},{"line_number":191,"context_line":".. code-block:: ini"},{"line_number":192,"context_line":"  [castellan]"},{"line_number":193,"context_line":"  auth_type \u003d \u0027keystone_password\u0027"},{"line_number":194,"context_line":"  username \u003d \u0027tacker-vim-credential-store\u0027"},{"line_number":195,"context_line":"  password \u003d \u0027passw0rd1\u0027"},{"line_number":196,"context_line":"  project_id \u003d \u0027tacker-vim-credential-store\u0027"},{"line_number":197,"context_line":"  user_domain_name \u003d \u0027default\u0027"},{"line_number":198,"context_line":""},{"line_number":199,"context_line":"* Using the operator\u0027s context (who creates vim)"},{"line_number":200,"context_line":"We must consider how the secrets saved in barbican can be accessed by"}],"source_content_type":"text/x-rst","patch_set":6,"id":"dfeb2761_17db114f","line":197,"range":{"start_line":186,"start_character":0,"end_line":197,"end_character":30},"updated":"2017-04-05 02:53:11.000000000","message":"lets not use the shared way.","commit_id":"88130ecd79ec743d9ad6ea60e0849da4cea990e5"},{"author":{"_account_id":20560,"name":"Tung Doan","email":"doantungbk.203@gmail.com","username":"doantungbk"},"change_message_id":"4b24b06d0834d60af7c730735925d02a6c1aad8d","unresolved":false,"context_lines":[{"line_number":202,"context_line":""},{"line_number":203,"context_line":"The default RBAC policy[9] about secrets are following:"},{"line_number":204,"context_line":""},{"line_number":205,"context_line":".. code-block:: ini"},{"line_number":206,"context_line":"    \"admin\": \"role:admin\","},{"line_number":207,"context_line":"    \"observer\": \"role:observer\","},{"line_number":208,"context_line":"    \"creator\": \"role:creator\","}],"source_content_type":"text/x-rst","patch_set":6,"id":"dfeb2761_6d2e0993","line":205,"range":{"start_line":205,"start_character":0,"end_line":205,"end_character":19},"updated":"2017-04-05 05:38:10.000000000","message":"need a new line","commit_id":"88130ecd79ec743d9ad6ea60e0849da4cea990e5"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"476159c22e7f5605f65508de92eb1de7291f228f","unresolved":false,"context_lines":[{"line_number":149,"context_line":""},{"line_number":150,"context_line":"Castellan can not support ACL for secrets or containers currently."},{"line_number":151,"context_line":"So we need invoke both barbicanclient and castellan in this spec, and remove"},{"line_number":152,"context_line":"barbicanclient in future. "},{"line_number":153,"context_line":""},{"line_number":154,"context_line":"How to use castellan"},{"line_number":155,"context_line":"--------------------"}],"source_content_type":"text/x-rst","patch_set":7,"id":"bff0334d_bb7af2ed","line":152,"range":{"start_line":152,"start_character":25,"end_line":152,"end_character":26},"updated":"2017-04-11 09:48:00.000000000","message":"can we use only barbicanclient?","commit_id":"7019d393d9268fa551a7f9ef032ab3fca54ef092"},{"author":{"_account_id":19644,"name":"Yan Xing\u0027an","email":"yanxingan@cmss.chinamobile.com","username":"yanxingan"},"change_message_id":"8c7d05a2b8f7adc82a254609fc08bc77c9c4abf5","unresolved":false,"context_lines":[{"line_number":149,"context_line":""},{"line_number":150,"context_line":"Castellan can not support ACL for secrets or containers currently."},{"line_number":151,"context_line":"So we need invoke both barbicanclient and castellan in this spec, and remove"},{"line_number":152,"context_line":"barbicanclient in future. "},{"line_number":153,"context_line":""},{"line_number":154,"context_line":"How to use castellan"},{"line_number":155,"context_line":"--------------------"}],"source_content_type":"text/x-rst","patch_set":7,"id":"bff0334d_3a011c07","line":152,"range":{"start_line":152,"start_character":25,"end_line":152,"end_character":26},"in_reply_to":"bff0334d_bb7af2ed","updated":"2017-04-12 05:24:55.000000000","message":"ok","commit_id":"7019d393d9268fa551a7f9ef032ab3fca54ef092"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"476159c22e7f5605f65508de92eb1de7291f228f","unresolved":false,"context_lines":[{"line_number":327,"context_line":"Data model impact"},{"line_number":328,"context_line":"-----------------"},{"line_number":329,"context_line":""},{"line_number":330,"context_line":"In current realization, the fernet-encrypted password is saved in"},{"line_number":331,"context_line":"VimAuth.password and VimAuth.auth_cred[\u0027password\u0027]."},{"line_number":332,"context_line":""},{"line_number":333,"context_line":"When using barbican, we will save the secret UUID in these fields."},{"line_number":334,"context_line":""},{"line_number":335,"context_line":"REST API impact"},{"line_number":336,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":7,"id":"bff0334d_1b6b1e1e","line":333,"range":{"start_line":330,"start_character":0,"end_line":333,"end_character":66},"updated":"2017-04-11 09:48:00.000000000","message":"can we add a new field to tell what type is in the password?","commit_id":"7019d393d9268fa551a7f9ef032ab3fca54ef092"},{"author":{"_account_id":13380,"name":"Sridhar Ramaswamy","email":"srics.r@gmail.com","username":"srics-r"},"change_message_id":"807b60d80d879eb5a8fdaa2353a79d46ad833540","unresolved":false,"context_lines":[{"line_number":327,"context_line":"Data model impact"},{"line_number":328,"context_line":"-----------------"},{"line_number":329,"context_line":""},{"line_number":330,"context_line":"In current realization, the fernet-encrypted password is saved in"},{"line_number":331,"context_line":"VimAuth.password and VimAuth.auth_cred[\u0027password\u0027]."},{"line_number":332,"context_line":""},{"line_number":333,"context_line":"When using barbican, we will save the secret UUID in these fields."},{"line_number":334,"context_line":""},{"line_number":335,"context_line":"REST API impact"},{"line_number":336,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":7,"id":"7ffa3b31_48036910","line":333,"range":{"start_line":330,"start_character":0,"end_line":333,"end_character":66},"in_reply_to":"7ffa3b31_38e76be7","updated":"2017-04-19 06:34:20.000000000","message":"+1   .. are you planning to update this spec?","commit_id":"7019d393d9268fa551a7f9ef032ab3fca54ef092"},{"author":{"_account_id":18955,"name":"dharmendra","email":"dharmendra.kushwaha@gmail.com","username":"dharmendra"},"change_message_id":"2d8034ebc8cb0ea96941a88675ad83c48ce0a51d","unresolved":false,"context_lines":[{"line_number":327,"context_line":"Data model impact"},{"line_number":328,"context_line":"-----------------"},{"line_number":329,"context_line":""},{"line_number":330,"context_line":"In current realization, the fernet-encrypted password is saved in"},{"line_number":331,"context_line":"VimAuth.password and VimAuth.auth_cred[\u0027password\u0027]."},{"line_number":332,"context_line":""},{"line_number":333,"context_line":"When using barbican, we will save the secret UUID in these fields."},{"line_number":334,"context_line":""},{"line_number":335,"context_line":"REST API impact"},{"line_number":336,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":7,"id":"7ffa3b31_38e76be7","line":333,"range":{"start_line":330,"start_character":0,"end_line":333,"end_character":66},"in_reply_to":"bff0334d_1b6b1e1e","updated":"2017-04-18 11:54:47.000000000","message":"+1","commit_id":"7019d393d9268fa551a7f9ef032ab3fca54ef092"},{"author":{"_account_id":19644,"name":"Yan Xing\u0027an","email":"yanxingan@cmss.chinamobile.com","username":"yanxingan"},"change_message_id":"8c7d05a2b8f7adc82a254609fc08bc77c9c4abf5","unresolved":false,"context_lines":[{"line_number":327,"context_line":"Data model impact"},{"line_number":328,"context_line":"-----------------"},{"line_number":329,"context_line":""},{"line_number":330,"context_line":"In current realization, the fernet-encrypted password is saved in"},{"line_number":331,"context_line":"VimAuth.password and VimAuth.auth_cred[\u0027password\u0027]."},{"line_number":332,"context_line":""},{"line_number":333,"context_line":"When using barbican, we will save the secret UUID in these fields."},{"line_number":334,"context_line":""},{"line_number":335,"context_line":"REST API impact"},{"line_number":336,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":7,"id":"bff0334d_5a062022","line":333,"range":{"start_line":330,"start_character":0,"end_line":333,"end_character":66},"in_reply_to":"bff0334d_1b6b1e1e","updated":"2017-04-12 05:24:55.000000000","message":"ok","commit_id":"7019d393d9268fa551a7f9ef032ab3fca54ef092"},{"author":{"_account_id":18955,"name":"dharmendra","email":"dharmendra.kushwaha@gmail.com","username":"dharmendra"},"change_message_id":"2d8034ebc8cb0ea96941a88675ad83c48ce0a51d","unresolved":false,"context_lines":[{"line_number":378,"context_line":"  Yan Xing an\u003cyanxingan@cmss.chinamobile.com\u003e"},{"line_number":379,"context_line":""},{"line_number":380,"context_line":"Other contributors:"},{"line_number":381,"context_line":"  \u003claunchpad-id or None\u003e"},{"line_number":382,"context_line":""},{"line_number":383,"context_line":"Work Items"},{"line_number":384,"context_line":"----------"}],"source_content_type":"text/x-rst","patch_set":7,"id":"7ffa3b31_d8c6474a","line":381,"range":{"start_line":381,"start_character":2,"end_line":381,"end_character":24},"updated":"2017-04-18 11:54:47.000000000","message":"It just can be None","commit_id":"7019d393d9268fa551a7f9ef032ab3fca54ef092"},{"author":{"_account_id":13380,"name":"Sridhar Ramaswamy","email":"srics.r@gmail.com","username":"srics-r"},"change_message_id":"807b60d80d879eb5a8fdaa2353a79d46ad833540","unresolved":false,"context_lines":[{"line_number":378,"context_line":"  Yan Xing an\u003cyanxingan@cmss.chinamobile.com\u003e"},{"line_number":379,"context_line":""},{"line_number":380,"context_line":"Other contributors:"},{"line_number":381,"context_line":"  \u003claunchpad-id or None\u003e"},{"line_number":382,"context_line":""},{"line_number":383,"context_line":"Work Items"},{"line_number":384,"context_line":"----------"}],"source_content_type":"text/x-rst","patch_set":7,"id":"7ffa3b31_c8177951","line":381,"range":{"start_line":381,"start_character":2,"end_line":381,"end_character":24},"in_reply_to":"7ffa3b31_d8c6474a","updated":"2017-04-19 06:34:20.000000000","message":"+1 .. just put None.","commit_id":"7019d393d9268fa551a7f9ef032ab3fca54ef092"},{"author":{"_account_id":18955,"name":"dharmendra","email":"dharmendra.kushwaha@gmail.com","username":"dharmendra"},"change_message_id":"2d8034ebc8cb0ea96941a88675ad83c48ce0a51d","unresolved":false,"context_lines":[{"line_number":385,"context_line":""},{"line_number":386,"context_line":"The BP involves following tasks:"},{"line_number":387,"context_line":""},{"line_number":388,"context_line":" * framework with unit tests"},{"line_number":389,"context_line":" * functional tests"},{"line_number":390,"context_line":" * installation document"},{"line_number":391,"context_line":" * support barbican in devstack"},{"line_number":392,"context_line":""},{"line_number":393,"context_line":"Dependencies"},{"line_number":394,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":7,"id":"7ffa3b31_0a7e9518","line":391,"range":{"start_line":388,"start_character":2,"end_line":391,"end_character":31},"updated":"2017-04-18 11:54:47.000000000","message":"No changes required in NFVO side?","commit_id":"7019d393d9268fa551a7f9ef032ab3fca54ef092"},{"author":{"_account_id":13380,"name":"Sridhar Ramaswamy","email":"srics.r@gmail.com","username":"srics-r"},"change_message_id":"807b60d80d879eb5a8fdaa2353a79d46ad833540","unresolved":false,"context_lines":[{"line_number":385,"context_line":""},{"line_number":386,"context_line":"The BP involves following tasks:"},{"line_number":387,"context_line":""},{"line_number":388,"context_line":" * framework with unit tests"},{"line_number":389,"context_line":" * functional tests"},{"line_number":390,"context_line":" * installation document"},{"line_number":391,"context_line":" * support barbican in devstack"},{"line_number":392,"context_line":""},{"line_number":393,"context_line":"Dependencies"},{"line_number":394,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":7,"id":"7ffa3b31_682f45a1","line":391,"range":{"start_line":388,"start_character":2,"end_line":391,"end_character":31},"in_reply_to":"7ffa3b31_0a7e9518","updated":"2017-04-19 06:34:20.000000000","message":"I guess this is described in L292","commit_id":"7019d393d9268fa551a7f9ef032ab3fca54ef092"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"be819032a86afe3c3aecec06b411e8b56cb0b799","unresolved":false,"context_lines":[{"line_number":491,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":492,"context_line":""},{"line_number":493,"context_line":" * Barbican"},{"line_number":494,"context_line":" * Castellan"},{"line_number":495,"context_line":""},{"line_number":496,"context_line":"Testing"},{"line_number":497,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":9,"id":"7ffa3b31_fa28c234","line":494,"range":{"start_line":494,"start_character":2,"end_line":494,"end_character":12},"updated":"2017-04-19 01:26:44.000000000","message":"lets not depend on it for this version.","commit_id":"b5e4383e4bf65b92762645c5fa62355d074b53f0"}]}
