)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":10487,"name":"Kanagaraj Manickam","email":"mkr1481@gmail.com","username":"kanagarajm"},"change_message_id":"82a13eb3018b4479751beeadbe2fa4cb52b419fa","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Introduce uniqueness constraint on resource names"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Resource names are handled to be unique per tenant for all 3"},{"line_number":10,"context_line":"resources vnfd, vnf and vim."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Also existing duplicate names are updated to name-\u003c12char. uudid\u003e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"3aaa91ec_7e8a2b65","line":9,"updated":"2016-06-27 08:12:23.000000000","message":"how are you making sure, name is unique per tenant, not sure whether i am missing to see some part of your code ?","commit_id":"b1c2eec98dfa59a57b0ef1d9db8620f796a46da0"},{"author":{"_account_id":10487,"name":"Kanagaraj Manickam","email":"mkr1481@gmail.com","username":"kanagarajm"},"change_message_id":"25af5206607b9488b2de0c4b2c20547d2a93ff71","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Introduce uniqueness constraint on resource names"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Resource names are handled to be unique per tenant for all 3"},{"line_number":10,"context_line":"resources vnfd, vnf and vim."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Also existing duplicate names are updated to name-\u003c12char. uudid\u003e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"3aaa91ec_7c567a07","line":9,"in_reply_to":"3aaa91ec_48d5d2b7","updated":"2016-06-28 05:28:47.000000000","message":"yes, but how its per tenant, based on the code referred here, i believe its across and not per tenant","commit_id":"b1c2eec98dfa59a57b0ef1d9db8620f796a46da0"},{"author":{"_account_id":10487,"name":"Kanagaraj Manickam","email":"mkr1481@gmail.com","username":"kanagarajm"},"change_message_id":"5bd4ec9598c831a69fc21ec3a86bfb6b43e7fe0a","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Introduce uniqueness constraint on resource names"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Resource names are handled to be unique per tenant for all 3"},{"line_number":10,"context_line":"resources vnfd, vnf and vim."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Also existing duplicate names are updated to name-\u003c12char. uudid\u003e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"3aaa91ec_c8f4d0d0","line":9,"in_reply_to":"3aaa91ec_651a3a19","updated":"2016-06-29 03:24:50.000000000","message":"thanks.","commit_id":"b1c2eec98dfa59a57b0ef1d9db8620f796a46da0"},{"author":{"_account_id":13485,"name":"Sripriya Seetharam","email":"sseetha@brocade.com","username":"Sripriya"},"change_message_id":"e412012a9ddb70ab9fd4cac4ab3a5a4cdcef6045","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Introduce uniqueness constraint on resource names"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Resource names are handled to be unique per tenant for all 3"},{"line_number":10,"context_line":"resources vnfd, vnf and vim."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Also existing duplicate names are updated to name-\u003c12char. uudid\u003e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"3aaa91ec_651a3a19","line":9,"in_reply_to":"3aaa91ec_7c567a07","updated":"2016-06-28 17:00:50.000000000","message":"it is per tenant. Please refer [1]. Thanks.\n\n\n[1] https://github.com/openstack/tacker/blob/master/tacker/db/db_base.py#L85","commit_id":"b1c2eec98dfa59a57b0ef1d9db8620f796a46da0"},{"author":{"_account_id":13485,"name":"Sripriya Seetharam","email":"sseetha@brocade.com","username":"Sripriya"},"change_message_id":"a6b22bce2e409c6611c6ee5a6afc47dd63977077","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Introduce uniqueness constraint on resource names"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Resource names are handled to be unique per tenant for all 3"},{"line_number":10,"context_line":"resources vnfd, vnf and vim."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Also existing duplicate names are updated to name-\u003c12char. uudid\u003e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"3aaa91ec_48d5d2b7","line":9,"in_reply_to":"3aaa91ec_7e8a2b65","updated":"2016-06-27 18:36:46.000000000","message":"uniqueness on name is introduced by checking if a row with the provided \u0027name\u0027 already exists in db, if yes then raise an exception else create the db row for it. For example refer [1]\n\n\n[1] https://review.openstack.org/#/c/329759/2/tacker/nfvo/nfvo_plugin.py@60","commit_id":"b1c2eec98dfa59a57b0ef1d9db8620f796a46da0"}],"releasenotes/notes/unique-names-vnf-vnfd-vim-a16442ce5c33cfda.yaml":[{"author":{"_account_id":13380,"name":"Sridhar Ramaswamy","email":"srics.r@gmail.com","username":"srics-r"},"change_message_id":"b6185b9703a68fbd7ec617743340dba6377f96a7","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - Introduce uniqueness cosntraint on Tacker resource names"}],"source_content_type":"text/x-yaml","patch_set":2,"id":"3aaa91ec_b8efe485","line":3,"range":{"start_line":3,"start_character":55,"end_line":3,"end_character":60},"updated":"2016-06-29 19:44:04.000000000","message":"can you give some example resources here ? Can we say,\n\nIntroduce uniqueness constraint on the name of Tacker resources like vnf, vnfd, vim, etc","commit_id":"b1c2eec98dfa59a57b0ef1d9db8620f796a46da0"},{"author":{"_account_id":13380,"name":"Sridhar Ramaswamy","email":"srics.r@gmail.com","username":"srics-r"},"change_message_id":"b6185b9703a68fbd7ec617743340dba6377f96a7","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - Introduce uniqueness cosntraint on Tacker resource names"}],"source_content_type":"text/x-yaml","patch_set":2,"id":"3aaa91ec_f857ac57","line":3,"range":{"start_line":3,"start_character":25,"end_line":3,"end_character":35},"updated":"2016-06-29 19:44:04.000000000","message":"typo: constraint","commit_id":"b1c2eec98dfa59a57b0ef1d9db8620f796a46da0"},{"author":{"_account_id":13485,"name":"Sripriya Seetharam","email":"sseetha@brocade.com","username":"Sripriya"},"change_message_id":"3ab29999b943035bb2fab5b043c18cc9e112fabe","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - Introduce uniqueness cosntraint on Tacker resource names"}],"source_content_type":"text/x-yaml","patch_set":2,"id":"3aaa91ec_c90b0423","line":3,"range":{"start_line":3,"start_character":55,"end_line":3,"end_character":60},"in_reply_to":"3aaa91ec_b8efe485","updated":"2016-06-29 20:14:59.000000000","message":"Done","commit_id":"b1c2eec98dfa59a57b0ef1d9db8620f796a46da0"},{"author":{"_account_id":13485,"name":"Sripriya Seetharam","email":"sseetha@brocade.com","username":"Sripriya"},"change_message_id":"3ab29999b943035bb2fab5b043c18cc9e112fabe","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - Introduce uniqueness cosntraint on Tacker resource names"}],"source_content_type":"text/x-yaml","patch_set":2,"id":"3aaa91ec_2915683f","line":3,"range":{"start_line":3,"start_character":25,"end_line":3,"end_character":35},"in_reply_to":"3aaa91ec_f857ac57","updated":"2016-06-29 20:14:59.000000000","message":"Done","commit_id":"b1c2eec98dfa59a57b0ef1d9db8620f796a46da0"}],"tacker/common/exceptions.py":[{"author":{"_account_id":13380,"name":"Sridhar Ramaswamy","email":"srics.r@gmail.com","username":"srics-r"},"change_message_id":"cd97bd4be4c7860311a52fe1ce61c8b75fba66ec","unresolved":false,"context_lines":[{"line_number":259,"context_line":"                \"should be one of %(valid_types)s\")"},{"line_number":260,"context_line":""},{"line_number":261,"context_line":""},{"line_number":262,"context_line":"class DuplicateResource(TackerException):"},{"line_number":263,"context_line":"    message \u003d _(\"%(resource)s with name %(name)s already exists\")"}],"source_content_type":"text/x-python","patch_set":8,"id":"3ac371cc_1d62f216","line":262,"range":{"start_line":262,"start_character":6,"end_line":262,"end_character":23},"updated":"2016-08-19 02:16:42.000000000","message":"Just to be clear, this should be DuplicateResourceName ?","commit_id":"b56f0d32049859c7c0dd88746c3d66ecf31b3590"},{"author":{"_account_id":13485,"name":"Sripriya Seetharam","email":"sseetha@brocade.com","username":"Sripriya"},"change_message_id":"08db5814e825093028bf300409dc5c5b8001f0c7","unresolved":false,"context_lines":[{"line_number":259,"context_line":"                \"should be one of %(valid_types)s\")"},{"line_number":260,"context_line":""},{"line_number":261,"context_line":""},{"line_number":262,"context_line":"class DuplicateResource(TackerException):"},{"line_number":263,"context_line":"    message \u003d _(\"%(resource)s with name %(name)s already exists\")"}],"source_content_type":"text/x-python","patch_set":8,"id":"fa7ab95a_ec8cd437","line":262,"range":{"start_line":262,"start_character":6,"end_line":262,"end_character":23},"in_reply_to":"1ac06dbe_52ba580b","updated":"2016-08-25 23:04:52.000000000","message":"Done","commit_id":"b56f0d32049859c7c0dd88746c3d66ecf31b3590"},{"author":{"_account_id":13380,"name":"Sridhar Ramaswamy","email":"srics.r@gmail.com","username":"srics-r"},"change_message_id":"0f70adb52aa7925f0b97e6b195758fa6ff6a5ec0","unresolved":false,"context_lines":[{"line_number":259,"context_line":"                \"should be one of %(valid_types)s\")"},{"line_number":260,"context_line":""},{"line_number":261,"context_line":""},{"line_number":262,"context_line":"class DuplicateResource(TackerException):"},{"line_number":263,"context_line":"    message \u003d _(\"%(resource)s with name %(name)s already exists\")"}],"source_content_type":"text/x-python","patch_set":8,"id":"1ac06dbe_52ba580b","line":262,"range":{"start_line":262,"start_character":6,"end_line":262,"end_character":23},"in_reply_to":"1ac06dbe_81edd28d","updated":"2016-08-22 07:37:30.000000000","message":"I know this might sound pedantic, but DuplicateResource would be exact same resource using a deep-comparison. However with the message below at L263 being granular to name, it make sense to use a specific exception name.","commit_id":"b56f0d32049859c7c0dd88746c3d66ecf31b3590"},{"author":{"_account_id":13485,"name":"Sripriya Seetharam","email":"sseetha@brocade.com","username":"Sripriya"},"change_message_id":"119cc3fbdb22e73718e27f5938ae8dd399f92603","unresolved":false,"context_lines":[{"line_number":259,"context_line":"                \"should be one of %(valid_types)s\")"},{"line_number":260,"context_line":""},{"line_number":261,"context_line":""},{"line_number":262,"context_line":"class DuplicateResource(TackerException):"},{"line_number":263,"context_line":"    message \u003d _(\"%(resource)s with name %(name)s already exists\")"}],"source_content_type":"text/x-python","patch_set":8,"id":"1ac06dbe_81edd28d","line":262,"range":{"start_line":262,"start_character":6,"end_line":262,"end_character":23},"in_reply_to":"3ac371cc_1d62f216","updated":"2016-08-19 20:13:44.000000000","message":"I wanted to keep it generic since \u0027name\u0027 the only parameter that determines duplication for a resource. Do you think this assumption is fair?  If not, i can change it to DuplicateResourceName","commit_id":"b56f0d32049859c7c0dd88746c3d66ecf31b3590"}],"tacker/db/migration/alembic_migrations/versions/0cabe8526bfe_unique_constraint_names.py":[{"author":{"_account_id":13380,"name":"Sridhar Ramaswamy","email":"srics.r@gmail.com","username":"srics-r"},"change_message_id":"b6185b9703a68fbd7ec617743340dba6377f96a7","unresolved":false,"context_lines":[{"line_number":43,"context_line":"                duplicate_obj_query \u003d session.query(t).filter(t.c.name \u003d\u003d name["},{"line_number":44,"context_line":"                    0]).all()"},{"line_number":45,"context_line":"                for dup_obj in duplicate_obj_query:"},{"line_number":46,"context_line":"                    new_name \u003d \u0027{0}-{1}\u0027.format(dup_obj.name, dup_obj.id[-12:])"},{"line_number":47,"context_line":"                    session.execute(t.update().where("},{"line_number":48,"context_line":"                        t.c.id \u003d\u003d dup_obj.id).values(name\u003dnew_name))"},{"line_number":49,"context_line":"    session.commit()"}],"source_content_type":"text/x-python","patch_set":2,"id":"3aaa91ec_0b3ea427","line":46,"range":{"start_line":46,"start_character":20,"end_line":46,"end_character":79},"updated":"2016-06-29 19:44:04.000000000","message":"Shouldn\u0027t we handle some boundary conditions where \u0027name\u0027 + \u0027uuid\u0027 portion exceeds max-size(name) ? Perhaps we should truncate \u0027name\u0027 by 12 + 1 chars ?","commit_id":"b1c2eec98dfa59a57b0ef1d9db8620f796a46da0"},{"author":{"_account_id":13485,"name":"Sripriya Seetharam","email":"sseetha@brocade.com","username":"Sripriya"},"change_message_id":"3ab29999b943035bb2fab5b043c18cc9e112fabe","unresolved":false,"context_lines":[{"line_number":43,"context_line":"                duplicate_obj_query \u003d session.query(t).filter(t.c.name \u003d\u003d name["},{"line_number":44,"context_line":"                    0]).all()"},{"line_number":45,"context_line":"                for dup_obj in duplicate_obj_query:"},{"line_number":46,"context_line":"                    new_name \u003d \u0027{0}-{1}\u0027.format(dup_obj.name, dup_obj.id[-12:])"},{"line_number":47,"context_line":"                    session.execute(t.update().where("},{"line_number":48,"context_line":"                        t.c.id \u003d\u003d dup_obj.id).values(name\u003dnew_name))"},{"line_number":49,"context_line":"    session.commit()"}],"source_content_type":"text/x-python","patch_set":2,"id":"3aaa91ec_498b9468","line":46,"range":{"start_line":46,"start_character":20,"end_line":46,"end_character":79},"in_reply_to":"3aaa91ec_0b3ea427","updated":"2016-06-29 20:14:59.000000000","message":"this also brings up another boundary case of names having length of 255 char. should the name be modified to name (stripped of last 13 char.) +{12 char. uuid}  to make them unique?","commit_id":"b1c2eec98dfa59a57b0ef1d9db8620f796a46da0"},{"author":{"_account_id":13380,"name":"Sridhar Ramaswamy","email":"srics.r@gmail.com","username":"srics-r"},"change_message_id":"21571f7ba25b7254d54bcd741f4af65383eeafcd","unresolved":false,"context_lines":[{"line_number":43,"context_line":"                duplicate_obj_query \u003d session.query(t).filter(t.c.name \u003d\u003d name["},{"line_number":44,"context_line":"                    0]).all()"},{"line_number":45,"context_line":"                for dup_obj in duplicate_obj_query:"},{"line_number":46,"context_line":"                    new_name \u003d \u0027{0}-{1}\u0027.format(dup_obj.name, dup_obj.id[-12:])"},{"line_number":47,"context_line":"                    session.execute(t.update().where("},{"line_number":48,"context_line":"                        t.c.id \u003d\u003d dup_obj.id).values(name\u003dnew_name))"},{"line_number":49,"context_line":"    session.commit()"}],"source_content_type":"text/x-python","patch_set":2,"id":"1aa78d24_11378ce4","line":46,"range":{"start_line":46,"start_character":20,"end_line":46,"end_character":79},"in_reply_to":"3aaa91ec_498b9468","updated":"2016-07-01 23:24:38.000000000","message":"Exactly. If size(name) \u003e (255 -13), strip the part need to make room to add \"-\u003cuuid\".","commit_id":"b1c2eec98dfa59a57b0ef1d9db8620f796a46da0"}],"tacker/db/migration/alembic_migrations/versions/2cae6b21d990_unique_constraint_names.py":[{"author":{"_account_id":10487,"name":"Kanagaraj Manickam","email":"mkr1481@gmail.com","username":"kanagarajm"},"change_message_id":"7db2457cb801dd2026ff72f07bd7f0722256536a","unresolved":false,"context_lines":[{"line_number":44,"context_line":"                    0]).all()"},{"line_number":45,"context_line":"                for dup_obj in duplicate_obj_query:"},{"line_number":46,"context_line":"                    session.execute(t.update().where("},{"line_number":47,"context_line":"                        t.c.id \u003d\u003d dup_obj.id).values(name\u003ddup_obj.name + \u0027-\u0027 +"},{"line_number":48,"context_line":"                                                     dup_obj.id[-12:]))"},{"line_number":49,"context_line":"        op.create_unique_constraint(\u0027unique_vnf_name\u0027, table, [\u0027name\u0027])"},{"line_number":50,"context_line":"    session.commit()"}],"source_content_type":"text/x-python","patch_set":1,"id":"7aa08908_1965fadf","line":47,"updated":"2016-06-15 05:33:57.000000000","message":"its best practise to follow the string formatting instead of addition.","commit_id":"41c8190b089e54b1dcf1f3548042db10161d1f20"},{"author":{"_account_id":13485,"name":"Sripriya Seetharam","email":"sseetha@brocade.com","username":"Sripriya"},"change_message_id":"755db4bd3bdf36faf0019fa2f1209f8e66c9ae09","unresolved":false,"context_lines":[{"line_number":44,"context_line":"                    0]).all()"},{"line_number":45,"context_line":"                for dup_obj in duplicate_obj_query:"},{"line_number":46,"context_line":"                    session.execute(t.update().where("},{"line_number":47,"context_line":"                        t.c.id \u003d\u003d dup_obj.id).values(name\u003ddup_obj.name + \u0027-\u0027 +"},{"line_number":48,"context_line":"                                                     dup_obj.id[-12:]))"},{"line_number":49,"context_line":"        op.create_unique_constraint(\u0027unique_vnf_name\u0027, table, [\u0027name\u0027])"},{"line_number":50,"context_line":"    session.commit()"}],"source_content_type":"text/x-python","patch_set":1,"id":"7aa08908_9467ef23","line":47,"in_reply_to":"7aa08908_1965fadf","updated":"2016-06-15 06:41:40.000000000","message":"Done","commit_id":"41c8190b089e54b1dcf1f3548042db10161d1f20"},{"author":{"_account_id":10487,"name":"Kanagaraj Manickam","email":"mkr1481@gmail.com","username":"kanagarajm"},"change_message_id":"7db2457cb801dd2026ff72f07bd7f0722256536a","unresolved":false,"context_lines":[{"line_number":46,"context_line":"                    session.execute(t.update().where("},{"line_number":47,"context_line":"                        t.c.id \u003d\u003d dup_obj.id).values(name\u003ddup_obj.name + \u0027-\u0027 +"},{"line_number":48,"context_line":"                                                     dup_obj.id[-12:]))"},{"line_number":49,"context_line":"        op.create_unique_constraint(\u0027unique_vnf_name\u0027, table, [\u0027name\u0027])"},{"line_number":50,"context_line":"    session.commit()"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"7aa08908_79323ef3","line":49,"updated":"2016-06-15 05:33:57.000000000","message":"though it would work technically, kindly use the name based on table name. or unique_name. .. vnf is hard coded.","commit_id":"41c8190b089e54b1dcf1f3548042db10161d1f20"},{"author":{"_account_id":13485,"name":"Sripriya Seetharam","email":"sseetha@brocade.com","username":"Sripriya"},"change_message_id":"755db4bd3bdf36faf0019fa2f1209f8e66c9ae09","unresolved":false,"context_lines":[{"line_number":46,"context_line":"                    session.execute(t.update().where("},{"line_number":47,"context_line":"                        t.c.id \u003d\u003d dup_obj.id).values(name\u003ddup_obj.name + \u0027-\u0027 +"},{"line_number":48,"context_line":"                                                     dup_obj.id[-12:]))"},{"line_number":49,"context_line":"        op.create_unique_constraint(\u0027unique_vnf_name\u0027, table, [\u0027name\u0027])"},{"line_number":50,"context_line":"    session.commit()"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"7aa08908_944ecf93","line":49,"in_reply_to":"7aa08908_79323ef3","updated":"2016-06-15 06:41:40.000000000","message":"good catch. this got missed, didnt mean to hard code :-)","commit_id":"41c8190b089e54b1dcf1f3548042db10161d1f20"}],"tacker/db/nfvo/nfvo_db.py":[{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"3103259a25bad9ad968ed4eba70eb191f911bf9d","unresolved":false,"context_lines":[{"line_number":37,"context_line":"VIM_AUTH_ATTRIBUTES \u003d (\u0027auth_url\u0027, \u0027vim_project\u0027, \u0027password\u0027, \u0027auth_cred\u0027)"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"class Vim(model_base.BASE, models_v1.HasId, models_v1.HasTenant):"},{"line_number":41,"context_line":"    type \u003d sa.Column(sa.String(64), nullable\u003dFalse)"},{"line_number":42,"context_line":"    name \u003d sa.Column(sa.String(255), nullable\u003dFalse)"},{"line_number":43,"context_line":"    description \u003d sa.Column(sa.Text, nullable\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":8,"id":"fa7ab95a_428907ca","line":40,"updated":"2016-08-26 00:34:28.000000000","message":"please add the name per tenant unique index here.","commit_id":"b56f0d32049859c7c0dd88746c3d66ecf31b3590"},{"author":{"_account_id":13485,"name":"Sripriya Seetharam","email":"sseetha@brocade.com","username":"Sripriya"},"change_message_id":"2e8209c9b6485c99d65dffd2e1e0a352bbdcadc4","unresolved":false,"context_lines":[{"line_number":37,"context_line":"VIM_AUTH_ATTRIBUTES \u003d (\u0027auth_url\u0027, \u0027vim_project\u0027, \u0027password\u0027, \u0027auth_cred\u0027)"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"class Vim(model_base.BASE, models_v1.HasId, models_v1.HasTenant):"},{"line_number":41,"context_line":"    type \u003d sa.Column(sa.String(64), nullable\u003dFalse)"},{"line_number":42,"context_line":"    name \u003d sa.Column(sa.String(255), nullable\u003dFalse)"},{"line_number":43,"context_line":"    description \u003d sa.Column(sa.Text, nullable\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":8,"id":"7a8ec9b2_3fd735ee","line":40,"in_reply_to":"fa7ab95a_428907ca","updated":"2016-09-15 21:39:53.000000000","message":"unique condition is handled in [1]\n\n[1] https://review.openstack.org/#/c/329759/2/tacker/nfvo/nfvo_plugin.py@60","commit_id":"b56f0d32049859c7c0dd88746c3d66ecf31b3590"}],"tacker/extensions/nfvo.py":[{"author":{"_account_id":18955,"name":"dharmendra","email":"dharmendra.kushwaha@gmail.com","username":"dharmendra"},"change_message_id":"0763519fcbb41428d50dd2f78329caed3b3fc821","unresolved":false,"context_lines":[{"line_number":44,"context_line":"                \" in tacker.conf\")"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"class VimDefaultNameNotFound(exceptions.TackerException):"},{"line_number":48,"context_line":"    message \u003d _(\"Default VIM name %(vim_name)s is invalid. Please specify a \""},{"line_number":49,"context_line":"                \"valid default VIM name in tacker.conf\")"},{"line_number":50,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"7a8ec9b2_4b2671bb","line":47,"range":{"start_line":47,"start_character":6,"end_line":47,"end_character":29},"updated":"2016-09-14 09:39:21.000000000","message":"How this is different than VimNotFoundException?\n\nIf no different handling required for both, can we merge them?","commit_id":"b56f0d32049859c7c0dd88746c3d66ecf31b3590"},{"author":{"_account_id":13485,"name":"Sripriya Seetharam","email":"sseetha@brocade.com","username":"Sripriya"},"change_message_id":"2e8209c9b6485c99d65dffd2e1e0a352bbdcadc4","unresolved":false,"context_lines":[{"line_number":44,"context_line":"                \" in tacker.conf\")"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"class VimDefaultNameNotFound(exceptions.TackerException):"},{"line_number":48,"context_line":"    message \u003d _(\"Default VIM name %(vim_name)s is invalid. Please specify a \""},{"line_number":49,"context_line":"                \"valid default VIM name in tacker.conf\")"},{"line_number":50,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"7a8ec9b2_a47fbb64","line":47,"range":{"start_line":47,"start_character":6,"end_line":47,"end_character":29},"in_reply_to":"7a8ec9b2_4b2671bb","updated":"2016-09-15 21:39:53.000000000","message":"VimNotFoundException is handling the vnf with vim id workflow. suppose user passes an invalid vim-id during vnf create, this exceptions is raise.\n\nVimDefaultNameNotFound is raised when user sets an invalid default vim name in tacker.conf as stated in the message.","commit_id":"b56f0d32049859c7c0dd88746c3d66ecf31b3590"},{"author":{"_account_id":13380,"name":"Sridhar Ramaswamy","email":"srics.r@gmail.com","username":"srics-r"},"change_message_id":"28d0d412037c67e21e929e0a12e5e1bc34305f6e","unresolved":false,"context_lines":[{"line_number":44,"context_line":"                \" in tacker.conf\")"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"class VimDefaultNameNotFound(exceptions.TackerException):"},{"line_number":48,"context_line":"    message \u003d _(\"Default VIM name %(vim_name)s is invalid. Please specify a \""},{"line_number":49,"context_line":"                \"valid default VIM name in tacker.conf\")"},{"line_number":50,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"7a8ec9b2_d1db5d7a","line":47,"range":{"start_line":47,"start_character":6,"end_line":47,"end_character":29},"in_reply_to":"7a8ec9b2_99a210ad","updated":"2016-09-18 01:07:10.000000000","message":"Either could work, but if given an the options of either same exception with two different messages or multiple exceptions with specific mesg, I\u0027d lean toward the later. Basically, I\u0027d vote to keep DefaultNameNotFound option.","commit_id":"b56f0d32049859c7c0dd88746c3d66ecf31b3590"},{"author":{"_account_id":18955,"name":"dharmendra","email":"dharmendra.kushwaha@gmail.com","username":"dharmendra"},"change_message_id":"92e8d50931d3d0f911381de765b8a76e2329ce46","unresolved":false,"context_lines":[{"line_number":44,"context_line":"                \" in tacker.conf\")"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"class VimDefaultNameNotFound(exceptions.TackerException):"},{"line_number":48,"context_line":"    message \u003d _(\"Default VIM name %(vim_name)s is invalid. Please specify a \""},{"line_number":49,"context_line":"                \"valid default VIM name in tacker.conf\")"},{"line_number":50,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"7a8ec9b2_99a210ad","line":47,"range":{"start_line":47,"start_character":6,"end_line":47,"end_character":29},"in_reply_to":"7a8ec9b2_a47fbb64","updated":"2016-09-16 10:23:09.000000000","message":"Agree, these are raised by two different points. But my point is, do we need different handling( i.e. action) at any point of time when they caught?\nif yes then it is perfectly fine. Otherwise IMO VimNotFoundException should be raised with customized message.\n\nWhat you think?","commit_id":"b56f0d32049859c7c0dd88746c3d66ecf31b3590"}],"tacker/extensions/vnfm.py":[{"author":{"_account_id":18955,"name":"dharmendra","email":"dharmendra.kushwaha@gmail.com","username":"dharmendra"},"change_message_id":"0763519fcbb41428d50dd2f78329caed3b3fc821","unresolved":false,"context_lines":[{"line_number":140,"context_line":"                \"tosca.artifacts.Deployment.Image.VM artifact type\")"},{"line_number":141,"context_line":""},{"line_number":142,"context_line":""},{"line_number":143,"context_line":"class VNFExists(exceptions.TackerException):"},{"line_number":144,"context_line":"    message \u003d _(\"The VNF with name %(name)s already exists\")"},{"line_number":145,"context_line":""},{"line_number":146,"context_line":""},{"line_number":147,"context_line":"class VNFDExists(exceptions.TackerException):"},{"line_number":148,"context_line":"    message \u003d _(\"The VNFD with name %(name)s already exists\")"},{"line_number":149,"context_line":""},{"line_number":150,"context_line":""},{"line_number":151,"context_line":"def _validate_service_type_list(data, valid_values\u003dNone):"},{"line_number":152,"context_line":"    if not isinstance(data, list):"}],"source_content_type":"text/x-python","patch_set":8,"id":"7a8ec9b2_4bee718c","line":149,"range":{"start_line":143,"start_character":0,"end_line":149,"end_character":0},"updated":"2016-09-14 09:39:21.000000000","message":"It looks these are unused Exceptions.","commit_id":"b56f0d32049859c7c0dd88746c3d66ecf31b3590"},{"author":{"_account_id":13485,"name":"Sripriya Seetharam","email":"sseetha@brocade.com","username":"Sripriya"},"change_message_id":"2e8209c9b6485c99d65dffd2e1e0a352bbdcadc4","unresolved":false,"context_lines":[{"line_number":140,"context_line":"                \"tosca.artifacts.Deployment.Image.VM artifact type\")"},{"line_number":141,"context_line":""},{"line_number":142,"context_line":""},{"line_number":143,"context_line":"class VNFExists(exceptions.TackerException):"},{"line_number":144,"context_line":"    message \u003d _(\"The VNF with name %(name)s already exists\")"},{"line_number":145,"context_line":""},{"line_number":146,"context_line":""},{"line_number":147,"context_line":"class VNFDExists(exceptions.TackerException):"},{"line_number":148,"context_line":"    message \u003d _(\"The VNFD with name %(name)s already exists\")"},{"line_number":149,"context_line":""},{"line_number":150,"context_line":""},{"line_number":151,"context_line":"def _validate_service_type_list(data, valid_values\u003dNone):"},{"line_number":152,"context_line":"    if not isinstance(data, list):"}],"source_content_type":"text/x-python","patch_set":8,"id":"7a8ec9b2_bf0fc586","line":149,"range":{"start_line":143,"start_character":0,"end_line":149,"end_character":0},"in_reply_to":"7a8ec9b2_4bee718c","updated":"2016-09-15 21:39:53.000000000","message":"yes, will remove them","commit_id":"b56f0d32049859c7c0dd88746c3d66ecf31b3590"}]}
