)]}'
{"specs/newton/approved/tag-instances.rst":[{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"9c1fc0fa889e2a244de4e232e6968e14161d32b7","unresolved":false,"context_lines":[{"line_number":42,"context_line":"users* to be able to tag their instances with simple strings."},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"Add a API microversion that allows a user to add, remove, and list tags"},{"line_number":45,"context_line":"for an instance."},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"Add a API microversion to allow searching for instances based on one"},{"line_number":48,"context_line":"or more string tags."}],"source_content_type":"text/x-rst","patch_set":2,"id":"1a122d0e_2497f23a","line":45,"updated":"2016-04-29 15:04:31.000000000","message":"what about booting an instance with tags already set?","commit_id":"84e083edac0723bda524121111af4ffe1144b346"},{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"9c1fc0fa889e2a244de4e232e6968e14161d32b7","unresolved":false,"context_lines":[{"line_number":64,"context_line":"of type `nova.objects.fields.ListOfStrings` that would be populated on-demand"},{"line_number":65,"context_line":"(i.e. lazy-loaded)."},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"A tag shall be defined as a Unicode bytestring no longer than 60 bytes in"},{"line_number":68,"context_line":"length."},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"The tag is an opaque string and is not intended to be interpreted or even"}],"source_content_type":"text/x-rst","patch_set":2,"id":"1a122d0e_24e532db","line":67,"range":{"start_line":67,"start_character":62,"end_line":67,"end_character":70},"updated":"2016-04-29 15:04:31.000000000","message":"why 60? Can we say characters instead to better support wide characters? In fact I see you specified UTF8 below so I think bytes is inaccurate.","commit_id":"84e083edac0723bda524121111af4ffe1144b346"},{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"9c1fc0fa889e2a244de4e232e6968e14161d32b7","unresolved":false,"context_lines":[{"line_number":80,"context_line":"* \u0027/\u0027 is **not** allowed to be in a tag name"},{"line_number":81,"context_line":"* Comma is **not** allowed to be in a tag name in order to simplify requests"},{"line_number":82,"context_line":"  that specify lists of tags"},{"line_number":83,"context_line":"* All other characters are allowed to be in a tag name"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":".. note::"},{"line_number":86,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"1a122d0e_27aed480","line":83,"updated":"2016-04-29 15:04:31.000000000","message":"Suggest printable characters to start with... limiting punctuation heavily would also be smart, EG to [-_.+:?]\n\nOh and consider outlawing at least leading/trailing whitespace, or searching by \"tags\u003da, b\" becomes ambiguous.","commit_id":"84e083edac0723bda524121111af4ffe1144b346"},{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"9c1fc0fa889e2a244de4e232e6968e14161d32b7","unresolved":false,"context_lines":[{"line_number":92,"context_line":""},{"line_number":93,"context_line":"For the database schema, the following table constructs would suffice ::"},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"    CREATE TABLE tags ("},{"line_number":96,"context_line":"        resource_id CHAR(32) NOT NULL PRIMARY KEY,"},{"line_number":97,"context_line":"        tag VARCHAR(60) NOT NULL CHARACTER SET utf8"},{"line_number":98,"context_line":"         COLLATION utf8_ci PRIMARY KEY,"}],"source_content_type":"text/x-rst","patch_set":2,"id":"1a122d0e_2707f418","line":95,"updated":"2016-04-29 15:04:31.000000000","message":"there\u0027s already a table called tags iirc","commit_id":"84e083edac0723bda524121111af4ffe1144b346"},{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"9c1fc0fa889e2a244de4e232e6968e14161d32b7","unresolved":false,"context_lines":[{"line_number":98,"context_line":"         COLLATION utf8_ci PRIMARY KEY,"},{"line_number":99,"context_line":"        CONSTRAINT resource_tag_constraint UNIQUE (resource_id, tag),"},{"line_number":100,"context_line":"        deleted_at DATETIME,"},{"line_number":101,"context_line":"        deleted INT DEFAULT 0"},{"line_number":102,"context_line":"    );"},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"There shall be a new hard-coded limit of 50 for the number of tags a user can"}],"source_content_type":"text/x-rst","patch_set":2,"id":"1a122d0e_0413d665","line":101,"updated":"2016-04-29 15:04:31.000000000","message":"do we really need soft delete on these?","commit_id":"84e083edac0723bda524121111af4ffe1144b346"},{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"9c1fc0fa889e2a244de4e232e6968e14161d32b7","unresolved":false,"context_lines":[{"line_number":102,"context_line":"    );"},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"There shall be a new hard-coded limit of 50 for the number of tags a user can"},{"line_number":105,"context_line":"use on a server. No need to make this configurable or use the quota system at"},{"line_number":106,"context_line":"this point."},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"REST API impact"}],"source_content_type":"text/x-rst","patch_set":2,"id":"1a122d0e_84dec6d7","line":105,"range":{"start_line":105,"start_character":9,"end_line":105,"end_character":15},"updated":"2016-04-29 15:04:31.000000000","message":"s/server/instance/ ?","commit_id":"84e083edac0723bda524121111af4ffe1144b346"},{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"9c1fc0fa889e2a244de4e232e6968e14161d32b7","unresolved":false,"context_lines":[{"line_number":108,"context_line":"REST API impact"},{"line_number":109,"context_line":"---------------"},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"This proposal would add a API microversion for retrieving and setting tags"},{"line_number":112,"context_line":"against an instance. In addition, it would add a API microversion to allow"},{"line_number":113,"context_line":"the searching/listing of instances based on one or more string tags."},{"line_number":114,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"1a122d0e_e4969aee","line":111,"range":{"start_line":111,"start_character":24,"end_line":111,"end_character":29},"updated":"2016-04-29 15:04:31.000000000","message":"nit an API","commit_id":"84e083edac0723bda524121111af4ffe1144b346"},{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"9c1fc0fa889e2a244de4e232e6968e14161d32b7","unresolved":false,"context_lines":[{"line_number":197,"context_line":""},{"line_number":198,"context_line":"Check if a tag exists or not on a server ::"},{"line_number":199,"context_line":""},{"line_number":200,"context_line":"    GET /servers/{server_id}/tags/{tag}"},{"line_number":201,"context_line":""},{"line_number":202,"context_line":"Returns `204 No Content` if tag exist on a server."},{"line_number":203,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"1a122d0e_6798ccc0","line":200,"updated":"2016-04-29 15:04:31.000000000","message":"this seems expensive, why not make them get the whole list and check themselves?","commit_id":"84e083edac0723bda524121111af4ffe1144b346"},{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"9c1fc0fa889e2a244de4e232e6968e14161d32b7","unresolved":false,"context_lines":[{"line_number":214,"context_line":""},{"line_number":215,"context_line":"    DELETE /servers/{server_id}/tags"},{"line_number":216,"context_line":""},{"line_number":217,"context_line":"Returns `204 No Content`."},{"line_number":218,"context_line":""},{"line_number":219,"context_line":"The API microversion that would allow searching/filtering of the `GET /servers`"},{"line_number":220,"context_line":"REST API call would add the following query parameters:"}],"source_content_type":"text/x-rst","patch_set":2,"id":"1a122d0e_a42dc2a9","line":217,"updated":"2016-04-29 15:04:31.000000000","message":"what if the last usage of a tag is removed? Does it linger in the DB forever? That\u0027s probably OK if you trust your users but you don\u0027t want malicious users of a public cloud filling up the DB with tags.","commit_id":"84e083edac0723bda524121111af4ffe1144b346"},{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"9c1fc0fa889e2a244de4e232e6968e14161d32b7","unresolved":false,"context_lines":[{"line_number":222,"context_line":"* `tags`"},{"line_number":223,"context_line":"* `tags-any`"},{"line_number":224,"context_line":"* `not-tags`"},{"line_number":225,"context_line":"* `not-tags-any`"},{"line_number":226,"context_line":""},{"line_number":227,"context_line":"To request the list of servers that have a single tag, ``tags`` argument"},{"line_number":228,"context_line":"should be set to the desired tag name. Example::"}],"source_content_type":"text/x-rst","patch_set":2,"id":"1a122d0e_a7ef84e7","line":225,"updated":"2016-04-29 15:04:31.000000000","message":"you could offer a trivial query language: (a,b|c,!b),d\n\nI really think this is simpler for the user than four query params, most will never have to use parens and can only use these simple forms:\n\n  tags: a,b\n  tags-any: a|b\n  not-tags: !a,!b\n  not-tags-any: !a|!b","commit_id":"84e083edac0723bda524121111af4ffe1144b346"},{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"9c1fc0fa889e2a244de4e232e6968e14161d32b7","unresolved":false,"context_lines":[{"line_number":225,"context_line":"* `not-tags-any`"},{"line_number":226,"context_line":""},{"line_number":227,"context_line":"To request the list of servers that have a single tag, ``tags`` argument"},{"line_number":228,"context_line":"should be set to the desired tag name. Example::"},{"line_number":229,"context_line":""},{"line_number":230,"context_line":"    GET /servers?tags\u003dred"},{"line_number":231,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"1a122d0e_076f58c4","line":228,"updated":"2016-04-29 15:04:31.000000000","message":"how will these react to unknown tag names?","commit_id":"84e083edac0723bda524121111af4ffe1144b346"},{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"9c1fc0fa889e2a244de4e232e6968e14161d32b7","unresolved":false,"context_lines":[{"line_number":283,"context_line":"Security impact"},{"line_number":284,"context_line":"---------------"},{"line_number":285,"context_line":""},{"line_number":286,"context_line":"None"},{"line_number":287,"context_line":""},{"line_number":288,"context_line":"Notifications impact"},{"line_number":289,"context_line":"--------------------"}],"source_content_type":"text/x-rst","patch_set":2,"id":"1a122d0e_67c60c9b","line":286,"updated":"2016-04-29 15:04:31.000000000","message":"not quite true, you\u0027re letting normal users insert text to the DB. There\u0027s at least a potential DoS and taint checking.","commit_id":"84e083edac0723bda524121111af4ffe1144b346"},{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"9c1fc0fa889e2a244de4e232e6968e14161d32b7","unresolved":false,"context_lines":[{"line_number":288,"context_line":"Notifications impact"},{"line_number":289,"context_line":"--------------------"},{"line_number":290,"context_line":""},{"line_number":291,"context_line":"None"},{"line_number":292,"context_line":""},{"line_number":293,"context_line":"Other end user impact"},{"line_number":294,"context_line":"---------------------"}],"source_content_type":"text/x-rst","patch_set":2,"id":"1a122d0e_c709e0de","line":291,"updated":"2016-04-29 15:04:31.000000000","message":"could be interesting if this was published but OK","commit_id":"84e083edac0723bda524121111af4ffe1144b346"},{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"9c1fc0fa889e2a244de4e232e6968e14161d32b7","unresolved":false,"context_lines":[{"line_number":299,"context_line":"------------------"},{"line_number":300,"context_line":""},{"line_number":301,"context_line":"None, though REGEXP-based querying on some fields might be modified to"},{"line_number":302,"context_line":"use a faster tag-list filtering query."},{"line_number":303,"context_line":""},{"line_number":304,"context_line":"Other deployer impact"},{"line_number":305,"context_line":"---------------------"}],"source_content_type":"text/x-rst","patch_set":2,"id":"1a122d0e_8a2d2d91","line":302,"updated":"2016-04-29 15:04:31.000000000","message":"Needing regex implies tags like \"nova-libvirt-ssd-k55\" which should be multiple tags. Also I\u0027m leery of exposing regex to normal users for performance/security reasons.","commit_id":"84e083edac0723bda524121111af4ffe1144b346"},{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"9c1fc0fa889e2a244de4e232e6968e14161d32b7","unresolved":false,"context_lines":[{"line_number":387,"context_line":"   * - Mitaka"},{"line_number":388,"context_line":"     - Implementation"},{"line_number":389,"context_line":"   * - Newton"},{"line_number":390,"context_line":"     - Implementation"}],"source_content_type":"text/x-rst","patch_set":2,"id":"1a122d0e_6a437142","line":390,"updated":"2016-04-29 15:04:31.000000000","message":"damn, guess I\u0027m late to the party :(","commit_id":"84e083edac0723bda524121111af4ffe1144b346"}]}
