)]}'
{"troveclient/tests/test_v1_shell.py":[{"author":{"_account_id":28695,"name":"Bartosz Zurkowski","email":"b.zurkowski@samsung.com","username":"b.zurkowski"},"change_message_id":"95b377e2f69eaaf3b0cc29421cbae181e12f2cfc","unresolved":false,"context_lines":[{"line_number":516,"context_line":"                \u0027name\u0027: \u0027test-clstr2\u0027,"},{"line_number":517,"context_line":"                \u0027locality\u0027: \u0027affinity\u0027}})"},{"line_number":518,"context_line":""},{"line_number":519,"context_line":"    def test_cluster_create_with_extends(self):"},{"line_number":520,"context_line":"        cmd \u003d (\u0027cluster-create test-clstr3 mongodb 4.0 \u0027"},{"line_number":521,"context_line":"               \u0027--instance flavor\u003d2,volume\u003d1 \u0027"},{"line_number":522,"context_line":"               \u0027--instance flavor\u003d02,volume\u003d1 \u0027"}],"source_content_type":"text/x-python","patch_set":2,"id":"5f7c97a3_0925abbf","line":519,"updated":"2018-07-23 13:17:44.000000000","message":"with_extends -\u003e with_extended_properties","commit_id":"56d5e6eed43f8783dc3a474d7a7a00c9db608f9f"},{"author":{"_account_id":22608,"name":"zhanggang","email":"zhanggang@cmss.chinamobile.com","username":"zhanggang"},"change_message_id":"2e45c8cce3dfd59bcfb765d8909c8d6d3de20aaa","unresolved":false,"context_lines":[{"line_number":516,"context_line":"                \u0027name\u0027: \u0027test-clstr2\u0027,"},{"line_number":517,"context_line":"                \u0027locality\u0027: \u0027affinity\u0027}})"},{"line_number":518,"context_line":""},{"line_number":519,"context_line":"    def test_cluster_create_with_extends(self):"},{"line_number":520,"context_line":"        cmd \u003d (\u0027cluster-create test-clstr3 mongodb 4.0 \u0027"},{"line_number":521,"context_line":"               \u0027--instance flavor\u003d2,volume\u003d1 \u0027"},{"line_number":522,"context_line":"               \u0027--instance flavor\u003d02,volume\u003d1 \u0027"}],"source_content_type":"text/x-python","patch_set":2,"id":"5f7c97a3_ef4d2693","line":519,"in_reply_to":"5f7c97a3_0925abbf","updated":"2018-07-31 06:53:22.000000000","message":"Done","commit_id":"56d5e6eed43f8783dc3a474d7a7a00c9db608f9f"}],"troveclient/v1/clusters.py":[{"author":{"_account_id":28695,"name":"Bartosz Zurkowski","email":"b.zurkowski@samsung.com","username":"b.zurkowski"},"change_message_id":"e86974e0f35109bac39ffb6b8b836e786f284add","unresolved":false,"context_lines":[{"line_number":37,"context_line":"    resource_class \u003d Cluster"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"    def create(self, name, datastore, datastore_version, instances\u003dNone,"},{"line_number":40,"context_line":"               locality\u003dNone, extends\u003dNone):"},{"line_number":41,"context_line":"        \"\"\"Create (boot) a new cluster.\"\"\""},{"line_number":42,"context_line":"        body \u003d {\"cluster\": {"},{"line_number":43,"context_line":"            \"name\": name"}],"source_content_type":"text/x-python","patch_set":1,"id":"5f7c97a3_4e766e41","line":40,"updated":"2018-07-20 13:40:53.000000000","message":"In my opinion we should align with naming present in Trove API. I suggest renaming all occurrences of variable/parameter \"extends\" to \"extended_properties\". Name \"extends\" looks like verb and verb suggests boolean value.","commit_id":"5aa15cac1de4756fd5ecf4dc3e88291528ab65cf"}],"troveclient/v1/shell.py":[{"author":{"_account_id":28695,"name":"Bartosz Zurkowski","email":"b.zurkowski@samsung.com","username":"b.zurkowski"},"change_message_id":"e86974e0f35109bac39ffb6b8b836e786f284add","unresolved":false,"context_lines":[{"line_number":42,"context_line":"                       \"%(instance)s.\")"},{"line_number":43,"context_line":"LOCALITY_DOMAIN \u003d [\u0027affinity\u0027, \u0027anti-affinity\u0027]"},{"line_number":44,"context_line":"EXTEND_METAVAR \u003d INSTANCE_METAVAR"},{"line_number":45,"context_line":"EXTEND_HELP \u003d _(\"Add extend properties for cluster create. \""},{"line_number":46,"context_line":"                \"Currently only support mongdb options: \""},{"line_number":47,"context_line":"                \"num_configsvr\u003d\u003cnumber_of_configsvr\u003e, \""},{"line_number":48,"context_line":"                \"num_mongos\u003d\u003cnumber_of_mongos\u003e, \""}],"source_content_type":"text/x-python","patch_set":1,"id":"5f7c97a3_2ec9b258","line":45,"updated":"2018-07-20 13:40:53.000000000","message":"Typo. extend -\u003e extended.","commit_id":"5aa15cac1de4756fd5ecf4dc3e88291528ab65cf"},{"author":{"_account_id":22608,"name":"zhanggang","email":"zhanggang@cmss.chinamobile.com","username":"zhanggang"},"change_message_id":"36d6f50502fbda2ede4be9532710e04bd86ab9b1","unresolved":false,"context_lines":[{"line_number":42,"context_line":"                       \"%(instance)s.\")"},{"line_number":43,"context_line":"LOCALITY_DOMAIN \u003d [\u0027affinity\u0027, \u0027anti-affinity\u0027]"},{"line_number":44,"context_line":"EXTEND_METAVAR \u003d INSTANCE_METAVAR"},{"line_number":45,"context_line":"EXTEND_HELP \u003d _(\"Add extend properties for cluster create. \""},{"line_number":46,"context_line":"                \"Currently only support mongdb options: \""},{"line_number":47,"context_line":"                \"num_configsvr\u003d\u003cnumber_of_configsvr\u003e, \""},{"line_number":48,"context_line":"                \"num_mongos\u003d\u003cnumber_of_mongos\u003e, \""}],"source_content_type":"text/x-python","patch_set":1,"id":"5f7c97a3_543fc585","line":45,"in_reply_to":"5f7c97a3_2ec9b258","updated":"2018-07-23 07:05:42.000000000","message":"Done","commit_id":"5aa15cac1de4756fd5ecf4dc3e88291528ab65cf"},{"author":{"_account_id":28695,"name":"Bartosz Zurkowski","email":"b.zurkowski@samsung.com","username":"b.zurkowski"},"change_message_id":"e86974e0f35109bac39ffb6b8b836e786f284add","unresolved":false,"context_lines":[{"line_number":43,"context_line":"LOCALITY_DOMAIN \u003d [\u0027affinity\u0027, \u0027anti-affinity\u0027]"},{"line_number":44,"context_line":"EXTEND_METAVAR \u003d INSTANCE_METAVAR"},{"line_number":45,"context_line":"EXTEND_HELP \u003d _(\"Add extend properties for cluster create. \""},{"line_number":46,"context_line":"                \"Currently only support mongdb options: \""},{"line_number":47,"context_line":"                \"num_configsvr\u003d\u003cnumber_of_configsvr\u003e, \""},{"line_number":48,"context_line":"                \"num_mongos\u003d\u003cnumber_of_mongos\u003e, \""},{"line_number":49,"context_line":"                \"configsvr_volume_size\u003d\u003cdisk_size_in_GB\u003e, \""}],"source_content_type":"text/x-python","patch_set":1,"id":"5f7c97a3_6e924a4c","line":46,"updated":"2018-07-20 13:40:53.000000000","message":"Typo. mongdb -\u003e MongoDB.","commit_id":"5aa15cac1de4756fd5ecf4dc3e88291528ab65cf"},{"author":{"_account_id":22608,"name":"zhanggang","email":"zhanggang@cmss.chinamobile.com","username":"zhanggang"},"change_message_id":"36d6f50502fbda2ede4be9532710e04bd86ab9b1","unresolved":false,"context_lines":[{"line_number":43,"context_line":"LOCALITY_DOMAIN \u003d [\u0027affinity\u0027, \u0027anti-affinity\u0027]"},{"line_number":44,"context_line":"EXTEND_METAVAR \u003d INSTANCE_METAVAR"},{"line_number":45,"context_line":"EXTEND_HELP \u003d _(\"Add extend properties for cluster create. \""},{"line_number":46,"context_line":"                \"Currently only support mongdb options: \""},{"line_number":47,"context_line":"                \"num_configsvr\u003d\u003cnumber_of_configsvr\u003e, \""},{"line_number":48,"context_line":"                \"num_mongos\u003d\u003cnumber_of_mongos\u003e, \""},{"line_number":49,"context_line":"                \"configsvr_volume_size\u003d\u003cdisk_size_in_GB\u003e, \""}],"source_content_type":"text/x-python","patch_set":1,"id":"5f7c97a3_f4437111","line":46,"in_reply_to":"5f7c97a3_6e924a4c","updated":"2018-07-23 07:05:42.000000000","message":"Done","commit_id":"5aa15cac1de4756fd5ecf4dc3e88291528ab65cf"},{"author":{"_account_id":28695,"name":"Bartosz Zurkowski","email":"b.zurkowski@samsung.com","username":"b.zurkowski"},"change_message_id":"e86974e0f35109bac39ffb6b8b836e786f284add","unresolved":false,"context_lines":[{"line_number":49,"context_line":"                \"configsvr_volume_size\u003d\u003cdisk_size_in_GB\u003e, \""},{"line_number":50,"context_line":"                \"configsvr_volume_type\u003d\u003cvolume_type\u003e, \""},{"line_number":51,"context_line":"                \"mongos_volume_size\u003d\u003cdisk_size_in_GB\u003e, \""},{"line_number":52,"context_line":"                \"mongos_volume_type\u003d\u003cvolume_type\u003e.\")"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"try:"},{"line_number":55,"context_line":"    import simplejson as json"}],"source_content_type":"text/x-python","patch_set":1,"id":"5f7c97a3_6e556a51","line":52,"updated":"2018-07-20 13:40:53.000000000","message":"Since extended properties may be assigned to other clustered databases in the future, I suggest re-organizing help message in the following way.\n\nFirstly, add some general information about option usage:\n\n Properties must be of the form: \"opt\u003d\u003cvalue\u003e[,opt\u003d\u003cvalue\u003e ...] \"\n\nSecondly, provide map of valid parameters that may be set for each database cluster:\n\n MongoDB:\n num_configsvr\u003d\u003cnumber_of_configsvr\u003e, num_mongos\u003d\u003cnumber_of_mongos\u003e, ...\n\nLater on, we will add other entries (if needed):\n\n Cassandra:\n ...\n \n Redis Cluster:\n ...","commit_id":"5aa15cac1de4756fd5ecf4dc3e88291528ab65cf"},{"author":{"_account_id":22608,"name":"zhanggang","email":"zhanggang@cmss.chinamobile.com","username":"zhanggang"},"change_message_id":"36d6f50502fbda2ede4be9532710e04bd86ab9b1","unresolved":false,"context_lines":[{"line_number":49,"context_line":"                \"configsvr_volume_size\u003d\u003cdisk_size_in_GB\u003e, \""},{"line_number":50,"context_line":"                \"configsvr_volume_type\u003d\u003cvolume_type\u003e, \""},{"line_number":51,"context_line":"                \"mongos_volume_size\u003d\u003cdisk_size_in_GB\u003e, \""},{"line_number":52,"context_line":"                \"mongos_volume_type\u003d\u003cvolume_type\u003e.\")"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"try:"},{"line_number":55,"context_line":"    import simplejson as json"}],"source_content_type":"text/x-python","patch_set":1,"id":"5f7c97a3_347d691e","line":52,"in_reply_to":"5f7c97a3_6e556a51","updated":"2018-07-23 07:05:42.000000000","message":"After add the EXTENDED_METAVAR, the output looks like:\n--extended_properties \"opt\u003d\u003cvalue\u003e[,opt\u003d\u003cvalue\u003e ...]\", so the general infomation is no need to add in the help message, and the others have reorganizing.\nThanks.","commit_id":"5aa15cac1de4756fd5ecf4dc3e88291528ab65cf"},{"author":{"_account_id":28695,"name":"Bartosz Zurkowski","email":"b.zurkowski@samsung.com","username":"b.zurkowski"},"change_message_id":"95b377e2f69eaaf3b0cc29421cbae181e12f2cfc","unresolved":false,"context_lines":[{"line_number":42,"context_line":"                       \"%(instance)s.\")"},{"line_number":43,"context_line":"LOCALITY_DOMAIN \u003d [\u0027affinity\u0027, \u0027anti-affinity\u0027]"},{"line_number":44,"context_line":"EXTENDED_METAVAR \u003d INSTANCE_METAVAR"},{"line_number":45,"context_line":"EXTENDED_HELP \u003d _(\"Add extended properties for cluster create. \""},{"line_number":46,"context_line":"                  \"Currently only support MongoDB options, other databases \""},{"line_number":47,"context_line":"                  \"will be added in the future. \""},{"line_number":48,"context_line":"                  \"MongoDB: \""}],"source_content_type":"text/x-python","patch_set":2,"id":"5f7c97a3_8939bbf2","line":45,"updated":"2018-07-23 13:17:44.000000000","message":"EXTENDED_METAVAR -\u003e EXTENDED_PROPERTIES_METAVAR / EXT_PROPS_METAVAR\nEXTENDED_HELP -\u003e EXTENDED_PROPERTIES_HELP / EXT_PROPS_HELP","commit_id":"56d5e6eed43f8783dc3a474d7a7a00c9db608f9f"},{"author":{"_account_id":22608,"name":"zhanggang","email":"zhanggang@cmss.chinamobile.com","username":"zhanggang"},"change_message_id":"2e45c8cce3dfd59bcfb765d8909c8d6d3de20aaa","unresolved":false,"context_lines":[{"line_number":42,"context_line":"                       \"%(instance)s.\")"},{"line_number":43,"context_line":"LOCALITY_DOMAIN \u003d [\u0027affinity\u0027, \u0027anti-affinity\u0027]"},{"line_number":44,"context_line":"EXTENDED_METAVAR \u003d INSTANCE_METAVAR"},{"line_number":45,"context_line":"EXTENDED_HELP \u003d _(\"Add extended properties for cluster create. \""},{"line_number":46,"context_line":"                  \"Currently only support MongoDB options, other databases \""},{"line_number":47,"context_line":"                  \"will be added in the future. \""},{"line_number":48,"context_line":"                  \"MongoDB: \""}],"source_content_type":"text/x-python","patch_set":2,"id":"5f7c97a3_0f20a2b0","line":45,"in_reply_to":"5f7c97a3_8939bbf2","updated":"2018-07-31 06:53:22.000000000","message":"Done","commit_id":"56d5e6eed43f8783dc3a474d7a7a00c9db608f9f"},{"author":{"_account_id":28695,"name":"Bartosz Zurkowski","email":"b.zurkowski@samsung.com","username":"b.zurkowski"},"change_message_id":"95b377e2f69eaaf3b0cc29421cbae181e12f2cfc","unresolved":false,"context_lines":[{"line_number":51,"context_line":"                  \"  configsvr_volume_size\u003d\u003cdisk_size_in_GB\u003e, \""},{"line_number":52,"context_line":"                  \"  configsvr_volume_type\u003d\u003cvolume_type\u003e, \""},{"line_number":53,"context_line":"                  \"  mongos_volume_size\u003d\u003cdisk_size_in_GB\u003e, \""},{"line_number":54,"context_line":"                  \"  mongos_volume_type\u003d\u003cvolume_type\u003e.\")"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"try:"},{"line_number":57,"context_line":"    import simplejson as json"}],"source_content_type":"text/x-python","patch_set":2,"id":"5f7c97a3_acccc596","line":54,"updated":"2018-07-23 13:17:44.000000000","message":"I\u0027m not sure if this is the right time to add this, but as with the network option, it would be appropriate to also validate the arguments of extended properties.\n\nIn the situation when the user gives an invalid or unsupported argument, they should get an error, e.g.: \"X option is not supported for Y datastore.\".","commit_id":"56d5e6eed43f8783dc3a474d7a7a00c9db608f9f"},{"author":{"_account_id":22608,"name":"zhanggang","email":"zhanggang@cmss.chinamobile.com","username":"zhanggang"},"change_message_id":"7005d29a1df1e1abb0af409448f2b901512bae7c","unresolved":false,"context_lines":[{"line_number":51,"context_line":"                  \"  configsvr_volume_size\u003d\u003cdisk_size_in_GB\u003e, \""},{"line_number":52,"context_line":"                  \"  configsvr_volume_type\u003d\u003cvolume_type\u003e, \""},{"line_number":53,"context_line":"                  \"  mongos_volume_size\u003d\u003cdisk_size_in_GB\u003e, \""},{"line_number":54,"context_line":"                  \"  mongos_volume_type\u003d\u003cvolume_type\u003e.\")"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"try:"},{"line_number":57,"context_line":"    import simplejson as json"}],"source_content_type":"text/x-python","patch_set":2,"id":"5f7c97a3_e3f1da65","line":54,"in_reply_to":"5f7c97a3_acccc596","updated":"2018-07-30 09:32:54.000000000","message":"It\u0027s good to raise an error when user gives an unsupported argument, but there is something difference with nics, first the number and name of parameters in nics is fixed, so it\u0027s easy to do the validation, however the number/name of extended_properties can be changed in the future. Second, user can pass a name or a ID of a datastore, we can\u0027t group extended_properties by arg.datastore to do the validation, so it\u0027s hardly to raise an error like \"XXX is not supported for YYY datastore\". Last, a bad nics argument will cause a \"nova boot\" error, but an unsupported extend_properties will not stop a cluster-creating(by using the default properties value).","commit_id":"56d5e6eed43f8783dc3a474d7a7a00c9db608f9f"},{"author":{"_account_id":28695,"name":"Bartosz Zurkowski","email":"b.zurkowski@samsung.com","username":"b.zurkowski"},"change_message_id":"5c1757675fb948fcaf0fb752be067e5365251514","unresolved":false,"context_lines":[{"line_number":51,"context_line":"                  \"  configsvr_volume_size\u003d\u003cdisk_size_in_GB\u003e, \""},{"line_number":52,"context_line":"                  \"  configsvr_volume_type\u003d\u003cvolume_type\u003e, \""},{"line_number":53,"context_line":"                  \"  mongos_volume_size\u003d\u003cdisk_size_in_GB\u003e, \""},{"line_number":54,"context_line":"                  \"  mongos_volume_type\u003d\u003cvolume_type\u003e.\")"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"try:"},{"line_number":57,"context_line":"    import simplejson as json"}],"source_content_type":"text/x-python","patch_set":2,"id":"5f7c97a3_c66b8751","line":54,"in_reply_to":"5f7c97a3_e3f1da65","updated":"2018-07-30 14:26:16.000000000","message":"You\u0027re right that implementation is harder in that case. The validation added in API schema should be enough to get us started with extended properties. In the future, we can think about introducing mapping between datastores and supported properties to handle validation at CLI level as well.","commit_id":"56d5e6eed43f8783dc3a474d7a7a00c9db608f9f"},{"author":{"_account_id":28671,"name":"Marcin Piwowarczyk","email":"m.piwowarczy@samsung.com","username":"m.piwowarczy"},"change_message_id":"755ce34a8aa71b2d0ee05b177f9da0631d96b8c0","unresolved":false,"context_lines":[{"line_number":901,"context_line":"    extended_properties \u003d {}"},{"line_number":902,"context_line":"    if args.extended_properties:"},{"line_number":903,"context_line":"        extended_properties \u003d dict([(k, v) for (k, v) in"},{"line_number":904,"context_line":"                                    [kv.strip().split(\"\u003d\") for kv in"},{"line_number":905,"context_line":"                                    args.extended_properties.split(\",\")]])"},{"line_number":906,"context_line":"    cluster \u003d cs.clusters.create(args.name,"},{"line_number":907,"context_line":"                                 args.datastore,"}],"source_content_type":"text/x-python","patch_set":2,"id":"5f7c97a3_780d07e6","line":904,"range":{"start_line":904,"start_character":35,"end_line":904,"end_character":36},"updated":"2018-07-23 15:43:37.000000000","message":"Formatting - remove one leading space.","commit_id":"56d5e6eed43f8783dc3a474d7a7a00c9db608f9f"},{"author":{"_account_id":22608,"name":"zhanggang","email":"zhanggang@cmss.chinamobile.com","username":"zhanggang"},"change_message_id":"2e45c8cce3dfd59bcfb765d8909c8d6d3de20aaa","unresolved":false,"context_lines":[{"line_number":901,"context_line":"    extended_properties \u003d {}"},{"line_number":902,"context_line":"    if args.extended_properties:"},{"line_number":903,"context_line":"        extended_properties \u003d dict([(k, v) for (k, v) in"},{"line_number":904,"context_line":"                                    [kv.strip().split(\"\u003d\") for kv in"},{"line_number":905,"context_line":"                                    args.extended_properties.split(\",\")]])"},{"line_number":906,"context_line":"    cluster \u003d cs.clusters.create(args.name,"},{"line_number":907,"context_line":"                                 args.datastore,"}],"source_content_type":"text/x-python","patch_set":2,"id":"5f7c97a3_cf25cac1","line":904,"range":{"start_line":904,"start_character":35,"end_line":904,"end_character":36},"in_reply_to":"5f7c97a3_780d07e6","updated":"2018-07-31 06:53:22.000000000","message":"Done","commit_id":"56d5e6eed43f8783dc3a474d7a7a00c9db608f9f"},{"author":{"_account_id":28671,"name":"Marcin Piwowarczyk","email":"m.piwowarczy@samsung.com","username":"m.piwowarczy"},"change_message_id":"755ce34a8aa71b2d0ee05b177f9da0631d96b8c0","unresolved":false,"context_lines":[{"line_number":902,"context_line":"    if args.extended_properties:"},{"line_number":903,"context_line":"        extended_properties \u003d dict([(k, v) for (k, v) in"},{"line_number":904,"context_line":"                                    [kv.strip().split(\"\u003d\") for kv in"},{"line_number":905,"context_line":"                                    args.extended_properties.split(\",\")]])"},{"line_number":906,"context_line":"    cluster \u003d cs.clusters.create(args.name,"},{"line_number":907,"context_line":"                                 args.datastore,"},{"line_number":908,"context_line":"                                 args.datastore_version,"}],"source_content_type":"text/x-python","patch_set":2,"id":"5f7c97a3_b82cff49","line":905,"range":{"start_line":905,"start_character":35,"end_line":905,"end_character":36},"updated":"2018-07-23 15:43:37.000000000","message":"ditto","commit_id":"56d5e6eed43f8783dc3a474d7a7a00c9db608f9f"},{"author":{"_account_id":22608,"name":"zhanggang","email":"zhanggang@cmss.chinamobile.com","username":"zhanggang"},"change_message_id":"2e45c8cce3dfd59bcfb765d8909c8d6d3de20aaa","unresolved":false,"context_lines":[{"line_number":902,"context_line":"    if args.extended_properties:"},{"line_number":903,"context_line":"        extended_properties \u003d dict([(k, v) for (k, v) in"},{"line_number":904,"context_line":"                                    [kv.strip().split(\"\u003d\") for kv in"},{"line_number":905,"context_line":"                                    args.extended_properties.split(\",\")]])"},{"line_number":906,"context_line":"    cluster \u003d cs.clusters.create(args.name,"},{"line_number":907,"context_line":"                                 args.datastore,"},{"line_number":908,"context_line":"                                 args.datastore_version,"}],"source_content_type":"text/x-python","patch_set":2,"id":"5f7c97a3_ef2206b7","line":905,"range":{"start_line":905,"start_character":35,"end_line":905,"end_character":36},"in_reply_to":"5f7c97a3_b82cff49","updated":"2018-07-31 06:53:22.000000000","message":"Done","commit_id":"56d5e6eed43f8783dc3a474d7a7a00c9db608f9f"}]}
