)]}'
{"specs/newton/approved/product-version-datamodel-api.rst":[{"author":{"_account_id":10234,"name":"Andrey Pavlov","email":"andrey.mp@gmail.com","username":"andrey-mp"},"change_message_id":"11793e8c03f640aebeda4ebb02473f3f32f09cb8","unresolved":false,"context_lines":[{"line_number":1,"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"},{"line_number":2,"context_line":"Product Version Data Model and API"},{"line_number":3,"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"},{"line_number":4,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"9ad45d7e_18f6d6f8","line":1,"updated":"2016-08-11 09:51:33.000000000","message":"in the document I see definition \u0027admin of the verndor\u0027 or \u0027admin of the product\u0027.\nBut right now RefStack doens\u0027t have admin/user privileges.\nall users of the vendor are admins of the vendor and it products.","commit_id":"f8095703c19c5c49c5ba951baffb51b6a81e0dcd"},{"author":{"_account_id":10526,"name":"Catherine Diep","email":"cdiep@us.ibm.com","username":"cdiep"},"change_message_id":"7eeed15a37da3406c0cd1f03556ac597660efa08","unresolved":false,"context_lines":[{"line_number":1,"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"},{"line_number":2,"context_line":"Product Version Data Model and API"},{"line_number":3,"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"},{"line_number":4,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"9ad45d7e_5dc02450","line":1,"in_reply_to":"9ad45d7e_18f6d6f8","updated":"2016-08-11 19:47:47.000000000","message":"Yes, currently RefStack does not have user roles defined (which I really think are needed).  As you pointed out, all users in a user group would be admins.  I can make update to match what RefStack is implemented today.","commit_id":"f8095703c19c5c49c5ba951baffb51b6a81e0dcd"},{"author":{"_account_id":10234,"name":"Andrey Pavlov","email":"andrey.mp@gmail.com","username":"andrey-mp"},"change_message_id":"11793e8c03f640aebeda4ebb02473f3f32f09cb8","unresolved":false,"context_lines":[{"line_number":2,"context_line":"Product Version Data Model and API"},{"line_number":3,"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"},{"line_number":4,"context_line":""},{"line_number":5,"context_line":"Launchpad blueprint: https://blueprints.launchpad.net/refstack/+spec/marketplace-product-model"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Requirement working document: https://goo.gl/bvo4FG"},{"line_number":8,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"9ad45d7e_62c92559","line":5,"range":{"start_line":5,"start_character":21,"end_line":5,"end_character":94},"updated":"2016-08-11 09:51:33.000000000","message":"Looks like that I can\u0027t comment blueprint.\nBut it\u0027s more robust to specify \u0027any\u0027 program in point 4 instead of specific.","commit_id":"f8095703c19c5c49c5ba951baffb51b6a81e0dcd"},{"author":{"_account_id":10526,"name":"Catherine Diep","email":"cdiep@us.ibm.com","username":"cdiep"},"change_message_id":"b7c5ecd7261a1d39c22e4d56149f0121d171487a","unresolved":false,"context_lines":[{"line_number":2,"context_line":"Product Version Data Model and API"},{"line_number":3,"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"},{"line_number":4,"context_line":""},{"line_number":5,"context_line":"Launchpad blueprint: https://blueprints.launchpad.net/refstack/+spec/marketplace-product-model"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Requirement working document: https://goo.gl/bvo4FG"},{"line_number":8,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"9ad45d7e_413f88b3","line":5,"range":{"start_line":5,"start_character":21,"end_line":5,"end_character":94},"in_reply_to":"9ad45d7e_043acb98","updated":"2016-08-12 02:37:27.000000000","message":"\"OpenStack Powered\" program here is a term referring to the \"OpenStack Powered\" initiative or a set of activities needed to perform to obtain the Powered Logo.","commit_id":"f8095703c19c5c49c5ba951baffb51b6a81e0dcd"},{"author":{"_account_id":10234,"name":"Andrey Pavlov","email":"andrey.mp@gmail.com","username":"andrey-mp"},"change_message_id":"5b6499fce1d9f46870689c729fd79411780d6d62","unresolved":false,"context_lines":[{"line_number":2,"context_line":"Product Version Data Model and API"},{"line_number":3,"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"},{"line_number":4,"context_line":""},{"line_number":5,"context_line":"Launchpad blueprint: https://blueprints.launchpad.net/refstack/+spec/marketplace-product-model"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Requirement working document: https://goo.gl/bvo4FG"},{"line_number":8,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"9ad45d7e_c4a4384c","line":5,"range":{"start_line":5,"start_character":21,"end_line":5,"end_character":94},"in_reply_to":"9ad45d7e_4ea18cf7","updated":"2016-08-11 20:06:52.000000000","message":"There is inconsistency - RefStack UI allows to choose not only Powered platform program...","commit_id":"f8095703c19c5c49c5ba951baffb51b6a81e0dcd"},{"author":{"_account_id":10526,"name":"Catherine Diep","email":"cdiep@us.ibm.com","username":"cdiep"},"change_message_id":"7eeed15a37da3406c0cd1f03556ac597660efa08","unresolved":false,"context_lines":[{"line_number":2,"context_line":"Product Version Data Model and API"},{"line_number":3,"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"},{"line_number":4,"context_line":""},{"line_number":5,"context_line":"Launchpad blueprint: https://blueprints.launchpad.net/refstack/+spec/marketplace-product-model"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Requirement working document: https://goo.gl/bvo4FG"},{"line_number":8,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"9ad45d7e_4ea18cf7","line":5,"range":{"start_line":5,"start_character":21,"end_line":5,"end_character":94},"in_reply_to":"9ad45d7e_62c92559","updated":"2016-08-11 19:47:47.000000000","message":"This blueprint describes the OSF requirement for RefStack to match their Marketplace product model.  Point 4 describes how OSF use RefStack result data.  I feel like we should not change their requirement statement.","commit_id":"f8095703c19c5c49c5ba951baffb51b6a81e0dcd"},{"author":{"_account_id":9626,"name":"Paul Van Eck","email":"pvaneck@us.ibm.com","username":"pvaneck"},"change_message_id":"fd0c807f02ca0b72ed75acc539aaabc9645be533","unresolved":false,"context_lines":[{"line_number":2,"context_line":"Product Version Data Model and API"},{"line_number":3,"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"},{"line_number":4,"context_line":""},{"line_number":5,"context_line":"Launchpad blueprint: https://blueprints.launchpad.net/refstack/+spec/marketplace-product-model"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Requirement working document: https://goo.gl/bvo4FG"},{"line_number":8,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"9ad45d7e_043acb98","line":5,"range":{"start_line":5,"start_character":21,"end_line":5,"end_character":94},"in_reply_to":"9ad45d7e_c4a4384c","updated":"2016-08-11 21:47:49.000000000","message":"Platform isn\u0027t mentioned specifically. \"OpenStack Powered\"refers to all the programs available as target programs in the RefStack UI. Perhaps the blueprint should pluralize \u0027program\u0027 at point 4 to make it more apparent it encompasses all programs.","commit_id":"f8095703c19c5c49c5ba951baffb51b6a81e0dcd"},{"author":{"_account_id":10234,"name":"Andrey Pavlov","email":"andrey.mp@gmail.com","username":"andrey-mp"},"change_message_id":"11793e8c03f640aebeda4ebb02473f3f32f09cb8","unresolved":false,"context_lines":[{"line_number":41,"context_line":"Alternatives"},{"line_number":42,"context_line":"------------"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"None"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"Data model impact"},{"line_number":47,"context_line":"-----------------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"9ad45d7e_470a337a","line":44,"range":{"start_line":44,"start_character":0,"end_line":44,"end_character":4},"updated":"2016-08-11 09:51:33.000000000","message":"alternative solution is to have this information in product table.\nbut this solution is not confirmed to 2NF.\n\noptions:\n1) primary key is product_id + version\n2) each version of one product have own product_id","commit_id":"f8095703c19c5c49c5ba951baffb51b6a81e0dcd"},{"author":{"_account_id":10526,"name":"Catherine Diep","email":"cdiep@us.ibm.com","username":"cdiep"},"change_message_id":"7eeed15a37da3406c0cd1f03556ac597660efa08","unresolved":false,"context_lines":[{"line_number":41,"context_line":"Alternatives"},{"line_number":42,"context_line":"------------"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"None"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"Data model impact"},{"line_number":47,"context_line":"-----------------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"9ad45d7e_8eb264e3","line":44,"range":{"start_line":44,"start_character":0,"end_line":44,"end_character":4},"in_reply_to":"9ad45d7e_470a337a","updated":"2016-08-11 19:47:47.000000000","message":"The issue here is we need to model \"1 product to N versions\" relationship.  Putting the version to the product table would be for \"1 to 1\" relationship.\n\n1 product to N relationship:\n1) Create a product one time.\n2) Create versions as needed \n\n\n1) primary key is product_id + version .. This is 1 to 1 relationship.\n2) each version of one product has own product_id is for 1 to 1 relationship.  In order to have own product_id, you will need to create a product (a new entry in the product table) for every new version of the product.","commit_id":"f8095703c19c5c49c5ba951baffb51b6a81e0dcd"},{"author":{"_account_id":10234,"name":"Andrey Pavlov","email":"andrey.mp@gmail.com","username":"andrey-mp"},"change_message_id":"5b6499fce1d9f46870689c729fd79411780d6d62","unresolved":false,"context_lines":[{"line_number":41,"context_line":"Alternatives"},{"line_number":42,"context_line":"------------"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"None"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"Data model impact"},{"line_number":47,"context_line":"-----------------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"9ad45d7e_cfb3b14b","line":44,"range":{"start_line":44,"start_character":0,"end_line":44,"end_character":4},"in_reply_to":"9ad45d7e_8eb264e3","updated":"2016-08-11 20:06:52.000000000","message":"examples:\n1) 1 product, N versions\nproduct_id\u003d1 version\u003d1\nproduct_id\u003d1 version\u003d2\ntable allows these items due to primary_key is a combnation of product_id and version\n2) 1 product, N versions\nproduct MOS, version 6.1, product_id\u003d1\nproduct MOS, version 7.0, product_id\u003d2\n\nboth cases have several version for one product.\n\nFirst point strictly breaks 2NF of DB.\nSecond point just another view to assigning product ids.","commit_id":"f8095703c19c5c49c5ba951baffb51b6a81e0dcd"},{"author":{"_account_id":10526,"name":"Catherine Diep","email":"cdiep@us.ibm.com","username":"cdiep"},"change_message_id":"b7c5ecd7261a1d39c22e4d56149f0121d171487a","unresolved":false,"context_lines":[{"line_number":41,"context_line":"Alternatives"},{"line_number":42,"context_line":"------------"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"None"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"Data model impact"},{"line_number":47,"context_line":"-----------------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"9ad45d7e_4e817afa","line":44,"range":{"start_line":44,"start_character":0,"end_line":44,"end_character":4},"in_reply_to":"9ad45d7e_cfb3b14b","updated":"2016-08-12 02:37:27.000000000","message":"Andrey,  I assume that there is only one table (the \"product\") in your examples.\n\n1) In this example, what would be the value of the name (product name) field for the 2 entries?\n product_id\u003d1 version\u003d1 name\u003d?\n product_id\u003d1 version\u003d2 name\u003d? \n\n2) what is \"product MOS\"?  Is this the name of the product?\n  if so, how do you guarantee that the name will be the same for both version 6.1 and version 7.0 when the user create them using the REST API?","commit_id":"f8095703c19c5c49c5ba951baffb51b6a81e0dcd"},{"author":{"_account_id":10234,"name":"Andrey Pavlov","email":"andrey.mp@gmail.com","username":"andrey-mp"},"change_message_id":"11793e8c03f640aebeda4ebb02473f3f32f09cb8","unresolved":false,"context_lines":[{"line_number":63,"context_line":"  +------------------------+-------------+----------+"},{"line_number":64,"context_line":"  | id                     | varchar(36) | PK       |"},{"line_number":65,"context_line":"  +------------------------+-------------+----------+"},{"line_number":66,"context_line":"  | version                | varchar(30) |          |"},{"line_number":67,"context_line":"  +------------------------+-------------+----------+"},{"line_number":68,"context_line":"  | description            | text        |          |"},{"line_number":69,"context_line":"  +------------------------+-------------+----------+"}],"source_content_type":"text/x-rst","patch_set":1,"id":"9ad45d7e_074cbb9c","line":66,"range":{"start_line":66,"start_character":37,"end_line":66,"end_character":39},"updated":"2016-08-11 09:51:33.000000000","message":"why do you need two strings - version and description?\nlet\u0027s leave only one with \u0027text\u0027 type.\n\nmost distro\u0027s have just a number in version -\u00275\u0027, \u00276\u0027.\noracle has version \u002711 Ed1\u0027","commit_id":"f8095703c19c5c49c5ba951baffb51b6a81e0dcd"},{"author":{"_account_id":10526,"name":"Catherine Diep","email":"cdiep@us.ibm.com","username":"cdiep"},"change_message_id":"7eeed15a37da3406c0cd1f03556ac597660efa08","unresolved":false,"context_lines":[{"line_number":63,"context_line":"  +------------------------+-------------+----------+"},{"line_number":64,"context_line":"  | id                     | varchar(36) | PK       |"},{"line_number":65,"context_line":"  +------------------------+-------------+----------+"},{"line_number":66,"context_line":"  | version                | varchar(30) |          |"},{"line_number":67,"context_line":"  +------------------------+-------------+----------+"},{"line_number":68,"context_line":"  | description            | text        |          |"},{"line_number":69,"context_line":"  +------------------------+-------------+----------+"}],"source_content_type":"text/x-rst","patch_set":1,"id":"9ad45d7e_ae43e86a","line":66,"range":{"start_line":66,"start_character":37,"end_line":66,"end_character":39},"in_reply_to":"9ad45d7e_074cbb9c","updated":"2016-08-11 19:47:47.000000000","message":"I am thinking of the case where version of the product is 5 o and in description you will put more information about the version like (version 5 is using Mitaka OpenStack release).  But I am open to remove the \"description\" field.","commit_id":"f8095703c19c5c49c5ba951baffb51b6a81e0dcd"},{"author":{"_account_id":10234,"name":"Andrey Pavlov","email":"andrey.mp@gmail.com","username":"andrey-mp"},"change_message_id":"11793e8c03f640aebeda4ebb02473f3f32f09cb8","unresolved":false,"context_lines":[{"line_number":69,"context_line":"  +------------------------+-------------+----------+"},{"line_number":70,"context_line":"  | product_id             | varchar(36) | FK       |"},{"line_number":71,"context_line":"  +------------------------+-------------+----------+"},{"line_number":72,"context_line":"  | cpid                   | varchar(36) |          |"},{"line_number":73,"context_line":"  +------------------------+-------------+----------+"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"9ad45d7e_e737e7fc","line":72,"range":{"start_line":72,"start_character":4,"end_line":72,"end_character":8},"updated":"2016-08-11 09:51:33.000000000","message":"this field assumes that we will drop cpid from product table, right?","commit_id":"f8095703c19c5c49c5ba951baffb51b6a81e0dcd"},{"author":{"_account_id":10526,"name":"Catherine Diep","email":"cdiep@us.ibm.com","username":"cdiep"},"change_message_id":"7eeed15a37da3406c0cd1f03556ac597660efa08","unresolved":false,"context_lines":[{"line_number":69,"context_line":"  +------------------------+-------------+----------+"},{"line_number":70,"context_line":"  | product_id             | varchar(36) | FK       |"},{"line_number":71,"context_line":"  +------------------------+-------------+----------+"},{"line_number":72,"context_line":"  | cpid                   | varchar(36) |          |"},{"line_number":73,"context_line":"  +------------------------+-------------+----------+"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"9ad45d7e_445a08f3","line":72,"range":{"start_line":72,"start_character":4,"end_line":72,"end_character":8},"in_reply_to":"9ad45d7e_e737e7fc","updated":"2016-08-11 19:47:47.000000000","message":"I think so for this model.","commit_id":"f8095703c19c5c49c5ba951baffb51b6a81e0dcd"},{"author":{"_account_id":10234,"name":"Andrey Pavlov","email":"andrey.mp@gmail.com","username":"andrey-mp"},"change_message_id":"11793e8c03f640aebeda4ebb02473f3f32f09cb8","unresolved":false,"context_lines":[{"line_number":77,"context_line":""},{"line_number":78,"context_line":"  * The version field can be blank. This is to support the case where public"},{"line_number":79,"context_line":"    cloud may have no version."},{"line_number":80,"context_line":"  * The combination of the version and product_id fields must be unique"},{"line_number":81,"context_line":"    (UniqueConstraint).."},{"line_number":82,"context_line":"  * cpid is the ID of a cloud which is deployed using this product version."},{"line_number":83,"context_line":"    cpid can be blank."}],"source_content_type":"text/x-rst","patch_set":1,"id":"9ad45d7e_22444d19","line":80,"range":{"start_line":80,"start_character":27,"end_line":80,"end_character":34},"updated":"2016-08-11 09:51:33.000000000","message":"version or version_id ?\nIt\u0027s not good to make abstract string as key\u0027s component.\nI can break this constraint by string with similar sense and different form - switch place of words, use another case of chars and etc.\n\u0027v6\u0027 vs \u0027V 6\u0027\n\u002711 Ed 1\u0027 vs \u002711 ed1\u0027\n\nalso - can blank string be part of unique key in supported DB engines?","commit_id":"f8095703c19c5c49c5ba951baffb51b6a81e0dcd"},{"author":{"_account_id":10526,"name":"Catherine Diep","email":"cdiep@us.ibm.com","username":"cdiep"},"change_message_id":"7eeed15a37da3406c0cd1f03556ac597660efa08","unresolved":false,"context_lines":[{"line_number":77,"context_line":""},{"line_number":78,"context_line":"  * The version field can be blank. This is to support the case where public"},{"line_number":79,"context_line":"    cloud may have no version."},{"line_number":80,"context_line":"  * The combination of the version and product_id fields must be unique"},{"line_number":81,"context_line":"    (UniqueConstraint).."},{"line_number":82,"context_line":"  * cpid is the ID of a cloud which is deployed using this product version."},{"line_number":83,"context_line":"    cpid can be blank."}],"source_content_type":"text/x-rst","patch_set":1,"id":"9ad45d7e_64b3cc0a","line":80,"range":{"start_line":80,"start_character":27,"end_line":80,"end_character":34},"in_reply_to":"9ad45d7e_22444d19","updated":"2016-08-11 19:47:47.000000000","message":"version here is the version name not version_id.\nWhat we want is to avoid duplication of version entry for a product. Say product ABC with product_id\u003d1234 and version\u003d v1.  The combination of 1234(product_id)+v1(version name) is unique.  Without this constraint you may have 2 entries of v1 for 1234 in the version table.\n\nversion_id by default is always unique.","commit_id":"f8095703c19c5c49c5ba951baffb51b6a81e0dcd"},{"author":{"_account_id":9626,"name":"Paul Van Eck","email":"pvaneck@us.ibm.com","username":"pvaneck"},"change_message_id":"fd0c807f02ca0b72ed75acc539aaabc9645be533","unresolved":false,"context_lines":[{"line_number":77,"context_line":""},{"line_number":78,"context_line":"  * The version field can be blank. This is to support the case where public"},{"line_number":79,"context_line":"    cloud may have no version."},{"line_number":80,"context_line":"  * The combination of the version and product_id fields must be unique"},{"line_number":81,"context_line":"    (UniqueConstraint).."},{"line_number":82,"context_line":"  * cpid is the ID of a cloud which is deployed using this product version."},{"line_number":83,"context_line":"    cpid can be blank."}],"source_content_type":"text/x-rst","patch_set":1,"id":"9ad45d7e_a4d5bfe5","line":80,"range":{"start_line":80,"start_character":27,"end_line":80,"end_character":34},"in_reply_to":"9ad45d7e_2f088dd9","updated":"2016-08-11 21:47:49.000000000","message":"I think for those cases, it\u0027ll be up to the product vendor admin to use discretion in making correct version names and watch for potential duplicate mislabeled versions. Don\u0027t think this will be too much of a problem as versions typically follow the same format for a product. \n\nI think having the compound unique key (product_id, version) is fine to have the minimal level of duplication protection.","commit_id":"f8095703c19c5c49c5ba951baffb51b6a81e0dcd"},{"author":{"_account_id":10234,"name":"Andrey Pavlov","email":"andrey.mp@gmail.com","username":"andrey-mp"},"change_message_id":"5b6499fce1d9f46870689c729fd79411780d6d62","unresolved":false,"context_lines":[{"line_number":77,"context_line":""},{"line_number":78,"context_line":"  * The version field can be blank. This is to support the case where public"},{"line_number":79,"context_line":"    cloud may have no version."},{"line_number":80,"context_line":"  * The combination of the version and product_id fields must be unique"},{"line_number":81,"context_line":"    (UniqueConstraint).."},{"line_number":82,"context_line":"  * cpid is the ID of a cloud which is deployed using this product version."},{"line_number":83,"context_line":"    cpid can be blank."}],"source_content_type":"text/x-rst","patch_set":1,"id":"9ad45d7e_2f088dd9","line":80,"range":{"start_line":80,"start_character":27,"end_line":80,"end_character":34},"in_reply_to":"9ad45d7e_64b3cc0a","updated":"2016-08-11 20:06:52.000000000","message":"I\u0027ve tried to say that I can break this uniqueness by creating same version several times with similar but not unique name - \u0027v1\u0027, \u0027v 1\u0027, \u0027v1.0\u0027, \u0027version 1\u0027 and etc.","commit_id":"f8095703c19c5c49c5ba951baffb51b6a81e0dcd"},{"author":{"_account_id":10526,"name":"Catherine Diep","email":"cdiep@us.ibm.com","username":"cdiep"},"change_message_id":"b7c5ecd7261a1d39c22e4d56149f0121d171487a","unresolved":false,"context_lines":[{"line_number":77,"context_line":""},{"line_number":78,"context_line":"  * The version field can be blank. This is to support the case where public"},{"line_number":79,"context_line":"    cloud may have no version."},{"line_number":80,"context_line":"  * The combination of the version and product_id fields must be unique"},{"line_number":81,"context_line":"    (UniqueConstraint).."},{"line_number":82,"context_line":"  * cpid is the ID of a cloud which is deployed using this product version."},{"line_number":83,"context_line":"    cpid can be blank."}],"source_content_type":"text/x-rst","patch_set":1,"id":"9ad45d7e_4e34da48","line":80,"range":{"start_line":80,"start_character":27,"end_line":80,"end_character":34},"in_reply_to":"9ad45d7e_a4d5bfe5","updated":"2016-08-12 02:37:27.000000000","message":"The duplication protection is to prevent careless mistakes that the same versions name may be entered more than one.  Or, some time due to network issue that users may hit \"save\" or \"submit\" twice after typing the version name when using UI.","commit_id":"f8095703c19c5c49c5ba951baffb51b6a81e0dcd"},{"author":{"_account_id":10234,"name":"Andrey Pavlov","email":"andrey.mp@gmail.com","username":"andrey-mp"},"change_message_id":"11793e8c03f640aebeda4ebb02473f3f32f09cb8","unresolved":false,"context_lines":[{"line_number":287,"context_line":"  +---------------+-------+--------------+-----------------------------------+"},{"line_number":288,"context_line":"  | version_id    | URI   | csapi:UUID   | ID of a product version           |"},{"line_number":289,"context_line":"  +---------------+-------+--------------+-----------------------------------+"},{"line_number":290,"context_line":""},{"line_number":291,"context_line":"* JSON schema definition for the body data:"},{"line_number":292,"context_line":""},{"line_number":293,"context_line":"  .. parsed-literal::"}],"source_content_type":"text/x-rst","patch_set":1,"id":"9ad45d7e_1daec897","line":290,"updated":"2016-08-11 09:51:33.000000000","message":"which fields can be changed?","commit_id":"f8095703c19c5c49c5ba951baffb51b6a81e0dcd"},{"author":{"_account_id":10526,"name":"Catherine Diep","email":"cdiep@us.ibm.com","username":"cdiep"},"change_message_id":"7eeed15a37da3406c0cd1f03556ac597660efa08","unresolved":false,"context_lines":[{"line_number":293,"context_line":"  .. parsed-literal::"},{"line_number":294,"context_line":"    {"},{"line_number":295,"context_line":"       {"},{"line_number":296,"context_line":"          \"version\" : \"\","},{"line_number":297,"context_line":"          \"description\" : \"My version description\","},{"line_number":298,"context_line":"          \"cpid\" : \"69346866-307f-4052-ba31-ff6270635e19\","},{"line_number":299,"context_line":"          \"required\": []"},{"line_number":300,"context_line":"       }"},{"line_number":301,"context_line":"    }"}],"source_content_type":"text/x-rst","patch_set":1,"id":"9ad45d7e_64aaac86","line":298,"range":{"start_line":296,"start_character":0,"end_line":298,"end_character":58},"updated":"2016-08-11 19:47:47.000000000","message":"These are the fields that can be updated.","commit_id":"f8095703c19c5c49c5ba951baffb51b6a81e0dcd"},{"author":{"_account_id":10234,"name":"Andrey Pavlov","email":"andrey.mp@gmail.com","username":"andrey-mp"},"change_message_id":"5b6499fce1d9f46870689c729fd79411780d6d62","unresolved":false,"context_lines":[{"line_number":293,"context_line":"  .. parsed-literal::"},{"line_number":294,"context_line":"    {"},{"line_number":295,"context_line":"       {"},{"line_number":296,"context_line":"          \"version\" : \"\","},{"line_number":297,"context_line":"          \"description\" : \"My version description\","},{"line_number":298,"context_line":"          \"cpid\" : \"69346866-307f-4052-ba31-ff6270635e19\","},{"line_number":299,"context_line":"          \"required\": []"},{"line_number":300,"context_line":"       }"},{"line_number":301,"context_line":"    }"}],"source_content_type":"text/x-rst","patch_set":1,"id":"9ad45d7e_cffd71b2","line":298,"range":{"start_line":296,"start_character":0,"end_line":298,"end_character":58},"in_reply_to":"9ad45d7e_64aaac86","updated":"2016-08-11 20:06:52.000000000","message":"ok","commit_id":"f8095703c19c5c49c5ba951baffb51b6a81e0dcd"},{"author":{"_account_id":10234,"name":"Andrey Pavlov","email":"andrey.mp@gmail.com","username":"andrey-mp"},"change_message_id":"11793e8c03f640aebeda4ebb02473f3f32f09cb8","unresolved":false,"context_lines":[{"line_number":356,"context_line":"The following APIs will be updated to include version information."},{"line_number":357,"context_line":""},{"line_number":358,"context_line":"**List products**"},{"line_number":359,"context_line":""},{"line_number":360,"context_line":"* Description:"},{"line_number":361,"context_line":""},{"line_number":362,"context_line":"  This API will be used to list the products in RefStack.  By default, the"}],"source_content_type":"text/x-rst","patch_set":1,"id":"9ad45d7e_78dd52df","line":359,"updated":"2016-08-11 09:51:33.000000000","message":"1) I think that is better to write what\u0027s new rather than copy full description.\n2) Also I think that is so strange to write this in this spec - I\u0027ll not read version spec if I need product spec...\n\n3) why \u0027list\u0027 is changed and \u0027get\u0027 is not changed?","commit_id":"f8095703c19c5c49c5ba951baffb51b6a81e0dcd"},{"author":{"_account_id":10526,"name":"Catherine Diep","email":"cdiep@us.ibm.com","username":"cdiep"},"change_message_id":"b7c5ecd7261a1d39c22e4d56149f0121d171487a","unresolved":false,"context_lines":[{"line_number":356,"context_line":"The following APIs will be updated to include version information."},{"line_number":357,"context_line":""},{"line_number":358,"context_line":"**List products**"},{"line_number":359,"context_line":""},{"line_number":360,"context_line":"* Description:"},{"line_number":361,"context_line":""},{"line_number":362,"context_line":"  This API will be used to list the products in RefStack.  By default, the"}],"source_content_type":"text/x-rst","patch_set":1,"id":"9ad45d7e_09613ca9","line":359,"in_reply_to":"9ad45d7e_0fa789bd","updated":"2016-08-12 02:37:27.000000000","message":"\"version\" was added to the response using the same pattern RefStack does with test and its meta data.\n\nFor display of product info, it makes sense to display the products with its versions so only one API is called (instead of two).  The get method are more like read only method. But for put,post,delete, since it will alter the db, the version put,post,delete APIs should be used.\n\nI am open to remove this update.  This will mean that 2 APIs (product and version) will need to be called to get complete product info (instead of one).","commit_id":"f8095703c19c5c49c5ba951baffb51b6a81e0dcd"},{"author":{"_account_id":10526,"name":"Catherine Diep","email":"cdiep@us.ibm.com","username":"cdiep"},"change_message_id":"7eeed15a37da3406c0cd1f03556ac597660efa08","unresolved":false,"context_lines":[{"line_number":356,"context_line":"The following APIs will be updated to include version information."},{"line_number":357,"context_line":""},{"line_number":358,"context_line":"**List products**"},{"line_number":359,"context_line":""},{"line_number":360,"context_line":"* Description:"},{"line_number":361,"context_line":""},{"line_number":362,"context_line":"  This API will be used to list the products in RefStack.  By default, the"}],"source_content_type":"text/x-rst","patch_set":1,"id":"9ad45d7e_c4bef8ac","line":359,"in_reply_to":"9ad45d7e_78dd52df","updated":"2016-08-11 19:47:47.000000000","message":"1) I meant for this to be document for the API. We can discuss what we want to do here.\n2) Agree.  May move this to a new product spec.\n3) This is the REST API section. Is \"get\"a method for db?","commit_id":"f8095703c19c5c49c5ba951baffb51b6a81e0dcd"},{"author":{"_account_id":17716,"name":"Luz Cazares","email":"luz.cazares@intel.com","username":"luzcazares"},"change_message_id":"05d0e73bc149a0cf411fe956a3ab5a76a1b97105","unresolved":false,"context_lines":[{"line_number":356,"context_line":"The following APIs will be updated to include version information."},{"line_number":357,"context_line":""},{"line_number":358,"context_line":"**List products**"},{"line_number":359,"context_line":""},{"line_number":360,"context_line":"* Description:"},{"line_number":361,"context_line":""},{"line_number":362,"context_line":"  This API will be used to list the products in RefStack.  By default, the"}],"source_content_type":"text/x-rst","patch_set":1,"id":"9ad45d7e_866c1209","line":359,"in_reply_to":"9ad45d7e_78dd52df","updated":"2016-08-11 17:37:05.000000000","message":"Agree with Andry 1)\nIf products/list API already exists, then just mention the changes/additions/deletions to it.","commit_id":"f8095703c19c5c49c5ba951baffb51b6a81e0dcd"},{"author":{"_account_id":10234,"name":"Andrey Pavlov","email":"andrey.mp@gmail.com","username":"andrey-mp"},"change_message_id":"5b6499fce1d9f46870689c729fd79411780d6d62","unresolved":false,"context_lines":[{"line_number":356,"context_line":"The following APIs will be updated to include version information."},{"line_number":357,"context_line":""},{"line_number":358,"context_line":"**List products**"},{"line_number":359,"context_line":""},{"line_number":360,"context_line":"* Description:"},{"line_number":361,"context_line":""},{"line_number":362,"context_line":"  This API will be used to list the products in RefStack.  By default, the"}],"source_content_type":"text/x-rst","patch_set":1,"id":"9ad45d7e_0fa789bd","line":359,"in_reply_to":"9ad45d7e_c4bef8ac","updated":"2016-08-11 20:06:52.000000000","message":"3) REST API has methods - get_all, get_one, , put, post, delete.\nI mean \u0027get\u0027 method from REST API.\nIf you change get_all method why \u0027get_one\u0027 is not changed?","commit_id":"f8095703c19c5c49c5ba951baffb51b6a81e0dcd"},{"author":{"_account_id":17716,"name":"Luz Cazares","email":"luz.cazares@intel.com","username":"luzcazares"},"change_message_id":"05d0e73bc149a0cf411fe956a3ab5a76a1b97105","unresolved":false,"context_lines":[{"line_number":407,"context_line":"             \"type\" : 0,"},{"line_number":408,"context_line":"             \"can_manage\" : false,"},{"line_number":409,"context_line":"             \"organization_id\" : \"69346866-307f-4052-ba31-ff6270635e19\","},{"line_number":410,"context_line":"             \"versions\"; ["},{"line_number":411,"context_line":"                {"},{"line_number":412,"context_line":"                    \"id\" : \"85346866-307f-4052-ba31-ff6270635e14\","},{"line_number":413,"context_line":"                    \"version\" : \"v1\","},{"line_number":414,"context_line":"                    \"description\" : \"My version\","},{"line_number":415,"context_line":"                    \"cpid\" : \"\""},{"line_number":416,"context_line":"                },"},{"line_number":417,"context_line":"                {"},{"line_number":418,"context_line":"                    \"id\" : \"36846866-307f-4052-ba31-ff6270635e19\","},{"line_number":419,"context_line":"                    \"version\" : \"\","},{"line_number":420,"context_line":"                    \"description\" : \"My version description\","},{"line_number":421,"context_line":"                    \"cpid\" : \"69346866-307f-4052-ba31-ff6270635e19\""},{"line_number":422,"context_line":"                }"},{"line_number":423,"context_line":"             ]"},{"line_number":424,"context_line":"          },"},{"line_number":425,"context_line":"          {"},{"line_number":426,"context_line":"             \"id\" : \"78346866-307f-4052-ba31-ff6270635e19\","}],"source_content_type":"text/x-rst","patch_set":1,"id":"9ad45d7e_06e5c2a6","line":423,"range":{"start_line":410,"start_character":13,"end_line":423,"end_character":14},"updated":"2016-08-11 17:37:05.000000000","message":"I think response should return just the version ids.\nIf additional version information is required(version, description, cpid) then version api should be used directly","commit_id":"f8095703c19c5c49c5ba951baffb51b6a81e0dcd"},{"author":{"_account_id":10234,"name":"Andrey Pavlov","email":"andrey.mp@gmail.com","username":"andrey-mp"},"change_message_id":"746cbe80c2ca5ff95c0a8409222c490f30557629","unresolved":false,"context_lines":[{"line_number":407,"context_line":"             \"type\" : 0,"},{"line_number":408,"context_line":"             \"can_manage\" : false,"},{"line_number":409,"context_line":"             \"organization_id\" : \"69346866-307f-4052-ba31-ff6270635e19\","},{"line_number":410,"context_line":"             \"versions\"; ["},{"line_number":411,"context_line":"                {"},{"line_number":412,"context_line":"                    \"id\" : \"85346866-307f-4052-ba31-ff6270635e14\","},{"line_number":413,"context_line":"                    \"version\" : \"v1\","},{"line_number":414,"context_line":"                    \"description\" : \"My version\","},{"line_number":415,"context_line":"                    \"cpid\" : \"\""},{"line_number":416,"context_line":"                },"},{"line_number":417,"context_line":"                {"},{"line_number":418,"context_line":"                    \"id\" : \"36846866-307f-4052-ba31-ff6270635e19\","},{"line_number":419,"context_line":"                    \"version\" : \"\","},{"line_number":420,"context_line":"                    \"description\" : \"My version description\","},{"line_number":421,"context_line":"                    \"cpid\" : \"69346866-307f-4052-ba31-ff6270635e19\""},{"line_number":422,"context_line":"                }"},{"line_number":423,"context_line":"             ]"},{"line_number":424,"context_line":"          },"},{"line_number":425,"context_line":"          {"},{"line_number":426,"context_line":"             \"id\" : \"78346866-307f-4052-ba31-ff6270635e19\","}],"source_content_type":"text/x-rst","patch_set":1,"id":"9ad45d7e_be8af161","line":423,"range":{"start_line":410,"start_character":13,"end_line":423,"end_character":14},"in_reply_to":"9ad45d7e_06e5c2a6","updated":"2016-08-11 18:46:11.000000000","message":"I think that this request is needed for build UI table with one server\u0027s request.\nIf UI will call version API for each request then server will fail...\n\nBut I suggest not to modify currect list method. It\u0027s better to create something like \u0027extended_list\u0027 and return all needed information there.","commit_id":"f8095703c19c5c49c5ba951baffb51b6a81e0dcd"},{"author":{"_account_id":10526,"name":"Catherine Diep","email":"cdiep@us.ibm.com","username":"cdiep"},"change_message_id":"7eeed15a37da3406c0cd1f03556ac597660efa08","unresolved":false,"context_lines":[{"line_number":407,"context_line":"             \"type\" : 0,"},{"line_number":408,"context_line":"             \"can_manage\" : false,"},{"line_number":409,"context_line":"             \"organization_id\" : \"69346866-307f-4052-ba31-ff6270635e19\","},{"line_number":410,"context_line":"             \"versions\"; ["},{"line_number":411,"context_line":"                {"},{"line_number":412,"context_line":"                    \"id\" : \"85346866-307f-4052-ba31-ff6270635e14\","},{"line_number":413,"context_line":"                    \"version\" : \"v1\","},{"line_number":414,"context_line":"                    \"description\" : \"My version\","},{"line_number":415,"context_line":"                    \"cpid\" : \"\""},{"line_number":416,"context_line":"                },"},{"line_number":417,"context_line":"                {"},{"line_number":418,"context_line":"                    \"id\" : \"36846866-307f-4052-ba31-ff6270635e19\","},{"line_number":419,"context_line":"                    \"version\" : \"\","},{"line_number":420,"context_line":"                    \"description\" : \"My version description\","},{"line_number":421,"context_line":"                    \"cpid\" : \"69346866-307f-4052-ba31-ff6270635e19\""},{"line_number":422,"context_line":"                }"},{"line_number":423,"context_line":"             ]"},{"line_number":424,"context_line":"          },"},{"line_number":425,"context_line":"          {"},{"line_number":426,"context_line":"             \"id\" : \"78346866-307f-4052-ba31-ff6270635e19\","}],"source_content_type":"text/x-rst","patch_set":1,"id":"9ad45d7e_6482acc9","line":423,"range":{"start_line":410,"start_character":13,"end_line":423,"end_character":14},"in_reply_to":"9ad45d7e_06e5c2a6","updated":"2016-08-11 19:47:47.000000000","message":"This is to avoid additional call to build the UI table as mentioned by Andrey.","commit_id":"f8095703c19c5c49c5ba951baffb51b6a81e0dcd"},{"author":{"_account_id":9626,"name":"Paul Van Eck","email":"pvaneck@us.ibm.com","username":"pvaneck"},"change_message_id":"fd0c807f02ca0b72ed75acc539aaabc9645be533","unresolved":false,"context_lines":[{"line_number":407,"context_line":"             \"type\" : 0,"},{"line_number":408,"context_line":"             \"can_manage\" : false,"},{"line_number":409,"context_line":"             \"organization_id\" : \"69346866-307f-4052-ba31-ff6270635e19\","},{"line_number":410,"context_line":"             \"versions\"; ["},{"line_number":411,"context_line":"                {"},{"line_number":412,"context_line":"                    \"id\" : \"85346866-307f-4052-ba31-ff6270635e14\","},{"line_number":413,"context_line":"                    \"version\" : \"v1\","},{"line_number":414,"context_line":"                    \"description\" : \"My version\","},{"line_number":415,"context_line":"                    \"cpid\" : \"\""},{"line_number":416,"context_line":"                },"},{"line_number":417,"context_line":"                {"},{"line_number":418,"context_line":"                    \"id\" : \"36846866-307f-4052-ba31-ff6270635e19\","},{"line_number":419,"context_line":"                    \"version\" : \"\","},{"line_number":420,"context_line":"                    \"description\" : \"My version description\","},{"line_number":421,"context_line":"                    \"cpid\" : \"69346866-307f-4052-ba31-ff6270635e19\""},{"line_number":422,"context_line":"                }"},{"line_number":423,"context_line":"             ]"},{"line_number":424,"context_line":"          },"},{"line_number":425,"context_line":"          {"},{"line_number":426,"context_line":"             \"id\" : \"78346866-307f-4052-ba31-ff6270635e19\","}],"source_content_type":"text/x-rst","patch_set":1,"id":"9ad45d7e_87707d0c","line":423,"range":{"start_line":410,"start_character":13,"end_line":423,"end_character":14},"in_reply_to":"9ad45d7e_2f8b6d20","updated":"2016-08-11 21:47:49.000000000","message":"What would the endpoint for the extended_list be? Would it just be a get parameter added like /v1/products?extended\u003d1 ?\n\nMay not even need the versions listed in this response really. The products table probably won\u0027t be listing product versions. get_one could benefit from versions in the response, however.","commit_id":"f8095703c19c5c49c5ba951baffb51b6a81e0dcd"},{"author":{"_account_id":10234,"name":"Andrey Pavlov","email":"andrey.mp@gmail.com","username":"andrey-mp"},"change_message_id":"5b6499fce1d9f46870689c729fd79411780d6d62","unresolved":false,"context_lines":[{"line_number":407,"context_line":"             \"type\" : 0,"},{"line_number":408,"context_line":"             \"can_manage\" : false,"},{"line_number":409,"context_line":"             \"organization_id\" : \"69346866-307f-4052-ba31-ff6270635e19\","},{"line_number":410,"context_line":"             \"versions\"; ["},{"line_number":411,"context_line":"                {"},{"line_number":412,"context_line":"                    \"id\" : \"85346866-307f-4052-ba31-ff6270635e14\","},{"line_number":413,"context_line":"                    \"version\" : \"v1\","},{"line_number":414,"context_line":"                    \"description\" : \"My version\","},{"line_number":415,"context_line":"                    \"cpid\" : \"\""},{"line_number":416,"context_line":"                },"},{"line_number":417,"context_line":"                {"},{"line_number":418,"context_line":"                    \"id\" : \"36846866-307f-4052-ba31-ff6270635e19\","},{"line_number":419,"context_line":"                    \"version\" : \"\","},{"line_number":420,"context_line":"                    \"description\" : \"My version description\","},{"line_number":421,"context_line":"                    \"cpid\" : \"69346866-307f-4052-ba31-ff6270635e19\""},{"line_number":422,"context_line":"                }"},{"line_number":423,"context_line":"             ]"},{"line_number":424,"context_line":"          },"},{"line_number":425,"context_line":"          {"},{"line_number":426,"context_line":"             \"id\" : \"78346866-307f-4052-ba31-ff6270635e19\","}],"source_content_type":"text/x-rst","patch_set":1,"id":"9ad45d7e_2f8b6d20","line":423,"range":{"start_line":410,"start_character":13,"end_line":423,"end_character":14},"in_reply_to":"9ad45d7e_6482acc9","updated":"2016-08-11 20:06:52.000000000","message":"What do you think about additional \u0027extended_list\u0027 method?","commit_id":"f8095703c19c5c49c5ba951baffb51b6a81e0dcd"},{"author":{"_account_id":10526,"name":"Catherine Diep","email":"cdiep@us.ibm.com","username":"cdiep"},"change_message_id":"b7c5ecd7261a1d39c22e4d56149f0121d171487a","unresolved":false,"context_lines":[{"line_number":407,"context_line":"             \"type\" : 0,"},{"line_number":408,"context_line":"             \"can_manage\" : false,"},{"line_number":409,"context_line":"             \"organization_id\" : \"69346866-307f-4052-ba31-ff6270635e19\","},{"line_number":410,"context_line":"             \"versions\"; ["},{"line_number":411,"context_line":"                {"},{"line_number":412,"context_line":"                    \"id\" : \"85346866-307f-4052-ba31-ff6270635e14\","},{"line_number":413,"context_line":"                    \"version\" : \"v1\","},{"line_number":414,"context_line":"                    \"description\" : \"My version\","},{"line_number":415,"context_line":"                    \"cpid\" : \"\""},{"line_number":416,"context_line":"                },"},{"line_number":417,"context_line":"                {"},{"line_number":418,"context_line":"                    \"id\" : \"36846866-307f-4052-ba31-ff6270635e19\","},{"line_number":419,"context_line":"                    \"version\" : \"\","},{"line_number":420,"context_line":"                    \"description\" : \"My version description\","},{"line_number":421,"context_line":"                    \"cpid\" : \"69346866-307f-4052-ba31-ff6270635e19\""},{"line_number":422,"context_line":"                }"},{"line_number":423,"context_line":"             ]"},{"line_number":424,"context_line":"          },"},{"line_number":425,"context_line":"          {"},{"line_number":426,"context_line":"             \"id\" : \"78346866-307f-4052-ba31-ff6270635e19\","}],"source_content_type":"text/x-rst","patch_set":1,"id":"9ad45d7e_dc019b06","line":423,"range":{"start_line":410,"start_character":13,"end_line":423,"end_character":14},"in_reply_to":"9ad45d7e_87707d0c","updated":"2016-08-12 02:37:27.000000000","message":"Maybe it is not a good idea after all to include version in the response of the list product API? \n\nMainly, we want to avoid overloading the server on the list products API ( /v1/products) where we expect to have a list of product returned.  For get_one, I think we can afford two API calls.\n\nHow about I remove this from this spec?","commit_id":"f8095703c19c5c49c5ba951baffb51b6a81e0dcd"},{"author":{"_account_id":10234,"name":"Andrey Pavlov","email":"andrey.mp@gmail.com","username":"andrey-mp"},"change_message_id":"11793e8c03f640aebeda4ebb02473f3f32f09cb8","unresolved":false,"context_lines":[{"line_number":495,"context_line":"-----------"},{"line_number":496,"context_line":""},{"line_number":497,"context_line":"Primary assignee:"},{"line_number":498,"context_line":"  Paul Van Eck"},{"line_number":499,"context_line":""},{"line_number":500,"context_line":"Other contributors:"},{"line_number":501,"context_line":"  TBD"}],"source_content_type":"text/x-rst","patch_set":1,"id":"9ad45d7e_331e5d5f","line":498,"updated":"2016-08-11 09:51:33.000000000","message":"you can add me for server-side if you need.","commit_id":"f8095703c19c5c49c5ba951baffb51b6a81e0dcd"},{"author":{"_account_id":10526,"name":"Catherine Diep","email":"cdiep@us.ibm.com","username":"cdiep"},"change_message_id":"7eeed15a37da3406c0cd1f03556ac597660efa08","unresolved":false,"context_lines":[{"line_number":495,"context_line":"-----------"},{"line_number":496,"context_line":""},{"line_number":497,"context_line":"Primary assignee:"},{"line_number":498,"context_line":"  Paul Van Eck"},{"line_number":499,"context_line":""},{"line_number":500,"context_line":"Other contributors:"},{"line_number":501,"context_line":"  TBD"}],"source_content_type":"text/x-rst","patch_set":1,"id":"9ad45d7e_04e3f0d9","line":498,"in_reply_to":"9ad45d7e_331e5d5f","updated":"2016-08-11 19:47:47.000000000","message":"Will do.  Thanks a lot!","commit_id":"f8095703c19c5c49c5ba951baffb51b6a81e0dcd"},{"author":{"_account_id":10234,"name":"Andrey Pavlov","email":"andrey.mp@gmail.com","username":"andrey-mp"},"change_message_id":"11793e8c03f640aebeda4ebb02473f3f32f09cb8","unresolved":false,"context_lines":[{"line_number":506,"context_line":"* Create the product version table."},{"line_number":507,"context_line":"* Create the newly APIs."},{"line_number":508,"context_line":"* Update the \"List products\" REST APIs."},{"line_number":509,"context_line":""},{"line_number":510,"context_line":""},{"line_number":511,"context_line":"Dependencies"},{"line_number":512,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":1,"id":"9ad45d7e_533951d6","line":509,"updated":"2016-08-11 09:51:33.000000000","message":"should UI part be added here?","commit_id":"f8095703c19c5c49c5ba951baffb51b6a81e0dcd"},{"author":{"_account_id":10526,"name":"Catherine Diep","email":"cdiep@us.ibm.com","username":"cdiep"},"change_message_id":"7eeed15a37da3406c0cd1f03556ac597660efa08","unresolved":false,"context_lines":[{"line_number":506,"context_line":"* Create the product version table."},{"line_number":507,"context_line":"* Create the newly APIs."},{"line_number":508,"context_line":"* Update the \"List products\" REST APIs."},{"line_number":509,"context_line":""},{"line_number":510,"context_line":""},{"line_number":511,"context_line":"Dependencies"},{"line_number":512,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":1,"id":"9ad45d7e_a4fb0478","line":509,"in_reply_to":"9ad45d7e_533951d6","updated":"2016-08-11 19:47:47.000000000","message":"So far we have not included UI in the DB and API spec.  But we can always create a UI spec.","commit_id":"f8095703c19c5c49c5ba951baffb51b6a81e0dcd"},{"author":{"_account_id":10234,"name":"Andrey Pavlov","email":"andrey.mp@gmail.com","username":"andrey-mp"},"change_message_id":"5b6499fce1d9f46870689c729fd79411780d6d62","unresolved":false,"context_lines":[{"line_number":506,"context_line":"* Create the product version table."},{"line_number":507,"context_line":"* Create the newly APIs."},{"line_number":508,"context_line":"* Update the \"List products\" REST APIs."},{"line_number":509,"context_line":""},{"line_number":510,"context_line":""},{"line_number":511,"context_line":"Dependencies"},{"line_number":512,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":1,"id":"9ad45d7e_cf1a91c5","line":509,"in_reply_to":"9ad45d7e_a4fb0478","updated":"2016-08-11 20:06:52.000000000","message":"please no UI specs )","commit_id":"f8095703c19c5c49c5ba951baffb51b6a81e0dcd"},{"author":{"_account_id":10526,"name":"Catherine Diep","email":"cdiep@us.ibm.com","username":"cdiep"},"change_message_id":"b7c5ecd7261a1d39c22e4d56149f0121d171487a","unresolved":false,"context_lines":[{"line_number":506,"context_line":"* Create the product version table."},{"line_number":507,"context_line":"* Create the newly APIs."},{"line_number":508,"context_line":"* Update the \"List products\" REST APIs."},{"line_number":509,"context_line":""},{"line_number":510,"context_line":""},{"line_number":511,"context_line":"Dependencies"},{"line_number":512,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":1,"id":"9ad45d7e_1c6df3cb","line":509,"in_reply_to":"9ad45d7e_cf1a91c5","updated":"2016-08-12 02:37:27.000000000","message":"I hear you and agree :-)","commit_id":"f8095703c19c5c49c5ba951baffb51b6a81e0dcd"},{"author":{"_account_id":17716,"name":"Luz Cazares","email":"luz.cazares@intel.com","username":"luzcazares"},"change_message_id":"f32e2cda1b574c4236a9c48c76de71f4e8b8f504","unresolved":false,"context_lines":[{"line_number":17,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"In RefStack, a product is an entry saved in the \"product\" table. Currently,"},{"line_number":20,"context_line":"RefStack dose not support the model where a product may have one to many"},{"line_number":21,"context_line":"product versions.  RefStack needs to update its database and object models to"},{"line_number":22,"context_line":"meet the product model described in the blueprint."},{"line_number":23,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"3ac371cc_d0adbb32","line":20,"range":{"start_line":20,"start_character":9,"end_line":20,"end_character":13},"updated":"2016-08-15 21:33:24.000000000","message":"nit s/dose/does/g","commit_id":"12978e2ce7b4462f02b0f53ed3b174f52b0ebb3e"},{"author":{"_account_id":10526,"name":"Catherine Diep","email":"cdiep@us.ibm.com","username":"cdiep"},"change_message_id":"c64d99e2c9dd9a53e66de32c937f0304c0cdd6a5","unresolved":false,"context_lines":[{"line_number":17,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"In RefStack, a product is an entry saved in the \"product\" table. Currently,"},{"line_number":20,"context_line":"RefStack dose not support the model where a product may have one to many"},{"line_number":21,"context_line":"product versions.  RefStack needs to update its database and object models to"},{"line_number":22,"context_line":"meet the product model described in the blueprint."},{"line_number":23,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"3ac371cc_52f54cc9","line":20,"range":{"start_line":20,"start_character":9,"end_line":20,"end_character":13},"in_reply_to":"3ac371cc_d0adbb32","updated":"2016-08-15 23:27:38.000000000","message":"done.  Thanks!","commit_id":"12978e2ce7b4462f02b0f53ed3b174f52b0ebb3e"},{"author":{"_account_id":10234,"name":"Andrey Pavlov","email":"andrey.mp@gmail.com","username":"andrey-mp"},"change_message_id":"ffc9bc8f014509ac815f9f4ac50a433b7bd856a2","unresolved":false,"context_lines":[{"line_number":4,"context_line":""},{"line_number":5,"context_line":"Launchpad blueprint: https://blueprints.launchpad.net/refstack/+spec/marketplace-product-model"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Requirement working document: https://goo.gl/bvo4FG"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Data model working document: https://goo.gl/zWYnoq"},{"line_number":10,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"3ac371cc_a601986c","line":7,"range":{"start_line":7,"start_character":30,"end_line":7,"end_character":51},"updated":"2016-08-17 08:42:35.000000000","message":"this link should be removed. this document describes another vision.","commit_id":"bb73a815eecc3e6f159bfa86f1dc5511d9c87172"},{"author":{"_account_id":10234,"name":"Andrey Pavlov","email":"andrey.mp@gmail.com","username":"andrey-mp"},"change_message_id":"ffc9bc8f014509ac815f9f4ac50a433b7bd856a2","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Requirement working document: https://goo.gl/bvo4FG"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Data model working document: https://goo.gl/zWYnoq"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"Based on the requirements listed in the blueprint, this spec defines the"},{"line_number":12,"context_line":"database and API updates needed to support the product model used by the"}],"source_content_type":"text/x-rst","patch_set":4,"id":"3ac371cc_86be1c63","line":9,"range":{"start_line":9,"start_character":29,"end_line":9,"end_character":50},"updated":"2016-08-17 08:42:35.000000000","message":"and I would like to make this reference was removed too.\nThese slides doesn\u0027t containt any information is related to this spec. And such slides are not fully official requirements.","commit_id":"bb73a815eecc3e6f159bfa86f1dc5511d9c87172"},{"author":{"_account_id":10526,"name":"Catherine Diep","email":"cdiep@us.ibm.com","username":"cdiep"},"change_message_id":"acb03f512f7b03f9458ee9a8a0c1f4a16eb3a616","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Requirement working document: https://goo.gl/bvo4FG"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Data model working document: https://goo.gl/zWYnoq"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"Based on the requirements listed in the blueprint, this spec defines the"},{"line_number":12,"context_line":"database and API updates needed to support the product model used by the"}],"source_content_type":"text/x-rst","patch_set":4,"id":"3ac371cc_456b4ff1","line":9,"range":{"start_line":9,"start_character":29,"end_line":9,"end_character":50},"in_reply_to":"3ac371cc_040b208f","updated":"2016-08-17 20:39:18.000000000","message":"@Andrey, \n\nMy apologies!  This is a link for Mitaka! The correct link should be  https://goo.gl/Lu70sw for Newton. Thanks for pointing this out.\n\nAfter all, your suggestion makes sense that specs should be self-contained and not rely on external document other than the blueprints.\n\nI will remove this link on the next patch.\n\nThanks again!","commit_id":"bb73a815eecc3e6f159bfa86f1dc5511d9c87172"},{"author":{"_account_id":10234,"name":"Andrey Pavlov","email":"andrey.mp@gmail.com","username":"andrey-mp"},"change_message_id":"c73ccdd206eefd882412d600e7d1545f071acc03","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Requirement working document: https://goo.gl/bvo4FG"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Data model working document: https://goo.gl/zWYnoq"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"Based on the requirements listed in the blueprint, this spec defines the"},{"line_number":12,"context_line":"database and API updates needed to support the product model used by the"}],"source_content_type":"text/x-rst","patch_set":4,"id":"3ac371cc_040b208f","line":9,"range":{"start_line":9,"start_character":29,"end_line":9,"end_character":50},"in_reply_to":"3ac371cc_1e840f5c","updated":"2016-08-17 18:12:32.000000000","message":"please open this link. it\u0027s another document.\n\nslide 5 - data permission check.\n...","commit_id":"bb73a815eecc3e6f159bfa86f1dc5511d9c87172"},{"author":{"_account_id":10526,"name":"Catherine Diep","email":"cdiep@us.ibm.com","username":"cdiep"},"change_message_id":"02dd15a6f8ed5e20d0cdeafde96c8d040ed53a7f","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Requirement working document: https://goo.gl/bvo4FG"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Data model working document: https://goo.gl/zWYnoq"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"Based on the requirements listed in the blueprint, this spec defines the"},{"line_number":12,"context_line":"database and API updates needed to support the product model used by the"}],"source_content_type":"text/x-rst","patch_set":4,"id":"3ac371cc_1e840f5c","line":9,"range":{"start_line":9,"start_character":29,"end_line":9,"end_character":50},"in_reply_to":"3ac371cc_86be1c63","updated":"2016-08-17 17:28:27.000000000","message":"As stated,  this is a working document for data model.  It is not intended to be an official document.  The requirements is documented in the blueprint.\n\nThe slides do contain information related to this spec.\n\n* Slide #5 gives a view of the tables as we have today using Entity Relationship Model.\n* Slide #6 gives a visualization of the requirements.\n* Slide #7 highlights in red the suggestion to add a new \"version\" table and 2 columns to the test table. \n\nThis is a working document since it is used as supporting document for this spec which seeks for approval by DefCore and the community.","commit_id":"bb73a815eecc3e6f159bfa86f1dc5511d9c87172"},{"author":{"_account_id":6287,"name":"David Lenwell","email":"dlenwell@gmail.com","username":"dlenwell"},"change_message_id":"791e80de385c8c8f7e8fad23f5eec455d4df85a6","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Requirement working document: https://goo.gl/bvo4FG"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Data model working document: https://goo.gl/zWYnoq"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"Based on the requirements listed in the blueprint, this spec defines the"},{"line_number":12,"context_line":"database and API updates needed to support the product model used by the"}],"source_content_type":"text/x-rst","patch_set":4,"id":"3ac371cc_1ec9af26","line":9,"range":{"start_line":9,"start_character":29,"end_line":9,"end_character":50},"in_reply_to":"3ac371cc_86be1c63","updated":"2016-08-17 20:44:16.000000000","message":"I agree that you shouldn\u0027t link to documents that can change in specs.. its a bad idea.. the information required to approve a spec should all be in the spec.","commit_id":"bb73a815eecc3e6f159bfa86f1dc5511d9c87172"},{"author":{"_account_id":10234,"name":"Andrey Pavlov","email":"andrey.mp@gmail.com","username":"andrey-mp"},"change_message_id":"f648bec23ee63481f1dff3909390bf23afc54442","unresolved":false,"context_lines":[{"line_number":48,"context_line":"between product and its versions.  In the case where the definition of a"},{"line_number":49,"context_line":"product is defined as: \"a product version is a product\", then this can be"},{"line_number":50,"context_line":"easily modeled by just adding a version field to the existing \"product\" table."},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"Data model impact"},{"line_number":53,"context_line":"-----------------"},{"line_number":54,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"3ac371cc_e1ac3d37","line":51,"updated":"2016-08-16 16:18:58.000000000","message":"Nevertheless, I would like to add this alternative variant.\n\njust add \u0027version\u0027 column to product table and create each time new product item in DB for new version.\n\nthis is a minimal change that allows to implement all described use-cases.\n\nAlso, in this case external link can be present to specific product\u0027s version.\nAll results, guidelines will be referred to specific product with version or without(version can be blank).","commit_id":"bb73a815eecc3e6f159bfa86f1dc5511d9c87172"},{"author":{"_account_id":10234,"name":"Andrey Pavlov","email":"andrey.mp@gmail.com","username":"andrey-mp"},"change_message_id":"b90eae97949c0e849b3ce29065a659b7b924b35b","unresolved":false,"context_lines":[{"line_number":48,"context_line":"between product and its versions.  In the case where the definition of a"},{"line_number":49,"context_line":"product is defined as: \"a product version is a product\", then this can be"},{"line_number":50,"context_line":"easily modeled by just adding a version field to the existing \"product\" table."},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"Data model impact"},{"line_number":53,"context_line":"-----------------"},{"line_number":54,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"3ac371cc_6b614739","line":51,"in_reply_to":"3ac371cc_5c16d6a7","updated":"2016-08-16 17:57:30.000000000","message":"1) No.\n2) yes.\n3) yes.\n4) no.\n\neach \u0027version X of product Y\u0027 will have own entry (or item) in DB.\nthis item will have unque product_id. (marketplace doesn\u0027t have products\u0027 identifiers)\neach item will have own name, description and other fields. most fields will be different - and some of them can be the same if user wants.","commit_id":"bb73a815eecc3e6f159bfa86f1dc5511d9c87172"},{"author":{"_account_id":10234,"name":"Andrey Pavlov","email":"andrey.mp@gmail.com","username":"andrey-mp"},"change_message_id":"ffc9bc8f014509ac815f9f4ac50a433b7bd856a2","unresolved":false,"context_lines":[{"line_number":48,"context_line":"between product and its versions.  In the case where the definition of a"},{"line_number":49,"context_line":"product is defined as: \"a product version is a product\", then this can be"},{"line_number":50,"context_line":"easily modeled by just adding a version field to the existing \"product\" table."},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"Data model impact"},{"line_number":53,"context_line":"-----------------"},{"line_number":54,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"3ac371cc_a9d4cbbc","line":51,"in_reply_to":"3ac371cc_6b614739","updated":"2016-08-17 08:42:35.000000000","message":"REST API:\nin case when each version X of product Y has own entry in DB then each entry has unqie product_id. and version API can\u0027t be created over the product API. moreover version API is not needed in this case. all needed changes - is to add \u0027version\u0027 field to product REST API (get, get_all, create, update).\nBut you care about user mistakes and don\u0027t want this way because user can send another name...\n\nI don\u0027t have enough arguments to explain why two tables version is not so good.\nand even absence of requirements in the blueprint about mistakes...","commit_id":"bb73a815eecc3e6f159bfa86f1dc5511d9c87172"},{"author":{"_account_id":11797,"name":"Gema Gomez-Solano","email":"gema.gomez-solano@linaro.org","username":"gema"},"change_message_id":"b2643f1c3c7acd2ddbbf75f0d58ae337d17326de","unresolved":false,"context_lines":[{"line_number":48,"context_line":"between product and its versions.  In the case where the definition of a"},{"line_number":49,"context_line":"product is defined as: \"a product version is a product\", then this can be"},{"line_number":50,"context_line":"easily modeled by just adding a version field to the existing \"product\" table."},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"Data model impact"},{"line_number":53,"context_line":"-----------------"},{"line_number":54,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"3ac371cc_fa9e2d61","line":51,"in_reply_to":"3ac371cc_89c61266","updated":"2016-08-18 11:58:14.000000000","message":"As per our discussion during the DefCore Midcycle, Catherine has explained perfectly in this example our requirement. One product may have no version associated with it, one version or many versions. We don\u0027t want to be prescriptive in this regard, just model what we are seeing in the market.","commit_id":"bb73a815eecc3e6f159bfa86f1dc5511d9c87172"},{"author":{"_account_id":10526,"name":"Catherine Diep","email":"cdiep@us.ibm.com","username":"cdiep"},"change_message_id":"483d605b08835a822392795cbab50728dbabfffd","unresolved":false,"context_lines":[{"line_number":48,"context_line":"between product and its versions.  In the case where the definition of a"},{"line_number":49,"context_line":"product is defined as: \"a product version is a product\", then this can be"},{"line_number":50,"context_line":"easily modeled by just adding a version field to the existing \"product\" table."},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"Data model impact"},{"line_number":53,"context_line":"-----------------"},{"line_number":54,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"3ac371cc_89c61266","line":51,"in_reply_to":"3ac371cc_a9d4cbbc","updated":"2016-08-17 16:14:01.000000000","message":"@Andrey,  Thanks so much for your review.  I know it is time consuming and I really appreciate it.\n\nLet\u0027s take a look at the DB entries based on your comments above.  That is:  each product has unique product_id and version, and name can be different or the same:\n\nEntries in the \"product\" table:\n\nproduct_id, name, version\n11111, MO, v6.0\n22222, MOS, v7.0\n33333, MO, v8.0\n\nMost likely, for end users, the search for a product with different versions will start with product name. So, do they search for MO or MOS?  How do we know that MO and MOS are one product or different products?\n\nFor the 2 tables implementation: \n\nEntries n the \"product\" table:\nR\nproduct_id, name\n11111, MO\n\nEntries in the \"version\" table:\n\nversion_id, version, product_id (FK)\n99999, v6.0, 11111\n88888, v7.0, 11111\n77777, v8.0, 11111\n\nUsers will use MO to search for the product and all versions can be retrieved.\n\nAs what have been shown. So far, adding one \"version\" column can not satisfy the requirement of \"1 product can have zero to many versions\".  Unti we can prove otherwise, adding a \"version\" table is the suitable option.","commit_id":"bb73a815eecc3e6f159bfa86f1dc5511d9c87172"},{"author":{"_account_id":10526,"name":"Catherine Diep","email":"cdiep@us.ibm.com","username":"cdiep"},"change_message_id":"343a1957d209a30a20f89487e7aeceea46560a15","unresolved":false,"context_lines":[{"line_number":48,"context_line":"between product and its versions.  In the case where the definition of a"},{"line_number":49,"context_line":"product is defined as: \"a product version is a product\", then this can be"},{"line_number":50,"context_line":"easily modeled by just adding a version field to the existing \"product\" table."},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"Data model impact"},{"line_number":53,"context_line":"-----------------"},{"line_number":54,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"3ac371cc_5c16d6a7","line":51,"in_reply_to":"3ac371cc_e1ac3d37","updated":"2016-08-16 16:33:19.000000000","message":"Here is my understanding of your suggestion:\n\n1) Add a \"version\" table\n2) Add a \"version\" column to the \"product\" table?\n3) An entry will be created in the \"product\" table each time a  product is created.\n4) An entry will be created in the \"version\" each time a \"version\" is created for a particular product.","commit_id":"bb73a815eecc3e6f159bfa86f1dc5511d9c87172"},{"author":{"_account_id":11797,"name":"Gema Gomez-Solano","email":"gema.gomez-solano@linaro.org","username":"gema"},"change_message_id":"b2643f1c3c7acd2ddbbf75f0d58ae337d17326de","unresolved":false,"context_lines":[{"line_number":94,"context_line":"REST API impact"},{"line_number":95,"context_line":"---------------"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"The following REST APIs will be added to RefStack."},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"**List product versions**"},{"line_number":100,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"3ac371cc_359e16b9","line":97,"range":{"start_line":97,"start_character":0,"end_line":97,"end_character":50},"updated":"2016-08-18 11:58:14.000000000","message":"Other than the addition of this new API, I wonder if there is any impact at all on the existing API.\n\n1. Will you need to modify the current product API to also list versions of the products when there are several versions of a product?\n2. What happens when you delete a product, will all its versions be deleted on cascade with it? Do you need to mention those changes here?","commit_id":"bb73a815eecc3e6f159bfa86f1dc5511d9c87172"},{"author":{"_account_id":10526,"name":"Catherine Diep","email":"cdiep@us.ibm.com","username":"cdiep"},"change_message_id":"92edb7103ff4d6721c1be2c25468e1b5eb4ef8e3","unresolved":false,"context_lines":[{"line_number":94,"context_line":"REST API impact"},{"line_number":95,"context_line":"---------------"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"The following REST APIs will be added to RefStack."},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"**List product versions**"},{"line_number":100,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"3ac371cc_fc16ff56","line":97,"range":{"start_line":97,"start_character":0,"end_line":97,"end_character":50},"in_reply_to":"3ac371cc_359e16b9","updated":"2016-08-18 23:24:10.000000000","message":"@Gema, Thanks for your review!\n\n1) On patch set [1] (line 356), there was suggestion to update the current product API to also list versions (in one API).  However, this is not absolutely necessary because we can always call 2 APIs (list product and list version).  If needed, we can write a different spec to modify the list product API. \n2) The entry of the version table has product_id as foreign key and is controlled by foreign key constraints.  The default is the parent entries cannot be deleted until all child entries are delete.\n\n[1] https://review.openstack.org/#/c/353903/1/specs/newton/approved/product-version-datamodel-api.rst","commit_id":"bb73a815eecc3e6f159bfa86f1dc5511d9c87172"},{"author":{"_account_id":10234,"name":"Andrey Pavlov","email":"andrey.mp@gmail.com","username":"andrey-mp"},"change_message_id":"2ee826fb12a835b3c6927052bf5e35fee4e3ba78","unresolved":false,"context_lines":[{"line_number":23,"context_line":"* Model:"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"  * Each product can have one to many versions."},{"line_number":26,"context_line":"  * Product name are unique per vendor."},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"* Vocabulary:"},{"line_number":29,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"1ac06dbe_b3b5b2ce","line":26,"range":{"start_line":26,"start_character":4,"end_line":26,"end_character":39},"updated":"2016-08-23 19:31:24.000000000","message":"nit: it\u0027s not related to this spec )","commit_id":"a7cec32875846dcc039483676cf2d5261abba8ee"},{"author":{"_account_id":10526,"name":"Catherine Diep","email":"cdiep@us.ibm.com","username":"cdiep"},"change_message_id":"b30814bedd23c99a86814737a4ba3c9d75e9071b","unresolved":false,"context_lines":[{"line_number":23,"context_line":"* Model:"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"  * Each product can have one to many versions."},{"line_number":26,"context_line":"  * Product name are unique per vendor."},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"* Vocabulary:"},{"line_number":29,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"1ac06dbe_af572725","line":26,"range":{"start_line":26,"start_character":4,"end_line":26,"end_character":39},"in_reply_to":"1ac06dbe_b3b5b2ce","updated":"2016-08-24 17:12:17.000000000","message":"Done.  Removed from the spec.","commit_id":"a7cec32875846dcc039483676cf2d5261abba8ee"},{"author":{"_account_id":7822,"name":"Chris Hoge (not involved in upstream development)","email":"chris@hogepodge.com","username":"hogepodge"},"change_message_id":"c891b07150ba5155b394305e0c08a0fc89c231c0","unresolved":false,"context_lines":[{"line_number":22,"context_line":""},{"line_number":23,"context_line":"* Model:"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"  * Each product can have one to many versions."},{"line_number":26,"context_line":"  * Product name are unique per vendor."},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"* Vocabulary:"}],"source_content_type":"text/x-rst","patch_set":6,"id":"1ac06dbe_166cd89a","line":25,"range":{"start_line":25,"start_character":17,"end_line":25,"end_character":20},"updated":"2016-08-23 19:07:29.000000000","message":"will","commit_id":"f02ecb84836c1136aa198b95aa8915112df36f2c"},{"author":{"_account_id":10526,"name":"Catherine Diep","email":"cdiep@us.ibm.com","username":"cdiep"},"change_message_id":"2a2a51f787737eb59bdcf97d20fb509b39343cd7","unresolved":false,"context_lines":[{"line_number":22,"context_line":""},{"line_number":23,"context_line":"* Model:"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"  * Each product can have one to many versions."},{"line_number":26,"context_line":"  * Product name are unique per vendor."},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"* Vocabulary:"}],"source_content_type":"text/x-rst","patch_set":6,"id":"1ac06dbe_ea358da8","line":25,"range":{"start_line":25,"start_character":17,"end_line":25,"end_character":20},"in_reply_to":"1ac06dbe_166cd89a","updated":"2016-08-24 17:21:42.000000000","message":"Done","commit_id":"f02ecb84836c1136aa198b95aa8915112df36f2c"},{"author":{"_account_id":7822,"name":"Chris Hoge (not involved in upstream development)","email":"chris@hogepodge.com","username":"hogepodge"},"change_message_id":"c891b07150ba5155b394305e0c08a0fc89c231c0","unresolved":false,"context_lines":[{"line_number":23,"context_line":"* Model:"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"  * Each product can have one to many versions."},{"line_number":26,"context_line":"  * Product name are unique per vendor."},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"* Vocabulary:"},{"line_number":29,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"1ac06dbe_f6fdbcb1","line":26,"updated":"2016-08-23 19:07:29.000000000","message":"Product version may be null.","commit_id":"f02ecb84836c1136aa198b95aa8915112df36f2c"},{"author":{"_account_id":10526,"name":"Catherine Diep","email":"cdiep@us.ibm.com","username":"cdiep"},"change_message_id":"2a2a51f787737eb59bdcf97d20fb509b39343cd7","unresolved":false,"context_lines":[{"line_number":23,"context_line":"* Model:"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"  * Each product can have one to many versions."},{"line_number":26,"context_line":"  * Product name are unique per vendor."},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"* Vocabulary:"},{"line_number":29,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"1ac06dbe_8aee99b2","line":26,"in_reply_to":"1ac06dbe_f6fdbcb1","updated":"2016-08-24 17:21:42.000000000","message":"This requirement will be removed based on the discussion at the weekly IRC meeting [1].  Although product name collision may be a possibility, we agree to revisit this in the future if needed. \n\n[1]http://eavesdrop.openstack.org/meetings/refstack/2016/refstack.2016-08-23-19.00.log.txt","commit_id":"f02ecb84836c1136aa198b95aa8915112df36f2c"},{"author":{"_account_id":7822,"name":"Chris Hoge (not involved in upstream development)","email":"chris@hogepodge.com","username":"hogepodge"},"change_message_id":"c891b07150ba5155b394305e0c08a0fc89c231c0","unresolved":false,"context_lines":[{"line_number":28,"context_line":"* Vocabulary:"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"  * product: a product is an entry on the marketplace website.  For example:"},{"line_number":31,"context_line":"    \"IBM Spectrum Scale for Object Storage\" [1] is a product."},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"* Use cases:"},{"line_number":34,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"1ac06dbe_f6149ce9","line":31,"updated":"2016-08-23 19:07:29.000000000","message":"Include language for version too, covering hypothetical distribution and public cloud, with versioned and null","commit_id":"f02ecb84836c1136aa198b95aa8915112df36f2c"},{"author":{"_account_id":10526,"name":"Catherine Diep","email":"cdiep@us.ibm.com","username":"cdiep"},"change_message_id":"2a2a51f787737eb59bdcf97d20fb509b39343cd7","unresolved":false,"context_lines":[{"line_number":28,"context_line":"* Vocabulary:"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"  * product: a product is an entry on the marketplace website.  For example:"},{"line_number":31,"context_line":"    \"IBM Spectrum Scale for Object Storage\" [1] is a product."},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"* Use cases:"},{"line_number":34,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"1ac06dbe_2a34c548","line":31,"in_reply_to":"1ac06dbe_f6149ce9","updated":"2016-08-24 17:21:42.000000000","message":"Done","commit_id":"f02ecb84836c1136aa198b95aa8915112df36f2c"},{"author":{"_account_id":9626,"name":"Paul Van Eck","email":"pvaneck@us.ibm.com","username":"pvaneck"},"change_message_id":"65580343c6c58dc45f9455325ea5e4474fee1f3b","unresolved":false,"context_lines":[{"line_number":69,"context_line":"column to the \"product\" table.  This is the most simple implementation with"},{"line_number":70,"context_line":"minimum changes.  Unfortunately, it does not support the required \"1 to N\""},{"line_number":71,"context_line":"relationship because an entry with user input product information will be"},{"line_number":72,"context_line":"created each time.  This is regarless of whether the user wants to create a"},{"line_number":73,"context_line":"new product or a new version for an existing product."},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"With this approach, each product is an entry in the \"product\" table with"}],"source_content_type":"text/x-rst","patch_set":6,"id":"1ac06dbe_015e9911","line":72,"range":{"start_line":72,"start_character":28,"end_line":72,"end_character":37},"updated":"2016-08-22 23:20:41.000000000","message":"typo \"regardless\"","commit_id":"f02ecb84836c1136aa198b95aa8915112df36f2c"},{"author":{"_account_id":9626,"name":"Paul Van Eck","email":"pvaneck@us.ibm.com","username":"pvaneck"},"change_message_id":"65580343c6c58dc45f9455325ea5e4474fee1f3b","unresolved":false,"context_lines":[{"line_number":122,"context_line":"  +------------------------+-------------+----------+"},{"line_number":123,"context_line":"  | version                | varchar(30) |          |"},{"line_number":124,"context_line":"  +------------------------+-------------+----------+"},{"line_number":125,"context_line":"  | description            | text        |          |"},{"line_number":126,"context_line":"  +------------------------+-------------+----------+"},{"line_number":127,"context_line":"  | product_id             | varchar(36) | FK       |"},{"line_number":128,"context_line":"  +------------------------+-------------+----------+"}],"source_content_type":"text/x-rst","patch_set":6,"id":"1ac06dbe_61df8d0d","line":125,"range":{"start_line":125,"start_character":4,"end_line":125,"end_character":15},"updated":"2016-08-22 23:20:41.000000000","message":"I don\u0027t think we really need this field as I don\u0027t feel it is needed for RefStack to manage/display version descriptions. These can be viewed on the actual vendor\u0027s product page/docs.","commit_id":"f02ecb84836c1136aa198b95aa8915112df36f2c"},{"author":{"_account_id":10526,"name":"Catherine Diep","email":"cdiep@us.ibm.com","username":"cdiep"},"change_message_id":"2a2a51f787737eb59bdcf97d20fb509b39343cd7","unresolved":false,"context_lines":[{"line_number":122,"context_line":"  +------------------------+-------------+----------+"},{"line_number":123,"context_line":"  | version                | varchar(30) |          |"},{"line_number":124,"context_line":"  +------------------------+-------------+----------+"},{"line_number":125,"context_line":"  | description            | text        |          |"},{"line_number":126,"context_line":"  +------------------------+-------------+----------+"},{"line_number":127,"context_line":"  | product_id             | varchar(36) | FK       |"},{"line_number":128,"context_line":"  +------------------------+-------------+----------+"}],"source_content_type":"text/x-rst","patch_set":6,"id":"1ac06dbe_0a390942","line":125,"range":{"start_line":125,"start_character":4,"end_line":125,"end_character":15},"in_reply_to":"1ac06dbe_61df8d0d","updated":"2016-08-24 17:21:42.000000000","message":"Done","commit_id":"f02ecb84836c1136aa198b95aa8915112df36f2c"}]}
