)]}'
{"specs/mitaka/approved/vendor-registration-data-model.rst":[{"author":{"_account_id":10234,"name":"Andrey Pavlov","email":"andrey.mp@gmail.com","username":"andrey-mp"},"change_message_id":"f8d4702241012491ed6c8e46b35e330b28230ff0","unresolved":false,"context_lines":[{"line_number":54,"context_line":"Roles will be defined in a RefStack policy file. Following are the list of"},{"line_number":55,"context_line":"the defined roles in RefStack."},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"* ADMIN: this role will have CRUD privilege."},{"line_number":58,"context_line":"* USER:  this role will only have READ privilege."},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"**Note**"},{"line_number":61,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"da6ed579_4d79d72e","line":58,"range":{"start_line":57,"start_character":0,"end_line":58,"end_character":49},"updated":"2016-01-18 09:02:27.000000000","message":"Are these roles really needed?\nmy doubt is: Why should refstack need user that has \u0027user\u0027 role in organization? For which use cases?","commit_id":"122be8eb0b312035ebe4988f34af746c4410a0c7"},{"author":{"_account_id":9312,"name":"Alexandre Levine","email":"alexandrelevine@gmail.com","username":"alevine"},"change_message_id":"2d918ea0f6ca0677eeb78ba518bc9316df64efd1","unresolved":false,"context_lines":[{"line_number":54,"context_line":"Roles will be defined in a RefStack policy file. Following are the list of"},{"line_number":55,"context_line":"the defined roles in RefStack."},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"* ADMIN: this role will have CRUD privilege."},{"line_number":58,"context_line":"* USER:  this role will only have READ privilege."},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"**Note**"},{"line_number":61,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"da6ed579_cdc067e3","line":58,"range":{"start_line":57,"start_character":0,"end_line":58,"end_character":49},"in_reply_to":"da6ed579_4d79d72e","updated":"2016-01-18 09:26:10.000000000","message":"I agree, if we follow the domain model in the Requirements doc, there is no entity Role. Same goes for the table org_user_role_relationship above.","commit_id":"122be8eb0b312035ebe4988f34af746c4410a0c7"},{"author":{"_account_id":10526,"name":"Catherine Diep","email":"cdiep@us.ibm.com","username":"cdiep"},"change_message_id":"be13229873a8ea2b539dfda90fa82aca00304c55","unresolved":false,"context_lines":[{"line_number":54,"context_line":"Roles will be defined in a RefStack policy file. Following are the list of"},{"line_number":55,"context_line":"the defined roles in RefStack."},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"* ADMIN: this role will have CRUD privilege."},{"line_number":58,"context_line":"* USER:  this role will only have READ privilege."},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"**Note**"},{"line_number":61,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"ba63e191_2b9045ec","line":58,"range":{"start_line":57,"start_character":0,"end_line":58,"end_character":49},"in_reply_to":"da6ed579_cdc067e3","updated":"2016-01-18 17:41:50.000000000","message":"As I had agreed with Alex\u0027s requirement doc, all users in the organization will be admin users for the initial implementation only.  In this case, all users will have the \"ADMIN\" role.  So,this implementation does abide to the domain model in the requirement doc.  \n\nHowever, in the future, RefStack will need to support READ only users in the organization (or user group) as indicated in the \"Vendor Users and Vendor Product Admins\" section of the requirement document.  In such case, some users will have \"USER\" role.","commit_id":"122be8eb0b312035ebe4988f34af746c4410a0c7"},{"author":{"_account_id":9312,"name":"Alexandre Levine","email":"alexandrelevine@gmail.com","username":"alevine"},"change_message_id":"2d918ea0f6ca0677eeb78ba518bc9316df64efd1","unresolved":false,"context_lines":[{"line_number":65,"context_line":"* User - a regular User who can manage his/her own objects."},{"line_number":66,"context_line":""},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"The following methods will be added:"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"* Method to add/remove a vendor."},{"line_number":71,"context_line":"* Method to add/remove a product."}],"source_content_type":"text/x-rst","patch_set":1,"id":"da6ed579_e8c75962","line":68,"updated":"2016-01-18 09:26:10.000000000","message":"Is this spec about the Data Model in the meaning of DB? If so, should it discuss methods? Otherwise wouldn\u0027t it be better to name it differently? Like, \"Vendor Registration\" or something?","commit_id":"122be8eb0b312035ebe4988f34af746c4410a0c7"},{"author":{"_account_id":10526,"name":"Catherine Diep","email":"cdiep@us.ibm.com","username":"cdiep"},"change_message_id":"be13229873a8ea2b539dfda90fa82aca00304c55","unresolved":false,"context_lines":[{"line_number":65,"context_line":"* User - a regular User who can manage his/her own objects."},{"line_number":66,"context_line":""},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"The following methods will be added:"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"* Method to add/remove a vendor."},{"line_number":71,"context_line":"* Method to add/remove a product."}],"source_content_type":"text/x-rst","patch_set":1,"id":"ba63e191_0b06a120","line":68,"in_reply_to":"da6ed579_e8c75962","updated":"2016-01-18 17:41:50.000000000","message":"Agree that we should either remove the methods or change the title of this spec.\n\nI will make update after we have a chance to discuss some more the IRC meeting today.","commit_id":"122be8eb0b312035ebe4988f34af746c4410a0c7"},{"author":{"_account_id":10234,"name":"Andrey Pavlov","email":"andrey.mp@gmail.com","username":"andrey-mp"},"change_message_id":"f8d4702241012491ed6c8e46b35e330b28230ff0","unresolved":false,"context_lines":[{"line_number":112,"context_line":"-----------------"},{"line_number":113,"context_line":"The following tables will be added to the RefStack database."},{"line_number":114,"context_line":""},{"line_number":115,"context_line":"* \"oganization\" table"},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"  +------------------------+-------------+----------+"},{"line_number":118,"context_line":"  | Column                 |   Type      |          |"}],"source_content_type":"text/x-rst","patch_set":1,"id":"da6ed579_62406a08","line":115,"range":{"start_line":115,"start_character":0,"end_line":115,"end_character":21},"updated":"2016-01-18 09:02:27.000000000","message":"oganization -\u003e organization","commit_id":"122be8eb0b312035ebe4988f34af746c4410a0c7"},{"author":{"_account_id":10234,"name":"Andrey Pavlov","email":"andrey.mp@gmail.com","username":"andrey-mp"},"change_message_id":"f8d4702241012491ed6c8e46b35e330b28230ff0","unresolved":false,"context_lines":[{"line_number":121,"context_line":"  +------------------------+-------------+----------+"},{"line_number":122,"context_line":"  | updated_at             | datetime    |          |"},{"line_number":123,"context_line":"  +------------------------+-------------+----------+"},{"line_number":124,"context_line":"  | created_by_user_id     | int(11)     |          |"},{"line_number":125,"context_line":"  +------------------------+-------------+----------+"},{"line_number":126,"context_line":"  | updated_by_user_id     | int(11)     |          |"},{"line_number":127,"context_line":"  +------------------------+-------------+----------+"}],"source_content_type":"text/x-rst","patch_set":1,"id":"da6ed579_425be654","line":124,"range":{"start_line":124,"start_character":4,"end_line":124,"end_character":22},"updated":"2016-01-18 09:02:27.000000000","message":"maybe just \u0027owner\u0027 ?","commit_id":"122be8eb0b312035ebe4988f34af746c4410a0c7"},{"author":{"_account_id":9312,"name":"Alexandre Levine","email":"alexandrelevine@gmail.com","username":"alevine"},"change_message_id":"2d918ea0f6ca0677eeb78ba518bc9316df64efd1","unresolved":false,"context_lines":[{"line_number":121,"context_line":"  +------------------------+-------------+----------+"},{"line_number":122,"context_line":"  | updated_at             | datetime    |          |"},{"line_number":123,"context_line":"  +------------------------+-------------+----------+"},{"line_number":124,"context_line":"  | created_by_user_id     | int(11)     |          |"},{"line_number":125,"context_line":"  +------------------------+-------------+----------+"},{"line_number":126,"context_line":"  | updated_by_user_id     | int(11)     |          |"},{"line_number":127,"context_line":"  +------------------------+-------------+----------+"}],"source_content_type":"text/x-rst","patch_set":1,"id":"da6ed579_4879c52e","line":124,"range":{"start_line":124,"start_character":4,"end_line":124,"end_character":22},"in_reply_to":"da6ed579_425be654","updated":"2016-01-18 09:26:10.000000000","message":"I vote for \"creator\"","commit_id":"122be8eb0b312035ebe4988f34af746c4410a0c7"},{"author":{"_account_id":10526,"name":"Catherine Diep","email":"cdiep@us.ibm.com","username":"cdiep"},"change_message_id":"be13229873a8ea2b539dfda90fa82aca00304c55","unresolved":false,"context_lines":[{"line_number":121,"context_line":"  +------------------------+-------------+----------+"},{"line_number":122,"context_line":"  | updated_at             | datetime    |          |"},{"line_number":123,"context_line":"  +------------------------+-------------+----------+"},{"line_number":124,"context_line":"  | created_by_user_id     | int(11)     |          |"},{"line_number":125,"context_line":"  +------------------------+-------------+----------+"},{"line_number":126,"context_line":"  | updated_by_user_id     | int(11)     |          |"},{"line_number":127,"context_line":"  +------------------------+-------------+----------+"}],"source_content_type":"text/x-rst","patch_set":1,"id":"ba63e191_4eafc7e3","line":124,"range":{"start_line":124,"start_character":4,"end_line":124,"end_character":22},"in_reply_to":"da6ed579_4879c52e","updated":"2016-01-18 17:41:50.000000000","message":"I think so because most likely the term owner can be referring to all the admin users in the user group, not just the single user who created the record.","commit_id":"122be8eb0b312035ebe4988f34af746c4410a0c7"},{"author":{"_account_id":10234,"name":"Andrey Pavlov","email":"andrey.mp@gmail.com","username":"andrey-mp"},"change_message_id":"f8d4702241012491ed6c8e46b35e330b28230ff0","unresolved":false,"context_lines":[{"line_number":123,"context_line":"  +------------------------+-------------+----------+"},{"line_number":124,"context_line":"  | created_by_user_id     | int(11)     |          |"},{"line_number":125,"context_line":"  +------------------------+-------------+----------+"},{"line_number":126,"context_line":"  | updated_by_user_id     | int(11)     |          |"},{"line_number":127,"context_line":"  +------------------------+-------------+----------+"},{"line_number":128,"context_line":"  | _id                    | int(11)     | PK       |"},{"line_number":129,"context_line":"  +------------------------+-------------+----------+"}],"source_content_type":"text/x-rst","patch_set":1,"id":"da6ed579_a2dc2219","line":126,"range":{"start_line":126,"start_character":4,"end_line":126,"end_character":22},"updated":"2016-01-18 09:02:27.000000000","message":"What purposes of this field?\nInformation about first user will be overwriten by second user - if history is needed then it is better to create another table just for history logging.","commit_id":"122be8eb0b312035ebe4988f34af746c4410a0c7"},{"author":{"_account_id":10526,"name":"Catherine Diep","email":"cdiep@us.ibm.com","username":"cdiep"},"change_message_id":"be13229873a8ea2b539dfda90fa82aca00304c55","unresolved":false,"context_lines":[{"line_number":123,"context_line":"  +------------------------+-------------+----------+"},{"line_number":124,"context_line":"  | created_by_user_id     | int(11)     |          |"},{"line_number":125,"context_line":"  +------------------------+-------------+----------+"},{"line_number":126,"context_line":"  | updated_by_user_id     | int(11)     |          |"},{"line_number":127,"context_line":"  +------------------------+-------------+----------+"},{"line_number":128,"context_line":"  | _id                    | int(11)     | PK       |"},{"line_number":129,"context_line":"  +------------------------+-------------+----------+"}],"source_content_type":"text/x-rst","patch_set":1,"id":"ba63e191_ce8e5727","line":126,"range":{"start_line":126,"start_character":4,"end_line":126,"end_character":22},"in_reply_to":"da6ed579_a2dc2219","updated":"2016-01-18 17:41:50.000000000","message":"Yes, the purpose is for auditability as defined in line 163 of https://review.openstack.org/#/c/226902/ . \n\nAgreed that this would only log the last event. I am open for suggestion here.","commit_id":"122be8eb0b312035ebe4988f34af746c4410a0c7"},{"author":{"_account_id":10234,"name":"Andrey Pavlov","email":"andrey.mp@gmail.com","username":"andrey-mp"},"change_message_id":"f8d4702241012491ed6c8e46b35e330b28230ff0","unresolved":false,"context_lines":[{"line_number":125,"context_line":"  +------------------------+-------------+----------+"},{"line_number":126,"context_line":"  | updated_by_user_id     | int(11)     |          |"},{"line_number":127,"context_line":"  +------------------------+-------------+----------+"},{"line_number":128,"context_line":"  | _id                    | int(11)     | PK       |"},{"line_number":129,"context_line":"  +------------------------+-------------+----------+"},{"line_number":130,"context_line":"  | name                   | varchar(64) |          |"},{"line_number":131,"context_line":"  +------------------------+-------------+----------+"}],"source_content_type":"text/x-rst","patch_set":1,"id":"da6ed579_62fdca6d","line":128,"range":{"start_line":128,"start_character":4,"end_line":128,"end_character":7},"updated":"2016-01-18 09:02:27.000000000","message":"Why not just \u0027id\u0027?","commit_id":"122be8eb0b312035ebe4988f34af746c4410a0c7"},{"author":{"_account_id":10526,"name":"Catherine Diep","email":"cdiep@us.ibm.com","username":"cdiep"},"change_message_id":"be13229873a8ea2b539dfda90fa82aca00304c55","unresolved":false,"context_lines":[{"line_number":125,"context_line":"  +------------------------+-------------+----------+"},{"line_number":126,"context_line":"  | updated_by_user_id     | int(11)     |          |"},{"line_number":127,"context_line":"  +------------------------+-------------+----------+"},{"line_number":128,"context_line":"  | _id                    | int(11)     | PK       |"},{"line_number":129,"context_line":"  +------------------------+-------------+----------+"},{"line_number":130,"context_line":"  | name                   | varchar(64) |          |"},{"line_number":131,"context_line":"  +------------------------+-------------+----------+"}],"source_content_type":"text/x-rst","patch_set":1,"id":"ba63e191_aeebe3af","line":128,"range":{"start_line":128,"start_character":4,"end_line":128,"end_character":7},"in_reply_to":"da6ed579_62fdca6d","updated":"2016-01-18 17:41:50.000000000","message":"Using _id because I do not think we will only expose the name and not id to the end users.","commit_id":"122be8eb0b312035ebe4988f34af746c4410a0c7"},{"author":{"_account_id":10234,"name":"Andrey Pavlov","email":"andrey.mp@gmail.com","username":"andrey-mp"},"change_message_id":"f8d4702241012491ed6c8e46b35e330b28230ff0","unresolved":false,"context_lines":[{"line_number":129,"context_line":"  +------------------------+-------------+----------+"},{"line_number":130,"context_line":"  | name                   | varchar(64) |          |"},{"line_number":131,"context_line":"  +------------------------+-------------+----------+"},{"line_number":132,"context_line":"  | name_upper             | varchar(64) | UNI      |"},{"line_number":133,"context_line":"  +------------------------+-------------+----------+"},{"line_number":134,"context_line":"  | description            | varchar(512)|          |"},{"line_number":135,"context_line":"  +------------------------+-------------+----------+"}],"source_content_type":"text/x-rst","patch_set":1,"id":"da6ed579_c27d96e8","line":132,"range":{"start_line":132,"start_character":4,"end_line":132,"end_character":14},"updated":"2016-01-18 09:02:27.000000000","message":"It is not good idea to store information that can be easily calculated from the other field...","commit_id":"122be8eb0b312035ebe4988f34af746c4410a0c7"},{"author":{"_account_id":10526,"name":"Catherine Diep","email":"cdiep@us.ibm.com","username":"cdiep"},"change_message_id":"be13229873a8ea2b539dfda90fa82aca00304c55","unresolved":false,"context_lines":[{"line_number":129,"context_line":"  +------------------------+-------------+----------+"},{"line_number":130,"context_line":"  | name                   | varchar(64) |          |"},{"line_number":131,"context_line":"  +------------------------+-------------+----------+"},{"line_number":132,"context_line":"  | name_upper             | varchar(64) | UNI      |"},{"line_number":133,"context_line":"  +------------------------+-------------+----------+"},{"line_number":134,"context_line":"  | description            | varchar(512)|          |"},{"line_number":135,"context_line":"  +------------------------+-------------+----------+"}],"source_content_type":"text/x-rst","patch_set":1,"id":"ba63e191_ce7897fb","line":132,"range":{"start_line":132,"start_character":4,"end_line":132,"end_character":14},"in_reply_to":"da6ed579_c27d96e8","updated":"2016-01-18 17:41:50.000000000","message":"In this case, I want to enforce the uniqueness of the name.  Since we can not control the mix of upper/user cases in a name, two names with exact spelling may not be unique.","commit_id":"122be8eb0b312035ebe4988f34af746c4410a0c7"},{"author":{"_account_id":10234,"name":"Andrey Pavlov","email":"andrey.mp@gmail.com","username":"andrey-mp"},"change_message_id":"f8d4702241012491ed6c8e46b35e330b28230ff0","unresolved":false,"context_lines":[{"line_number":131,"context_line":"  +------------------------+-------------+----------+"},{"line_number":132,"context_line":"  | name_upper             | varchar(64) | UNI      |"},{"line_number":133,"context_line":"  +------------------------+-------------+----------+"},{"line_number":134,"context_line":"  | description            | varchar(512)|          |"},{"line_number":135,"context_line":"  +------------------------+-------------+----------+"},{"line_number":136,"context_line":"  | type                   | varchar(32) |          |"},{"line_number":137,"context_line":"  +------------------------+-------------+----------+"}],"source_content_type":"text/x-rst","patch_set":1,"id":"da6ed579_62e70aad","line":134,"range":{"start_line":134,"start_character":29,"end_line":134,"end_character":36},"updated":"2016-01-18 09:02:27.000000000","message":"Maybe \u0027text\u0027? without limitations at DB level...","commit_id":"122be8eb0b312035ebe4988f34af746c4410a0c7"},{"author":{"_account_id":10526,"name":"Catherine Diep","email":"cdiep@us.ibm.com","username":"cdiep"},"change_message_id":"be13229873a8ea2b539dfda90fa82aca00304c55","unresolved":false,"context_lines":[{"line_number":131,"context_line":"  +------------------------+-------------+----------+"},{"line_number":132,"context_line":"  | name_upper             | varchar(64) | UNI      |"},{"line_number":133,"context_line":"  +------------------------+-------------+----------+"},{"line_number":134,"context_line":"  | description            | varchar(512)|          |"},{"line_number":135,"context_line":"  +------------------------+-------------+----------+"},{"line_number":136,"context_line":"  | type                   | varchar(32) |          |"},{"line_number":137,"context_line":"  +------------------------+-------------+----------+"}],"source_content_type":"text/x-rst","patch_set":1,"id":"ba63e191_ae8763d6","line":134,"range":{"start_line":134,"start_character":29,"end_line":134,"end_character":36},"in_reply_to":"da6ed579_62e70aad","updated":"2016-01-18 17:41:50.000000000","message":"sure","commit_id":"122be8eb0b312035ebe4988f34af746c4410a0c7"},{"author":{"_account_id":10234,"name":"Andrey Pavlov","email":"andrey.mp@gmail.com","username":"andrey-mp"},"change_message_id":"f8d4702241012491ed6c8e46b35e330b28230ff0","unresolved":false,"context_lines":[{"line_number":133,"context_line":"  +------------------------+-------------+----------+"},{"line_number":134,"context_line":"  | description            | varchar(512)|          |"},{"line_number":135,"context_line":"  +------------------------+-------------+----------+"},{"line_number":136,"context_line":"  | type                   | varchar(32) |          |"},{"line_number":137,"context_line":"  +------------------------+-------------+----------+"},{"line_number":138,"context_line":""},{"line_number":139,"context_line":"  Where type \u003d vendor, hidden_vendor, foundation"}],"source_content_type":"text/x-rst","patch_set":1,"id":"da6ed579_2277d2d5","line":136,"range":{"start_line":136,"start_character":29,"end_line":136,"end_character":40},"updated":"2016-01-18 09:02:27.000000000","message":"Another way is to define it as Integer and create constants(enum) in the code with descriptive names.","commit_id":"122be8eb0b312035ebe4988f34af746c4410a0c7"},{"author":{"_account_id":10526,"name":"Catherine Diep","email":"cdiep@us.ibm.com","username":"cdiep"},"change_message_id":"be13229873a8ea2b539dfda90fa82aca00304c55","unresolved":false,"context_lines":[{"line_number":133,"context_line":"  +------------------------+-------------+----------+"},{"line_number":134,"context_line":"  | description            | varchar(512)|          |"},{"line_number":135,"context_line":"  +------------------------+-------------+----------+"},{"line_number":136,"context_line":"  | type                   | varchar(32) |          |"},{"line_number":137,"context_line":"  +------------------------+-------------+----------+"},{"line_number":138,"context_line":""},{"line_number":139,"context_line":"  Where type \u003d vendor, hidden_vendor, foundation"}],"source_content_type":"text/x-rst","patch_set":1,"id":"ba63e191_6eff2b35","line":136,"range":{"start_line":136,"start_character":29,"end_line":136,"end_character":40},"in_reply_to":"da6ed579_2277d2d5","updated":"2016-01-18 17:41:50.000000000","message":"I have no problem with this.","commit_id":"122be8eb0b312035ebe4988f34af746c4410a0c7"},{"author":{"_account_id":10234,"name":"Andrey Pavlov","email":"andrey.mp@gmail.com","username":"andrey-mp"},"change_message_id":"f8d4702241012491ed6c8e46b35e330b28230ff0","unresolved":false,"context_lines":[{"line_number":135,"context_line":"  +------------------------+-------------+----------+"},{"line_number":136,"context_line":"  | type                   | varchar(32) |          |"},{"line_number":137,"context_line":"  +------------------------+-------------+----------+"},{"line_number":138,"context_line":""},{"line_number":139,"context_line":"  Where type \u003d vendor, hidden_vendor, foundation"},{"line_number":140,"context_line":""},{"line_number":141,"context_line":"* \"product\" table"}],"source_content_type":"text/x-rst","patch_set":1,"id":"da6ed579_42d8c6ef","line":138,"updated":"2016-01-18 09:02:27.000000000","message":"Other tables have \u0027deleted\u0027 and \u0027deleted_at\u0027 columns. Why this doesn\u0027t have these fields?","commit_id":"122be8eb0b312035ebe4988f34af746c4410a0c7"},{"author":{"_account_id":10526,"name":"Catherine Diep","email":"cdiep@us.ibm.com","username":"cdiep"},"change_message_id":"be13229873a8ea2b539dfda90fa82aca00304c55","unresolved":false,"context_lines":[{"line_number":135,"context_line":"  +------------------------+-------------+----------+"},{"line_number":136,"context_line":"  | type                   | varchar(32) |          |"},{"line_number":137,"context_line":"  +------------------------+-------------+----------+"},{"line_number":138,"context_line":""},{"line_number":139,"context_line":"  Where type \u003d vendor, hidden_vendor, foundation"},{"line_number":140,"context_line":""},{"line_number":141,"context_line":"* \"product\" table"}],"source_content_type":"text/x-rst","patch_set":1,"id":"ba63e191_71a06a91","line":138,"in_reply_to":"da6ed579_42d8c6ef","updated":"2016-01-18 17:41:50.000000000","message":"A deleted column only works if we plan to keep all records.  There will never be a real deletion where a record is deleted from the database.\n\nIn fact, currently existing tables in RefStack do have the deleted columns.  However, these columns are never used because so far all deletion in RefStack are hard deletion where the data are removed from the database.\n\nSince we enforced uniqueness of name in the table, a soft deletion would would means that a name would never be reused.\n\nI will add this to the IRC meeting for discussion.","commit_id":"122be8eb0b312035ebe4988f34af746c4410a0c7"},{"author":{"_account_id":10234,"name":"Andrey Pavlov","email":"andrey.mp@gmail.com","username":"andrey-mp"},"change_message_id":"f8d4702241012491ed6c8e46b35e330b28230ff0","unresolved":false,"context_lines":[{"line_number":139,"context_line":"  Where type \u003d vendor, hidden_vendor, foundation"},{"line_number":140,"context_line":""},{"line_number":141,"context_line":"* \"product\" table"},{"line_number":142,"context_line":""},{"line_number":143,"context_line":"  +------------------------+-------------+----------+"},{"line_number":144,"context_line":"  | Column                 |   Type      |          |"},{"line_number":145,"context_line":"  +\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d\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":1,"id":"da6ed579_4d10f74e","line":142,"updated":"2016-01-18 09:02:27.000000000","message":"same comments to table below...","commit_id":"122be8eb0b312035ebe4988f34af746c4410a0c7"},{"author":{"_account_id":10234,"name":"Andrey Pavlov","email":"andrey.mp@gmail.com","username":"andrey-mp"},"change_message_id":"f8d4702241012491ed6c8e46b35e330b28230ff0","unresolved":false,"context_lines":[{"line_number":164,"context_line":""},{"line_number":165,"context_line":""},{"line_number":166,"context_line":""},{"line_number":167,"context_line":"* \"organization_user_role_relationship\" table"},{"line_number":168,"context_line":""},{"line_number":169,"context_line":"  +------------------------+-------------+----------+"},{"line_number":170,"context_line":"  | Column                 |   Type      |          |"}],"source_content_type":"text/x-rst","patch_set":1,"id":"da6ed579_adb5f3d0","line":167,"range":{"start_line":167,"start_character":3,"end_line":167,"end_character":38},"updated":"2016-01-18 09:02:27.000000000","message":"I would suggest another implementation -  https://review.openstack.org/268929\n\nAnd add link to group table from organization table.","commit_id":"122be8eb0b312035ebe4988f34af746c4410a0c7"},{"author":{"_account_id":9312,"name":"Alexandre Levine","email":"alexandrelevine@gmail.com","username":"alevine"},"change_message_id":"2d918ea0f6ca0677eeb78ba518bc9316df64efd1","unresolved":false,"context_lines":[{"line_number":164,"context_line":""},{"line_number":165,"context_line":""},{"line_number":166,"context_line":""},{"line_number":167,"context_line":"* \"organization_user_role_relationship\" table"},{"line_number":168,"context_line":""},{"line_number":169,"context_line":"  +------------------------+-------------+----------+"},{"line_number":170,"context_line":"  | Column                 |   Type      |          |"}],"source_content_type":"text/x-rst","patch_set":1,"id":"da6ed579_88d57dba","line":167,"range":{"start_line":167,"start_character":3,"end_line":167,"end_character":38},"in_reply_to":"da6ed579_adb5f3d0","updated":"2016-01-18 09:26:10.000000000","message":"I agree.","commit_id":"122be8eb0b312035ebe4988f34af746c4410a0c7"},{"author":{"_account_id":10234,"name":"Andrey Pavlov","email":"andrey.mp@gmail.com","username":"andrey-mp"},"change_message_id":"f8d4702241012491ed6c8e46b35e330b28230ff0","unresolved":false,"context_lines":[{"line_number":179,"context_line":"  +------------------------+-------------+----------+"},{"line_number":180,"context_line":"  | _id                    | int(11)     | PK       |"},{"line_number":181,"context_line":"  +------------------------+-------------+----------+"},{"line_number":182,"context_line":"  | org_id                 | int(11)     |          |"},{"line_number":183,"context_line":"  +------------------------+-------------+----------+"},{"line_number":184,"context_line":"  | user_id                | int(11)     |          |"},{"line_number":185,"context_line":"  +------------------------+-------------+----------+"}],"source_content_type":"text/x-rst","patch_set":1,"id":"da6ed579_8d24afaf","line":182,"range":{"start_line":182,"start_character":4,"end_line":182,"end_character":10},"updated":"2016-01-18 09:02:27.000000000","message":"why name is different from product table?","commit_id":"122be8eb0b312035ebe4988f34af746c4410a0c7"},{"author":{"_account_id":10526,"name":"Catherine Diep","email":"cdiep@us.ibm.com","username":"cdiep"},"change_message_id":"be13229873a8ea2b539dfda90fa82aca00304c55","unresolved":false,"context_lines":[{"line_number":179,"context_line":"  +------------------------+-------------+----------+"},{"line_number":180,"context_line":"  | _id                    | int(11)     | PK       |"},{"line_number":181,"context_line":"  +------------------------+-------------+----------+"},{"line_number":182,"context_line":"  | org_id                 | int(11)     |          |"},{"line_number":183,"context_line":"  +------------------------+-------------+----------+"},{"line_number":184,"context_line":"  | user_id                | int(11)     |          |"},{"line_number":185,"context_line":"  +------------------------+-------------+----------+"}],"source_content_type":"text/x-rst","patch_set":1,"id":"ba63e191_91e63ee7","line":182,"range":{"start_line":182,"start_character":4,"end_line":182,"end_character":10},"in_reply_to":"da6ed579_8d24afaf","updated":"2016-01-18 17:41:50.000000000","message":"Oops, good catch, should use the same name.","commit_id":"122be8eb0b312035ebe4988f34af746c4410a0c7"},{"author":{"_account_id":17700,"name":"David Liu","email":"david.liu@cn.ibm.com","username":"lzbj"},"change_message_id":"33dcbf30f50916cb3cbec270ba0afaceb76633c1","unresolved":false,"context_lines":[{"line_number":36,"context_line":"  values stored in the \"type\" column. These values are pre-defined a set of"},{"line_number":37,"context_line":"  constants(enum) with descriptive names. For example: 1 \u003d foundation,"},{"line_number":38,"context_line":"  2 \u003d official_vendor, 3 \u003d private_vendor, etc.  There will be only one"},{"line_number":39,"context_line":"  organization with the type of \"foundation\" in a RefStack instant.  This"},{"line_number":40,"context_line":"  organization will be created by the RefStack admin."},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"* A table named \"product\""}],"source_content_type":"text/x-rst","patch_set":2,"id":"9a68dd71_cad7ed21","line":39,"updated":"2016-01-27 02:19:19.000000000","message":"\u0027instant\u0027 or \u0027instance\u0027, is it a typo?","commit_id":"685ffc7b2f564bbe441c365c7fb75db5dc2d8952"},{"author":{"_account_id":10234,"name":"Andrey Pavlov","email":"andrey.mp@gmail.com","username":"andrey-mp"},"change_message_id":"e8b68cc9febad1ee5869771adb58063232ba43dd","unresolved":false,"context_lines":[{"line_number":75,"context_line":"  +------------------------+-------------+----------+"},{"line_number":76,"context_line":"  | created_by_user        | varchar(128)|          |"},{"line_number":77,"context_line":"  +------------------------+-------------+----------+"},{"line_number":78,"context_line":"  | updated_by_user        | varchar(128)|          |"},{"line_number":79,"context_line":"  +------------------------+-------------+----------+"},{"line_number":80,"context_line":"  | id                     | varchar(36) | PK       |"},{"line_number":81,"context_line":"  +------------------------+-------------+----------+"}],"source_content_type":"text/x-rst","patch_set":2,"id":"9a68dd71_93709b41","line":78,"range":{"start_line":78,"start_character":4,"end_line":78,"end_character":19},"updated":"2016-01-25 19:14:01.000000000","message":"anyway - I\u0027m not agree with such audit :)","commit_id":"685ffc7b2f564bbe441c365c7fb75db5dc2d8952"},{"author":{"_account_id":10234,"name":"Andrey Pavlov","email":"andrey.mp@gmail.com","username":"andrey-mp"},"change_message_id":"5c58ef54af098517e6f302337a9e1ea1a4b0af7b","unresolved":false,"context_lines":[{"line_number":85,"context_line":"  +------------------------+-------------+----------+"},{"line_number":86,"context_line":"  | type                   | int(11)     |          |"},{"line_number":87,"context_line":"  +------------------------+-------------+----------+"},{"line_number":88,"context_line":"  | group_id               | int(11)     | FK       |"},{"line_number":89,"context_line":"  +------------------------+-------------+----------+"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"  **Note:**"}],"source_content_type":"text/x-rst","patch_set":2,"id":"9a68dd71_da40d6a7","line":88,"range":{"start_line":88,"start_character":29,"end_line":88,"end_character":32},"updated":"2016-01-22 10:34:01.000000000","message":"varchar(36)","commit_id":"685ffc7b2f564bbe441c365c7fb75db5dc2d8952"},{"author":{"_account_id":10526,"name":"Catherine Diep","email":"cdiep@us.ibm.com","username":"cdiep"},"change_message_id":"978f124355f11847e3ab8a1b073e8f19053b40a5","unresolved":false,"context_lines":[{"line_number":94,"context_line":"  organization.  For example, when a type \"private_vendor\" organization was"},{"line_number":95,"context_line":"  updated to type \"official_vednor\".  More rich auditing functions will be"},{"line_number":96,"context_line":"  implemented incrementally over time."},{"line_number":97,"context_line":""},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"* \"product\" table"},{"line_number":100,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"9a68dd71_603fcad6","line":97,"updated":"2016-01-22 06:04:31.000000000","message":"Do we allow \u0027type\u0027 update, such as from \u0027private_vendor\u0027 to \u0027official_vendor\u0027?","commit_id":"685ffc7b2f564bbe441c365c7fb75db5dc2d8952"},{"author":{"_account_id":10234,"name":"Andrey Pavlov","email":"andrey.mp@gmail.com","username":"andrey-mp"},"change_message_id":"5c58ef54af098517e6f302337a9e1ea1a4b0af7b","unresolved":false,"context_lines":[{"line_number":94,"context_line":"  organization.  For example, when a type \"private_vendor\" organization was"},{"line_number":95,"context_line":"  updated to type \"official_vednor\".  More rich auditing functions will be"},{"line_number":96,"context_line":"  implemented incrementally over time."},{"line_number":97,"context_line":""},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"* \"product\" table"},{"line_number":100,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"9a68dd71_9a781ef4","line":97,"in_reply_to":"9a68dd71_603fcad6","updated":"2016-01-22 10:34:01.000000000","message":"yes.\nuser creates vendor. type\u003dprivate\nuser registers vendor with foundation. type\u003dpending\nfoundation approves vendor. type\u003dofficial","commit_id":"685ffc7b2f564bbe441c365c7fb75db5dc2d8952"},{"author":{"_account_id":10526,"name":"Catherine Diep","email":"cdiep@us.ibm.com","username":"cdiep"},"change_message_id":"20922a85c54e54f6dedafe21a3f9f31641b53e3f","unresolved":false,"context_lines":[{"line_number":94,"context_line":"  organization.  For example, when a type \"private_vendor\" organization was"},{"line_number":95,"context_line":"  updated to type \"official_vednor\".  More rich auditing functions will be"},{"line_number":96,"context_line":"  implemented incrementally over time."},{"line_number":97,"context_line":""},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"* \"product\" table"},{"line_number":100,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"9a68dd71_c139afa5","line":97,"in_reply_to":"9a68dd71_9a781ef4","updated":"2016-01-22 22:31:48.000000000","message":"Alright.  If we allow updating on the record, we do need the updated_by_user column.","commit_id":"685ffc7b2f564bbe441c365c7fb75db5dc2d8952"},{"author":{"_account_id":10234,"name":"Andrey Pavlov","email":"andrey.mp@gmail.com","username":"andrey-mp"},"change_message_id":"5c58ef54af098517e6f302337a9e1ea1a4b0af7b","unresolved":false,"context_lines":[{"line_number":96,"context_line":"  implemented incrementally over time."},{"line_number":97,"context_line":""},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"* \"product\" table"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"  +------------------------+-------------+----------+"},{"line_number":102,"context_line":"  | Column                 |   Type      |          |"}],"source_content_type":"text/x-rst","patch_set":2,"id":"9a68dd71_951eb161","line":99,"range":{"start_line":99,"start_character":3,"end_line":99,"end_character":10},"updated":"2016-01-22 10:34:01.000000000","message":"also we need \u0027public\u0027 field in this table.\nwe will query for this field in some cases.","commit_id":"685ffc7b2f564bbe441c365c7fb75db5dc2d8952"},{"author":{"_account_id":10234,"name":"Andrey Pavlov","email":"andrey.mp@gmail.com","username":"andrey-mp"},"change_message_id":"81596403e715647fddc3ff6a8a4d27425dada526","unresolved":false,"context_lines":[{"line_number":96,"context_line":"  implemented incrementally over time."},{"line_number":97,"context_line":""},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"* \"product\" table"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"  +------------------------+-------------+----------+"},{"line_number":102,"context_line":"  | Column                 |   Type      |          |"}],"source_content_type":"text/x-rst","patch_set":2,"id":"9a68dd71_2bd97822","line":99,"range":{"start_line":99,"start_character":3,"end_line":99,"end_character":10},"in_reply_to":"9a68dd71_21ff6bab","updated":"2016-01-23 09:32:16.000000000","message":"case 18:\nUser registers his/her Cloud\nNew private cloud is created with new CloudID if no such Cloud exists\n\ncase 19:\nUser registers his/her Software Product\nNew private Software Product is created with the User as the Owner and Creator","commit_id":"685ffc7b2f564bbe441c365c7fb75db5dc2d8952"},{"author":{"_account_id":10234,"name":"Andrey Pavlov","email":"andrey.mp@gmail.com","username":"andrey-mp"},"change_message_id":"c4d8229cfe2b0ef7c355abe0b504e50da77619d4","unresolved":false,"context_lines":[{"line_number":96,"context_line":"  implemented incrementally over time."},{"line_number":97,"context_line":""},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"* \"product\" table"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"  +------------------------+-------------+----------+"},{"line_number":102,"context_line":"  | Column                 |   Type      |          |"}],"source_content_type":"text/x-rst","patch_set":2,"id":"9a68dd71_0b32745f","line":99,"range":{"start_line":99,"start_character":3,"end_line":99,"end_character":10},"in_reply_to":"9a68dd71_2bd97822","updated":"2016-01-23 09:34:30.000000000","message":"case 23:\nCloud Operator makes his/her Cloud public\nHe/she is suggested to make results for this Cloud public\n\ncase 30:\nSoftware Vendor makes his/her Software Product public","commit_id":"685ffc7b2f564bbe441c365c7fb75db5dc2d8952"},{"author":{"_account_id":10526,"name":"Catherine Diep","email":"cdiep@us.ibm.com","username":"cdiep"},"change_message_id":"20922a85c54e54f6dedafe21a3f9f31641b53e3f","unresolved":false,"context_lines":[{"line_number":96,"context_line":"  implemented incrementally over time."},{"line_number":97,"context_line":""},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"* \"product\" table"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"  +------------------------+-------------+----------+"},{"line_number":102,"context_line":"  | Column                 |   Type      |          |"}],"source_content_type":"text/x-rst","patch_set":2,"id":"9a68dd71_21ff6bab","line":99,"range":{"start_line":99,"start_character":3,"end_line":99,"end_character":10},"in_reply_to":"9a68dd71_951eb161","updated":"2016-01-22 22:31:48.000000000","message":"Hi Adnrey,  could you describe the use cases that we need to query \"public\"?  We can discuss this here or in the next Monday IRC meeting.","commit_id":"685ffc7b2f564bbe441c365c7fb75db5dc2d8952"},{"author":{"_account_id":10526,"name":"Catherine Diep","email":"cdiep@us.ibm.com","username":"cdiep"},"change_message_id":"a07894c64fca223476e1069c4ff6b79545efe555","unresolved":false,"context_lines":[{"line_number":120,"context_line":"  | description            | text        |          |"},{"line_number":121,"context_line":"  +------------------------+-------------+----------+"},{"line_number":122,"context_line":"  | organization_id        | int(11)     | FK       |"},{"line_number":123,"context_line":"  +------------------------+-------------+----------+"},{"line_number":124,"context_line":"  | properties             | text        |          |"},{"line_number":125,"context_line":"  +------------------------+-------------+----------+"},{"line_number":126,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"9a68dd71_794193a8","line":123,"range":{"start_line":123,"start_character":2,"end_line":123,"end_character":53},"updated":"2016-01-22 23:01:41.000000000","message":"varchar(36)","commit_id":"685ffc7b2f564bbe441c365c7fb75db5dc2d8952"},{"author":{"_account_id":10526,"name":"Catherine Diep","email":"cdiep@us.ibm.com","username":"cdiep"},"change_message_id":"978f124355f11847e3ab8a1b073e8f19053b40a5","unresolved":false,"context_lines":[{"line_number":123,"context_line":"  +------------------------+-------------+----------+"},{"line_number":124,"context_line":"  | properties             | text        |          |"},{"line_number":125,"context_line":"  +------------------------+-------------+----------+"},{"line_number":126,"context_line":""},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"REST API impact"},{"line_number":129,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":2,"id":"9a68dd71_4045e66d","line":126,"updated":"2016-01-22 06:04:31.000000000","message":"do we need a field to store the cloud URL?  Or should it be fetched from the content of the properties ?","commit_id":"685ffc7b2f564bbe441c365c7fb75db5dc2d8952"},{"author":{"_account_id":10234,"name":"Andrey Pavlov","email":"andrey.mp@gmail.com","username":"andrey-mp"},"change_message_id":"5c58ef54af098517e6f302337a9e1ea1a4b0af7b","unresolved":false,"context_lines":[{"line_number":123,"context_line":"  +------------------------+-------------+----------+"},{"line_number":124,"context_line":"  | properties             | text        |          |"},{"line_number":125,"context_line":"  +------------------------+-------------+----------+"},{"line_number":126,"context_line":""},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"REST API impact"},{"line_number":129,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":2,"id":"9a68dd71_7a99aa1e","line":126,"in_reply_to":"9a68dd71_4045e66d","updated":"2016-01-22 10:34:01.000000000","message":"I thought that we need field for storing cloud_id/software_id that contains url of cloud or identifier of software.","commit_id":"685ffc7b2f564bbe441c365c7fb75db5dc2d8952"},{"author":{"_account_id":10234,"name":"Andrey Pavlov","email":"andrey.mp@gmail.com","username":"andrey-mp"},"change_message_id":"a7cff53679c1d0fef9fd2d85150222fe8bb9b817","unresolved":false,"context_lines":[{"line_number":60,"context_line":""},{"line_number":61,"context_line":"Auditability is not included in the current implementation. RefStack should"},{"line_number":62,"context_line":"require at least some logging/auditing capability. While RefStack can add richer"},{"line_number":63,"context_line":"auditability features overtime incrementally, at the minimum an updated_by_user"},{"line_number":64,"context_line":"column should be added to the tables to log the last update activity made on an"},{"line_number":65,"context_line":"organization or product entity."},{"line_number":66,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"9a68dd71_0d543a52","line":63,"range":{"start_line":63,"start_character":64,"end_line":63,"end_character":79},"updated":"2016-01-27 06:16:06.000000000","message":"tables don\u0027t containt such column...","commit_id":"c634de59ecd56b97fcc5207a3fb78cb0b901d7b9"},{"author":{"_account_id":9626,"name":"Paul Van Eck","email":"pvaneck@us.ibm.com","username":"pvaneck"},"change_message_id":"1927b4638d8e2bce365ce62da98796429a25e19e","unresolved":false,"context_lines":[{"line_number":60,"context_line":""},{"line_number":61,"context_line":"Auditability is not included in the current implementation. RefStack should"},{"line_number":62,"context_line":"require at least some logging/auditing capability. While RefStack can add richer"},{"line_number":63,"context_line":"auditability features overtime incrementally, at the minimum an updated_by_user"},{"line_number":64,"context_line":"column should be added to the tables to log the last update activity made on an"},{"line_number":65,"context_line":"organization or product entity."},{"line_number":66,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"7a5de9d1_ed13fd5a","line":63,"range":{"start_line":63,"start_character":64,"end_line":63,"end_character":79},"in_reply_to":"7a5de9d1_055c3324","updated":"2016-01-27 19:18:13.000000000","message":"Can keep it out here. Will need to work on an auditing implementation in the near future to handle all this.","commit_id":"c634de59ecd56b97fcc5207a3fb78cb0b901d7b9"},{"author":{"_account_id":9377,"name":"Sergey Slipushenko","email":"slipushenko@gmail.com","username":"sslypushenko"},"change_message_id":"336059b7d52f7b184130c1c02f41dfe6b8cb1fe0","unresolved":false,"context_lines":[{"line_number":60,"context_line":""},{"line_number":61,"context_line":"Auditability is not included in the current implementation. RefStack should"},{"line_number":62,"context_line":"require at least some logging/auditing capability. While RefStack can add richer"},{"line_number":63,"context_line":"auditability features overtime incrementally, at the minimum an updated_by_user"},{"line_number":64,"context_line":"column should be added to the tables to log the last update activity made on an"},{"line_number":65,"context_line":"organization or product entity."},{"line_number":66,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"7a5de9d1_055c3324","line":63,"range":{"start_line":63,"start_character":64,"end_line":63,"end_character":79},"in_reply_to":"7a5de9d1_d47493d0","updated":"2016-01-27 18:18:05.000000000","message":"+1 for get rid of updated_by_user.","commit_id":"c634de59ecd56b97fcc5207a3fb78cb0b901d7b9"},{"author":{"_account_id":10526,"name":"Catherine Diep","email":"cdiep@us.ibm.com","username":"cdiep"},"change_message_id":"8ec5a7d2f6130e1e25d723d1c7745ccfa28cd4cd","unresolved":false,"context_lines":[{"line_number":60,"context_line":""},{"line_number":61,"context_line":"Auditability is not included in the current implementation. RefStack should"},{"line_number":62,"context_line":"require at least some logging/auditing capability. While RefStack can add richer"},{"line_number":63,"context_line":"auditability features overtime incrementally, at the minimum an updated_by_user"},{"line_number":64,"context_line":"column should be added to the tables to log the last update activity made on an"},{"line_number":65,"context_line":"organization or product entity."},{"line_number":66,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"7a5de9d1_d47493d0","line":63,"range":{"start_line":63,"start_character":64,"end_line":63,"end_character":79},"in_reply_to":"9a68dd71_0d543a52","updated":"2016-01-27 17:32:45.000000000","message":"Andrey,\nYea, based on Alex and my long conversation on http://eavesdrop.openstack.org/irclogs/%23refstack/%23refstack.2016-01-26.log.html and your comment on line 78 https://review.openstack.org/#/c/268922/2/specs/mitaka/approved/vendor-registration-data-model.rst .  I take that we do not want to include the the updated_by_user.\n\nLet\u0027s get Sergey and Paul\u0027s comment on this.","commit_id":"c634de59ecd56b97fcc5207a3fb78cb0b901d7b9"},{"author":{"_account_id":10234,"name":"Andrey Pavlov","email":"andrey.mp@gmail.com","username":"andrey-mp"},"change_message_id":"ec1f5a12b46f41f9f180d373faa71ee5dd2754bb","unresolved":false,"context_lines":[{"line_number":112,"context_line":"  +------------------------+-------------+----------+"},{"line_number":113,"context_line":"  | created_by_user        | varchar(128)|          |"},{"line_number":114,"context_line":"  +------------------------+-------------+----------+"},{"line_number":115,"context_line":"  | _id                    | int(11)     | PK       |"},{"line_number":116,"context_line":"  +------------------------+-------------+----------+"},{"line_number":117,"context_line":"  | name                   | varchar(80) |          |"},{"line_number":118,"context_line":"  +------------------------+-------------+----------+"}],"source_content_type":"text/x-rst","patch_set":3,"id":"7a5de9d1_ac71a7e2","line":115,"range":{"start_line":115,"start_character":4,"end_line":115,"end_character":7},"updated":"2016-01-27 10:24:46.000000000","message":"maybe it should be \u0027id\u0027 and GUID?\n\n\u0027product_id\u0027 is not unique - and we can\u0027t address products by it. so we should expose \u0027id\u0027 from REST API to give it back for all operations with products.\nbut you sayd me that in this case you make \u0027id\u0027 with type GUID in the table.","commit_id":"c634de59ecd56b97fcc5207a3fb78cb0b901d7b9"},{"author":{"_account_id":9377,"name":"Sergey Slipushenko","email":"slipushenko@gmail.com","username":"sslypushenko"},"change_message_id":"336059b7d52f7b184130c1c02f41dfe6b8cb1fe0","unresolved":false,"context_lines":[{"line_number":112,"context_line":"  +------------------------+-------------+----------+"},{"line_number":113,"context_line":"  | created_by_user        | varchar(128)|          |"},{"line_number":114,"context_line":"  +------------------------+-------------+----------+"},{"line_number":115,"context_line":"  | _id                    | int(11)     | PK       |"},{"line_number":116,"context_line":"  +------------------------+-------------+----------+"},{"line_number":117,"context_line":"  | name                   | varchar(80) |          |"},{"line_number":118,"context_line":"  +------------------------+-------------+----------+"}],"source_content_type":"text/x-rst","patch_set":3,"id":"7a5de9d1_e55797c8","line":115,"range":{"start_line":115,"start_character":4,"end_line":115,"end_character":7},"in_reply_to":"7a5de9d1_14178b52","updated":"2016-01-27 18:18:05.000000000","message":"_id should be kept as is for consistency.\nproduct_id should have smaller length (256 or even 128 will be enough for sure). If it would be to long it may cause issues with creating unique constraint on it.","commit_id":"c634de59ecd56b97fcc5207a3fb78cb0b901d7b9"},{"author":{"_account_id":10234,"name":"Andrey Pavlov","email":"andrey.mp@gmail.com","username":"andrey-mp"},"change_message_id":"2146599da75499e9cf664757af3f0e8436788919","unresolved":false,"context_lines":[{"line_number":112,"context_line":"  +------------------------+-------------+----------+"},{"line_number":113,"context_line":"  | created_by_user        | varchar(128)|          |"},{"line_number":114,"context_line":"  +------------------------+-------------+----------+"},{"line_number":115,"context_line":"  | _id                    | int(11)     | PK       |"},{"line_number":116,"context_line":"  +------------------------+-------------+----------+"},{"line_number":117,"context_line":"  | name                   | varchar(80) |          |"},{"line_number":118,"context_line":"  +------------------------+-------------+----------+"}],"source_content_type":"text/x-rst","patch_set":3,"id":"7a5de9d1_402bf982","line":115,"range":{"start_line":115,"start_character":4,"end_line":115,"end_character":7},"in_reply_to":"7a5de9d1_14178b52","updated":"2016-01-27 18:36:30.000000000","message":"md5 hash is a 32 hex-char lenght","commit_id":"c634de59ecd56b97fcc5207a3fb78cb0b901d7b9"},{"author":{"_account_id":9626,"name":"Paul Van Eck","email":"pvaneck@us.ibm.com","username":"pvaneck"},"change_message_id":"1927b4638d8e2bce365ce62da98796429a25e19e","unresolved":false,"context_lines":[{"line_number":112,"context_line":"  +------------------------+-------------+----------+"},{"line_number":113,"context_line":"  | created_by_user        | varchar(128)|          |"},{"line_number":114,"context_line":"  +------------------------+-------------+----------+"},{"line_number":115,"context_line":"  | _id                    | int(11)     | PK       |"},{"line_number":116,"context_line":"  +------------------------+-------------+----------+"},{"line_number":117,"context_line":"  | name                   | varchar(80) |          |"},{"line_number":118,"context_line":"  +------------------------+-------------+----------+"}],"source_content_type":"text/x-rst","patch_set":3,"id":"7a5de9d1_4d5c9125","line":115,"range":{"start_line":115,"start_character":4,"end_line":115,"end_character":7},"in_reply_to":"7a5de9d1_402bf982","updated":"2016-01-27 19:18:13.000000000","message":"Since it seems this field can hold both a UUID or a hash (MD5 I\u0027m assuming) of the endpoint, product_id can be a unique varchar(36) field","commit_id":"c634de59ecd56b97fcc5207a3fb78cb0b901d7b9"},{"author":{"_account_id":10234,"name":"Andrey Pavlov","email":"andrey.mp@gmail.com","username":"andrey-mp"},"change_message_id":"87db41037e52d43bf44f5d04f617ad1f6f9685f6","unresolved":false,"context_lines":[{"line_number":112,"context_line":"  +------------------------+-------------+----------+"},{"line_number":113,"context_line":"  | created_by_user        | varchar(128)|          |"},{"line_number":114,"context_line":"  +------------------------+-------------+----------+"},{"line_number":115,"context_line":"  | _id                    | int(11)     | PK       |"},{"line_number":116,"context_line":"  +------------------------+-------------+----------+"},{"line_number":117,"context_line":"  | name                   | varchar(80) |          |"},{"line_number":118,"context_line":"  +------------------------+-------------+----------+"}],"source_content_type":"text/x-rst","patch_set":3,"id":"7a5de9d1_d5bb4674","line":115,"range":{"start_line":115,"start_character":4,"end_line":115,"end_character":7},"in_reply_to":"7a5de9d1_9adc1d48","updated":"2016-01-27 11:17:47.000000000","message":"or let is left as is.\nand I suppose to make product_id 36 long for storing GUIDs or hashes(for non-GUID identifier) of various product.\nand in this case we can set product_id as unique at DB level.","commit_id":"c634de59ecd56b97fcc5207a3fb78cb0b901d7b9"},{"author":{"_account_id":10234,"name":"Andrey Pavlov","email":"andrey.mp@gmail.com","username":"andrey-mp"},"change_message_id":"05365261b997a34e437e1dde214c4a9765fbbd02","unresolved":false,"context_lines":[{"line_number":112,"context_line":"  +------------------------+-------------+----------+"},{"line_number":113,"context_line":"  | created_by_user        | varchar(128)|          |"},{"line_number":114,"context_line":"  +------------------------+-------------+----------+"},{"line_number":115,"context_line":"  | _id                    | int(11)     | PK       |"},{"line_number":116,"context_line":"  +------------------------+-------------+----------+"},{"line_number":117,"context_line":"  | name                   | varchar(80) |          |"},{"line_number":118,"context_line":"  +------------------------+-------------+----------+"}],"source_content_type":"text/x-rst","patch_set":3,"id":"7a5de9d1_9adc1d48","line":115,"range":{"start_line":115,"start_character":4,"end_line":115,"end_character":7},"in_reply_to":"7a5de9d1_ac71a7e2","updated":"2016-01-27 10:50:33.000000000","message":"or maybe I misunderstood in product_id uniqueness","commit_id":"c634de59ecd56b97fcc5207a3fb78cb0b901d7b9"},{"author":{"_account_id":10526,"name":"Catherine Diep","email":"cdiep@us.ibm.com","username":"cdiep"},"change_message_id":"8ec5a7d2f6130e1e25d723d1c7745ccfa28cd4cd","unresolved":false,"context_lines":[{"line_number":112,"context_line":"  +------------------------+-------------+----------+"},{"line_number":113,"context_line":"  | created_by_user        | varchar(128)|          |"},{"line_number":114,"context_line":"  +------------------------+-------------+----------+"},{"line_number":115,"context_line":"  | _id                    | int(11)     | PK       |"},{"line_number":116,"context_line":"  +------------------------+-------------+----------+"},{"line_number":117,"context_line":"  | name                   | varchar(80) |          |"},{"line_number":118,"context_line":"  +------------------------+-------------+----------+"}],"source_content_type":"text/x-rst","patch_set":3,"id":"7a5de9d1_14178b52","line":115,"range":{"start_line":115,"start_character":4,"end_line":115,"end_character":7},"in_reply_to":"7a5de9d1_d5bb4674","updated":"2016-01-27 17:32:45.000000000","message":"Based on the conversation on http://eavesdrop.openstack.org/irclogs/%23refstack/%23refstack.2016-01-26.log.html, the product_id field can hold an UUID (varchar 36) for software product.  But for public_cloud, product_id will be created using cloud URL.  Do we know that hash value;s length is 36? \n\nI agree that product_id should be set as UNI at the DB level.","commit_id":"c634de59ecd56b97fcc5207a3fb78cb0b901d7b9"},{"author":{"_account_id":9626,"name":"Paul Van Eck","email":"pvaneck@us.ibm.com","username":"pvaneck"},"change_message_id":"1766707cbf5f45eacbc57e65cfc6af8b2cc8d705","unresolved":false,"context_lines":[{"line_number":118,"context_line":"  +------------------------+-------------+----------+"},{"line_number":119,"context_line":"  | description            | text        |          |"},{"line_number":120,"context_line":"  +------------------------+-------------+----------+"},{"line_number":121,"context_line":"  | product_id             | varchar(36 )| UNI      |"},{"line_number":122,"context_line":"  +------------------------+-------------+----------+"},{"line_number":123,"context_line":"  | type                   | int(11)     |          |"},{"line_number":124,"context_line":"  +------------------------+-------------+----------+"}],"source_content_type":"text/x-rst","patch_set":4,"id":"7a5de9d1_b8bc576d","line":121,"range":{"start_line":121,"start_character":43,"end_line":121,"end_character":46},"updated":"2016-01-28 05:59:07.000000000","message":"Actually, maybe this shouldn\u0027t be unique?\nJust wondering how it would work when two people trying to test some public cloud with the same endpoint would go about registering the product and associating their results to that product. The endpoint hash would be the same. Allowing duplicate product_ids could facilitate this, then we\u0027d maybe just change _id int(11) to id varchar(36) then use a uuid there as a way of uniquely identifying tests (like what Andrey was initially commenting about in the previous patch set). \n\nThen, in this case, product_id can be used to identify what products belong to the same cloud.\n\nJust trying to wrap my head around the process. If we only allow actual approved vendors to create products, then I suppose this point is moot.","commit_id":"fb4026911fca61616db6759f99d3fe7283dd873c"},{"author":{"_account_id":10526,"name":"Catherine Diep","email":"cdiep@us.ibm.com","username":"cdiep"},"change_message_id":"1c920b833b1864711931df367583f3e5aef1aa90","unresolved":false,"context_lines":[{"line_number":118,"context_line":"  +------------------------+-------------+----------+"},{"line_number":119,"context_line":"  | description            | text        |          |"},{"line_number":120,"context_line":"  +------------------------+-------------+----------+"},{"line_number":121,"context_line":"  | product_id             | varchar(36 )| UNI      |"},{"line_number":122,"context_line":"  +------------------------+-------------+----------+"},{"line_number":123,"context_line":"  | type                   | int(11)     |          |"},{"line_number":124,"context_line":"  +------------------------+-------------+----------+"}],"source_content_type":"text/x-rst","patch_set":4,"id":"7a5de9d1_d2cb001d","line":121,"range":{"start_line":121,"start_character":43,"end_line":121,"end_character":46},"in_reply_to":"7a5de9d1_6ca5bd02","updated":"2016-01-28 20:41:26.000000000","message":"I agree with Paul that with the current design, we can not enforce the product_id uniqueness by using cloud URL.\n\nWe have to support the use case where more than one person can register products that are associated with the same endpoint regardless of whether the user is the first one to do so or not.  That is we allow more than one user to evaluate, test and associate their results to their own products registered to any OpenStack public cloud.\n\nI suggest to change the _id(int11) to id(varchar36) and use it for unique ID.  The product_id field can be used as additional information to identify products with the same endpoint, and this field will not be unique.","commit_id":"fb4026911fca61616db6759f99d3fe7283dd873c"},{"author":{"_account_id":9312,"name":"Alexandre Levine","email":"alexandrelevine@gmail.com","username":"alevine"},"change_message_id":"b07f4254ec270bf41a4e11147799055384e6a6d0","unresolved":false,"context_lines":[{"line_number":118,"context_line":"  +------------------------+-------------+----------+"},{"line_number":119,"context_line":"  | description            | text        |          |"},{"line_number":120,"context_line":"  +------------------------+-------------+----------+"},{"line_number":121,"context_line":"  | product_id             | varchar(36 )| UNI      |"},{"line_number":122,"context_line":"  +------------------------+-------------+----------+"},{"line_number":123,"context_line":"  | type                   | int(11)     |          |"},{"line_number":124,"context_line":"  +------------------------+-------------+----------+"}],"source_content_type":"text/x-rst","patch_set":4,"id":"7a5de9d1_6ca5bd02","line":121,"range":{"start_line":121,"start_character":43,"end_line":121,"end_character":46},"in_reply_to":"7a5de9d1_b8bc576d","updated":"2016-01-28 07:24:39.000000000","message":"Yes, I guess you\u0027ve found a gap in the use-cases :) Great point.\nI suggest extending use-case 21, allowing approved vendors to take over not only anonymous but also private clouds of some regular users.\nAs such, a regular user can create a new Cloud (Product - Cloud is Product in current model) if he is the first to do it. Second regular user won\u0027t be able to create this particular Product, because it already exists.","commit_id":"fb4026911fca61616db6759f99d3fe7283dd873c"},{"author":{"_account_id":9312,"name":"Alexandre Levine","email":"alexandrelevine@gmail.com","username":"alevine"},"change_message_id":"482e995b700f93d82ad07a59bda1ae8fdeb7e244","unresolved":false,"context_lines":[{"line_number":118,"context_line":"  +------------------------+-------------+----------+"},{"line_number":119,"context_line":"  | description            | text        |          |"},{"line_number":120,"context_line":"  +------------------------+-------------+----------+"},{"line_number":121,"context_line":"  | product_id             | varchar(36 )| UNI      |"},{"line_number":122,"context_line":"  +------------------------+-------------+----------+"},{"line_number":123,"context_line":"  | type                   | int(11)     |          |"},{"line_number":124,"context_line":"  +------------------------+-------------+----------+"}],"source_content_type":"text/x-rst","patch_set":4,"id":"7a5de9d1_6c5a442c","line":121,"range":{"start_line":121,"start_character":43,"end_line":121,"end_character":46},"in_reply_to":"7a5de9d1_d2cb001d","updated":"2016-01-29 15:17:42.000000000","message":"After some thought I agree with it.\nSo uuid will be  unique in DB and product_id will be unique per physical Cloud instance, as we discussed. Meaning that it\u0027ll use the keystone ID and will be different for, say, two versions of devstack installed on the same ip. However in the DB product_id might be encountered a number of times and only one of such products can be officially published by an official vendor.","commit_id":"fb4026911fca61616db6759f99d3fe7283dd873c"},{"author":{"_account_id":17700,"name":"David Liu","email":"david.liu@cn.ibm.com","username":"lzbj"},"change_message_id":"bbf80c06ba749c893dbbce9c5645c1fd7f955485","unresolved":false,"context_lines":[{"line_number":146,"context_line":"REST API impact"},{"line_number":147,"context_line":"---------------"},{"line_number":148,"context_line":""},{"line_number":149,"context_line":"None at the database level."},{"line_number":150,"context_line":""},{"line_number":151,"context_line":""},{"line_number":152,"context_line":"Security impact"}],"source_content_type":"text/x-rst","patch_set":4,"id":"7a5de9d1_7b8d7c30","line":149,"updated":"2016-01-28 02:30:15.000000000","message":"Seems patch https://review.openstack.org/#/c/272188/ is working on some UI and REST API related to these tables, no?","commit_id":"fb4026911fca61616db6759f99d3fe7283dd873c"},{"author":{"_account_id":10526,"name":"Catherine Diep","email":"cdiep@us.ibm.com","username":"cdiep"},"change_message_id":"1c920b833b1864711931df367583f3e5aef1aa90","unresolved":false,"context_lines":[{"line_number":146,"context_line":"REST API impact"},{"line_number":147,"context_line":"---------------"},{"line_number":148,"context_line":""},{"line_number":149,"context_line":"None at the database level."},{"line_number":150,"context_line":""},{"line_number":151,"context_line":""},{"line_number":152,"context_line":"Security impact"}],"source_content_type":"text/x-rst","patch_set":4,"id":"7a5de9d1_389835c0","line":149,"in_reply_to":"7a5de9d1_7b8d7c30","updated":"2016-01-28 20:41:26.000000000","message":"This spec is only for database table design.  An the patch to implement this spec is https://review.openstack.org/#/c/269066/  .\n\nA separated spec is needed for the REST API implementation.\n\nI want to separate the two so that we can implement this process incrementally.","commit_id":"fb4026911fca61616db6759f99d3fe7283dd873c"}]}
