)]}'
{"specs/newton/approved/glance/glare-api.rst":[{"author":{"_account_id":17116,"name":"Niall Bunting","email":"niall.bunting@hpe.com","username":"NiallBunting"},"change_message_id":"b90f0b69acf08f13dd6d3a92f7d5c47fdebecc6c","unresolved":false,"context_lines":[{"line_number":925,"context_line":"Alternatives"},{"line_number":926,"context_line":"------------"},{"line_number":927,"context_line":""},{"line_number":928,"context_line":"We need to address API-WG and DefCore comments anyway, so there are no"},{"line_number":929,"context_line":"alternatives here."},{"line_number":930,"context_line":""},{"line_number":931,"context_line":"Data model impact"}],"source_content_type":"text/x-rst","patch_set":16,"id":"1aa78d24_5440f906","line":928,"range":{"start_line":928,"start_character":18,"end_line":928,"end_character":53},"updated":"2016-07-07 15:35:30.000000000","message":"What are these comments? In the future it may not be as clear.","commit_id":"63886e7f5014e56d1b2ef927a96df23f2fa571b0"},{"author":{"_account_id":11391,"name":"Mikhail Fedosin","email":"mfedosin@redhat.com","username":"fedosinme"},"change_message_id":"26c1fcb03982890981f5be5f610a122af3e60e16","unresolved":false,"context_lines":[{"line_number":925,"context_line":"Alternatives"},{"line_number":926,"context_line":"------------"},{"line_number":927,"context_line":""},{"line_number":928,"context_line":"We need to address API-WG and DefCore comments anyway, so there are no"},{"line_number":929,"context_line":"alternatives here."},{"line_number":930,"context_line":""},{"line_number":931,"context_line":"Data model impact"}],"source_content_type":"text/x-rst","patch_set":16,"id":"1aa78d24_3f3fd8d7","line":928,"range":{"start_line":928,"start_character":18,"end_line":928,"end_character":53},"in_reply_to":"1aa78d24_5440f906","updated":"2016-07-08 10:51:18.000000000","message":"It\u0027s not easy to copy all of them here... You can walk through comments to this spec and read it more detailed. But in short API-WG recommends to follow their guidelines (this is exactly what we are doing) and DefCore recommends to listen to API-WG and get more adoption across OpenStack.","commit_id":"63886e7f5014e56d1b2ef927a96df23f2fa571b0"},{"author":{"_account_id":17116,"name":"Niall Bunting","email":"niall.bunting@hpe.com","username":"NiallBunting"},"change_message_id":"b90f0b69acf08f13dd6d3a92f7d5c47fdebecc6c","unresolved":false,"context_lines":[{"line_number":927,"context_line":""},{"line_number":928,"context_line":"We need to address API-WG and DefCore comments anyway, so there are no"},{"line_number":929,"context_line":"alternatives here."},{"line_number":930,"context_line":""},{"line_number":931,"context_line":"Data model impact"},{"line_number":932,"context_line":"-----------------"},{"line_number":933,"context_line":""}],"source_content_type":"text/x-rst","patch_set":16,"id":"1aa78d24_14bdd1d7","line":930,"updated":"2016-07-07 15:35:30.000000000","message":"Would an alternative be to create a new project to do this?","commit_id":"63886e7f5014e56d1b2ef927a96df23f2fa571b0"},{"author":{"_account_id":11391,"name":"Mikhail Fedosin","email":"mfedosin@redhat.com","username":"fedosinme"},"change_message_id":"26c1fcb03982890981f5be5f610a122af3e60e16","unresolved":false,"context_lines":[{"line_number":927,"context_line":""},{"line_number":928,"context_line":"We need to address API-WG and DefCore comments anyway, so there are no"},{"line_number":929,"context_line":"alternatives here."},{"line_number":930,"context_line":""},{"line_number":931,"context_line":"Data model impact"},{"line_number":932,"context_line":"-----------------"},{"line_number":933,"context_line":""}],"source_content_type":"text/x-rst","patch_set":16,"id":"1aa78d24_1fdc9c17","line":930,"in_reply_to":"1aa78d24_14bdd1d7","updated":"2016-07-08 10:51:18.000000000","message":"This spec describes only API and it has nothing in common with implementation and where the code will be located.","commit_id":"63886e7f5014e56d1b2ef927a96df23f2fa571b0"},{"author":{"_account_id":17116,"name":"Niall Bunting","email":"niall.bunting@hpe.com","username":"NiallBunting"},"change_message_id":"b90f0b69acf08f13dd6d3a92f7d5c47fdebecc6c","unresolved":false,"context_lines":[{"line_number":1550,"context_line":""},{"line_number":1551,"context_line":"Since the Glare v 0.1 API is EXPERIMENTAL, developers should be prepared for"},{"line_number":1552,"context_line":"its deprecation."},{"line_number":1553,"context_line":""},{"line_number":1554,"context_line":""},{"line_number":1555,"context_line":"Implementation"},{"line_number":1556,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":16,"id":"1aa78d24_94fb8178","line":1553,"updated":"2016-07-07 15:35:30.000000000","message":"Could cause confusion within openstack/glance between glance and glare code. Especially for new contributors.","commit_id":"63886e7f5014e56d1b2ef927a96df23f2fa571b0"},{"author":{"_account_id":11391,"name":"Mikhail Fedosin","email":"mfedosin@redhat.com","username":"fedosinme"},"change_message_id":"26c1fcb03982890981f5be5f610a122af3e60e16","unresolved":false,"context_lines":[{"line_number":1550,"context_line":""},{"line_number":1551,"context_line":"Since the Glare v 0.1 API is EXPERIMENTAL, developers should be prepared for"},{"line_number":1552,"context_line":"its deprecation."},{"line_number":1553,"context_line":""},{"line_number":1554,"context_line":""},{"line_number":1555,"context_line":"Implementation"},{"line_number":1556,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":16,"id":"1aa78d24_7facc035","line":1553,"in_reply_to":"1aa78d24_94fb8178","updated":"2016-07-08 10:51:18.000000000","message":"The Glare\u0027s v0.1 code was merged about 6 month ago and I haven\u0027t heard about confused developers :) And again, this topic is not related to this spec, because we\u0027re describing API, not code implementation.","commit_id":"63886e7f5014e56d1b2ef927a96df23f2fa571b0"}],"specs/newton/glare-api.rst":[{"author":{"_account_id":9775,"name":"Sudipta Biswas","email":"sbiswas7@in.ibm.com","username":"sudswas"},"change_message_id":"0d00fcdf48671d41073f8da9096a6a8a12fd4191","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":"Glare needs stable API that satisfy requirements of API-WG and DefCore."},{"line_number":20,"context_line":"Also Glare must implement OpenStack Image API v2."},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"Proposed change"},{"line_number":23,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":1,"id":"bae84128_f6a516a2","line":20,"updated":"2016-02-29 17:30:30.000000000","message":"s/API v2/v2 API","commit_id":"34e4132b5edb950aa73ced0b4e2542ac4573c744"},{"author":{"_account_id":9775,"name":"Sudipta Biswas","email":"sbiswas7@in.ibm.com","username":"sudswas"},"change_message_id":"0d00fcdf48671d41073f8da9096a6a8a12fd4191","unresolved":false,"context_lines":[{"line_number":25,"context_line":"This specification aims to solve the described problem by complete refactoring"},{"line_number":26,"context_line":"of Glance Artifact Repository API and changing calls to Glare service."},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"The behavior of the servers and API calls for Glare will be changed."},{"line_number":29,"context_line":"To describe service behavior after refactoring in details we prepared some"},{"line_number":30,"context_line":"glossary and list of Use Cases."},{"line_number":31,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"9aed3d3a_37c6479a","line":28,"updated":"2016-02-29 17:30:30.000000000","message":"Can you re-word this sentence?","commit_id":"34e4132b5edb950aa73ced0b4e2542ac4573c744"},{"author":{"_account_id":9775,"name":"Sudipta Biswas","email":"sbiswas7@in.ibm.com","username":"sudswas"},"change_message_id":"0d00fcdf48671d41073f8da9096a6a8a12fd4191","unresolved":false,"context_lines":[{"line_number":35,"context_line":"* *Glare* - represents Glare service deployed within OpenStack."},{"line_number":36,"context_line":"* *User* - Glare user who wants to consume Glare artifacts. User should be"},{"line_number":37,"context_line":"  created in Keystone under some project and domain."},{"line_number":38,"context_line":"* *Cloud Admin* - person who responsible for Glare administration and support"},{"line_number":39,"context_line":"  within OpenStack."},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"**Glossary**"}],"source_content_type":"text/x-rst","patch_set":1,"id":"9aed3d3a_d75a7bf1","line":38,"updated":"2016-02-29 17:30:30.000000000","message":"A person who is..","commit_id":"34e4132b5edb950aa73ced0b4e2542ac4573c744"},{"author":{"_account_id":9775,"name":"Sudipta Biswas","email":"sbiswas7@in.ibm.com","username":"sudswas"},"change_message_id":"0d00fcdf48671d41073f8da9096a6a8a12fd4191","unresolved":false,"context_lines":[{"line_number":52,"context_line":"  in Glare is: Heat templates, Murano Packages, Nova Images, Tacker VNFs and"},{"line_number":53,"context_line":"  so on."},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"* *Artifact status* - specifies the state of the artifact and the possible"},{"line_number":56,"context_line":"  actions that can be done with it. List of possible artifact statuses:"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"  * *queued* - Artifact created but not activated, so it can be changed by"}],"source_content_type":"text/x-rst","patch_set":1,"id":"9aed3d3a_2a97fe48","line":55,"updated":"2016-02-29 17:30:30.000000000","message":"suggestion (reword): specifies the state of the artifact and various actions that could be performed by ? on it.","commit_id":"34e4132b5edb950aa73ced0b4e2542ac4573c744"},{"author":{"_account_id":9775,"name":"Sudipta Biswas","email":"sbiswas7@in.ibm.com","username":"sudswas"},"change_message_id":"0d00fcdf48671d41073f8da9096a6a8a12fd4191","unresolved":false,"context_lines":[{"line_number":55,"context_line":"* *Artifact status* - specifies the state of the artifact and the possible"},{"line_number":56,"context_line":"  actions that can be done with it. List of possible artifact statuses:"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"  * *queued* - Artifact created but not activated, so it can be changed by"},{"line_number":59,"context_line":"    Artifact owner."},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"  * *active* - Artifact activated, immutable properties cannot be changed."}],"source_content_type":"text/x-rst","patch_set":1,"id":"9aed3d3a_caf5b2ed","line":58,"updated":"2016-02-29 17:30:30.000000000","message":"Is it a good idea to also state - what states it could be changed to?","commit_id":"34e4132b5edb950aa73ced0b4e2542ac4573c744"},{"author":{"_account_id":9775,"name":"Sudipta Biswas","email":"sbiswas7@in.ibm.com","username":"sudswas"},"change_message_id":"0d00fcdf48671d41073f8da9096a6a8a12fd4191","unresolved":false,"context_lines":[{"line_number":61,"context_line":"  * *active* - Artifact activated, immutable properties cannot be changed."},{"line_number":62,"context_line":"    Artifact available for download to other Users."},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"  * *deactivated* - Artifact is not available to other users except"},{"line_number":65,"context_line":"    administrators, used when Cloud Admin need to check the artifact."},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"  * *deleted* - Artifact deleted."}],"source_content_type":"text/x-rst","patch_set":1,"id":"9aed3d3a_6a53c6e2","line":64,"updated":"2016-02-29 17:30:30.000000000","message":"suggestion: used when cloud administrator needs to inspect the artifact.","commit_id":"34e4132b5edb950aa73ced0b4e2542ac4573c744"},{"author":{"_account_id":9775,"name":"Sudipta Biswas","email":"sbiswas7@in.ibm.com","username":"sudswas"},"change_message_id":"0d00fcdf48671d41073f8da9096a6a8a12fd4191","unresolved":false,"context_lines":[{"line_number":122,"context_line":""},{"line_number":123,"context_line":"  * structured type *Dict*."},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"* *Artifact Dependency* - property that defines dependency of the Artifact from"},{"line_number":126,"context_line":"  another Artifact. It is url that allows user to obtain some Artifact"},{"line_number":127,"context_line":"  data. For external dependency the format is the following:"},{"line_number":128,"context_line":"  *http(s)://\u003cnetloc\u003e/\u003cpath\u003e*"}],"source_content_type":"text/x-rst","patch_set":1,"id":"9aed3d3a_eafb5679","line":125,"updated":"2016-02-29 17:30:30.000000000","message":"Does it mean - that for a given artifact, artifact dependency states the necessary artifact needed by it? Can you pls better explain the *need* for dependency artifact?","commit_id":"34e4132b5edb950aa73ced0b4e2542ac4573c744"},{"author":{"_account_id":9775,"name":"Sudipta Biswas","email":"sbiswas7@in.ibm.com","username":"sudswas"},"change_message_id":"0d00fcdf48671d41073f8da9096a6a8a12fd4191","unresolved":false,"context_lines":[{"line_number":133,"context_line":"  All that Glare will do is request GET with dependency to receive Artifact"},{"line_number":134,"context_line":"  info."},{"line_number":135,"context_line":""},{"line_number":136,"context_line":"* *Artifact Blob Property* - property that defines binary data for Artifact."},{"line_number":137,"context_line":"  User can download Artifact blob from Glare. Each blob property has a flag"},{"line_number":138,"context_line":"  *external*, that indicates if the property was created during file upload"},{"line_number":139,"context_line":"  (False) or by direct user request (True). In other words, “external” means"}],"source_content_type":"text/x-rst","patch_set":1,"id":"9aed3d3a_8a50ca33","line":136,"updated":"2016-02-29 17:30:30.000000000","message":"Could you pls explain the co-relation between the status values available for the blob properties and the status explained above in the table? (L69) It seems like - there are two status keys - one for the status of the artifact type and the other for the blob status?","commit_id":"34e4132b5edb950aa73ced0b4e2542ac4573c744"},{"author":{"_account_id":14676,"name":"Kairat Kushaev","email":"kkushaev@mirantis.com","username":"kairat_kushaev"},"change_message_id":"48c77fe6a914709abd0c508e08d0c8c4399e06c7","unresolved":false,"context_lines":[{"line_number":372,"context_line":""},{"line_number":373,"context_line":"    * Artifact has ‘queued’ status."},{"line_number":374,"context_line":""},{"line_number":375,"context_line":"  *Steps:*"},{"line_number":376,"context_line":""},{"line_number":377,"context_line":"  *Success condition:* Artifact blob has been successfully uploaded to Glare."},{"line_number":378,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"9aed3d3a_8c185886","line":375,"updated":"2016-02-26 13:19:30.000000000","message":"Looks like we need to put this under Success condition.","commit_id":"34e4132b5edb950aa73ced0b4e2542ac4573c744"},{"author":{"_account_id":11391,"name":"Mikhail Fedosin","email":"mfedosin@redhat.com","username":"fedosinme"},"change_message_id":"909fe2fc0e21dd36e359afebe7dbf9b3bf827441","unresolved":false,"context_lines":[{"line_number":372,"context_line":""},{"line_number":373,"context_line":"    * Artifact has ‘queued’ status."},{"line_number":374,"context_line":""},{"line_number":375,"context_line":"  *Steps:*"},{"line_number":376,"context_line":""},{"line_number":377,"context_line":"  *Success condition:* Artifact blob has been successfully uploaded to Glare."},{"line_number":378,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"9aed3d3a_59bd0c01","line":375,"in_reply_to":"9aed3d3a_8c185886","updated":"2016-02-29 15:21:09.000000000","message":"Done","commit_id":"34e4132b5edb950aa73ced0b4e2542ac4573c744"},{"author":{"_account_id":9775,"name":"Sudipta Biswas","email":"sbiswas7@in.ibm.com","username":"sudswas"},"change_message_id":"0d00fcdf48671d41073f8da9096a6a8a12fd4191","unresolved":false,"context_lines":[{"line_number":409,"context_line":""},{"line_number":410,"context_line":"    4A. Artifact quota per tenant exceed (413 HTTPRequestEntityTooLarge)."},{"line_number":411,"context_line":""},{"line_number":412,"context_line":"    4B. Blob upload failed. Glare initiates Blob killing and responds with"},{"line_number":413,"context_line":"    appropriate error (depends on backend error)."},{"line_number":414,"context_line":""},{"line_number":415,"context_line":"* **Use Case 8.** Add a custom location for artifact."}],"source_content_type":"text/x-rst","patch_set":1,"id":"9aed3d3a_cdadcc9c","line":412,"updated":"2016-02-29 17:30:30.000000000","message":"What happens when a simultaneous blob upload of the same data to the same artifact is performed?","commit_id":"34e4132b5edb950aa73ced0b4e2542ac4573c744"},{"author":{"_account_id":10670,"name":"Michael McCune","email":"elmiko@redhat.com","username":"mimccune"},"change_message_id":"c9ef8fed165377e625dc7c2481868e678529b609","unresolved":false,"context_lines":[{"line_number":512,"context_line":"  *Steps:*"},{"line_number":513,"context_line":""},{"line_number":514,"context_line":"  1. User requests for Artifact property, blob property or dependency update"},{"line_number":515,"context_line":"     (PATCH /v1/artifacts/{artifact_type}/{artifacts_id})."},{"line_number":516,"context_line":""},{"line_number":517,"context_line":"  2. Glare updates required properties (200 OK)."},{"line_number":518,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"9aed3d3a_002c3249","line":515,"range":{"start_line":515,"start_character":6,"end_line":515,"end_character":56},"updated":"2016-02-25 23:40:31.000000000","message":"i am curious to know about how you will define the PATCH update json, will it be something like json-patch or a simply key:value replacement?\n\nalso, is this something that might conform to the metadata guideline[1]?\n\n[1]:http://specs.openstack.org/openstack/api-wg/guidelines/metadata.html","commit_id":"34e4132b5edb950aa73ced0b4e2542ac4573c744"},{"author":{"_account_id":11391,"name":"Mikhail Fedosin","email":"mfedosin@redhat.com","username":"fedosinme"},"change_message_id":"909fe2fc0e21dd36e359afebe7dbf9b3bf827441","unresolved":false,"context_lines":[{"line_number":512,"context_line":"  *Steps:*"},{"line_number":513,"context_line":""},{"line_number":514,"context_line":"  1. User requests for Artifact property, blob property or dependency update"},{"line_number":515,"context_line":"     (PATCH /v1/artifacts/{artifact_type}/{artifacts_id})."},{"line_number":516,"context_line":""},{"line_number":517,"context_line":"  2. Glare updates required properties (200 OK)."},{"line_number":518,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"9aed3d3a_7933b0ab","line":515,"range":{"start_line":515,"start_character":6,"end_line":515,"end_character":56},"in_reply_to":"9aed3d3a_002c3249","updated":"2016-02-29 15:21:09.000000000","message":"It will be a json-patch, like it\u0027s done in glance v2.\nhttps://specs.openstack.org/openstack/glance-specs/specs/api/v2/http-patch-image-api-v2.html\n\nAlso Glance doesn\u0027t support metadata for Images, so I wouldn\u0027t add it to unified Glare API.","commit_id":"34e4132b5edb950aa73ced0b4e2542ac4573c744"},{"author":{"_account_id":10670,"name":"Michael McCune","email":"elmiko@redhat.com","username":"mimccune"},"change_message_id":"c9ef8fed165377e625dc7c2481868e678529b609","unresolved":false,"context_lines":[{"line_number":538,"context_line":"  *Steps:*"},{"line_number":539,"context_line":""},{"line_number":540,"context_line":"  1. User requests for Artifact property or dependency update"},{"line_number":541,"context_line":"     (PATCH /v1/artifacts/{artifact_type}/{artifacts_id})."},{"line_number":542,"context_line":""},{"line_number":543,"context_line":"  2. Glare checks  if dependency is mutable and can be updated."},{"line_number":544,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"9aed3d3a_80ce8281","line":541,"range":{"start_line":541,"start_character":6,"end_line":541,"end_character":56},"updated":"2016-02-25 23:40:31.000000000","message":"same question here too","commit_id":"34e4132b5edb950aa73ced0b4e2542ac4573c744"},{"author":{"_account_id":10670,"name":"Michael McCune","email":"elmiko@redhat.com","username":"mimccune"},"change_message_id":"c9ef8fed165377e625dc7c2481868e678529b609","unresolved":false,"context_lines":[{"line_number":610,"context_line":"  *Steps:*"},{"line_number":611,"context_line":""},{"line_number":612,"context_line":"  1. User requests for Artifact blob delete"},{"line_number":613,"context_line":"     (PATCH /v1/artifacts/{artifact_type}/{artifacts_id}/blobs/{blob_name})."},{"line_number":614,"context_line":""},{"line_number":615,"context_line":"  2. Glare changes blob record status to ‘deleted’."},{"line_number":616,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"9aed3d3a_20b056f4","line":613,"range":{"start_line":613,"start_character":6,"end_line":613,"end_character":74},"updated":"2016-02-25 23:40:31.000000000","message":"i think this should just be:\n\n    DELETE /v1/artifacts/{artifact_type}/{artifacts_id}/blobs/{blob_name}","commit_id":"34e4132b5edb950aa73ced0b4e2542ac4573c744"},{"author":{"_account_id":11391,"name":"Mikhail Fedosin","email":"mfedosin@redhat.com","username":"fedosinme"},"change_message_id":"909fe2fc0e21dd36e359afebe7dbf9b3bf827441","unresolved":false,"context_lines":[{"line_number":610,"context_line":"  *Steps:*"},{"line_number":611,"context_line":""},{"line_number":612,"context_line":"  1. User requests for Artifact blob delete"},{"line_number":613,"context_line":"     (PATCH /v1/artifacts/{artifact_type}/{artifacts_id}/blobs/{blob_name})."},{"line_number":614,"context_line":""},{"line_number":615,"context_line":"  2. Glare changes blob record status to ‘deleted’."},{"line_number":616,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"9aed3d3a_747bb78c","line":613,"range":{"start_line":613,"start_character":6,"end_line":613,"end_character":74},"in_reply_to":"9aed3d3a_20b056f4","updated":"2016-02-29 15:21:09.000000000","message":"Done","commit_id":"34e4132b5edb950aa73ced0b4e2542ac4573c744"},{"author":{"_account_id":10670,"name":"Michael McCune","email":"elmiko@redhat.com","username":"mimccune"},"change_message_id":"c9ef8fed165377e625dc7c2481868e678529b609","unresolved":false,"context_lines":[{"line_number":646,"context_line":"  *Steps:*"},{"line_number":647,"context_line":""},{"line_number":648,"context_line":"  1. User requests for Artifact blob delete"},{"line_number":649,"context_line":"     (PATCH /v1/artifacts/{artifact_type}/{artifacts_id}/blobs/{blob_name})."},{"line_number":650,"context_line":""},{"line_number":651,"context_line":"  2. Glare changes blob record status to ‘deleted’ and removes file from"},{"line_number":652,"context_line":"     store backend."}],"source_content_type":"text/x-rst","patch_set":1,"id":"9aed3d3a_60925e59","line":649,"range":{"start_line":649,"start_character":6,"end_line":649,"end_character":74},"updated":"2016-02-25 23:40:31.000000000","message":"same, DELETE","commit_id":"34e4132b5edb950aa73ced0b4e2542ac4573c744"},{"author":{"_account_id":11391,"name":"Mikhail Fedosin","email":"mfedosin@redhat.com","username":"fedosinme"},"change_message_id":"909fe2fc0e21dd36e359afebe7dbf9b3bf827441","unresolved":false,"context_lines":[{"line_number":646,"context_line":"  *Steps:*"},{"line_number":647,"context_line":""},{"line_number":648,"context_line":"  1. User requests for Artifact blob delete"},{"line_number":649,"context_line":"     (PATCH /v1/artifacts/{artifact_type}/{artifacts_id}/blobs/{blob_name})."},{"line_number":650,"context_line":""},{"line_number":651,"context_line":"  2. Glare changes blob record status to ‘deleted’ and removes file from"},{"line_number":652,"context_line":"     store backend."}],"source_content_type":"text/x-rst","patch_set":1,"id":"9aed3d3a_aea16bfa","line":649,"range":{"start_line":649,"start_character":6,"end_line":649,"end_character":74},"in_reply_to":"9aed3d3a_60925e59","updated":"2016-02-29 15:21:09.000000000","message":"Done","commit_id":"34e4132b5edb950aa73ced0b4e2542ac4573c744"},{"author":{"_account_id":10670,"name":"Michael McCune","email":"elmiko@redhat.com","username":"mimccune"},"change_message_id":"c9ef8fed165377e625dc7c2481868e678529b609","unresolved":false,"context_lines":[{"line_number":683,"context_line":"  *Steps:*"},{"line_number":684,"context_line":""},{"line_number":685,"context_line":"  1. User requests for Artifact blob delete"},{"line_number":686,"context_line":"     (PATCH /v1/artifacts/{artifact_type}/{artifacts_id}/blobs/{blob_name})."},{"line_number":687,"context_line":""},{"line_number":688,"context_line":"  2. Glare changes blob record status to ‘pending_delete’."},{"line_number":689,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"9aed3d3a_807cc221","line":686,"range":{"start_line":686,"start_character":6,"end_line":686,"end_character":74},"updated":"2016-02-25 23:40:31.000000000","message":"same, DELETE","commit_id":"34e4132b5edb950aa73ced0b4e2542ac4573c744"},{"author":{"_account_id":11391,"name":"Mikhail Fedosin","email":"mfedosin@redhat.com","username":"fedosinme"},"change_message_id":"909fe2fc0e21dd36e359afebe7dbf9b3bf827441","unresolved":false,"context_lines":[{"line_number":683,"context_line":"  *Steps:*"},{"line_number":684,"context_line":""},{"line_number":685,"context_line":"  1. User requests for Artifact blob delete"},{"line_number":686,"context_line":"     (PATCH /v1/artifacts/{artifact_type}/{artifacts_id}/blobs/{blob_name})."},{"line_number":687,"context_line":""},{"line_number":688,"context_line":"  2. Glare changes blob record status to ‘pending_delete’."},{"line_number":689,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"9aed3d3a_ee7093a6","line":686,"range":{"start_line":686,"start_character":6,"end_line":686,"end_character":74},"in_reply_to":"9aed3d3a_807cc221","updated":"2016-02-29 15:21:09.000000000","message":"Done","commit_id":"34e4132b5edb950aa73ced0b4e2542ac4573c744"},{"author":{"_account_id":10670,"name":"Michael McCune","email":"elmiko@redhat.com","username":"mimccune"},"change_message_id":"c9ef8fed165377e625dc7c2481868e678529b609","unresolved":false,"context_lines":[{"line_number":984,"context_line":"  *Steps:*"},{"line_number":985,"context_line":""},{"line_number":986,"context_line":"  1. User specifies tag name and Artifact identifier."},{"line_number":987,"context_line":"     (PUT /v1/artifacts/{artifact_type}/{artifacts_id}/tags/{tag_name})"},{"line_number":988,"context_line":""},{"line_number":989,"context_line":"  2. Glare adds tag to the Artifact (204 No Content)."},{"line_number":990,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"9aed3d3a_60d89ef0","line":987,"range":{"start_line":987,"start_character":6,"end_line":987,"end_character":70},"updated":"2016-02-25 23:40:31.000000000","message":"i am not sure what the data you are passing on this call looks like, or if there is any, but for creating resources i usually expect a POST to something.\n\nthis feels much like the metadata issue","commit_id":"34e4132b5edb950aa73ced0b4e2542ac4573c744"},{"author":{"_account_id":11391,"name":"Mikhail Fedosin","email":"mfedosin@redhat.com","username":"fedosinme"},"change_message_id":"909fe2fc0e21dd36e359afebe7dbf9b3bf827441","unresolved":false,"context_lines":[{"line_number":984,"context_line":"  *Steps:*"},{"line_number":985,"context_line":""},{"line_number":986,"context_line":"  1. User specifies tag name and Artifact identifier."},{"line_number":987,"context_line":"     (PUT /v1/artifacts/{artifact_type}/{artifacts_id}/tags/{tag_name})"},{"line_number":988,"context_line":""},{"line_number":989,"context_line":"  2. Glare adds tag to the Artifact (204 No Content)."},{"line_number":990,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"9aed3d3a_14c7cb96","line":987,"range":{"start_line":987,"start_character":6,"end_line":987,"end_character":70},"in_reply_to":"9aed3d3a_60d89ef0","updated":"2016-02-29 15:21:09.000000000","message":"API-WG guidelines recommend to use PUT https://specs.openstack.org/openstack/api-wg/guidelines/tags.html\n\nAlso, it\u0027s a compatibility with glance v2 api.","commit_id":"34e4132b5edb950aa73ced0b4e2542ac4573c744"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"9d580eecc20670cd31327e6f91ded5ff390c31f6","unresolved":false,"context_lines":[{"line_number":35,"context_line":"* *Glare* - represents Glare service deployed within OpenStack."},{"line_number":36,"context_line":"* *User* - Glare user who wants to consume Glare artifacts. User should be"},{"line_number":37,"context_line":"  created in Keystone under some project and domain."},{"line_number":38,"context_line":"* *Cloud Admin* - person who responsible for Glare administration and support"},{"line_number":39,"context_line":"  within OpenStack."},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"**Glossary**"}],"source_content_type":"text/x-rst","patch_set":2,"id":"ba0121b8_78efb6b0","line":38,"range":{"start_line":38,"start_character":25,"end_line":38,"end_character":28},"updated":"2016-03-28 20:20:24.000000000","message":"s/who /who is /","commit_id":"21a9d2b5409d645fa4d6f3afb716671480f82e4e"},{"author":{"_account_id":11391,"name":"Mikhail Fedosin","email":"mfedosin@redhat.com","username":"fedosinme"},"change_message_id":"ebae1c25cd7c5f3614f1289caec976ec618118de","unresolved":false,"context_lines":[{"line_number":35,"context_line":"* *Glare* - represents Glare service deployed within OpenStack."},{"line_number":36,"context_line":"* *User* - Glare user who wants to consume Glare artifacts. User should be"},{"line_number":37,"context_line":"  created in Keystone under some project and domain."},{"line_number":38,"context_line":"* *Cloud Admin* - person who responsible for Glare administration and support"},{"line_number":39,"context_line":"  within OpenStack."},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"**Glossary**"}],"source_content_type":"text/x-rst","patch_set":2,"id":"ba0121b8_28629b3e","line":38,"range":{"start_line":38,"start_character":25,"end_line":38,"end_character":28},"in_reply_to":"ba0121b8_78efb6b0","updated":"2016-03-30 16:02:32.000000000","message":"Done","commit_id":"21a9d2b5409d645fa4d6f3afb716671480f82e4e"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"9d580eecc20670cd31327e6f91ded5ff390c31f6","unresolved":false,"context_lines":[{"line_number":44,"context_line":"  to a unified catalog of immutable objects with structured meta-information as"},{"line_number":45,"context_line":"  well as related binary data (these structures are also called *\u0027artifacts\u0027*)."},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"* *Artifact* - in terms of Glare Artifact is a structured immutable object with"},{"line_number":48,"context_line":"  some properties, related binary data and metadata."},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"* *Artifact type* - defines artifact structure of both its binary data and"}],"source_content_type":"text/x-rst","patch_set":2,"id":"ba0121b8_180cba93","line":47,"range":{"start_line":47,"start_character":27,"end_line":47,"end_character":33},"updated":"2016-03-28 20:20:24.000000000","message":"s/Glare /Glare, an /","commit_id":"21a9d2b5409d645fa4d6f3afb716671480f82e4e"},{"author":{"_account_id":11391,"name":"Mikhail Fedosin","email":"mfedosin@redhat.com","username":"fedosinme"},"change_message_id":"ebae1c25cd7c5f3614f1289caec976ec618118de","unresolved":false,"context_lines":[{"line_number":44,"context_line":"  to a unified catalog of immutable objects with structured meta-information as"},{"line_number":45,"context_line":"  well as related binary data (these structures are also called *\u0027artifacts\u0027*)."},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"* *Artifact* - in terms of Glare Artifact is a structured immutable object with"},{"line_number":48,"context_line":"  some properties, related binary data and metadata."},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"* *Artifact type* - defines artifact structure of both its binary data and"}],"source_content_type":"text/x-rst","patch_set":2,"id":"ba0121b8_c8e03f99","line":47,"range":{"start_line":47,"start_character":27,"end_line":47,"end_character":33},"in_reply_to":"ba0121b8_180cba93","updated":"2016-03-30 16:02:32.000000000","message":"Done","commit_id":"21a9d2b5409d645fa4d6f3afb716671480f82e4e"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"9d580eecc20670cd31327e6f91ded5ff390c31f6","unresolved":false,"context_lines":[{"line_number":48,"context_line":"  some properties, related binary data and metadata."},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"* *Artifact type* - defines artifact structure of both its binary data and"},{"line_number":51,"context_line":"  properties. The example of OpenStack artifact types that will be supported"},{"line_number":52,"context_line":"  in Glare is: Heat templates, Murano Packages, Nova Images, Tacker VNFs and"},{"line_number":53,"context_line":"  so on."},{"line_number":54,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"ba0121b8_386a5e1b","line":51,"range":{"start_line":51,"start_character":14,"end_line":51,"end_character":25},"updated":"2016-03-28 20:20:24.000000000","message":"s/The example/Examples/","commit_id":"21a9d2b5409d645fa4d6f3afb716671480f82e4e"},{"author":{"_account_id":11391,"name":"Mikhail Fedosin","email":"mfedosin@redhat.com","username":"fedosinme"},"change_message_id":"ebae1c25cd7c5f3614f1289caec976ec618118de","unresolved":false,"context_lines":[{"line_number":48,"context_line":"  some properties, related binary data and metadata."},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"* *Artifact type* - defines artifact structure of both its binary data and"},{"line_number":51,"context_line":"  properties. The example of OpenStack artifact types that will be supported"},{"line_number":52,"context_line":"  in Glare is: Heat templates, Murano Packages, Nova Images, Tacker VNFs and"},{"line_number":53,"context_line":"  so on."},{"line_number":54,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"ba0121b8_68e653b1","line":51,"range":{"start_line":51,"start_character":14,"end_line":51,"end_character":25},"in_reply_to":"ba0121b8_386a5e1b","updated":"2016-03-30 16:02:32.000000000","message":"Done","commit_id":"21a9d2b5409d645fa4d6f3afb716671480f82e4e"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"9d580eecc20670cd31327e6f91ded5ff390c31f6","unresolved":false,"context_lines":[{"line_number":49,"context_line":""},{"line_number":50,"context_line":"* *Artifact type* - defines artifact structure of both its binary data and"},{"line_number":51,"context_line":"  properties. The example of OpenStack artifact types that will be supported"},{"line_number":52,"context_line":"  in Glare is: Heat templates, Murano Packages, Nova Images, Tacker VNFs and"},{"line_number":53,"context_line":"  so on."},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"* *Artifact status* - specifies the state of the artifact and the possible"}],"source_content_type":"text/x-rst","patch_set":2,"id":"ba0121b8_58547253","line":52,"range":{"start_line":52,"start_character":11,"end_line":52,"end_character":13},"updated":"2016-03-28 20:20:24.000000000","message":"(if you make the above change, s/is/are/)","commit_id":"21a9d2b5409d645fa4d6f3afb716671480f82e4e"},{"author":{"_account_id":11391,"name":"Mikhail Fedosin","email":"mfedosin@redhat.com","username":"fedosinme"},"change_message_id":"ebae1c25cd7c5f3614f1289caec976ec618118de","unresolved":false,"context_lines":[{"line_number":49,"context_line":""},{"line_number":50,"context_line":"* *Artifact type* - defines artifact structure of both its binary data and"},{"line_number":51,"context_line":"  properties. The example of OpenStack artifact types that will be supported"},{"line_number":52,"context_line":"  in Glare is: Heat templates, Murano Packages, Nova Images, Tacker VNFs and"},{"line_number":53,"context_line":"  so on."},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"* *Artifact status* - specifies the state of the artifact and the possible"}],"source_content_type":"text/x-rst","patch_set":2,"id":"ba0121b8_a8b22b92","line":52,"range":{"start_line":52,"start_character":11,"end_line":52,"end_character":13},"in_reply_to":"ba0121b8_58547253","updated":"2016-03-30 16:02:32.000000000","message":"Done","commit_id":"21a9d2b5409d645fa4d6f3afb716671480f82e4e"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"9d580eecc20670cd31327e6f91ded5ff390c31f6","unresolved":false,"context_lines":[{"line_number":129,"context_line":"  For internal dependencies dependency contains only \u003cpath\u003e."},{"line_number":130,"context_line":"  Example of \u003cpath\u003e:"},{"line_number":131,"context_line":"  /v1/artifacts/\u003cartifact_type\u003e/\u003cartifact identifier\u003e."},{"line_number":132,"context_line":"  User can use filters and page_limits in path do define dynamic dependencies."},{"line_number":133,"context_line":"  All that Glare will do is request GET with dependency to receive Artifact"},{"line_number":134,"context_line":"  info."},{"line_number":135,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"ba0121b8_18b67a8a","line":132,"range":{"start_line":132,"start_character":47,"end_line":132,"end_character":49},"updated":"2016-03-28 20:20:24.000000000","message":"should be \u0027to\u0027?","commit_id":"21a9d2b5409d645fa4d6f3afb716671480f82e4e"},{"author":{"_account_id":11391,"name":"Mikhail Fedosin","email":"mfedosin@redhat.com","username":"fedosinme"},"change_message_id":"ebae1c25cd7c5f3614f1289caec976ec618118de","unresolved":false,"context_lines":[{"line_number":129,"context_line":"  For internal dependencies dependency contains only \u003cpath\u003e."},{"line_number":130,"context_line":"  Example of \u003cpath\u003e:"},{"line_number":131,"context_line":"  /v1/artifacts/\u003cartifact_type\u003e/\u003cartifact identifier\u003e."},{"line_number":132,"context_line":"  User can use filters and page_limits in path do define dynamic dependencies."},{"line_number":133,"context_line":"  All that Glare will do is request GET with dependency to receive Artifact"},{"line_number":134,"context_line":"  info."},{"line_number":135,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"ba0121b8_a8798bca","line":132,"range":{"start_line":132,"start_character":47,"end_line":132,"end_character":49},"in_reply_to":"ba0121b8_18b67a8a","updated":"2016-03-30 16:02:32.000000000","message":"Done","commit_id":"21a9d2b5409d645fa4d6f3afb716671480f82e4e"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"9d580eecc20670cd31327e6f91ded5ff390c31f6","unresolved":false,"context_lines":[{"line_number":138,"context_line":"  *external*, that indicates if the property was created during file upload"},{"line_number":139,"context_line":"  (False) or by direct user request (True). In other words, “external” means"},{"line_number":140,"context_line":"  that blob property url is just a reference to some external file and Glare"},{"line_number":141,"context_line":"  do not manage the blob operations in that case."},{"line_number":142,"context_line":"  Artifact blob properties may have next statuses:"},{"line_number":143,"context_line":""},{"line_number":144,"context_line":"  * *saving* - Artifact blob record created in table, blob upload started."}],"source_content_type":"text/x-rst","patch_set":2,"id":"ba0121b8_d8624216","line":141,"range":{"start_line":141,"start_character":2,"end_line":141,"end_character":4},"updated":"2016-03-28 20:20:24.000000000","message":"s/do/does/","commit_id":"21a9d2b5409d645fa4d6f3afb716671480f82e4e"},{"author":{"_account_id":11391,"name":"Mikhail Fedosin","email":"mfedosin@redhat.com","username":"fedosinme"},"change_message_id":"ebae1c25cd7c5f3614f1289caec976ec618118de","unresolved":false,"context_lines":[{"line_number":138,"context_line":"  *external*, that indicates if the property was created during file upload"},{"line_number":139,"context_line":"  (False) or by direct user request (True). In other words, “external” means"},{"line_number":140,"context_line":"  that blob property url is just a reference to some external file and Glare"},{"line_number":141,"context_line":"  do not manage the blob operations in that case."},{"line_number":142,"context_line":"  Artifact blob properties may have next statuses:"},{"line_number":143,"context_line":""},{"line_number":144,"context_line":"  * *saving* - Artifact blob record created in table, blob upload started."}],"source_content_type":"text/x-rst","patch_set":2,"id":"ba0121b8_c87cbfb7","line":141,"range":{"start_line":141,"start_character":2,"end_line":141,"end_character":4},"in_reply_to":"ba0121b8_d8624216","updated":"2016-03-30 16:02:32.000000000","message":"Done","commit_id":"21a9d2b5409d645fa4d6f3afb716671480f82e4e"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"9d580eecc20670cd31327e6f91ded5ff390c31f6","unresolved":false,"context_lines":[{"line_number":139,"context_line":"  (False) or by direct user request (True). In other words, “external” means"},{"line_number":140,"context_line":"  that blob property url is just a reference to some external file and Glare"},{"line_number":141,"context_line":"  do not manage the blob operations in that case."},{"line_number":142,"context_line":"  Artifact blob properties may have next statuses:"},{"line_number":143,"context_line":""},{"line_number":144,"context_line":"  * *saving* - Artifact blob record created in table, blob upload started."},{"line_number":145,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"ba0121b8_d849a290","line":142,"range":{"start_line":142,"start_character":36,"end_line":142,"end_character":40},"updated":"2016-03-28 20:20:24.000000000","message":"s/next/the following/","commit_id":"21a9d2b5409d645fa4d6f3afb716671480f82e4e"},{"author":{"_account_id":11391,"name":"Mikhail Fedosin","email":"mfedosin@redhat.com","username":"fedosinme"},"change_message_id":"ebae1c25cd7c5f3614f1289caec976ec618118de","unresolved":false,"context_lines":[{"line_number":139,"context_line":"  (False) or by direct user request (True). In other words, “external” means"},{"line_number":140,"context_line":"  that blob property url is just a reference to some external file and Glare"},{"line_number":141,"context_line":"  do not manage the blob operations in that case."},{"line_number":142,"context_line":"  Artifact blob properties may have next statuses:"},{"line_number":143,"context_line":""},{"line_number":144,"context_line":"  * *saving* - Artifact blob record created in table, blob upload started."},{"line_number":145,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"ba0121b8_2833bb15","line":142,"range":{"start_line":142,"start_character":36,"end_line":142,"end_character":40},"in_reply_to":"ba0121b8_d849a290","updated":"2016-03-30 16:02:32.000000000","message":"Done","commit_id":"21a9d2b5409d645fa4d6f3afb716671480f82e4e"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"9d580eecc20670cd31327e6f91ded5ff390c31f6","unresolved":false,"context_lines":[{"line_number":202,"context_line":""},{"line_number":203,"context_line":"* *Artifact Member* - if there is an Artifact that Artifact Owner wants to be"},{"line_number":204,"context_line":"  available for users from other projects then he needs to specify these users"},{"line_number":205,"context_line":"  (projects, domains) as Artifact Members. In this case they will get"},{"line_number":206,"context_line":"  notifications and must approve them to be able to download or observe shared"},{"line_number":207,"context_line":"  Artifacts (only read-only access). Artifact visibility will be set to"},{"line_number":208,"context_line":"  ‘shared’."},{"line_number":209,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"ba0121b8_733a37cf","line":206,"range":{"start_line":205,"start_character":43,"end_line":206,"end_character":37},"updated":"2016-03-28 20:20:24.000000000","message":"Is Glare going to handle the notification?  (I\u0027m only asking because in the Images v2 image sharing, user notification is not handled by Glance.)","commit_id":"21a9d2b5409d645fa4d6f3afb716671480f82e4e"},{"author":{"_account_id":11391,"name":"Mikhail Fedosin","email":"mfedosin@redhat.com","username":"fedosinme"},"change_message_id":"ebae1c25cd7c5f3614f1289caec976ec618118de","unresolved":false,"context_lines":[{"line_number":202,"context_line":""},{"line_number":203,"context_line":"* *Artifact Member* - if there is an Artifact that Artifact Owner wants to be"},{"line_number":204,"context_line":"  available for users from other projects then he needs to specify these users"},{"line_number":205,"context_line":"  (projects, domains) as Artifact Members. In this case they will get"},{"line_number":206,"context_line":"  notifications and must approve them to be able to download or observe shared"},{"line_number":207,"context_line":"  Artifacts (only read-only access). Artifact visibility will be set to"},{"line_number":208,"context_line":"  ‘shared’."},{"line_number":209,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"ba0121b8_ab434541","line":206,"range":{"start_line":205,"start_character":43,"end_line":206,"end_character":37},"in_reply_to":"ba0121b8_733a37cf","updated":"2016-03-30 16:02:32.000000000","message":"Frankly speaking, I\u0027m in two minds with this. There were many discussions about sharing images/artifacts, including \u0027community\u0027 sharing. So, I would prefer to talk about it at the summit on the special session, and define the best approach there.","commit_id":"21a9d2b5409d645fa4d6f3afb716671480f82e4e"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"9d580eecc20670cd31327e6f91ded5ff390c31f6","unresolved":false,"context_lines":[{"line_number":221,"context_line":""},{"line_number":222,"context_line":"  1. Operator adds Artifact type class to ‘glare/objects’ folder."},{"line_number":223,"context_line":""},{"line_number":224,"context_line":"  .. note:: Artifacts types are pre-published in Glance repository. All of"},{"line_number":225,"context_line":"     them will be reviewed and committed by Glance developers and reviewers."},{"line_number":226,"context_line":""},{"line_number":227,"context_line":"  2. Operator implements all abstract methods and define data API."}],"source_content_type":"text/x-rst","patch_set":2,"id":"ba0121b8_33a55f04","line":224,"range":{"start_line":224,"start_character":12,"end_line":224,"end_character":27},"updated":"2016-03-28 20:20:24.000000000","message":"s/Artifacts types/Artifact types/","commit_id":"21a9d2b5409d645fa4d6f3afb716671480f82e4e"},{"author":{"_account_id":11391,"name":"Mikhail Fedosin","email":"mfedosin@redhat.com","username":"fedosinme"},"change_message_id":"ebae1c25cd7c5f3614f1289caec976ec618118de","unresolved":false,"context_lines":[{"line_number":221,"context_line":""},{"line_number":222,"context_line":"  1. Operator adds Artifact type class to ‘glare/objects’ folder."},{"line_number":223,"context_line":""},{"line_number":224,"context_line":"  .. note:: Artifacts types are pre-published in Glance repository. All of"},{"line_number":225,"context_line":"     them will be reviewed and committed by Glance developers and reviewers."},{"line_number":226,"context_line":""},{"line_number":227,"context_line":"  2. Operator implements all abstract methods and define data API."}],"source_content_type":"text/x-rst","patch_set":2,"id":"ba0121b8_4bcd49b6","line":224,"range":{"start_line":224,"start_character":12,"end_line":224,"end_character":27},"in_reply_to":"ba0121b8_33a55f04","updated":"2016-03-30 16:02:32.000000000","message":"Done","commit_id":"21a9d2b5409d645fa4d6f3afb716671480f82e4e"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"9d580eecc20670cd31327e6f91ded5ff390c31f6","unresolved":false,"context_lines":[{"line_number":330,"context_line":""},{"line_number":331,"context_line":"    * Artifact type is active in Glare."},{"line_number":332,"context_line":""},{"line_number":333,"context_line":"    * User has a permissions to create artifact."},{"line_number":334,"context_line":""},{"line_number":335,"context_line":"  *Success condition:* Artifact entity has been created in Glare DB."},{"line_number":336,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"ba0121b8_b36ccf9d","line":333,"range":{"start_line":333,"start_character":15,"end_line":333,"end_character":28},"updated":"2016-03-28 20:20:24.000000000","message":"s/a permissions/permission/","commit_id":"21a9d2b5409d645fa4d6f3afb716671480f82e4e"},{"author":{"_account_id":11391,"name":"Mikhail Fedosin","email":"mfedosin@redhat.com","username":"fedosinme"},"change_message_id":"ebae1c25cd7c5f3614f1289caec976ec618118de","unresolved":false,"context_lines":[{"line_number":330,"context_line":""},{"line_number":331,"context_line":"    * Artifact type is active in Glare."},{"line_number":332,"context_line":""},{"line_number":333,"context_line":"    * User has a permissions to create artifact."},{"line_number":334,"context_line":""},{"line_number":335,"context_line":"  *Success condition:* Artifact entity has been created in Glare DB."},{"line_number":336,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"ba0121b8_ebbc1d08","line":333,"range":{"start_line":333,"start_character":15,"end_line":333,"end_character":28},"in_reply_to":"ba0121b8_b36ccf9d","updated":"2016-03-30 16:02:32.000000000","message":"Done","commit_id":"21a9d2b5409d645fa4d6f3afb716671480f82e4e"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"9d580eecc20670cd31327e6f91ded5ff390c31f6","unresolved":false,"context_lines":[{"line_number":391,"context_line":""},{"line_number":392,"context_line":"  .. note:: Glare doesn’t use registry service, so do not need trusts here."},{"line_number":393,"context_line":""},{"line_number":394,"context_line":"  6. Glare responses 204 No Content."},{"line_number":395,"context_line":""},{"line_number":396,"context_line":"  *Alternative scenarios:*"},{"line_number":397,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"ba0121b8_d33063a1","line":394,"range":{"start_line":394,"start_character":11,"end_line":394,"end_character":20},"updated":"2016-03-28 20:20:24.000000000","message":"s/responses/responds/","commit_id":"21a9d2b5409d645fa4d6f3afb716671480f82e4e"},{"author":{"_account_id":11391,"name":"Mikhail Fedosin","email":"mfedosin@redhat.com","username":"fedosinme"},"change_message_id":"ebae1c25cd7c5f3614f1289caec976ec618118de","unresolved":false,"context_lines":[{"line_number":391,"context_line":""},{"line_number":392,"context_line":"  .. note:: Glare doesn’t use registry service, so do not need trusts here."},{"line_number":393,"context_line":""},{"line_number":394,"context_line":"  6. Glare responses 204 No Content."},{"line_number":395,"context_line":""},{"line_number":396,"context_line":"  *Alternative scenarios:*"},{"line_number":397,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"ba0121b8_4b44291a","line":394,"range":{"start_line":394,"start_character":11,"end_line":394,"end_character":20},"in_reply_to":"ba0121b8_d33063a1","updated":"2016-03-30 16:02:32.000000000","message":"Done","commit_id":"21a9d2b5409d645fa4d6f3afb716671480f82e4e"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"28c652b1479ff32003ae14be61016e982127bc81","unresolved":false,"context_lines":[{"line_number":430,"context_line":""},{"line_number":431,"context_line":"  1. User specifies Artifact identifier, blob property name and location and"},{"line_number":432,"context_line":"     sends the request"},{"line_number":433,"context_line":"     (PATCH /v1/artifacts/{artifact_type}/{artifacts_id}/blobs/{blob_name})."},{"line_number":434,"context_line":""},{"line_number":435,"context_line":"  2. Glare checks if Artifact identifier and blob property name is valid."},{"line_number":436,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"ba0121b8_4a6e55ca","line":433,"updated":"2016-03-28 21:16:16.000000000","message":"I may be misunderstanding, but this looks like a weird call, since you\u0027re PATCHing a resource that doesn\u0027t exist yet (is the user specifying the blob_name? otherwise, where is the blob_name coming from?).","commit_id":"21a9d2b5409d645fa4d6f3afb716671480f82e4e"},{"author":{"_account_id":11391,"name":"Mikhail Fedosin","email":"mfedosin@redhat.com","username":"fedosinme"},"change_message_id":"ebae1c25cd7c5f3614f1289caec976ec618118de","unresolved":false,"context_lines":[{"line_number":430,"context_line":""},{"line_number":431,"context_line":"  1. User specifies Artifact identifier, blob property name and location and"},{"line_number":432,"context_line":"     sends the request"},{"line_number":433,"context_line":"     (PATCH /v1/artifacts/{artifact_type}/{artifacts_id}/blobs/{blob_name})."},{"line_number":434,"context_line":""},{"line_number":435,"context_line":"  2. Glare checks if Artifact identifier and blob property name is valid."},{"line_number":436,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"ba0121b8_8b712179","line":433,"in_reply_to":"ba0121b8_4a6e55ca","updated":"2016-03-30 16:02:32.000000000","message":"Agree with you - we completely removed it.","commit_id":"21a9d2b5409d645fa4d6f3afb716671480f82e4e"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"9d580eecc20670cd31327e6f91ded5ff390c31f6","unresolved":false,"context_lines":[{"line_number":439,"context_line":""},{"line_number":440,"context_line":"  .. note:: we should store info about location directly in order to prevent"},{"line_number":441,"context_line":"     managing of binary location by URL. So this prevents us from some Glance"},{"line_number":442,"context_line":"     incorrect behavior. Location is just read-only."},{"line_number":443,"context_line":""},{"line_number":444,"context_line":"  4. Glare changes blob property status to active."},{"line_number":445,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"ba0121b8_33355f46","line":442,"updated":"2016-03-28 20:20:24.000000000","message":"Could you say some more about this? I\u0027m not sure exactly what you\u0027re referring to.","commit_id":"21a9d2b5409d645fa4d6f3afb716671480f82e4e"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"9d580eecc20670cd31327e6f91ded5ff390c31f6","unresolved":false,"context_lines":[{"line_number":785,"context_line":""},{"line_number":786,"context_line":"    2A. Artifact status is not active (400 Bad Request)."},{"line_number":787,"context_line":""},{"line_number":788,"context_line":"    2B. User doesn’t have a permission to deactivate artifact (403 Forbidden)."},{"line_number":789,"context_line":""},{"line_number":790,"context_line":"* **Use Case 15.** Reactivate Artifact."},{"line_number":791,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"ba0121b8_93f9cb50","line":788,"range":{"start_line":788,"start_character":26,"end_line":788,"end_character":27},"updated":"2016-03-28 20:20:24.000000000","message":"s/a //","commit_id":"21a9d2b5409d645fa4d6f3afb716671480f82e4e"},{"author":{"_account_id":11391,"name":"Mikhail Fedosin","email":"mfedosin@redhat.com","username":"fedosinme"},"change_message_id":"ebae1c25cd7c5f3614f1289caec976ec618118de","unresolved":false,"context_lines":[{"line_number":785,"context_line":""},{"line_number":786,"context_line":"    2A. Artifact status is not active (400 Bad Request)."},{"line_number":787,"context_line":""},{"line_number":788,"context_line":"    2B. User doesn’t have a permission to deactivate artifact (403 Forbidden)."},{"line_number":789,"context_line":""},{"line_number":790,"context_line":"* **Use Case 15.** Reactivate Artifact."},{"line_number":791,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"ba0121b8_cb44b9b8","line":788,"range":{"start_line":788,"start_character":26,"end_line":788,"end_character":27},"in_reply_to":"ba0121b8_93f9cb50","updated":"2016-03-30 16:02:32.000000000","message":"Done","commit_id":"21a9d2b5409d645fa4d6f3afb716671480f82e4e"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"9d580eecc20670cd31327e6f91ded5ff390c31f6","unresolved":false,"context_lines":[{"line_number":827,"context_line":""},{"line_number":828,"context_line":"  *Steps:*"},{"line_number":829,"context_line":""},{"line_number":830,"context_line":"  1. User request for Artifact list with specifies artifact type, limit,"},{"line_number":831,"context_line":"     marker, filters (GET /v1/artifacts/{artifact_type})."},{"line_number":832,"context_line":""},{"line_number":833,"context_line":"  2. Glare returns all Artifacts to the User (200 OK)."}],"source_content_type":"text/x-rst","patch_set":2,"id":"ba0121b8_b3aa0f18","line":830,"range":{"start_line":830,"start_character":41,"end_line":830,"end_character":50},"updated":"2016-03-28 20:20:24.000000000","message":"s/specifies/specified/","commit_id":"21a9d2b5409d645fa4d6f3afb716671480f82e4e"},{"author":{"_account_id":11391,"name":"Mikhail Fedosin","email":"mfedosin@redhat.com","username":"fedosinme"},"change_message_id":"ebae1c25cd7c5f3614f1289caec976ec618118de","unresolved":false,"context_lines":[{"line_number":827,"context_line":""},{"line_number":828,"context_line":"  *Steps:*"},{"line_number":829,"context_line":""},{"line_number":830,"context_line":"  1. User request for Artifact list with specifies artifact type, limit,"},{"line_number":831,"context_line":"     marker, filters (GET /v1/artifacts/{artifact_type})."},{"line_number":832,"context_line":""},{"line_number":833,"context_line":"  2. Glare returns all Artifacts to the User (200 OK)."}],"source_content_type":"text/x-rst","patch_set":2,"id":"ba0121b8_4b0f0988","line":830,"range":{"start_line":830,"start_character":41,"end_line":830,"end_character":50},"in_reply_to":"ba0121b8_b3aa0f18","updated":"2016-03-30 16:02:32.000000000","message":"Done","commit_id":"21a9d2b5409d645fa4d6f3afb716671480f82e4e"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"9d580eecc20670cd31327e6f91ded5ff390c31f6","unresolved":false,"context_lines":[{"line_number":835,"context_line":"  *Alternative scenarios:*"},{"line_number":836,"context_line":""},{"line_number":837,"context_line":"    2A. Number of Artifacts is too large (400 Bad Request)"},{"line_number":838,"context_line":"    (use limit to restrict number of Artifacts in limit)."},{"line_number":839,"context_line":""},{"line_number":840,"context_line":"    2B. Query params is invalid (sorting or filtering by non-existing key)"},{"line_number":841,"context_line":"    (400 Bad Request)."}],"source_content_type":"text/x-rst","patch_set":2,"id":"ba0121b8_7377d7d4","line":838,"range":{"start_line":838,"start_character":50,"end_line":838,"end_character":55},"updated":"2016-03-28 20:20:24.000000000","message":"Do you mean \u0027response\u0027 here?","commit_id":"21a9d2b5409d645fa4d6f3afb716671480f82e4e"},{"author":{"_account_id":11391,"name":"Mikhail Fedosin","email":"mfedosin@redhat.com","username":"fedosinme"},"change_message_id":"ebae1c25cd7c5f3614f1289caec976ec618118de","unresolved":false,"context_lines":[{"line_number":835,"context_line":"  *Alternative scenarios:*"},{"line_number":836,"context_line":""},{"line_number":837,"context_line":"    2A. Number of Artifacts is too large (400 Bad Request)"},{"line_number":838,"context_line":"    (use limit to restrict number of Artifacts in limit)."},{"line_number":839,"context_line":""},{"line_number":840,"context_line":"    2B. Query params is invalid (sorting or filtering by non-existing key)"},{"line_number":841,"context_line":"    (400 Bad Request)."}],"source_content_type":"text/x-rst","patch_set":2,"id":"ba0121b8_0b8071bf","line":838,"range":{"start_line":838,"start_character":50,"end_line":838,"end_character":55},"in_reply_to":"ba0121b8_7377d7d4","updated":"2016-03-30 16:02:32.000000000","message":"Done","commit_id":"21a9d2b5409d645fa4d6f3afb716671480f82e4e"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"9d580eecc20670cd31327e6f91ded5ff390c31f6","unresolved":false,"context_lines":[{"line_number":885,"context_line":""},{"line_number":886,"context_line":"    * Artifact has ‘active’ status."},{"line_number":887,"context_line":""},{"line_number":888,"context_line":"    * Artifact visibility is ‘private’."},{"line_number":889,"context_line":""},{"line_number":890,"context_line":"  *Success condition:* Artifact has been successfully shared with another User."},{"line_number":891,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"ba0121b8_6edb70ee","line":888,"updated":"2016-03-28 20:20:24.000000000","message":"Just FYI, there\u0027s a spec up for Glance that would increase the values for \u0027visibility\u0027 to include \u0027shared\u0027 and \u0027community\u0027; you\u0027ll change the \u0027visibility\u0027 with PATCH and add members with the POST ../members call, which will change the sharing workflow slightly.  For now, it makes sense to propose that Glare will use the current Glance sharing workflow, but ultimately I imagine that we\u0027ll want to keep Glare and Glance in sync.\n\nhttps://review.openstack.org/#/c/271019/","commit_id":"21a9d2b5409d645fa4d6f3afb716671480f82e4e"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"9d580eecc20670cd31327e6f91ded5ff390c31f6","unresolved":false,"context_lines":[{"line_number":1087,"context_line":""},{"line_number":1088,"context_line":"    Returns info about artifact with given ID in json format. Code 200 OK."},{"line_number":1089,"context_line":""},{"line_number":1090,"context_line":"  * **update artifact metadata**"},{"line_number":1091,"context_line":""},{"line_number":1092,"context_line":"    PATCH /v1/artifacts/{artifact_type}/{artifacts_id}"},{"line_number":1093,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"ba0121b8_e973fab2","line":1090,"updated":"2016-03-28 20:20:24.000000000","message":"Does this include modifying the artifact tags?  I\u0027m just asking because you can do that in Glance, but you didn\u0027t mention it above in the discussion of the tags calls.  (Although by saying that you\u0027re following the API-WG guidelines, I imagine that means you won\u0027t allow modification via PATCH.)\n\nAnyway, you should explicitly state what your intentions are here, because it brings up a related question, namely, will the \"show artifact metadata\" include the list of tags, or will the tags only be accessible via GET v1/artifacts/.../tags (though I don\u0027t think you defined a specific \"show tags\" call above)?","commit_id":"21a9d2b5409d645fa4d6f3afb716671480f82e4e"},{"author":{"_account_id":11391,"name":"Mikhail Fedosin","email":"mfedosin@redhat.com","username":"fedosinme"},"change_message_id":"ebae1c25cd7c5f3614f1289caec976ec618118de","unresolved":false,"context_lines":[{"line_number":1087,"context_line":""},{"line_number":1088,"context_line":"    Returns info about artifact with given ID in json format. Code 200 OK."},{"line_number":1089,"context_line":""},{"line_number":1090,"context_line":"  * **update artifact metadata**"},{"line_number":1091,"context_line":""},{"line_number":1092,"context_line":"    PATCH /v1/artifacts/{artifact_type}/{artifacts_id}"},{"line_number":1093,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"ba0121b8_6e55bbf8","line":1090,"in_reply_to":"ba0121b8_e973fab2","updated":"2016-03-30 16:02:32.000000000","message":"Yes, PATCH updates tags and blobs. We will remove all \u0027/tags\u0027 and \u0027/blobs\u0027 requests in favor of simple PATCH artifact_id","commit_id":"21a9d2b5409d645fa4d6f3afb716671480f82e4e"},{"author":{"_account_id":14676,"name":"Kairat Kushaev","email":"kkushaev@mirantis.com","username":"kairat_kushaev"},"change_message_id":"338f5fe0f830996e9dd55dace7f67a5d0413351c","unresolved":false,"context_lines":[{"line_number":1113,"context_line":""},{"line_number":1114,"context_line":"    Returns json with info about given blob. Code 200 OK."},{"line_number":1115,"context_line":""},{"line_number":1116,"context_line":"  * **add or update blob instance**"},{"line_number":1117,"context_line":""},{"line_number":1118,"context_line":"    PATCH /v1/artifacts/{artifact_type}/{artifacts_id}/blobs/{blob_name}"},{"line_number":1119,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"1af94dfe_0fc1a72e","line":1116,"updated":"2016-03-17 05:27:20.000000000","message":"I think we need to rename it to location.","commit_id":"21a9d2b5409d645fa4d6f3afb716671480f82e4e"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"28c652b1479ff32003ae14be61016e982127bc81","unresolved":false,"context_lines":[{"line_number":1114,"context_line":"    Returns json with info about given blob. Code 200 OK."},{"line_number":1115,"context_line":""},{"line_number":1116,"context_line":"  * **add or update blob instance**"},{"line_number":1117,"context_line":""},{"line_number":1118,"context_line":"    PATCH /v1/artifacts/{artifact_type}/{artifacts_id}/blobs/{blob_name}"},{"line_number":1119,"context_line":""},{"line_number":1120,"context_line":"    Returns json about changed blob. Code 200 OK."}],"source_content_type":"text/x-rst","patch_set":2,"id":"ba0121b8_aa8d717d","line":1117,"updated":"2016-03-28 21:16:16.000000000","message":"Or maybe \"blob record\"?  Are there limitations to what you can PATCH in the blob\u0027s JSON?  I\u0027m picturing it as being capable of holding arbitrary blob-specific metadata, but maybe that\u0027s incorrect.  Does this apply only to Use Case 8, or also to use case 7?","commit_id":"21a9d2b5409d645fa4d6f3afb716671480f82e4e"},{"author":{"_account_id":11391,"name":"Mikhail Fedosin","email":"mfedosin@redhat.com","username":"fedosinme"},"change_message_id":"ebae1c25cd7c5f3614f1289caec976ec618118de","unresolved":false,"context_lines":[{"line_number":1114,"context_line":"    Returns json with info about given blob. Code 200 OK."},{"line_number":1115,"context_line":""},{"line_number":1116,"context_line":"  * **add or update blob instance**"},{"line_number":1117,"context_line":""},{"line_number":1118,"context_line":"    PATCH /v1/artifacts/{artifact_type}/{artifacts_id}/blobs/{blob_name}"},{"line_number":1119,"context_line":""},{"line_number":1120,"context_line":"    Returns json about changed blob. Code 200 OK."}],"source_content_type":"text/x-rst","patch_set":2,"id":"ba0121b8_6ea3fb00","line":1117,"in_reply_to":"ba0121b8_aa8d717d","updated":"2016-03-30 16:02:32.000000000","message":"blob record is good!","commit_id":"21a9d2b5409d645fa4d6f3afb716671480f82e4e"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"28c652b1479ff32003ae14be61016e982127bc81","unresolved":false,"context_lines":[{"line_number":1174,"context_line":"    Code 204 No Content."},{"line_number":1175,"context_line":""},{"line_number":1176,"context_line":"**Members**"},{"line_number":1177,"context_line":""},{"line_number":1178,"context_line":"  * **list artifact members**"},{"line_number":1179,"context_line":""},{"line_number":1180,"context_line":"    GET /v1/artifacts/{artifact_type}/{artifacts_id}/members"}],"source_content_type":"text/x-rst","patch_set":2,"id":"ba0121b8_2ab5e1cc","line":1177,"updated":"2016-03-28 21:16:16.000000000","message":"I\u0027m assuming you\u0027ll have the same safeguards as we have on Images v2 sharing, namely:\n* only owner (or admin) can create/delete members\n* only owner (or admin) can see the full member list; a member can make the list-members call, but it only contains himself\n* only a member can change the member-status","commit_id":"21a9d2b5409d645fa4d6f3afb716671480f82e4e"},{"author":{"_account_id":11391,"name":"Mikhail Fedosin","email":"mfedosin@redhat.com","username":"fedosinme"},"change_message_id":"ebae1c25cd7c5f3614f1289caec976ec618118de","unresolved":false,"context_lines":[{"line_number":1174,"context_line":"    Code 204 No Content."},{"line_number":1175,"context_line":""},{"line_number":1176,"context_line":"**Members**"},{"line_number":1177,"context_line":""},{"line_number":1178,"context_line":"  * **list artifact members**"},{"line_number":1179,"context_line":""},{"line_number":1180,"context_line":"    GET /v1/artifacts/{artifact_type}/{artifacts_id}/members"}],"source_content_type":"text/x-rst","patch_set":2,"id":"ba0121b8_cee2072f","line":1177,"in_reply_to":"ba0121b8_2ab5e1cc","updated":"2016-03-30 16:02:32.000000000","message":"Added it. Thanks!","commit_id":"21a9d2b5409d645fa4d6f3afb716671480f82e4e"},{"author":{"_account_id":2537,"name":"Nikhil Komawar","email":"nik.komawar@gmail.com","username":"nikhil-komawar"},"change_message_id":"a71eac741e75155568d46b27ce90ca02f8966a64","unresolved":false,"context_lines":[{"line_number":1229,"context_line":"No performance impact"},{"line_number":1230,"context_line":""},{"line_number":1231,"context_line":""},{"line_number":1232,"context_line":"Other deployer impact"},{"line_number":1233,"context_line":"---------------------"},{"line_number":1234,"context_line":""},{"line_number":1235,"context_line":"No deployer impact"}],"source_content_type":"text/x-rst","patch_set":2,"id":"9aed3d3a_75d39504","line":1232,"range":{"start_line":1232,"start_character":15,"end_line":1232,"end_character":21},"updated":"2016-02-29 23:05:27.000000000","message":"We had a great conversation [1] with kzaitsev_mb this morning on how to handle glare object additions in way that other projects are dependent on Glance release cycle and that merely plugin updating doesn\u0027t have to be constrained by the norms of the 6 monthly releases.\n\nI think as a part of that agreed upon change to create a single new repository where all new glare-objects (Artifact types) will go and it will either be a oslo-inc style library but preferably a non-client openstack library which can be released to pip and the glare objects can be then pulled into Glance repository using the right upper constraints per branch and at the same time adhere to the openstack packaging fundamentals. \n\nThe motivation, intent and purpose behind creating this new separate repo for library is to form a organized way for openstack wide cross-project developers to contribute to custom artifact object types and provide a consistent feedback. At the same time, common code can be shared by the plugins and best practices can be documented in the same place. Release of all the glare objects will be precise with that of glance requirements and testing can be done comprehensively for all custom objects in the same release of the library (irrespective if subset of objects have had changes or not). This should ease the packaging pain and avoid operator/upgrade mess.\n\n[1] http://eavesdrop.openstack.org/irclogs/%23openstack-glance/%23openstack-glance.2016-02-29.log.html#t2016-02-29T18:01:23","commit_id":"21a9d2b5409d645fa4d6f3afb716671480f82e4e"},{"author":{"_account_id":11391,"name":"Mikhail Fedosin","email":"mfedosin@redhat.com","username":"fedosinme"},"change_message_id":"ebae1c25cd7c5f3614f1289caec976ec618118de","unresolved":false,"context_lines":[{"line_number":1229,"context_line":"No performance impact"},{"line_number":1230,"context_line":""},{"line_number":1231,"context_line":""},{"line_number":1232,"context_line":"Other deployer impact"},{"line_number":1233,"context_line":"---------------------"},{"line_number":1234,"context_line":""},{"line_number":1235,"context_line":"No deployer impact"}],"source_content_type":"text/x-rst","patch_set":2,"id":"ba0121b8_2ec90327","line":1232,"range":{"start_line":1232,"start_character":15,"end_line":1232,"end_character":21},"in_reply_to":"9aed3d3a_75d39504","updated":"2016-03-30 16:02:32.000000000","message":"Done","commit_id":"21a9d2b5409d645fa4d6f3afb716671480f82e4e"},{"author":{"_account_id":2537,"name":"Nikhil Komawar","email":"nik.komawar@gmail.com","username":"nikhil-komawar"},"change_message_id":"a71eac741e75155568d46b27ce90ca02f8966a64","unresolved":false,"context_lines":[{"line_number":1235,"context_line":"No deployer impact"},{"line_number":1236,"context_line":""},{"line_number":1237,"context_line":"Developer impact"},{"line_number":1238,"context_line":"----------------"},{"line_number":1239,"context_line":""},{"line_number":1240,"context_line":"Since the Glare v 0.1 API is EXPERIMENTAL, developers should be prepared to"},{"line_number":1241,"context_line":"its deprecation."}],"source_content_type":"text/x-rst","patch_set":2,"id":"9aed3d3a_7556f55c","line":1238,"range":{"start_line":1238,"start_character":0,"end_line":1238,"end_character":16},"updated":"2016-02-29 23:05:27.000000000","message":"The above comments affects developers too.\n\nAs this library would be a openstack non-client library, it would require privileged access to the source code from non-regular glance developers who are primarily working on projects like Murano or heat, etc.\n\nWe would need to establish some common code and best practices for developers in this repository.","commit_id":"21a9d2b5409d645fa4d6f3afb716671480f82e4e"},{"author":{"_account_id":11391,"name":"Mikhail Fedosin","email":"mfedosin@redhat.com","username":"fedosinme"},"change_message_id":"ebae1c25cd7c5f3614f1289caec976ec618118de","unresolved":false,"context_lines":[{"line_number":1235,"context_line":"No deployer impact"},{"line_number":1236,"context_line":""},{"line_number":1237,"context_line":"Developer impact"},{"line_number":1238,"context_line":"----------------"},{"line_number":1239,"context_line":""},{"line_number":1240,"context_line":"Since the Glare v 0.1 API is EXPERIMENTAL, developers should be prepared to"},{"line_number":1241,"context_line":"its deprecation."}],"source_content_type":"text/x-rst","patch_set":2,"id":"ba0121b8_512336a7","line":1238,"range":{"start_line":1238,"start_character":0,"end_line":1238,"end_character":16},"in_reply_to":"9aed3d3a_7556f55c","updated":"2016-03-30 16:02:32.000000000","message":"Done","commit_id":"21a9d2b5409d645fa4d6f3afb716671480f82e4e"},{"author":{"_account_id":14676,"name":"Kairat Kushaev","email":"kkushaev@mirantis.com","username":"kairat_kushaev"},"change_message_id":"3a40c5d15b8423e3254cc531e9b17601b0a594e4","unresolved":false,"context_lines":[{"line_number":1236,"context_line":""},{"line_number":1237,"context_line":"Developer impact"},{"line_number":1238,"context_line":"----------------"},{"line_number":1239,"context_line":""},{"line_number":1240,"context_line":"Since the Glare v 0.1 API is EXPERIMENTAL, developers should be prepared to"},{"line_number":1241,"context_line":"its deprecation."},{"line_number":1242,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"ba0121b8_36b9bbea","line":1239,"updated":"2016-03-29 07:39:57.000000000","message":"We need to mention our architecture here.\nAt least it worth to point that we don\u0027t use domain model and uses only one layer for all that logic.","commit_id":"21a9d2b5409d645fa4d6f3afb716671480f82e4e"},{"author":{"_account_id":11391,"name":"Mikhail Fedosin","email":"mfedosin@redhat.com","username":"fedosinme"},"change_message_id":"ebae1c25cd7c5f3614f1289caec976ec618118de","unresolved":false,"context_lines":[{"line_number":1236,"context_line":""},{"line_number":1237,"context_line":"Developer impact"},{"line_number":1238,"context_line":"----------------"},{"line_number":1239,"context_line":""},{"line_number":1240,"context_line":"Since the Glare v 0.1 API is EXPERIMENTAL, developers should be prepared to"},{"line_number":1241,"context_line":"its deprecation."},{"line_number":1242,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"ba0121b8_711e3a60","line":1239,"in_reply_to":"ba0121b8_36b9bbea","updated":"2016-03-30 16:02:32.000000000","message":"I think it\u0027s not necessary, because it\u0027s design specific thing. This spec describes only API. There will be another spec dedicated for Glare architecture","commit_id":"21a9d2b5409d645fa4d6f3afb716671480f82e4e"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"28c652b1479ff32003ae14be61016e982127bc81","unresolved":false,"context_lines":[{"line_number":1237,"context_line":"Developer impact"},{"line_number":1238,"context_line":"----------------"},{"line_number":1239,"context_line":""},{"line_number":1240,"context_line":"Since the Glare v 0.1 API is EXPERIMENTAL, developers should be prepared to"},{"line_number":1241,"context_line":"its deprecation."},{"line_number":1242,"context_line":""},{"line_number":1243,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"ba0121b8_4ae775e4","line":1240,"range":{"start_line":1240,"start_character":73,"end_line":1240,"end_character":75},"updated":"2016-03-28 21:16:16.000000000","message":"s/to/for/","commit_id":"21a9d2b5409d645fa4d6f3afb716671480f82e4e"},{"author":{"_account_id":17116,"name":"Niall Bunting","email":"niall.bunting@hpe.com","username":"NiallBunting"},"change_message_id":"1e35904dde5811f798e8c7891562bc3db5d00804","unresolved":false,"context_lines":[{"line_number":16,"context_line":"Problem description"},{"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":"Glare needs stable API that satisfy requirements of API-WG and DefCore."},{"line_number":20,"context_line":"Also Glare must implement OpenStack Image API v2."},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"Proposed change"}],"source_content_type":"text/x-rst","patch_set":5,"id":"9abb7d3a_97c82824","line":19,"updated":"2016-05-30 17:05:48.000000000","message":"nit: s/needs stable/needs a stable/","commit_id":"f126401542679af867ba05307eb8b9f3ed8656b8"},{"author":{"_account_id":11391,"name":"Mikhail Fedosin","email":"mfedosin@redhat.com","username":"fedosinme"},"change_message_id":"31ea662d8e15ae6cb653f9fdaf3c6d9101e7fe62","unresolved":false,"context_lines":[{"line_number":16,"context_line":"Problem description"},{"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":"Glare needs stable API that satisfy requirements of API-WG and DefCore."},{"line_number":20,"context_line":"Also Glare must implement OpenStack Image API v2."},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"Proposed change"}],"source_content_type":"text/x-rst","patch_set":5,"id":"7aa08908_63b56030","line":19,"in_reply_to":"9abb7d3a_97c82824","updated":"2016-06-09 13:31:28.000000000","message":"Done","commit_id":"f126401542679af867ba05307eb8b9f3ed8656b8"},{"author":{"_account_id":13111,"name":"Hidekazu Nakamura","email":"hidekazuna@gmail.com","username":"hid-nakamura"},"change_message_id":"bb64094fc3b734403ce945707897ca543f4d1e26","unresolved":false,"context_lines":[{"line_number":102,"context_line":""},{"line_number":103,"context_line":"* *Artifact Property* - property of artifact that defines some information"},{"line_number":104,"context_line":"  about Artifact. Artifact Properties always have name, type and value."},{"line_number":105,"context_line":"  The following types are supported:"},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"  * *string*;"},{"line_number":108,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"bab6814e_8bedfef1","line":105,"range":{"start_line":105,"start_character":2,"end_line":105,"end_character":21},"updated":"2016-05-24 01:44:55.000000000","message":"Chould you explain these types? some types are like python and others( dependency, version) are not.","commit_id":"f126401542679af867ba05307eb8b9f3ed8656b8"},{"author":{"_account_id":13111,"name":"Hidekazu Nakamura","email":"hidekazuna@gmail.com","username":"hid-nakamura"},"change_message_id":"05de98f22d4026841a2b172e8747e78603a31b03","unresolved":false,"context_lines":[{"line_number":102,"context_line":""},{"line_number":103,"context_line":"* *Artifact Property* - property of artifact that defines some information"},{"line_number":104,"context_line":"  about Artifact. Artifact Properties always have name, type and value."},{"line_number":105,"context_line":"  The following types are supported:"},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"  * *string*;"},{"line_number":108,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"7aa08908_a9f25198","line":105,"range":{"start_line":105,"start_character":2,"end_line":105,"end_character":21},"in_reply_to":"7aa08908_f58627da","updated":"2016-06-10 09:35:05.000000000","message":"Done","commit_id":"f126401542679af867ba05307eb8b9f3ed8656b8"},{"author":{"_account_id":11391,"name":"Mikhail Fedosin","email":"mfedosin@redhat.com","username":"fedosinme"},"change_message_id":"31ea662d8e15ae6cb653f9fdaf3c6d9101e7fe62","unresolved":false,"context_lines":[{"line_number":102,"context_line":""},{"line_number":103,"context_line":"* *Artifact Property* - property of artifact that defines some information"},{"line_number":104,"context_line":"  about Artifact. Artifact Properties always have name, type and value."},{"line_number":105,"context_line":"  The following types are supported:"},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"  * *string*;"},{"line_number":108,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"7aa08908_f58627da","line":105,"range":{"start_line":105,"start_character":2,"end_line":105,"end_character":21},"in_reply_to":"bab6814e_8bedfef1","updated":"2016-06-09 13:31:28.000000000","message":"Updated in latest version of the spec.","commit_id":"f126401542679af867ba05307eb8b9f3ed8656b8"},{"author":{"_account_id":17116,"name":"Niall Bunting","email":"niall.bunting@hpe.com","username":"NiallBunting"},"change_message_id":"1e35904dde5811f798e8c7891562bc3db5d00804","unresolved":false,"context_lines":[{"line_number":131,"context_line":"  * **protected** - boolean value indicating if the property value cannot be edited"},{"line_number":132,"context_line":"    by User. (Default: False)"},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"  * **sortable** - boolean value indicating if the is a possibility to sort by"},{"line_number":135,"context_line":"    this property values. (Default: False)"},{"line_number":136,"context_line":""},{"line_number":137,"context_line":"  * **default** - a default value for the property may be specified by the Artifact"}],"source_content_type":"text/x-rst","patch_set":5,"id":"9abb7d3a_f7fed436","line":134,"updated":"2016-05-30 17:05:48.000000000","message":"nit: s/the/there/","commit_id":"f126401542679af867ba05307eb8b9f3ed8656b8"},{"author":{"_account_id":11391,"name":"Mikhail Fedosin","email":"mfedosin@redhat.com","username":"fedosinme"},"change_message_id":"31ea662d8e15ae6cb653f9fdaf3c6d9101e7fe62","unresolved":false,"context_lines":[{"line_number":131,"context_line":"  * **protected** - boolean value indicating if the property value cannot be edited"},{"line_number":132,"context_line":"    by User. (Default: False)"},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"  * **sortable** - boolean value indicating if the is a possibility to sort by"},{"line_number":135,"context_line":"    this property values. (Default: False)"},{"line_number":136,"context_line":""},{"line_number":137,"context_line":"  * **default** - a default value for the property may be specified by the Artifact"}],"source_content_type":"text/x-rst","patch_set":5,"id":"7aa08908_754a37ae","line":134,"in_reply_to":"9abb7d3a_f7fed436","updated":"2016-06-09 13:31:28.000000000","message":"Done","commit_id":"f126401542679af867ba05307eb8b9f3ed8656b8"},{"author":{"_account_id":13111,"name":"Hidekazu Nakamura","email":"hidekazuna@gmail.com","username":"hid-nakamura"},"change_message_id":"bb64094fc3b734403ce945707897ca543f4d1e26","unresolved":false,"context_lines":[{"line_number":144,"context_line":""},{"line_number":145,"context_line":"  * **filter_ops** - a list of available filter operators for the property."},{"line_number":146,"context_line":""},{"line_number":147,"context_line":"* *Artifact Dependency* - property that defines dependency of the Artifact from"},{"line_number":148,"context_line":"  another Artifact. It is url that allows user to obtain some Artifact"},{"line_number":149,"context_line":"  data. For external dependency the format is the following:"},{"line_number":150,"context_line":"  *http(s)://\u003cnetloc\u003e/\u003cpath\u003e*"}],"source_content_type":"text/x-rst","patch_set":5,"id":"bab6814e_0b80ee45","line":147,"range":{"start_line":147,"start_character":26,"end_line":147,"end_character":34},"updated":"2016-05-24 01:44:55.000000000","message":"If this is explanation of line 117, this is type. Which is true? Maybe I am confusing Artifact Property and type of property.","commit_id":"f126401542679af867ba05307eb8b9f3ed8656b8"},{"author":{"_account_id":13111,"name":"Hidekazu Nakamura","email":"hidekazuna@gmail.com","username":"hid-nakamura"},"change_message_id":"05de98f22d4026841a2b172e8747e78603a31b03","unresolved":false,"context_lines":[{"line_number":144,"context_line":""},{"line_number":145,"context_line":"  * **filter_ops** - a list of available filter operators for the property."},{"line_number":146,"context_line":""},{"line_number":147,"context_line":"* *Artifact Dependency* - property that defines dependency of the Artifact from"},{"line_number":148,"context_line":"  another Artifact. It is url that allows user to obtain some Artifact"},{"line_number":149,"context_line":"  data. For external dependency the format is the following:"},{"line_number":150,"context_line":"  *http(s)://\u003cnetloc\u003e/\u003cpath\u003e*"}],"source_content_type":"text/x-rst","patch_set":5,"id":"7aa08908_e92a99e6","line":147,"range":{"start_line":147,"start_character":26,"end_line":147,"end_character":34},"in_reply_to":"7aa08908_d5ba0b71","updated":"2016-06-10 09:35:05.000000000","message":"Done","commit_id":"f126401542679af867ba05307eb8b9f3ed8656b8"},{"author":{"_account_id":9775,"name":"Sudipta Biswas","email":"sbiswas7@in.ibm.com","username":"sudswas"},"change_message_id":"f0f1d9dfdddc52906d382dc0cea682615ff4ccfc","unresolved":false,"context_lines":[{"line_number":144,"context_line":""},{"line_number":145,"context_line":"  * **filter_ops** - a list of available filter operators for the property."},{"line_number":146,"context_line":""},{"line_number":147,"context_line":"* *Artifact Dependency* - property that defines dependency of the Artifact from"},{"line_number":148,"context_line":"  another Artifact. It is url that allows user to obtain some Artifact"},{"line_number":149,"context_line":"  data. For external dependency the format is the following:"},{"line_number":150,"context_line":"  *http(s)://\u003cnetloc\u003e/\u003cpath\u003e*"}],"source_content_type":"text/x-rst","patch_set":5,"id":"7aa08908_cd626cd8","line":147,"range":{"start_line":147,"start_character":26,"end_line":147,"end_character":34},"in_reply_to":"bab6814e_0b80ee45","updated":"2016-06-06 07:05:34.000000000","message":"+1","commit_id":"f126401542679af867ba05307eb8b9f3ed8656b8"},{"author":{"_account_id":11391,"name":"Mikhail Fedosin","email":"mfedosin@redhat.com","username":"fedosinme"},"change_message_id":"31ea662d8e15ae6cb653f9fdaf3c6d9101e7fe62","unresolved":false,"context_lines":[{"line_number":144,"context_line":""},{"line_number":145,"context_line":"  * **filter_ops** - a list of available filter operators for the property."},{"line_number":146,"context_line":""},{"line_number":147,"context_line":"* *Artifact Dependency* - property that defines dependency of the Artifact from"},{"line_number":148,"context_line":"  another Artifact. It is url that allows user to obtain some Artifact"},{"line_number":149,"context_line":"  data. For external dependency the format is the following:"},{"line_number":150,"context_line":"  *http(s)://\u003cnetloc\u003e/\u003cpath\u003e*"}],"source_content_type":"text/x-rst","patch_set":5,"id":"7aa08908_d5ba0b71","line":147,"range":{"start_line":147,"start_character":26,"end_line":147,"end_character":34},"in_reply_to":"bab6814e_0b80ee45","updated":"2016-06-09 13:31:28.000000000","message":"Yes, sure, this this a type!","commit_id":"f126401542679af867ba05307eb8b9f3ed8656b8"},{"author":{"_account_id":17116,"name":"Niall Bunting","email":"niall.bunting@hpe.com","username":"NiallBunting"},"change_message_id":"1e35904dde5811f798e8c7891562bc3db5d00804","unresolved":false,"context_lines":[{"line_number":145,"context_line":"  * **filter_ops** - a list of available filter operators for the property."},{"line_number":146,"context_line":""},{"line_number":147,"context_line":"* *Artifact Dependency* - property that defines dependency of the Artifact from"},{"line_number":148,"context_line":"  another Artifact. It is url that allows user to obtain some Artifact"},{"line_number":149,"context_line":"  data. For external dependency the format is the following:"},{"line_number":150,"context_line":"  *http(s)://\u003cnetloc\u003e/\u003cpath\u003e*"},{"line_number":151,"context_line":"  For internal dependencies dependency contains only \u003cpath\u003e."}],"source_content_type":"text/x-rst","patch_set":5,"id":"9abb7d3a_57836098","line":148,"updated":"2016-05-30 17:05:48.000000000","message":"nit: s/is url/is a url/","commit_id":"f126401542679af867ba05307eb8b9f3ed8656b8"},{"author":{"_account_id":11391,"name":"Mikhail Fedosin","email":"mfedosin@redhat.com","username":"fedosinme"},"change_message_id":"31ea662d8e15ae6cb653f9fdaf3c6d9101e7fe62","unresolved":false,"context_lines":[{"line_number":145,"context_line":"  * **filter_ops** - a list of available filter operators for the property."},{"line_number":146,"context_line":""},{"line_number":147,"context_line":"* *Artifact Dependency* - property that defines dependency of the Artifact from"},{"line_number":148,"context_line":"  another Artifact. It is url that allows user to obtain some Artifact"},{"line_number":149,"context_line":"  data. For external dependency the format is the following:"},{"line_number":150,"context_line":"  *http(s)://\u003cnetloc\u003e/\u003cpath\u003e*"},{"line_number":151,"context_line":"  For internal dependencies dependency contains only \u003cpath\u003e."}],"source_content_type":"text/x-rst","patch_set":5,"id":"7aa08908_386426e4","line":148,"in_reply_to":"9abb7d3a_57836098","updated":"2016-06-09 13:31:28.000000000","message":"is an url ;)","commit_id":"f126401542679af867ba05307eb8b9f3ed8656b8"},{"author":{"_account_id":9775,"name":"Sudipta Biswas","email":"sbiswas7@in.ibm.com","username":"sudswas"},"change_message_id":"f0f1d9dfdddc52906d382dc0cea682615ff4ccfc","unresolved":false,"context_lines":[{"line_number":152,"context_line":"  Example of \u003cpath\u003e:"},{"line_number":153,"context_line":"  /v1/artifacts/\u003cartifact_type\u003e/\u003cartifact identifier\u003e."},{"line_number":154,"context_line":"  User can use filters and page_limits in path to define dynamic dependencies."},{"line_number":155,"context_line":"  All that Glare will do is request GET with dependency to receive Artifact"},{"line_number":156,"context_line":"  info."},{"line_number":157,"context_line":""},{"line_number":158,"context_line":"* *Artifact Blob Property* - property that defines binary data for Artifact."}],"source_content_type":"text/x-rst","patch_set":5,"id":"7aa08908_4d0f9ce1","line":155,"updated":"2016-06-06 07:05:34.000000000","message":"Can this is be a list of dependencies? For instance artifact 1 --\u003e depends on artifact 2 and artifact 3. Also, if there\u0027s a \u0027hard\u0027 dependency - can we say - download artifact 2 and 3 and only then download artifact 1?","commit_id":"f126401542679af867ba05307eb8b9f3ed8656b8"},{"author":{"_account_id":11391,"name":"Mikhail Fedosin","email":"mfedosin@redhat.com","username":"fedosinme"},"change_message_id":"31ea662d8e15ae6cb653f9fdaf3c6d9101e7fe62","unresolved":false,"context_lines":[{"line_number":152,"context_line":"  Example of \u003cpath\u003e:"},{"line_number":153,"context_line":"  /v1/artifacts/\u003cartifact_type\u003e/\u003cartifact identifier\u003e."},{"line_number":154,"context_line":"  User can use filters and page_limits in path to define dynamic dependencies."},{"line_number":155,"context_line":"  All that Glare will do is request GET with dependency to receive Artifact"},{"line_number":156,"context_line":"  info."},{"line_number":157,"context_line":""},{"line_number":158,"context_line":"* *Artifact Blob Property* - property that defines binary data for Artifact."}],"source_content_type":"text/x-rst","patch_set":5,"id":"7aa08908_18b5ea7d","line":155,"in_reply_to":"7aa08908_4d0f9ce1","updated":"2016-06-09 13:31:28.000000000","message":"Sure, there is a possibility to define a list or dict of dependencies with generic types. You just need to specify element_type as Dependency and that\u0027s all.\n\nHard dependencies won\u0027t be supported in initial Glare API, only soft ones. HardDependency type will be added in next versions.","commit_id":"f126401542679af867ba05307eb8b9f3ed8656b8"},{"author":{"_account_id":13111,"name":"Hidekazu Nakamura","email":"hidekazuna@gmail.com","username":"hid-nakamura"},"change_message_id":"bb64094fc3b734403ce945707897ca543f4d1e26","unresolved":false,"context_lines":[{"line_number":155,"context_line":"  All that Glare will do is request GET with dependency to receive Artifact"},{"line_number":156,"context_line":"  info."},{"line_number":157,"context_line":""},{"line_number":158,"context_line":"* *Artifact Blob Property* - property that defines binary data for Artifact."},{"line_number":159,"context_line":"  User can download Artifact blob from Glare. Each blob property has a flag"},{"line_number":160,"context_line":"  *external*, that indicates if the property was created during file upload"},{"line_number":161,"context_line":"  (False) or by direct user request (True). In other words, “external” means"}],"source_content_type":"text/x-rst","patch_set":5,"id":"bab6814e_0b2aae2c","line":158,"range":{"start_line":158,"start_character":29,"end_line":158,"end_character":37},"updated":"2016-05-24 01:44:55.000000000","message":"If this is explanation of line 115, this is type. Which is true?","commit_id":"f126401542679af867ba05307eb8b9f3ed8656b8"},{"author":{"_account_id":13111,"name":"Hidekazu Nakamura","email":"hidekazuna@gmail.com","username":"hid-nakamura"},"change_message_id":"05de98f22d4026841a2b172e8747e78603a31b03","unresolved":false,"context_lines":[{"line_number":155,"context_line":"  All that Glare will do is request GET with dependency to receive Artifact"},{"line_number":156,"context_line":"  info."},{"line_number":157,"context_line":""},{"line_number":158,"context_line":"* *Artifact Blob Property* - property that defines binary data for Artifact."},{"line_number":159,"context_line":"  User can download Artifact blob from Glare. Each blob property has a flag"},{"line_number":160,"context_line":"  *external*, that indicates if the property was created during file upload"},{"line_number":161,"context_line":"  (False) or by direct user request (True). In other words, “external” means"}],"source_content_type":"text/x-rst","patch_set":5,"id":"7aa08908_693fc925","line":158,"range":{"start_line":158,"start_character":29,"end_line":158,"end_character":37},"in_reply_to":"7aa08908_0ba47206","updated":"2016-06-10 09:35:05.000000000","message":"Done","commit_id":"f126401542679af867ba05307eb8b9f3ed8656b8"},{"author":{"_account_id":11391,"name":"Mikhail Fedosin","email":"mfedosin@redhat.com","username":"fedosinme"},"change_message_id":"31ea662d8e15ae6cb653f9fdaf3c6d9101e7fe62","unresolved":false,"context_lines":[{"line_number":155,"context_line":"  All that Glare will do is request GET with dependency to receive Artifact"},{"line_number":156,"context_line":"  info."},{"line_number":157,"context_line":""},{"line_number":158,"context_line":"* *Artifact Blob Property* - property that defines binary data for Artifact."},{"line_number":159,"context_line":"  User can download Artifact blob from Glare. Each blob property has a flag"},{"line_number":160,"context_line":"  *external*, that indicates if the property was created during file upload"},{"line_number":161,"context_line":"  (False) or by direct user request (True). In other words, “external” means"}],"source_content_type":"text/x-rst","patch_set":5,"id":"7aa08908_0ba47206","line":158,"range":{"start_line":158,"start_character":29,"end_line":158,"end_character":37},"in_reply_to":"bab6814e_0b2aae2c","updated":"2016-06-09 13:31:28.000000000","message":"Yeah, it\u0027s a type","commit_id":"f126401542679af867ba05307eb8b9f3ed8656b8"},{"author":{"_account_id":9775,"name":"Sudipta Biswas","email":"sbiswas7@in.ibm.com","username":"sudswas"},"change_message_id":"f0f1d9dfdddc52906d382dc0cea682615ff4ccfc","unresolved":false,"context_lines":[{"line_number":160,"context_line":"  *external*, that indicates if the property was created during file upload"},{"line_number":161,"context_line":"  (False) or by direct user request (True). In other words, “external” means"},{"line_number":162,"context_line":"  that blob property url is just a reference to some external file and Glare"},{"line_number":163,"context_line":"  does not manage the blob operations in that case."},{"line_number":164,"context_line":"  Artifact blob properties may have the following statuses:"},{"line_number":165,"context_line":""},{"line_number":166,"context_line":"  * *saving* - Artifact blob record created in table, blob upload started."}],"source_content_type":"text/x-rst","patch_set":5,"id":"7aa08908_ad73a04c","line":163,"updated":"2016-06-06 07:05:34.000000000","message":"I am not sure if this is the place to also mention the format of the blobs that could be supported?","commit_id":"f126401542679af867ba05307eb8b9f3ed8656b8"},{"author":{"_account_id":11391,"name":"Mikhail Fedosin","email":"mfedosin@redhat.com","username":"fedosinme"},"change_message_id":"31ea662d8e15ae6cb653f9fdaf3c6d9101e7fe62","unresolved":false,"context_lines":[{"line_number":160,"context_line":"  *external*, that indicates if the property was created during file upload"},{"line_number":161,"context_line":"  (False) or by direct user request (True). In other words, “external” means"},{"line_number":162,"context_line":"  that blob property url is just a reference to some external file and Glare"},{"line_number":163,"context_line":"  does not manage the blob operations in that case."},{"line_number":164,"context_line":"  Artifact blob properties may have the following statuses:"},{"line_number":165,"context_line":""},{"line_number":166,"context_line":"  * *saving* - Artifact blob record created in table, blob upload started."}],"source_content_type":"text/x-rst","patch_set":5,"id":"7aa08908_8b4d02c7","line":163,"in_reply_to":"7aa08908_ad73a04c","updated":"2016-06-09 13:31:28.000000000","message":"Good point. Added.","commit_id":"f126401542679af867ba05307eb8b9f3ed8656b8"},{"author":{"_account_id":9775,"name":"Sudipta Biswas","email":"sbiswas7@in.ibm.com","username":"sudswas"},"change_message_id":"f0f1d9dfdddc52906d382dc0cea682615ff4ccfc","unresolved":false,"context_lines":[{"line_number":203,"context_line":""},{"line_number":204,"context_line":"* *Artifact Member* - if there is an Artifact that Artifact Owner wants to be"},{"line_number":205,"context_line":"  available for users from other projects then he needs to specify these users"},{"line_number":206,"context_line":"  (projects, domains) as Artifact Members. In this case they will get"},{"line_number":207,"context_line":"  notifications and must approve them to be able to download or observe shared"},{"line_number":208,"context_line":"  Artifacts (only read-only access). Artifact visibility will be set to"},{"line_number":209,"context_line":"  ‘shared’."}],"source_content_type":"text/x-rst","patch_set":5,"id":"7aa08908_2d3a1037","line":206,"updated":"2016-06-06 07:05:34.000000000","message":"How does the user specify a public artifact? Or is it not supported?","commit_id":"f126401542679af867ba05307eb8b9f3ed8656b8"},{"author":{"_account_id":11391,"name":"Mikhail Fedosin","email":"mfedosin@redhat.com","username":"fedosinme"},"change_message_id":"31ea662d8e15ae6cb653f9fdaf3c6d9101e7fe62","unresolved":false,"context_lines":[{"line_number":203,"context_line":""},{"line_number":204,"context_line":"* *Artifact Member* - if there is an Artifact that Artifact Owner wants to be"},{"line_number":205,"context_line":"  available for users from other projects then he needs to specify these users"},{"line_number":206,"context_line":"  (projects, domains) as Artifact Members. In this case they will get"},{"line_number":207,"context_line":"  notifications and must approve them to be able to download or observe shared"},{"line_number":208,"context_line":"  Artifacts (only read-only access). Artifact visibility will be set to"},{"line_number":209,"context_line":"  ‘shared’."}],"source_content_type":"text/x-rst","patch_set":5,"id":"7aa08908_8e751034","line":206,"in_reply_to":"7aa08908_2d3a1037","updated":"2016-06-09 13:31:28.000000000","message":"Like Glance v2, Glare artifacts have property \u0027visibility\u0027, that at the moment may have 3 values: \u0027private\u0027, \u0027public\u0027 and \u0027shared\u0027. If visibility is \u0027public\u0027, then artifact may be accessed by any user.","commit_id":"f126401542679af867ba05307eb8b9f3ed8656b8"},{"author":{"_account_id":17116,"name":"Niall Bunting","email":"niall.bunting@hpe.com","username":"NiallBunting"},"change_message_id":"1e35904dde5811f798e8c7891562bc3db5d00804","unresolved":false,"context_lines":[{"line_number":276,"context_line":""},{"line_number":277,"context_line":"  1. Operator deletes artifact type name from Glare configuration file."},{"line_number":278,"context_line":""},{"line_number":279,"context_line":"  2. Operator restarts Glare."},{"line_number":280,"context_line":""},{"line_number":281,"context_line":"  *Alternative scenarios:*"},{"line_number":282,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"9abb7d3a_f2f542cb","line":279,"updated":"2016-05-30 17:05:48.000000000","message":"What happens to a users artifact in this case, does it just disapear?","commit_id":"f126401542679af867ba05307eb8b9f3ed8656b8"},{"author":{"_account_id":11391,"name":"Mikhail Fedosin","email":"mfedosin@redhat.com","username":"fedosinme"},"change_message_id":"31ea662d8e15ae6cb653f9fdaf3c6d9101e7fe62","unresolved":false,"context_lines":[{"line_number":276,"context_line":""},{"line_number":277,"context_line":"  1. Operator deletes artifact type name from Glare configuration file."},{"line_number":278,"context_line":""},{"line_number":279,"context_line":"  2. Operator restarts Glare."},{"line_number":280,"context_line":""},{"line_number":281,"context_line":"  *Alternative scenarios:*"},{"line_number":282,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"7aa08908_09d59ab8","line":279,"in_reply_to":"9abb7d3a_f2f542cb","updated":"2016-06-09 13:31:28.000000000","message":"Artifacts of disabled artifact type will be presented in database and all data will be in storage, but users won\u0027t be able to access those artifacts with Glare API.","commit_id":"f126401542679af867ba05307eb8b9f3ed8656b8"},{"author":{"_account_id":9775,"name":"Sudipta Biswas","email":"sbiswas7@in.ibm.com","username":"sudswas"},"change_message_id":"f0f1d9dfdddc52906d382dc0cea682615ff4ccfc","unresolved":false,"context_lines":[{"line_number":1131,"context_line":"                \"id\": \"art_id1\","},{"line_number":1132,"context_line":"                \"version\": null,"},{"line_number":1133,"context_line":"                \"blob_file\": null,"},{"line_number":1134,"context_line":"                \"metadata\": {}"},{"line_number":1135,"context_line":"            }"},{"line_number":1136,"context_line":""},{"line_number":1137,"context_line":"    3. List artifacts"}],"source_content_type":"text/x-rst","patch_set":5,"id":"7aa08908_4d0cbc94","line":1134,"updated":"2016-06-06 07:05:34.000000000","message":"Don\u0027t see the \u0027dependency\u0027 field here. Am i missing something?\nAlso I don\u0027t seem to see the \u0027type\u0027 of the artifact either. Any reason for not including the same?","commit_id":"f126401542679af867ba05307eb8b9f3ed8656b8"},{"author":{"_account_id":14676,"name":"Kairat Kushaev","email":"kkushaev@mirantis.com","username":"kairat_kushaev"},"change_message_id":"94e729c34422cb878c5dd240fefe08d4cc546b36","unresolved":false,"context_lines":[{"line_number":1131,"context_line":"                \"id\": \"art_id1\","},{"line_number":1132,"context_line":"                \"version\": null,"},{"line_number":1133,"context_line":"                \"blob_file\": null,"},{"line_number":1134,"context_line":"                \"metadata\": {}"},{"line_number":1135,"context_line":"            }"},{"line_number":1136,"context_line":""},{"line_number":1137,"context_line":"    3. List artifacts"}],"source_content_type":"text/x-rst","patch_set":5,"id":"7aa08908_48404336","line":1134,"in_reply_to":"7aa08908_4d0cbc94","updated":"2016-06-09 13:25:26.000000000","message":"to get a response you need to put artifact type in url. So artifact type is known to user and not sure we need to put it in the response.\nRegarding dependency: I see that there is not property with dependency type. So there is not dependency in response.","commit_id":"f126401542679af867ba05307eb8b9f3ed8656b8"},{"author":{"_account_id":1112,"name":"Everett Toews","email":"everett.toews@rackspace.com","username":"everett-toews"},"change_message_id":"9b4ba64ceede3e85a6224a570b1c8180b7b37f5b","unresolved":false,"context_lines":[{"line_number":937,"context_line":"For updating artifact properties Glare API uses `json-patch"},{"line_number":938,"context_line":"\u003chttp://jsonpatch.com/\u003e`_"},{"line_number":939,"context_line":""},{"line_number":940,"context_line":"**Meta**"},{"line_number":941,"context_line":""},{"line_number":942,"context_line":"  * **list of available types**"},{"line_number":943,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"7aa08908_f79e19b7","line":940,"updated":"2016-06-09 17:14:54.000000000","message":"Does this metadata resource follow the metadata guideline [1]?\n\nIf so, please add a link [1] to this section saying it conforms to the guideline.\n\nIf not, please follow the guideline. :)\n\n[1] http://specs.openstack.org/openstack/api-wg/guidelines/metadata.html","commit_id":"9441a9349a2e2217a2162a069fd2dd277b1ffb27"},{"author":{"_account_id":1112,"name":"Everett Toews","email":"everett.toews@rackspace.com","username":"everett-toews"},"change_message_id":"b63ada441964aa29c2283605d3bd8e2acdff0b90","unresolved":false,"context_lines":[{"line_number":937,"context_line":"For updating artifact properties Glare API uses `json-patch"},{"line_number":938,"context_line":"\u003chttp://jsonpatch.com/\u003e`_"},{"line_number":939,"context_line":""},{"line_number":940,"context_line":"**Meta**"},{"line_number":941,"context_line":""},{"line_number":942,"context_line":"  * **list of available types**"},{"line_number":943,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"7aa08908_12c6ec67","line":940,"in_reply_to":"7aa08908_db8aff19","updated":"2016-06-12 21:33:22.000000000","message":"Thanks!","commit_id":"9441a9349a2e2217a2162a069fd2dd277b1ffb27"},{"author":{"_account_id":11391,"name":"Mikhail Fedosin","email":"mfedosin@redhat.com","username":"fedosinme"},"change_message_id":"124b8f8035b5d095516d15deda97d13a69091c06","unresolved":false,"context_lines":[{"line_number":937,"context_line":"For updating artifact properties Glare API uses `json-patch"},{"line_number":938,"context_line":"\u003chttp://jsonpatch.com/\u003e`_"},{"line_number":939,"context_line":""},{"line_number":940,"context_line":"**Meta**"},{"line_number":941,"context_line":""},{"line_number":942,"context_line":"  * **list of available types**"},{"line_number":943,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"7aa08908_db8aff19","line":940,"in_reply_to":"7aa08908_f79e19b7","updated":"2016-06-10 12:08:09.000000000","message":"Oh, no sir... It\u0027s just a word here, that describes a group of requests to work with available artifact types. It has absolutely nothing in common with metadata in the guideline.\nI\u0027ll rename it, so as not to confuse readers.","commit_id":"9441a9349a2e2217a2162a069fd2dd277b1ffb27"},{"author":{"_account_id":1112,"name":"Everett Toews","email":"everett.toews@rackspace.com","username":"everett-toews"},"change_message_id":"9b4ba64ceede3e85a6224a570b1c8180b7b37f5b","unresolved":false,"context_lines":[{"line_number":1060,"context_line":"    204 No Content."},{"line_number":1061,"context_line":""},{"line_number":1062,"context_line":"**Tags**"},{"line_number":1063,"context_line":""},{"line_number":1064,"context_line":"  * **add a tag to artifact**"},{"line_number":1065,"context_line":""},{"line_number":1066,"context_line":"    PUT /v1/artifacts/{artifact_type}/{artifacts_id}/tags/{tag_name}"}],"source_content_type":"text/x-rst","patch_set":6,"id":"7aa08908_1ce82c16","line":1063,"updated":"2016-06-09 17:14:54.000000000","message":"Does this tag resource follow the tags guideline [1]?\n\nIf so, please add a link [1] to this section saying it conforms to the guideline.\n\nIf not, please follow the guideline. :)\n\n[1] http://specs.openstack.org/openstack/api-wg/guidelines/tags.html","commit_id":"9441a9349a2e2217a2162a069fd2dd277b1ffb27"},{"author":{"_account_id":11391,"name":"Mikhail Fedosin","email":"mfedosin@redhat.com","username":"fedosinme"},"change_message_id":"124b8f8035b5d095516d15deda97d13a69091c06","unresolved":false,"context_lines":[{"line_number":1060,"context_line":"    204 No Content."},{"line_number":1061,"context_line":""},{"line_number":1062,"context_line":"**Tags**"},{"line_number":1063,"context_line":""},{"line_number":1064,"context_line":"  * **add a tag to artifact**"},{"line_number":1065,"context_line":""},{"line_number":1066,"context_line":"    PUT /v1/artifacts/{artifact_type}/{artifacts_id}/tags/{tag_name}"}],"source_content_type":"text/x-rst","patch_set":6,"id":"7aa08908_3b0ce393","line":1063,"in_reply_to":"7aa08908_1ce82c16","updated":"2016-06-10 12:08:09.000000000","message":"I say it on line 928, should I repeat it here?","commit_id":"9441a9349a2e2217a2162a069fd2dd277b1ffb27"},{"author":{"_account_id":1112,"name":"Everett Toews","email":"everett.toews@rackspace.com","username":"everett-toews"},"change_message_id":"b63ada441964aa29c2283605d3bd8e2acdff0b90","unresolved":false,"context_lines":[{"line_number":1060,"context_line":"    204 No Content."},{"line_number":1061,"context_line":""},{"line_number":1062,"context_line":"**Tags**"},{"line_number":1063,"context_line":""},{"line_number":1064,"context_line":"  * **add a tag to artifact**"},{"line_number":1065,"context_line":""},{"line_number":1066,"context_line":"    PUT /v1/artifacts/{artifact_type}/{artifacts_id}/tags/{tag_name}"}],"source_content_type":"text/x-rst","patch_set":6,"id":"7aa08908_b2cc388a","line":1063,"in_reply_to":"7aa08908_3b0ce393","updated":"2016-06-12 21:33:22.000000000","message":"I\u0027d say yes as this is where it is most relevant.","commit_id":"9441a9349a2e2217a2162a069fd2dd277b1ffb27"},{"author":{"_account_id":1112,"name":"Everett Toews","email":"everett.toews@rackspace.com","username":"everett-toews"},"change_message_id":"9b4ba64ceede3e85a6224a570b1c8180b7b37f5b","unresolved":false,"context_lines":[{"line_number":1205,"context_line":""},{"line_number":1206,"context_line":"        * Method: GET"},{"line_number":1207,"context_line":""},{"line_number":1208,"context_line":"        * URL: http://host:port/v1/artifacts/example_type?name\u003deq:old_name"},{"line_number":1209,"context_line":""},{"line_number":1210,"context_line":"      Response:"},{"line_number":1211,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"7aa08908_1c178c55","line":1208,"updated":"2016-06-09 17:14:54.000000000","message":"I see this API uses filtering. Presumably it does sorting and pagination too. This should be called out somewhere in the REST API impact section. \n\nDoes it follow the Pagination, Filtering, and Sorting guideline [1][2]?\n\nIf so, please add a link [1] to the section saying it conforms to the guideline.\n\nIf not, please follow the guideline. :)\n\n[1] http://specs.openstack.org/openstack/api-wg/guidelines/pagination_filter_sort.html\n[2] https://review.openstack.org/#/c/190743/","commit_id":"9441a9349a2e2217a2162a069fd2dd277b1ffb27"},{"author":{"_account_id":11391,"name":"Mikhail Fedosin","email":"mfedosin@redhat.com","username":"fedosinme"},"change_message_id":"124b8f8035b5d095516d15deda97d13a69091c06","unresolved":false,"context_lines":[{"line_number":1205,"context_line":""},{"line_number":1206,"context_line":"        * Method: GET"},{"line_number":1207,"context_line":""},{"line_number":1208,"context_line":"        * URL: http://host:port/v1/artifacts/example_type?name\u003deq:old_name"},{"line_number":1209,"context_line":""},{"line_number":1210,"context_line":"      Response:"},{"line_number":1211,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"7aa08908_5b68cf21","line":1208,"in_reply_to":"7aa08908_1c178c55","updated":"2016-06-10 12:08:09.000000000","message":"The same - it\u0027s written on line 928.","commit_id":"9441a9349a2e2217a2162a069fd2dd277b1ffb27"},{"author":{"_account_id":1112,"name":"Everett Toews","email":"everett.toews@rackspace.com","username":"everett-toews"},"change_message_id":"b63ada441964aa29c2283605d3bd8e2acdff0b90","unresolved":false,"context_lines":[{"line_number":1205,"context_line":""},{"line_number":1206,"context_line":"        * Method: GET"},{"line_number":1207,"context_line":""},{"line_number":1208,"context_line":"        * URL: http://host:port/v1/artifacts/example_type?name\u003deq:old_name"},{"line_number":1209,"context_line":""},{"line_number":1210,"context_line":"      Response:"},{"line_number":1211,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"7aa08908_f2c24052","line":1208,"in_reply_to":"7aa08908_5b68cf21","updated":"2016-06-12 21:33:22.000000000","message":"Just on line 928 is fine since it\u0027s the kind of guideline that cover the entire API.","commit_id":"9441a9349a2e2217a2162a069fd2dd277b1ffb27"},{"author":{"_account_id":1112,"name":"Everett Toews","email":"everett.toews@rackspace.com","username":"everett-toews"},"change_message_id":"9674056e206e9a1afbd06a6b69e966d0ee20ea66","unresolved":false,"context_lines":[{"line_number":1298,"context_line":"                },"},{"line_number":1299,"context_line":"                \"blob_file\": {"},{"line_number":1300,"context_line":"                    \"status\": \"active\","},{"line_number":1301,"context_line":"                    \"url\": \"swift+config://ref1/glance/8c69b7fd-ec52-4497-ae50-606950088591\","},{"line_number":1302,"context_line":"                    \"checksum\": \"8452e47f27b9618152a2b172357a547d\","},{"line_number":1303,"context_line":"                    \"external\": false,"},{"line_number":1304,"context_line":"                    \"metadata\": \"{}\","}],"source_content_type":"text/x-rst","patch_set":6,"id":"7aa08908_57d0cdc9","line":1301,"updated":"2016-06-09 17:15:37.000000000","message":"Would it make sense to represent this url as a JSON Schema hypermedia link?\n\nSee https://bugs.launchpad.net/openstack-api-wg/+bug/1562058\nSee http://json-schema.org/latest/json-schema-hypermedia.html#anchor6","commit_id":"9441a9349a2e2217a2162a069fd2dd277b1ffb27"},{"author":{"_account_id":1112,"name":"Everett Toews","email":"everett.toews@rackspace.com","username":"everett-toews"},"change_message_id":"b63ada441964aa29c2283605d3bd8e2acdff0b90","unresolved":false,"context_lines":[{"line_number":1298,"context_line":"                },"},{"line_number":1299,"context_line":"                \"blob_file\": {"},{"line_number":1300,"context_line":"                    \"status\": \"active\","},{"line_number":1301,"context_line":"                    \"url\": \"swift+config://ref1/glance/8c69b7fd-ec52-4497-ae50-606950088591\","},{"line_number":1302,"context_line":"                    \"checksum\": \"8452e47f27b9618152a2b172357a547d\","},{"line_number":1303,"context_line":"                    \"external\": false,"},{"line_number":1304,"context_line":"                    \"metadata\": \"{}\","}],"source_content_type":"text/x-rst","patch_set":6,"id":"7aa08908_92a81c8e","line":1301,"in_reply_to":"7aa08908_1bebe779","updated":"2016-06-12 21:33:22.000000000","message":"That\u0027s sounds like a somewhat nasty backwards incompatible change. I\u0027ll leave it to you whether you want to make the change considering its backwards incompatibly.","commit_id":"9441a9349a2e2217a2162a069fd2dd277b1ffb27"},{"author":{"_account_id":2537,"name":"Nikhil Komawar","email":"nik.komawar@gmail.com","username":"nikhil-komawar"},"change_message_id":"94ebc6931901b97bb701c51ef463a35ffb2bf0c9","unresolved":false,"context_lines":[{"line_number":1298,"context_line":"                },"},{"line_number":1299,"context_line":"                \"blob_file\": {"},{"line_number":1300,"context_line":"                    \"status\": \"active\","},{"line_number":1301,"context_line":"                    \"url\": \"swift+config://ref1/glance/8c69b7fd-ec52-4497-ae50-606950088591\","},{"line_number":1302,"context_line":"                    \"checksum\": \"8452e47f27b9618152a2b172357a547d\","},{"line_number":1303,"context_line":"                    \"external\": false,"},{"line_number":1304,"context_line":"                    \"metadata\": \"{}\","}],"source_content_type":"text/x-rst","patch_set":6,"id":"7aa08908_928515af","line":1301,"in_reply_to":"7aa08908_57d0cdc9","updated":"2016-06-09 21:58:25.000000000","message":"I think they wanted to keep compatibility with Glance. But I think we can think of changing this in Glance too.","commit_id":"9441a9349a2e2217a2162a069fd2dd277b1ffb27"},{"author":{"_account_id":11391,"name":"Mikhail Fedosin","email":"mfedosin@redhat.com","username":"fedosinme"},"change_message_id":"124b8f8035b5d095516d15deda97d13a69091c06","unresolved":false,"context_lines":[{"line_number":1298,"context_line":"                },"},{"line_number":1299,"context_line":"                \"blob_file\": {"},{"line_number":1300,"context_line":"                    \"status\": \"active\","},{"line_number":1301,"context_line":"                    \"url\": \"swift+config://ref1/glance/8c69b7fd-ec52-4497-ae50-606950088591\","},{"line_number":1302,"context_line":"                    \"checksum\": \"8452e47f27b9618152a2b172357a547d\","},{"line_number":1303,"context_line":"                    \"external\": false,"},{"line_number":1304,"context_line":"                    \"metadata\": \"{}\","}],"source_content_type":"text/x-rst","patch_set":6,"id":"7aa08908_1bebe779","line":1301,"in_reply_to":"7aa08908_928515af","updated":"2016-06-10 12:08:09.000000000","message":"Correct, in Glare we don\u0027t control link format, it is set by glance_store library and therefore it has to be changed there for both Glance and Glare.","commit_id":"9441a9349a2e2217a2162a069fd2dd277b1ffb27"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"1840d46ec15d396954c6cdc7eeb755a4c5dac9ed","unresolved":false,"context_lines":[{"line_number":49,"context_line":"* *Artifact type* - defines artifact structure of both its binary data and"},{"line_number":50,"context_line":"  properties. Examples of OpenStack artifact types that will be supported"},{"line_number":51,"context_line":"  in Glare are: Heat templates, Murano Packages, Nova Images, Tacker VNFs and"},{"line_number":52,"context_line":"  so on."},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"* *Artifact status* - specifies the state of the artifact and the possible"},{"line_number":55,"context_line":"  actions that can be done with it. List of possible artifact statuses:"}],"source_content_type":"text/x-rst","patch_set":8,"id":"7aa08908_b0835002","line":52,"updated":"2016-06-14 09:45:44.000000000","message":"Just to confirm: artifact types are open-ended and can be different from glare deployment to glare deployment, or they will always be the same across all glare installs?","commit_id":"7185dcca77cd230044afa90252f7bfb7bbea47d1"},{"author":{"_account_id":11391,"name":"Mikhail Fedosin","email":"mfedosin@redhat.com","username":"fedosinme"},"change_message_id":"1b665a3ae0f6c7a6226dadb297f368fcac7c37e8","unresolved":false,"context_lines":[{"line_number":49,"context_line":"* *Artifact type* - defines artifact structure of both its binary data and"},{"line_number":50,"context_line":"  properties. Examples of OpenStack artifact types that will be supported"},{"line_number":51,"context_line":"  in Glare are: Heat templates, Murano Packages, Nova Images, Tacker VNFs and"},{"line_number":52,"context_line":"  so on."},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"* *Artifact status* - specifies the state of the artifact and the possible"},{"line_number":55,"context_line":"  actions that can be done with it. List of possible artifact statuses:"}],"source_content_type":"text/x-rst","patch_set":8,"id":"7aa08908_1605f944","line":52,"in_reply_to":"7aa08908_b0835002","updated":"2016-06-14 12:03:47.000000000","message":"Yes, they may be different, but artifact type defines only structure of artifacts, the whole API is the same for all types. To get a list of installed artifact type you can send GET requests to /schemas.","commit_id":"7185dcca77cd230044afa90252f7bfb7bbea47d1"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"1840d46ec15d396954c6cdc7eeb755a4c5dac9ed","unresolved":false,"context_lines":[{"line_number":193,"context_line":"   * - Blob Status"},{"line_number":194,"context_line":"     - saving"},{"line_number":195,"context_line":"     - active"},{"line_number":196,"context_line":"     - killed"},{"line_number":197,"context_line":"     - deleted"},{"line_number":198,"context_line":"     - pending delete"},{"line_number":199,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"7aa08908_10e06428","line":196,"updated":"2016-06-14 09:45:44.000000000","message":"this \u0027killed\u0027 term doesn\u0027t appear to be defined or used again anywhere in the document?","commit_id":"7185dcca77cd230044afa90252f7bfb7bbea47d1"},{"author":{"_account_id":11391,"name":"Mikhail Fedosin","email":"mfedosin@redhat.com","username":"fedosinme"},"change_message_id":"1b665a3ae0f6c7a6226dadb297f368fcac7c37e8","unresolved":false,"context_lines":[{"line_number":193,"context_line":"   * - Blob Status"},{"line_number":194,"context_line":"     - saving"},{"line_number":195,"context_line":"     - active"},{"line_number":196,"context_line":"     - killed"},{"line_number":197,"context_line":"     - deleted"},{"line_number":198,"context_line":"     - pending delete"},{"line_number":199,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"7aa08908_d121bb9f","line":196,"in_reply_to":"7aa08908_10e06428","updated":"2016-06-14 12:03:47.000000000","message":"Sorry, I forgot to remove it from the list. Thanks for pointing out!","commit_id":"7185dcca77cd230044afa90252f7bfb7bbea47d1"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"1840d46ec15d396954c6cdc7eeb755a4c5dac9ed","unresolved":false,"context_lines":[{"line_number":383,"context_line":""},{"line_number":384,"context_line":"    2C. Dependency format is incorrect (400 Bad Request)"},{"line_number":385,"context_line":""},{"line_number":386,"context_line":"    2D. Property is protected (400 Bad Request)"},{"line_number":387,"context_line":""},{"line_number":388,"context_line":"* **Use Case 7.** Upload Artifact binary data."},{"line_number":389,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"7aa08908_f0515863","line":386,"updated":"2016-06-14 09:45:44.000000000","message":"Is it worth nothing 404 here if that {artifact_type} doesn\u0027t exist?","commit_id":"7185dcca77cd230044afa90252f7bfb7bbea47d1"},{"author":{"_account_id":11391,"name":"Mikhail Fedosin","email":"mfedosin@redhat.com","username":"fedosinme"},"change_message_id":"1b665a3ae0f6c7a6226dadb297f368fcac7c37e8","unresolved":false,"context_lines":[{"line_number":383,"context_line":""},{"line_number":384,"context_line":"    2C. Dependency format is incorrect (400 Bad Request)"},{"line_number":385,"context_line":""},{"line_number":386,"context_line":"    2D. Property is protected (400 Bad Request)"},{"line_number":387,"context_line":""},{"line_number":388,"context_line":"* **Use Case 7.** Upload Artifact binary data."},{"line_number":389,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"7aa08908_317f5f16","line":386,"in_reply_to":"7aa08908_f0515863","updated":"2016-06-14 12:03:47.000000000","message":"Done","commit_id":"7185dcca77cd230044afa90252f7bfb7bbea47d1"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"1840d46ec15d396954c6cdc7eeb755a4c5dac9ed","unresolved":false,"context_lines":[{"line_number":430,"context_line":""},{"line_number":431,"context_line":"    2C. Metadata is not valid (400 Bad Request)."},{"line_number":432,"context_line":""},{"line_number":433,"context_line":"    3C. Blob is already uploaded and has status ‘active’ (400 Bad Request)"},{"line_number":434,"context_line":""},{"line_number":435,"context_line":"    3D. Blob is saving (400 Bad Request)"},{"line_number":436,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"7aa08908_b0135064","line":433,"updated":"2016-06-14 09:45:44.000000000","message":"This might be a 409 if what you\u0027re trying to say is \"this request can\u0027t be done because you\u0027re trying to give us a blob and we\u0027ve already got one\".\n\nHowever if you can\u0027t decide for sure that 409 is right, then 400 is a better choice. There\u0027s not enough info here to be entirely sure.","commit_id":"7185dcca77cd230044afa90252f7bfb7bbea47d1"},{"author":{"_account_id":11391,"name":"Mikhail Fedosin","email":"mfedosin@redhat.com","username":"fedosinme"},"change_message_id":"1b665a3ae0f6c7a6226dadb297f368fcac7c37e8","unresolved":false,"context_lines":[{"line_number":430,"context_line":""},{"line_number":431,"context_line":"    2C. Metadata is not valid (400 Bad Request)."},{"line_number":432,"context_line":""},{"line_number":433,"context_line":"    3C. Blob is already uploaded and has status ‘active’ (400 Bad Request)"},{"line_number":434,"context_line":""},{"line_number":435,"context_line":"    3D. Blob is saving (400 Bad Request)"},{"line_number":436,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"7aa08908_11c86354","line":433,"in_reply_to":"7aa08908_b0135064","updated":"2016-06-14 12:03:47.000000000","message":"Done","commit_id":"7185dcca77cd230044afa90252f7bfb7bbea47d1"},{"author":{"_account_id":11391,"name":"Mikhail Fedosin","email":"mfedosin@redhat.com","username":"fedosinme"},"change_message_id":"1b665a3ae0f6c7a6226dadb297f368fcac7c37e8","unresolved":false,"context_lines":[{"line_number":478,"context_line":""},{"line_number":479,"context_line":"    3B. Location url is not downloadable (400 Bad Request)."},{"line_number":480,"context_line":""},{"line_number":481,"context_line":"    3C. Blob record is already exists (400 Bad Request)."},{"line_number":482,"context_line":""},{"line_number":483,"context_line":"* **Use Case 9.** Activate Artifact."},{"line_number":484,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"7aa08908_d136db4f","line":481,"updated":"2016-06-14 12:03:47.000000000","message":"@Chris: also I changed return code to 409 here as well","commit_id":"7185dcca77cd230044afa90252f7bfb7bbea47d1"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"1840d46ec15d396954c6cdc7eeb755a4c5dac9ed","unresolved":false,"context_lines":[{"line_number":495,"context_line":"  *Steps:*"},{"line_number":496,"context_line":""},{"line_number":497,"context_line":"  1. User defines Artifact id and requests Artifact activation"},{"line_number":498,"context_line":"     (POST /artifacts/{artifact_type}/{artifacts_id}/actions/activate)."},{"line_number":499,"context_line":""},{"line_number":500,"context_line":"  2. Glare checks if all required Artifact properties specified according"},{"line_number":501,"context_line":"     to Artifact definition."}],"source_content_type":"text/x-rst","patch_set":8,"id":"7aa08908_abf481f0","line":498,"updated":"2016-06-14 09:45:44.000000000","message":"I\u0027m not particularly a fan of ..../action/{some action} style resources. In these situations I think it makes more sense to PUT and PATCH the {artifact_id} representation to change a \u0027status\u0027 field to activate.\n\nHowever, I suspect this has been discussed already and there are reasons for this way, so I don\u0027t want to derail things, just want to mention it in case there\u0027s been some concerns and reinforce them if there have been.","commit_id":"7185dcca77cd230044afa90252f7bfb7bbea47d1"},{"author":{"_account_id":11391,"name":"Mikhail Fedosin","email":"mfedosin@redhat.com","username":"fedosinme"},"change_message_id":"1b665a3ae0f6c7a6226dadb297f368fcac7c37e8","unresolved":false,"context_lines":[{"line_number":495,"context_line":"  *Steps:*"},{"line_number":496,"context_line":""},{"line_number":497,"context_line":"  1. User defines Artifact id and requests Artifact activation"},{"line_number":498,"context_line":"     (POST /artifacts/{artifact_type}/{artifacts_id}/actions/activate)."},{"line_number":499,"context_line":""},{"line_number":500,"context_line":"  2. Glare checks if all required Artifact properties specified according"},{"line_number":501,"context_line":"     to Artifact definition."}],"source_content_type":"text/x-rst","patch_set":8,"id":"7aa08908_318c7fd9","line":498,"in_reply_to":"7aa08908_abf481f0","updated":"2016-06-14 12:03:47.000000000","message":"Good point! \u0027actions\u0027 were implemented for compatibility with Glance v2 API, but now I think it\u0027s unnecessary. Direct PATCH request is much simpler.","commit_id":"7185dcca77cd230044afa90252f7bfb7bbea47d1"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"1840d46ec15d396954c6cdc7eeb755a4c5dac9ed","unresolved":false,"context_lines":[{"line_number":679,"context_line":"  *Steps:*"},{"line_number":680,"context_line":""},{"line_number":681,"context_line":"  1. User sends a request to re-activate Artifact"},{"line_number":682,"context_line":"     (POST /artifacts/{artifact_type}/{artifacts_id}/actions/reactivate)."},{"line_number":683,"context_line":""},{"line_number":684,"context_line":"  2. Glare changes status of Artifact from deactivated to active"},{"line_number":685,"context_line":"     (200 OK)."}],"source_content_type":"text/x-rst","patch_set":8,"id":"7aa08908_0b231557","line":682,"updated":"2016-06-14 09:45:44.000000000","message":"Same comment as above.\n\nI can understand the appeal here: \"reactivate\" isn\u0027t a state that is present in the representation, it\u0027s an action which want to use to bring about the transition from state A to state B. The pure REST was of doing that would be to PUT or PATCH a representation of state B which is declaration of \"I want this thing to be in state B\".\n\nBut again, I don\u0027t want to derail stuff, just presenting the other side in case it is useful.","commit_id":"7185dcca77cd230044afa90252f7bfb7bbea47d1"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"1840d46ec15d396954c6cdc7eeb755a4c5dac9ed","unresolved":false,"context_lines":[{"line_number":708,"context_line":"  *Steps:*"},{"line_number":709,"context_line":""},{"line_number":710,"context_line":"  1. User sends a request to publish Artifact"},{"line_number":711,"context_line":"     (POST /artifacts/{artifact_type}/{artifacts_id}/actions/publish)."},{"line_number":712,"context_line":""},{"line_number":713,"context_line":"  2. Glare changes visibility of Artifact from \u0027private\u0027 to \u0027public\u0027"},{"line_number":714,"context_line":"     (200 OK)."}],"source_content_type":"text/x-rst","patch_set":8,"id":"7aa08908_0beaf5da","line":711,"updated":"2016-06-14 09:45:44.000000000","message":"ditto","commit_id":"7185dcca77cd230044afa90252f7bfb7bbea47d1"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"1840d46ec15d396954c6cdc7eeb755a4c5dac9ed","unresolved":false,"context_lines":[{"line_number":1009,"context_line":"       \u003chttps://github.com/openstack/api-wg/blob/master/"},{"line_number":1010,"context_line":"       guidelines/pagination_filter_sort.rst\u003e`_"},{"line_number":1011,"context_line":""},{"line_number":1012,"context_line":"  * **create an artifact with of the given type name**"},{"line_number":1013,"context_line":""},{"line_number":1014,"context_line":"    POST /artifacts/{artifact_type}"},{"line_number":1015,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"7aa08908_0b7f9515","line":1012,"updated":"2016-06-14 09:45:44.000000000","message":"s/with//","commit_id":"7185dcca77cd230044afa90252f7bfb7bbea47d1"},{"author":{"_account_id":11391,"name":"Mikhail Fedosin","email":"mfedosin@redhat.com","username":"fedosinme"},"change_message_id":"1b665a3ae0f6c7a6226dadb297f368fcac7c37e8","unresolved":false,"context_lines":[{"line_number":1009,"context_line":"       \u003chttps://github.com/openstack/api-wg/blob/master/"},{"line_number":1010,"context_line":"       guidelines/pagination_filter_sort.rst\u003e`_"},{"line_number":1011,"context_line":""},{"line_number":1012,"context_line":"  * **create an artifact with of the given type name**"},{"line_number":1013,"context_line":""},{"line_number":1014,"context_line":"    POST /artifacts/{artifact_type}"},{"line_number":1015,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"7aa08908_d1453b6f","line":1012,"in_reply_to":"7aa08908_0b7f9515","updated":"2016-06-14 12:03:47.000000000","message":"Done","commit_id":"7185dcca77cd230044afa90252f7bfb7bbea47d1"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"2d9c2f725b18313213689d633797c6e8a6945394","unresolved":false,"context_lines":[{"line_number":733,"context_line":""},{"line_number":734,"context_line":"  *Steps:*"},{"line_number":735,"context_line":""},{"line_number":736,"context_line":"  1. User sends a request to publish Artifact"},{"line_number":737,"context_line":"     * Body:"},{"line_number":738,"context_line":""},{"line_number":739,"context_line":"        .. code-block:: javascript"}],"source_content_type":"text/x-rst","patch_set":9,"id":"7aa08908_5a94828b","line":736,"updated":"2016-06-15 12:06:39.000000000","message":"Looks like the method got lost here in the swtich to this being a PATCH","commit_id":"ff117117482cfefee9d17f7849261f3e14d0aa3d"},{"author":{"_account_id":11391,"name":"Mikhail Fedosin","email":"mfedosin@redhat.com","username":"fedosinme"},"change_message_id":"da3e72cfc08b3fa63eee8c6287479f4f99bd8d83","unresolved":false,"context_lines":[{"line_number":733,"context_line":""},{"line_number":734,"context_line":"  *Steps:*"},{"line_number":735,"context_line":""},{"line_number":736,"context_line":"  1. User sends a request to publish Artifact"},{"line_number":737,"context_line":"     * Body:"},{"line_number":738,"context_line":""},{"line_number":739,"context_line":"        .. code-block:: javascript"}],"source_content_type":"text/x-rst","patch_set":9,"id":"7aa08908_5e254c08","line":736,"in_reply_to":"7aa08908_5a94828b","updated":"2016-06-16 15:49:33.000000000","message":"Correct! It\u0027s PATCH /artifacts/{artifact_type}/{artifacts_id}","commit_id":"ff117117482cfefee9d17f7849261f3e14d0aa3d"},{"author":{"_account_id":5202,"name":"Erno Kuvaja","email":"jokke@usr.fi","username":"jokke"},"change_message_id":"b8945c4fd9bc55efc2b73cca401da6155cda3d97","unresolved":false,"context_lines":[{"line_number":40,"context_line":"**Glossary**"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"* *Glare* (from GLance Artifact REpository) - a service that provides access"},{"line_number":43,"context_line":"  to a unified catalog of immutable objects with structured meta-information as"},{"line_number":44,"context_line":"  well as related binary data (these structures are also called *\u0027artifacts\u0027*)."},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"* *Artifact* - in terms of Glare, an Artifact is a structured immutable object"}],"source_content_type":"text/x-rst","patch_set":12,"id":"5a9d85d2_73bed800","line":43,"range":{"start_line":43,"start_character":26,"end_line":43,"end_character":43},"updated":"2016-06-18 22:14:16.000000000","message":"Please add definition how Glare is seeing this immutability (Specially as if I understand correctly it\u0027s not direct ID\u003c-\u003eblob immutability due to the versioning). Lack of clear common understanding of definition has caused lots of hassle in Glance.","commit_id":"e44b2e1629cac6808d643dc88eea32ea60a4346e"},{"author":{"_account_id":11391,"name":"Mikhail Fedosin","email":"mfedosin@redhat.com","username":"fedosinme"},"change_message_id":"43874585d5c6b042e5541dbe40ebce9f3cd274c8","unresolved":false,"context_lines":[{"line_number":40,"context_line":"**Glossary**"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"* *Glare* (from GLance Artifact REpository) - a service that provides access"},{"line_number":43,"context_line":"  to a unified catalog of immutable objects with structured meta-information as"},{"line_number":44,"context_line":"  well as related binary data (these structures are also called *\u0027artifacts\u0027*)."},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"* *Artifact* - in terms of Glare, an Artifact is a structured immutable object"}],"source_content_type":"text/x-rst","patch_set":12,"id":"3aaa91ec_a372f30e","line":43,"range":{"start_line":43,"start_character":26,"end_line":43,"end_character":43},"in_reply_to":"3aaa91ec_55679ae8","updated":"2016-06-27 12:26:07.000000000","message":"Agree. I\u0027ll explain it more detailed in next ps... By \u0027immutability\u0027 we understand next things: all important properties are immutable if artifact is active, all blob data is immutable as well, and glare guarantees that it won\u0027t be modified.","commit_id":"e44b2e1629cac6808d643dc88eea32ea60a4346e"},{"author":{"_account_id":7226,"name":"Stan Lagun","email":"stan.lagun@gmail.com","username":"istalker2"},"change_message_id":"09bb8b1d5ea84a8a1472eec97692414f57d32391","unresolved":false,"context_lines":[{"line_number":40,"context_line":"**Glossary**"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"* *Glare* (from GLance Artifact REpository) - a service that provides access"},{"line_number":43,"context_line":"  to a unified catalog of immutable objects with structured meta-information as"},{"line_number":44,"context_line":"  well as related binary data (these structures are also called *\u0027artifacts\u0027*)."},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"* *Artifact* - in terms of Glare, an Artifact is a structured immutable object"}],"source_content_type":"text/x-rst","patch_set":12,"id":"3aaa91ec_55679ae8","line":43,"range":{"start_line":43,"start_character":26,"end_line":43,"end_character":43},"in_reply_to":"5a9d85d2_73bed800","updated":"2016-06-24 06:35:44.000000000","message":"Things get worse considering that it immutable objects can have mutable proprties","commit_id":"e44b2e1629cac6808d643dc88eea32ea60a4346e"},{"author":{"_account_id":7226,"name":"Stan Lagun","email":"stan.lagun@gmail.com","username":"istalker2"},"change_message_id":"09bb8b1d5ea84a8a1472eec97692414f57d32391","unresolved":false,"context_lines":[{"line_number":128,"context_line":""},{"line_number":129,"context_line":"  * *Dependency*;"},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"  * Structured generic types *Dict* or *List*."},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"  Each property has additional parameters:"},{"line_number":134,"context_line":""}],"source_content_type":"text/x-rst","patch_set":12,"id":"3aaa91ec_75d0d61f","line":131,"updated":"2016-06-24 06:35:44.000000000","message":"List of what? Can I have List of dicts etc?","commit_id":"e44b2e1629cac6808d643dc88eea32ea60a4346e"},{"author":{"_account_id":11391,"name":"Mikhail Fedosin","email":"mfedosin@redhat.com","username":"fedosinme"},"change_message_id":"43874585d5c6b042e5541dbe40ebce9f3cd274c8","unresolved":false,"context_lines":[{"line_number":128,"context_line":""},{"line_number":129,"context_line":"  * *Dependency*;"},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"  * Structured generic types *Dict* or *List*."},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"  Each property has additional parameters:"},{"line_number":134,"context_line":""}],"source_content_type":"text/x-rst","patch_set":12,"id":"3aaa91ec_3e073819","line":131,"in_reply_to":"3aaa91ec_75d0d61f","updated":"2016-06-27 12:26:07.000000000","message":"At this moment we support only primitive types for elements: boolean, string, integer, float and blobs. In next versions we will be able to allow creation of list of dicts, for example.","commit_id":"e44b2e1629cac6808d643dc88eea32ea60a4346e"},{"author":{"_account_id":7226,"name":"Stan Lagun","email":"stan.lagun@gmail.com","username":"istalker2"},"change_message_id":"09bb8b1d5ea84a8a1472eec97692414f57d32391","unresolved":false,"context_lines":[{"line_number":138,"context_line":"  * **mutable** - boolean value indicating if the property value may be changed"},{"line_number":139,"context_line":"    after the artifact is activated. (Default: False)"},{"line_number":140,"context_line":""},{"line_number":141,"context_line":"  * **protected** - boolean value indicating if the property value cannot be edited"},{"line_number":142,"context_line":"    by User. (Default: False)"},{"line_number":143,"context_line":""},{"line_number":144,"context_line":"  * **sortable** - boolean value indicating if there is a possibility to sort by"}],"source_content_type":"text/x-rst","patch_set":12,"id":"3aaa91ec_f53846a2","line":141,"updated":"2016-06-24 06:35:44.000000000","message":"so by default user can edit the value? What if the property is both mutable and protected? Who can edit it then?","commit_id":"e44b2e1629cac6808d643dc88eea32ea60a4346e"},{"author":{"_account_id":11391,"name":"Mikhail Fedosin","email":"mfedosin@redhat.com","username":"fedosinme"},"change_message_id":"43874585d5c6b042e5541dbe40ebce9f3cd274c8","unresolved":false,"context_lines":[{"line_number":138,"context_line":"  * **mutable** - boolean value indicating if the property value may be changed"},{"line_number":139,"context_line":"    after the artifact is activated. (Default: False)"},{"line_number":140,"context_line":""},{"line_number":141,"context_line":"  * **protected** - boolean value indicating if the property value cannot be edited"},{"line_number":142,"context_line":"    by User. (Default: False)"},{"line_number":143,"context_line":""},{"line_number":144,"context_line":"  * **sortable** - boolean value indicating if there is a possibility to sort by"}],"source_content_type":"text/x-rst","patch_set":12,"id":"3aaa91ec_1e5a3c2a","line":141,"in_reply_to":"3aaa91ec_f53846a2","updated":"2016-06-27 12:26:07.000000000","message":"In latest ps \"protected\" was renamed to \"system\". In short, it means that this property cannot be modified by user. \"mutable\" means that property values may be changed after artifact activation. Good example of mutable protected property is \"updated_at\" - it\u0027s only modified by glare and changes automatically when user updates artifact.","commit_id":"e44b2e1629cac6808d643dc88eea32ea60a4346e"},{"author":{"_account_id":7226,"name":"Stan Lagun","email":"stan.lagun@gmail.com","username":"istalker2"},"change_message_id":"09bb8b1d5ea84a8a1472eec97692414f57d32391","unresolved":false,"context_lines":[{"line_number":141,"context_line":"  * **protected** - boolean value indicating if the property value cannot be edited"},{"line_number":142,"context_line":"    by User. (Default: False)"},{"line_number":143,"context_line":""},{"line_number":144,"context_line":"  * **sortable** - boolean value indicating if there is a possibility to sort by"},{"line_number":145,"context_line":"    this property values. (Default: False)"},{"line_number":146,"context_line":""},{"line_number":147,"context_line":"  * **default** - a default value for the property may be specified by the Artifact"}],"source_content_type":"text/x-rst","patch_set":12,"id":"3aaa91ec_b5187e1f","line":144,"updated":"2016-06-24 06:35:44.000000000","message":"what property types can be sortable? For example, what if the List property is marked so?","commit_id":"e44b2e1629cac6808d643dc88eea32ea60a4346e"},{"author":{"_account_id":11391,"name":"Mikhail Fedosin","email":"mfedosin@redhat.com","username":"fedosinme"},"change_message_id":"43874585d5c6b042e5541dbe40ebce9f3cd274c8","unresolved":false,"context_lines":[{"line_number":141,"context_line":"  * **protected** - boolean value indicating if the property value cannot be edited"},{"line_number":142,"context_line":"    by User. (Default: False)"},{"line_number":143,"context_line":""},{"line_number":144,"context_line":"  * **sortable** - boolean value indicating if there is a possibility to sort by"},{"line_number":145,"context_line":"    this property values. (Default: False)"},{"line_number":146,"context_line":""},{"line_number":147,"context_line":"  * **default** - a default value for the property may be specified by the Artifact"}],"source_content_type":"text/x-rst","patch_set":12,"id":"3aaa91ec_7efa6076","line":144,"in_reply_to":"3aaa91ec_b5187e1f","updated":"2016-06-27 12:26:07.000000000","message":"Only properties of 4 primitive types may be sortable: integer, string, float and boolean. In other cases now this attribute is ignored and sorting by these properties is forbidden. In future versions, when we add artifact type validation, there will be an error before glare starts.","commit_id":"e44b2e1629cac6808d643dc88eea32ea60a4346e"},{"author":{"_account_id":7226,"name":"Stan Lagun","email":"stan.lagun@gmail.com","username":"istalker2"},"change_message_id":"09bb8b1d5ea84a8a1472eec97692414f57d32391","unresolved":false,"context_lines":[{"line_number":152,"context_line":"    before setting the value and raises *ValueError* if at least one of the"},{"line_number":153,"context_line":"    requirements is not satisfied."},{"line_number":154,"context_line":""},{"line_number":155,"context_line":"  * **filter_ops** - a list of available filter operators for the property."},{"line_number":156,"context_line":""},{"line_number":157,"context_line":"* *Artifact Dependency* - property type that defines soft dependency of the"},{"line_number":158,"context_line":"  Artifact from another Artifact. It is an url that allows user to obtain"}],"source_content_type":"text/x-rst","patch_set":12,"id":"3aaa91ec_75e9f6e5","line":155,"updated":"2016-06-24 06:35:44.000000000","message":"this requires more explanation. What is filter operator?","commit_id":"e44b2e1629cac6808d643dc88eea32ea60a4346e"},{"author":{"_account_id":11391,"name":"Mikhail Fedosin","email":"mfedosin@redhat.com","username":"fedosinme"},"change_message_id":"43874585d5c6b042e5541dbe40ebce9f3cd274c8","unresolved":false,"context_lines":[{"line_number":152,"context_line":"    before setting the value and raises *ValueError* if at least one of the"},{"line_number":153,"context_line":"    requirements is not satisfied."},{"line_number":154,"context_line":""},{"line_number":155,"context_line":"  * **filter_ops** - a list of available filter operators for the property."},{"line_number":156,"context_line":""},{"line_number":157,"context_line":"* *Artifact Dependency* - property type that defines soft dependency of the"},{"line_number":158,"context_line":"  Artifact from another Artifact. It is an url that allows user to obtain"}],"source_content_type":"text/x-rst","patch_set":12,"id":"3aaa91ec_9ef74c58","line":155,"in_reply_to":"3aaa91ec_75e9f6e5","updated":"2016-06-27 12:26:07.000000000","message":"there are next available operators: \u0027eq\u0027, \u0027neq\u0027, \u0027lt\u0027, \u0027lte\u0027, \u0027gt\u0027, \u0027gte\u0027, \u0027in\u0027. Again, all of them cam be applied only to primitive properties and not to dicts or lists. Dict values can be sorted using the following syntax \"?\u003cdict_name\u003e.\u003ckey_name\u003e\u003deq:...\"","commit_id":"e44b2e1629cac6808d643dc88eea32ea60a4346e"},{"author":{"_account_id":7226,"name":"Stan Lagun","email":"stan.lagun@gmail.com","username":"istalker2"},"change_message_id":"09bb8b1d5ea84a8a1472eec97692414f57d32391","unresolved":false,"context_lines":[{"line_number":157,"context_line":"* *Artifact Dependency* - property type that defines soft dependency of the"},{"line_number":158,"context_line":"  Artifact from another Artifact. It is an url that allows user to obtain"},{"line_number":159,"context_line":"  some Artifact data. For external dependency the format is the following:"},{"line_number":160,"context_line":"  *http(s)://\u003cnetloc\u003e/\u003cpath\u003e*"},{"line_number":161,"context_line":"  For internal dependencies dependency contains only \u003cpath\u003e."},{"line_number":162,"context_line":"  Example of \u003cpath\u003e:"},{"line_number":163,"context_line":"  /artifacts/\u003cartifact_type\u003e/\u003cartifact identifier\u003e."}],"source_content_type":"text/x-rst","patch_set":12,"id":"3aaa91ec_b54cfec8","line":160,"updated":"2016-06-24 06:35:44.000000000","message":"Maybe I\u0027m missing something but I didn\u0027t understand from this spec how this dependency is going to be used exactly. Especially for the external locations:\n1) Will it ever try to download it?\n a) if yes, will the quotas apply? What will prevent me to abuse glare and turn it into a cloud downloader tool for my video files, for example?\n b) will it accept self-signed https certificates? Is it going to be configurable?\n2) Can this url be changed later? Will it affect downloaded content if such exists?\n3) what happens in case of circular dependencies?\n4) what if the dependency is matched against deactivated artifact?\n5) is there an API to check if all dependencies do exist if I can remove some of them later (i.e. check for consistency)?","commit_id":"e44b2e1629cac6808d643dc88eea32ea60a4346e"},{"author":{"_account_id":11391,"name":"Mikhail Fedosin","email":"mfedosin@redhat.com","username":"fedosinme"},"change_message_id":"43874585d5c6b042e5541dbe40ebce9f3cd274c8","unresolved":false,"context_lines":[{"line_number":157,"context_line":"* *Artifact Dependency* - property type that defines soft dependency of the"},{"line_number":158,"context_line":"  Artifact from another Artifact. It is an url that allows user to obtain"},{"line_number":159,"context_line":"  some Artifact data. For external dependency the format is the following:"},{"line_number":160,"context_line":"  *http(s)://\u003cnetloc\u003e/\u003cpath\u003e*"},{"line_number":161,"context_line":"  For internal dependencies dependency contains only \u003cpath\u003e."},{"line_number":162,"context_line":"  Example of \u003cpath\u003e:"},{"line_number":163,"context_line":"  /artifacts/\u003cartifact_type\u003e/\u003cartifact identifier\u003e."}],"source_content_type":"text/x-rst","patch_set":12,"id":"3aaa91ec_4c169ff2","line":160,"in_reply_to":"3aaa91ec_b54cfec8","updated":"2016-06-27 12:26:07.000000000","message":"Dependency is a client thing - glare just provides some url in its output and then client decides what to do with it. Right now glare validates dependency url format only, but in future we want to add some consistency support and allow glare to control dependent artifacts.","commit_id":"e44b2e1629cac6808d643dc88eea32ea60a4346e"},{"author":{"_account_id":7226,"name":"Stan Lagun","email":"stan.lagun@gmail.com","username":"istalker2"},"change_message_id":"09bb8b1d5ea84a8a1472eec97692414f57d32391","unresolved":false,"context_lines":[{"line_number":246,"context_line":""},{"line_number":247,"context_line":"    4A. Artifact type validation failed - Glare won’t start."},{"line_number":248,"context_line":""},{"line_number":249,"context_line":"* **Use Case 2.** Update Artifact type."},{"line_number":250,"context_line":""},{"line_number":251,"context_line":"  *Pre-condition:* Artifact type supported by Glare"},{"line_number":252,"context_line":"  (Artifact type class has been implemented)."}],"source_content_type":"text/x-rst","patch_set":12,"id":"3aaa91ec_b5e35ea3","line":249,"updated":"2016-06-24 06:35:44.000000000","message":"what happens when the new version has a different property scheme? For example bool property turned into integer? etc","commit_id":"e44b2e1629cac6808d643dc88eea32ea60a4346e"},{"author":{"_account_id":11391,"name":"Mikhail Fedosin","email":"mfedosin@redhat.com","username":"fedosinme"},"change_message_id":"43874585d5c6b042e5541dbe40ebce9f3cd274c8","unresolved":false,"context_lines":[{"line_number":246,"context_line":""},{"line_number":247,"context_line":"    4A. Artifact type validation failed - Glare won’t start."},{"line_number":248,"context_line":""},{"line_number":249,"context_line":"* **Use Case 2.** Update Artifact type."},{"line_number":250,"context_line":""},{"line_number":251,"context_line":"  *Pre-condition:* Artifact type supported by Glare"},{"line_number":252,"context_line":"  (Artifact type class has been implemented)."}],"source_content_type":"text/x-rst","patch_set":12,"id":"3aaa91ec_f49950c5","line":249,"in_reply_to":"3aaa91ec_b5e35ea3","updated":"2016-06-27 12:26:07.000000000","message":"We follow standard oslo.vo recommendations here. In simple cases we can rely on coercing (so, if type was changed from integer to string, then values will be automatically cast by oslo.vo: for example 123 to \u0027123\u0027). In complicated cases, when oslo.vo coercing is not enough, artifact type author has to take care about version compatibility and implement method \u0027obj_make_compatible\u0027 https://github.com/openstack/oslo.versionedobjects/blob/master/oslo_versionedobjects/base.py#L478","commit_id":"e44b2e1629cac6808d643dc88eea32ea60a4346e"},{"author":{"_account_id":5202,"name":"Erno Kuvaja","email":"jokke@usr.fi","username":"jokke"},"change_message_id":"b8945c4fd9bc55efc2b73cca401da6155cda3d97","unresolved":false,"context_lines":[{"line_number":404,"context_line":"  5. Glare sets all required metadata (\u0027size\u0027, \u0027checksum\u0027 and so on) to the"},{"line_number":405,"context_line":"     blob and changes its status to ‘active’."},{"line_number":406,"context_line":""},{"line_number":407,"context_line":"  .. note:: Glare doesn’t use registry service, so do not need trusts here."},{"line_number":408,"context_line":""},{"line_number":409,"context_line":"  6. Glare responds with 200 OK."},{"line_number":410,"context_line":""}],"source_content_type":"text/x-rst","patch_set":12,"id":"5a9d85d2_53b63c3e","line":407,"updated":"2016-06-18 22:14:16.000000000","message":"How about retries?","commit_id":"e44b2e1629cac6808d643dc88eea32ea60a4346e"},{"author":{"_account_id":11391,"name":"Mikhail Fedosin","email":"mfedosin@redhat.com","username":"fedosinme"},"change_message_id":"43874585d5c6b042e5541dbe40ebce9f3cd274c8","unresolved":false,"context_lines":[{"line_number":404,"context_line":"  5. Glare sets all required metadata (\u0027size\u0027, \u0027checksum\u0027 and so on) to the"},{"line_number":405,"context_line":"     blob and changes its status to ‘active’."},{"line_number":406,"context_line":""},{"line_number":407,"context_line":"  .. note:: Glare doesn’t use registry service, so do not need trusts here."},{"line_number":408,"context_line":""},{"line_number":409,"context_line":"  6. Glare responds with 200 OK."},{"line_number":410,"context_line":""}],"source_content_type":"text/x-rst","patch_set":12,"id":"3aaa91ec_cc70cfdf","line":407,"in_reply_to":"5a9d85d2_53b63c3e","updated":"2016-06-27 12:26:07.000000000","message":"In glance we need trusts in two cases: 1. when we work with db through registry service (it\u0027s not glare case, we don\u0027t use it), 2. when multitenant swift driver is used in glance_store (this is also not a case for glare, because we use singletenant driver only)","commit_id":"e44b2e1629cac6808d643dc88eea32ea60a4346e"},{"author":{"_account_id":5202,"name":"Erno Kuvaja","email":"jokke@usr.fi","username":"jokke"},"change_message_id":"b8945c4fd9bc55efc2b73cca401da6155cda3d97","unresolved":false,"context_lines":[{"line_number":425,"context_line":"    4B. Blob upload failed. Glare initiates Blob killing and responds with"},{"line_number":426,"context_line":"    appropriate error (depends on backend error)."},{"line_number":427,"context_line":""},{"line_number":428,"context_line":"* **Use Case 8.** Add a custom location for artifact."},{"line_number":429,"context_line":""},{"line_number":430,"context_line":"  *Pre-conditions:*"},{"line_number":431,"context_line":""}],"source_content_type":"text/x-rst","patch_set":12,"id":"5a9d85d2_9386e463","line":428,"updated":"2016-06-18 22:14:16.000000000","message":"Considering how problematic the custom locations code has been in Glance, I\u0027m wondering how smart move it is to implement.","commit_id":"e44b2e1629cac6808d643dc88eea32ea60a4346e"},{"author":{"_account_id":11391,"name":"Mikhail Fedosin","email":"mfedosin@redhat.com","username":"fedosinme"},"change_message_id":"43874585d5c6b042e5541dbe40ebce9f3cd274c8","unresolved":false,"context_lines":[{"line_number":425,"context_line":"    4B. Blob upload failed. Glare initiates Blob killing and responds with"},{"line_number":426,"context_line":"    appropriate error (depends on backend error)."},{"line_number":427,"context_line":""},{"line_number":428,"context_line":"* **Use Case 8.** Add a custom location for artifact."},{"line_number":429,"context_line":""},{"line_number":430,"context_line":"  *Pre-conditions:*"},{"line_number":431,"context_line":""}],"source_content_type":"text/x-rst","patch_set":12,"id":"3aaa91ec_2c24f3c4","line":428,"in_reply_to":"5a9d85d2_9386e463","updated":"2016-06-27 12:26:07.000000000","message":"Kiitos paljon!","commit_id":"e44b2e1629cac6808d643dc88eea32ea60a4346e"},{"author":{"_account_id":5202,"name":"Erno Kuvaja","email":"jokke@usr.fi","username":"jokke"},"change_message_id":"b8945c4fd9bc55efc2b73cca401da6155cda3d97","unresolved":false,"context_lines":[{"line_number":476,"context_line":""},{"line_number":477,"context_line":"    * Artifact instance has been successfully created."},{"line_number":478,"context_line":""},{"line_number":479,"context_line":"  * Success condition:* Artifact is activated in Glance (status is \u0027active\u0027)."},{"line_number":480,"context_line":""},{"line_number":481,"context_line":"  *Steps:*"},{"line_number":482,"context_line":""}],"source_content_type":"text/x-rst","patch_set":12,"id":"5a9d85d2_f37be879","line":479,"range":{"start_line":479,"start_character":49,"end_line":479,"end_character":55},"updated":"2016-06-18 22:14:16.000000000","message":"Glare maybe?","commit_id":"e44b2e1629cac6808d643dc88eea32ea60a4346e"},{"author":{"_account_id":11391,"name":"Mikhail Fedosin","email":"mfedosin@redhat.com","username":"fedosinme"},"change_message_id":"43874585d5c6b042e5541dbe40ebce9f3cd274c8","unresolved":false,"context_lines":[{"line_number":476,"context_line":""},{"line_number":477,"context_line":"    * Artifact instance has been successfully created."},{"line_number":478,"context_line":""},{"line_number":479,"context_line":"  * Success condition:* Artifact is activated in Glance (status is \u0027active\u0027)."},{"line_number":480,"context_line":""},{"line_number":481,"context_line":"  *Steps:*"},{"line_number":482,"context_line":""}],"source_content_type":"text/x-rst","patch_set":12,"id":"3aaa91ec_6c1f1bb8","line":479,"range":{"start_line":479,"start_character":49,"end_line":479,"end_character":55},"in_reply_to":"5a9d85d2_f37be879","updated":"2016-06-27 12:26:07.000000000","message":"Yeah, thanks!","commit_id":"e44b2e1629cac6808d643dc88eea32ea60a4346e"},{"author":{"_account_id":5202,"name":"Erno Kuvaja","email":"jokke@usr.fi","username":"jokke"},"change_message_id":"b8945c4fd9bc55efc2b73cca401da6155cda3d97","unresolved":false,"context_lines":[{"line_number":539,"context_line":""},{"line_number":540,"context_line":"    2C. Parameter is incorrect (400 Bad Request)."},{"line_number":541,"context_line":""},{"line_number":542,"context_line":"    2D. Property is protected (400 Bad Request)"},{"line_number":543,"context_line":""},{"line_number":544,"context_line":"* **Use Case 10B.** Update Artifact non-blob property, Artifact is active."},{"line_number":545,"context_line":""}],"source_content_type":"text/x-rst","patch_set":12,"id":"5a9d85d2_538d9c7a","line":542,"range":{"start_line":542,"start_character":31,"end_line":542,"end_character":34},"updated":"2016-06-18 22:14:16.000000000","message":"For consistency, shouldn\u0027t this be 409 Conflict","commit_id":"e44b2e1629cac6808d643dc88eea32ea60a4346e"},{"author":{"_account_id":11391,"name":"Mikhail Fedosin","email":"mfedosin@redhat.com","username":"fedosinme"},"change_message_id":"43874585d5c6b042e5541dbe40ebce9f3cd274c8","unresolved":false,"context_lines":[{"line_number":539,"context_line":""},{"line_number":540,"context_line":"    2C. Parameter is incorrect (400 Bad Request)."},{"line_number":541,"context_line":""},{"line_number":542,"context_line":"    2D. Property is protected (400 Bad Request)"},{"line_number":543,"context_line":""},{"line_number":544,"context_line":"* **Use Case 10B.** Update Artifact non-blob property, Artifact is active."},{"line_number":545,"context_line":""}],"source_content_type":"text/x-rst","patch_set":12,"id":"3aaa91ec_8f50790c","line":542,"range":{"start_line":542,"start_character":31,"end_line":542,"end_character":34},"in_reply_to":"5a9d85d2_538d9c7a","updated":"2016-06-27 12:26:07.000000000","message":"After some conversations with API-WG they recommended to use 403 here. https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html\n\n1. 400: The request could not be understood by the server due to malformed syntax. The client SHOULD NOT repeat the request without modifications.\n2. 403: The server understood the request, but is refusing to fulfill it. Authorization will not help and the request SHOULD NOT be repeated.\n3. The request could not be completed due to a conflict with the current state of the resource. This code is only allowed in situations where it is expected that the user might be able to resolve the conflict and resubmit the request.","commit_id":"e44b2e1629cac6808d643dc88eea32ea60a4346e"},{"author":{"_account_id":5202,"name":"Erno Kuvaja","email":"jokke@usr.fi","username":"jokke"},"change_message_id":"b8945c4fd9bc55efc2b73cca401da6155cda3d97","unresolved":false,"context_lines":[{"line_number":566,"context_line":""},{"line_number":567,"context_line":"  *Alternative scenarios:*"},{"line_number":568,"context_line":""},{"line_number":569,"context_line":"    2A. Dependency property is immutable (400 Bad Request)."},{"line_number":570,"context_line":""},{"line_number":571,"context_line":"    2B. Dependency url is not correct or downloadable (400 Bad Request)."},{"line_number":572,"context_line":""}],"source_content_type":"text/x-rst","patch_set":12,"id":"5a9d85d2_b3e84018","line":569,"range":{"start_line":569,"start_character":42,"end_line":569,"end_character":57},"updated":"2016-06-18 22:14:16.000000000","message":"Ditto","commit_id":"e44b2e1629cac6808d643dc88eea32ea60a4346e"},{"author":{"_account_id":5202,"name":"Erno Kuvaja","email":"jokke@usr.fi","username":"jokke"},"change_message_id":"b8945c4fd9bc55efc2b73cca401da6155cda3d97","unresolved":false,"context_lines":[{"line_number":570,"context_line":""},{"line_number":571,"context_line":"    2B. Dependency url is not correct or downloadable (400 Bad Request)."},{"line_number":572,"context_line":""},{"line_number":573,"context_line":"    3A. Property is immutable (400 Bad Request)."},{"line_number":574,"context_line":""},{"line_number":575,"context_line":"    3B. Parameter is incorrect (400 Bad Request)."},{"line_number":576,"context_line":""}],"source_content_type":"text/x-rst","patch_set":12,"id":"5a9d85d2_93ed4428","line":573,"range":{"start_line":573,"start_character":31,"end_line":573,"end_character":46},"updated":"2016-06-18 22:14:16.000000000","message":"Ditto","commit_id":"e44b2e1629cac6808d643dc88eea32ea60a4346e"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"5f4fcdae9e49a8b148a55928eb0128ae6023e442","unresolved":false,"context_lines":[{"line_number":150,"context_line":"    by User. (Default: False)"},{"line_number":151,"context_line":""},{"line_number":152,"context_line":"  * **sortable** - boolean value indicating if there is a possibility to sort by"},{"line_number":153,"context_line":"    this property values. (Default: False)"},{"line_number":154,"context_line":""},{"line_number":155,"context_line":"  .. note::"},{"line_number":156,"context_line":""}],"source_content_type":"text/x-rst","patch_set":13,"id":"3aaa91ec_d8ca331a","line":153,"range":{"start_line":153,"start_character":9,"end_line":153,"end_character":17},"updated":"2016-06-27 19:55:23.000000000","message":"nit: s/property/property\u0027s/","commit_id":"064a5c0f00734193211cda2605b324ccdb073463"},{"author":{"_account_id":11391,"name":"Mikhail Fedosin","email":"mfedosin@redhat.com","username":"fedosinme"},"change_message_id":"15ca8a66ae86db9301446405424338404f6c6054","unresolved":false,"context_lines":[{"line_number":150,"context_line":"    by User. (Default: False)"},{"line_number":151,"context_line":""},{"line_number":152,"context_line":"  * **sortable** - boolean value indicating if there is a possibility to sort by"},{"line_number":153,"context_line":"    this property values. (Default: False)"},{"line_number":154,"context_line":""},{"line_number":155,"context_line":"  .. note::"},{"line_number":156,"context_line":""}],"source_content_type":"text/x-rst","patch_set":13,"id":"1aa78d24_5db57acb","line":153,"range":{"start_line":153,"start_character":9,"end_line":153,"end_character":17},"in_reply_to":"3aaa91ec_d8ca331a","updated":"2016-07-04 16:57:58.000000000","message":"Done","commit_id":"064a5c0f00734193211cda2605b324ccdb073463"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"5f4fcdae9e49a8b148a55928eb0128ae6023e442","unresolved":false,"context_lines":[{"line_number":188,"context_line":"  (False) or by direct user request (True). In other words, “external” means"},{"line_number":189,"context_line":"  that blob property url is just a reference to some external file and Glare"},{"line_number":190,"context_line":"  does not manage the blob operations in that case."},{"line_number":191,"context_line":"  Json schema that defines blob format: http://paste.openstack.org/show/515957/"},{"line_number":192,"context_line":""},{"line_number":193,"context_line":"  Artifact blob properties may have the following statuses:"},{"line_number":194,"context_line":""}],"source_content_type":"text/x-rst","patch_set":13,"id":"3aaa91ec_9b5d424b","line":191,"range":{"start_line":191,"start_character":2,"end_line":191,"end_character":79},"updated":"2016-06-27 19:55:23.000000000","message":"It\u0027s a short schema, maybe just include it in this doc as a code block instead of using the link.","commit_id":"064a5c0f00734193211cda2605b324ccdb073463"},{"author":{"_account_id":11391,"name":"Mikhail Fedosin","email":"mfedosin@redhat.com","username":"fedosinme"},"change_message_id":"15ca8a66ae86db9301446405424338404f6c6054","unresolved":false,"context_lines":[{"line_number":188,"context_line":"  (False) or by direct user request (True). In other words, “external” means"},{"line_number":189,"context_line":"  that blob property url is just a reference to some external file and Glare"},{"line_number":190,"context_line":"  does not manage the blob operations in that case."},{"line_number":191,"context_line":"  Json schema that defines blob format: http://paste.openstack.org/show/515957/"},{"line_number":192,"context_line":""},{"line_number":193,"context_line":"  Artifact blob properties may have the following statuses:"},{"line_number":194,"context_line":""}],"source_content_type":"text/x-rst","patch_set":13,"id":"1aa78d24_7db036de","line":191,"range":{"start_line":191,"start_character":2,"end_line":191,"end_character":79},"in_reply_to":"3aaa91ec_9b5d424b","updated":"2016-07-04 16:57:58.000000000","message":"Done","commit_id":"064a5c0f00734193211cda2605b324ccdb073463"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"5f4fcdae9e49a8b148a55928eb0128ae6023e442","unresolved":false,"context_lines":[{"line_number":199,"context_line":"  * *pending_delete* - indicates that blob will be deleted soon by Scrubber"},{"line_number":200,"context_line":"    (if delayed delete is enabled) or by Glare itself."},{"line_number":201,"context_line":""},{"line_number":202,"context_line":"* *Artifact Dict and List* - compound generic property types that"},{"line_number":203,"context_line":"  implement Dict or List interfaces respectively, and contain values of some"},{"line_number":204,"context_line":"  primitive type, defined by ``element_type`` attribute."},{"line_number":205,"context_line":""},{"line_number":206,"context_line":".. list-table::  **Blob status transition table**"},{"line_number":207,"context_line":"   :header-rows: 1"}],"source_content_type":"text/x-rst","patch_set":13,"id":"3aaa91ec_b31f88b6","line":204,"range":{"start_line":202,"start_character":0,"end_line":204,"end_character":56},"updated":"2016-06-27 19:55:23.000000000","message":"I think this point should come after the following table.","commit_id":"064a5c0f00734193211cda2605b324ccdb073463"},{"author":{"_account_id":11391,"name":"Mikhail Fedosin","email":"mfedosin@redhat.com","username":"fedosinme"},"change_message_id":"15ca8a66ae86db9301446405424338404f6c6054","unresolved":false,"context_lines":[{"line_number":199,"context_line":"  * *pending_delete* - indicates that blob will be deleted soon by Scrubber"},{"line_number":200,"context_line":"    (if delayed delete is enabled) or by Glare itself."},{"line_number":201,"context_line":""},{"line_number":202,"context_line":"* *Artifact Dict and List* - compound generic property types that"},{"line_number":203,"context_line":"  implement Dict or List interfaces respectively, and contain values of some"},{"line_number":204,"context_line":"  primitive type, defined by ``element_type`` attribute."},{"line_number":205,"context_line":""},{"line_number":206,"context_line":".. list-table::  **Blob status transition table**"},{"line_number":207,"context_line":"   :header-rows: 1"}],"source_content_type":"text/x-rst","patch_set":13,"id":"1aa78d24_fdf26699","line":204,"range":{"start_line":202,"start_character":0,"end_line":204,"end_character":56},"in_reply_to":"3aaa91ec_b31f88b6","updated":"2016-07-04 16:57:58.000000000","message":"Done","commit_id":"064a5c0f00734193211cda2605b324ccdb073463"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"5f4fcdae9e49a8b148a55928eb0128ae6023e442","unresolved":false,"context_lines":[{"line_number":229,"context_line":"* *Artifact visibility* - defines who may have an access to active artifact."},{"line_number":230,"context_line":"  Initially there are 2 options: \u0027private\u0027 artifact is accessible by its owner and"},{"line_number":231,"context_line":"  admin only and \u0027public\u0027, when all users have an access to the artifact by default."},{"line_number":232,"context_line":"  When artifact is \u0027queued\u0027 its visibility is \u0027private. It\u0027s allowed to change"},{"line_number":233,"context_line":"  visibility only when artifact has \u0027active\u0027 status."},{"line_number":234,"context_line":""},{"line_number":235,"context_line":""}],"source_content_type":"text/x-rst","patch_set":13,"id":"3aaa91ec_d398541e","line":232,"range":{"start_line":232,"start_character":46,"end_line":232,"end_character":54},"updated":"2016-06-27 19:55:23.000000000","message":"s/\u0027private/\u0027private\u0027/","commit_id":"064a5c0f00734193211cda2605b324ccdb073463"},{"author":{"_account_id":11391,"name":"Mikhail Fedosin","email":"mfedosin@redhat.com","username":"fedosinme"},"change_message_id":"15ca8a66ae86db9301446405424338404f6c6054","unresolved":false,"context_lines":[{"line_number":229,"context_line":"* *Artifact visibility* - defines who may have an access to active artifact."},{"line_number":230,"context_line":"  Initially there are 2 options: \u0027private\u0027 artifact is accessible by its owner and"},{"line_number":231,"context_line":"  admin only and \u0027public\u0027, when all users have an access to the artifact by default."},{"line_number":232,"context_line":"  When artifact is \u0027queued\u0027 its visibility is \u0027private. It\u0027s allowed to change"},{"line_number":233,"context_line":"  visibility only when artifact has \u0027active\u0027 status."},{"line_number":234,"context_line":""},{"line_number":235,"context_line":""}],"source_content_type":"text/x-rst","patch_set":13,"id":"1aa78d24_c47356b0","line":232,"range":{"start_line":232,"start_character":46,"end_line":232,"end_character":54},"in_reply_to":"3aaa91ec_d398541e","updated":"2016-07-04 16:57:58.000000000","message":"Done","commit_id":"064a5c0f00734193211cda2605b324ccdb073463"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"5f4fcdae9e49a8b148a55928eb0128ae6023e442","unresolved":false,"context_lines":[{"line_number":232,"context_line":"  When artifact is \u0027queued\u0027 its visibility is \u0027private. It\u0027s allowed to change"},{"line_number":233,"context_line":"  visibility only when artifact has \u0027active\u0027 status."},{"line_number":234,"context_line":""},{"line_number":235,"context_line":""},{"line_number":236,"context_line":"**Use Case list**"},{"line_number":237,"context_line":""},{"line_number":238,"context_line":"* **Use Case 1.** Add Artifact type."}],"source_content_type":"text/x-rst","patch_set":13,"id":"3aaa91ec_b9548621","line":235,"updated":"2016-06-27 19:55:23.000000000","message":"I don\u0027t know if it\u0027s worth adding one more item here, something like:\n\nArtifact Locking: Once an artifact has status \u003d\u003d active, it is \"locked\" and cannot be modified (except for those properties explicitly declared mutable).\n\nThe reason to add it would be to highlight the difference between locking the artifact (can no longer be modified) and publishing it (it is available to all users).  I think it\u0027s worth pointing out for the situation where some tenant wants to create an artifact exclusively for the users in that tenant without making it available to all tenants.","commit_id":"064a5c0f00734193211cda2605b324ccdb073463"},{"author":{"_account_id":11391,"name":"Mikhail Fedosin","email":"mfedosin@redhat.com","username":"fedosinme"},"change_message_id":"15ca8a66ae86db9301446405424338404f6c6054","unresolved":false,"context_lines":[{"line_number":232,"context_line":"  When artifact is \u0027queued\u0027 its visibility is \u0027private. It\u0027s allowed to change"},{"line_number":233,"context_line":"  visibility only when artifact has \u0027active\u0027 status."},{"line_number":234,"context_line":""},{"line_number":235,"context_line":""},{"line_number":236,"context_line":"**Use Case list**"},{"line_number":237,"context_line":""},{"line_number":238,"context_line":"* **Use Case 1.** Add Artifact type."}],"source_content_type":"text/x-rst","patch_set":13,"id":"1aa78d24_561ef463","line":235,"in_reply_to":"3aaa91ec_b9548621","updated":"2016-07-04 16:57:58.000000000","message":"Done","commit_id":"064a5c0f00734193211cda2605b324ccdb073463"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"5f4fcdae9e49a8b148a55928eb0128ae6023e442","unresolved":false,"context_lines":[{"line_number":249,"context_line":"  .. note:: Artifact types are pre-published in Glance repository. All of"},{"line_number":250,"context_line":"     them will be reviewed and committed by Glance developers and reviewers."},{"line_number":251,"context_line":""},{"line_number":252,"context_line":"  2. Operator implements all abstract methods and define data API."},{"line_number":253,"context_line":""},{"line_number":254,"context_line":"  .. note:: We are using image data API for image artifact type and common"},{"line_number":255,"context_line":"     unified data API for other artifacts."}],"source_content_type":"text/x-rst","patch_set":13,"id":"3aaa91ec_3beb6eb2","line":252,"range":{"start_line":252,"start_character":50,"end_line":252,"end_character":56},"updated":"2016-06-27 19:55:23.000000000","message":"nit: s/define/defines/","commit_id":"064a5c0f00734193211cda2605b324ccdb073463"},{"author":{"_account_id":11391,"name":"Mikhail Fedosin","email":"mfedosin@redhat.com","username":"fedosinme"},"change_message_id":"15ca8a66ae86db9301446405424338404f6c6054","unresolved":false,"context_lines":[{"line_number":249,"context_line":"  .. note:: Artifact types are pre-published in Glance repository. All of"},{"line_number":250,"context_line":"     them will be reviewed and committed by Glance developers and reviewers."},{"line_number":251,"context_line":""},{"line_number":252,"context_line":"  2. Operator implements all abstract methods and define data API."},{"line_number":253,"context_line":""},{"line_number":254,"context_line":"  .. note:: We are using image data API for image artifact type and common"},{"line_number":255,"context_line":"     unified data API for other artifacts."}],"source_content_type":"text/x-rst","patch_set":13,"id":"1aa78d24_043f1eb5","line":252,"range":{"start_line":252,"start_character":50,"end_line":252,"end_character":56},"in_reply_to":"3aaa91ec_3beb6eb2","updated":"2016-07-04 16:57:58.000000000","message":"Done","commit_id":"064a5c0f00734193211cda2605b324ccdb073463"},{"author":{"_account_id":7369,"name":"Sergey Skripnick","email":"sskripnick@mirantis.com","username":"redixin"},"change_message_id":"fb10d3420fdc0b351d819e8a652587e5ae74edc9","unresolved":false,"context_lines":[{"line_number":1124,"context_line":""},{"line_number":1125,"context_line":"          .. code-block:: javascript"},{"line_number":1126,"context_line":""},{"line_number":1127,"context_line":"            {"},{"line_number":1128,"context_line":"                \u0027example_type\u0027: [{"},{"line_number":1129,"context_line":"                        \"status\": \"queued\","},{"line_number":1130,"context_line":"                        \"name\": \"new_art\","}],"source_content_type":"text/x-rst","patch_set":13,"id":"3aaa91ec_218be31f","line":1127,"updated":"2016-06-29 10:03:13.000000000","message":"This sample is not a valid json","commit_id":"064a5c0f00734193211cda2605b324ccdb073463"},{"author":{"_account_id":11391,"name":"Mikhail Fedosin","email":"mfedosin@redhat.com","username":"fedosinme"},"change_message_id":"15ca8a66ae86db9301446405424338404f6c6054","unresolved":false,"context_lines":[{"line_number":1124,"context_line":""},{"line_number":1125,"context_line":"          .. code-block:: javascript"},{"line_number":1126,"context_line":""},{"line_number":1127,"context_line":"            {"},{"line_number":1128,"context_line":"                \u0027example_type\u0027: [{"},{"line_number":1129,"context_line":"                        \"status\": \"queued\","},{"line_number":1130,"context_line":"                        \"name\": \"new_art\","}],"source_content_type":"text/x-rst","patch_set":13,"id":"1aa78d24_dda7aa4d","line":1127,"in_reply_to":"3aaa91ec_218be31f","updated":"2016-07-04 16:57:58.000000000","message":"Done","commit_id":"064a5c0f00734193211cda2605b324ccdb073463"},{"author":{"_account_id":7369,"name":"Sergey Skripnick","email":"sskripnick@mirantis.com","username":"redixin"},"change_message_id":"fb10d3420fdc0b351d819e8a652587e5ae74edc9","unresolved":false,"context_lines":[{"line_number":1125,"context_line":"          .. code-block:: javascript"},{"line_number":1126,"context_line":""},{"line_number":1127,"context_line":"            {"},{"line_number":1128,"context_line":"                \u0027example_type\u0027: [{"},{"line_number":1129,"context_line":"                        \"status\": \"queued\","},{"line_number":1130,"context_line":"                        \"name\": \"new_art\","},{"line_number":1131,"context_line":"                        \"id\": \"art_id1\","}],"source_content_type":"text/x-rst","patch_set":13,"id":"3aaa91ec_8409052f","line":1128,"updated":"2016-06-29 10:03:13.000000000","message":"Here only artifacts of type \"example_type\" are requested, so this information is redundant.","commit_id":"064a5c0f00734193211cda2605b324ccdb073463"},{"author":{"_account_id":7369,"name":"Sergey Skripnick","email":"sskripnick@mirantis.com","username":"redixin"},"change_message_id":"fb10d3420fdc0b351d819e8a652587e5ae74edc9","unresolved":false,"context_lines":[{"line_number":1149,"context_line":"                        \"blob_file\": null,"},{"line_number":1150,"context_line":"                        \"metadata\": {},"},{"line_number":1151,"context_line":"                        \"visibility\": \"private\"]"},{"line_number":1152,"context_line":"                    \"first\": \"/artifacts/example_type\", \"schema\": \"/schemas/example_type\""},{"line_number":1153,"context_line":"                }"},{"line_number":1154,"context_line":""},{"line_number":1155,"context_line":"      Request:"}],"source_content_type":"text/x-rst","patch_set":13,"id":"3aaa91ec_64a859dc","line":1152,"updated":"2016-06-29 10:03:13.000000000","message":"What is the purpose of this two keys?","commit_id":"064a5c0f00734193211cda2605b324ccdb073463"},{"author":{"_account_id":11391,"name":"Mikhail Fedosin","email":"mfedosin@redhat.com","username":"fedosinme"},"change_message_id":"15ca8a66ae86db9301446405424338404f6c6054","unresolved":false,"context_lines":[{"line_number":1149,"context_line":"                        \"blob_file\": null,"},{"line_number":1150,"context_line":"                        \"metadata\": {},"},{"line_number":1151,"context_line":"                        \"visibility\": \"private\"]"},{"line_number":1152,"context_line":"                    \"first\": \"/artifacts/example_type\", \"schema\": \"/schemas/example_type\""},{"line_number":1153,"context_line":"                }"},{"line_number":1154,"context_line":""},{"line_number":1155,"context_line":"      Request:"}],"source_content_type":"text/x-rst","patch_set":13,"id":"1aa78d24_0166f0ec","line":1152,"in_reply_to":"3aaa91ec_64a859dc","updated":"2016-07-04 16:57:58.000000000","message":"It\u0027s done for proper pagination, we always return a link to the \"first\" page: then if there is another page (all artifact weren\u0027t fit in this one), we add a link to the \"next\" page, and also we always add a link to artifact type \"schema\".","commit_id":"064a5c0f00734193211cda2605b324ccdb073463"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"5f4fcdae9e49a8b148a55928eb0128ae6023e442","unresolved":false,"context_lines":[{"line_number":1156,"context_line":""},{"line_number":1157,"context_line":"        * Method: GET"},{"line_number":1158,"context_line":""},{"line_number":1159,"context_line":"        * URL: http://host:port/artifacts/example_type?name\u003deq:old_name"},{"line_number":1160,"context_line":""},{"line_number":1161,"context_line":"      Response:"},{"line_number":1162,"context_line":""}],"source_content_type":"text/x-rst","patch_set":13,"id":"3aaa91ec_1e7820f8","line":1159,"range":{"start_line":1159,"start_character":63,"end_line":1159,"end_character":71},"updated":"2016-06-27 19:55:23.000000000","message":"Given the example response below, I think this should be eq:old_art","commit_id":"064a5c0f00734193211cda2605b324ccdb073463"},{"author":{"_account_id":11391,"name":"Mikhail Fedosin","email":"mfedosin@redhat.com","username":"fedosinme"},"change_message_id":"15ca8a66ae86db9301446405424338404f6c6054","unresolved":false,"context_lines":[{"line_number":1156,"context_line":""},{"line_number":1157,"context_line":"        * Method: GET"},{"line_number":1158,"context_line":""},{"line_number":1159,"context_line":"        * URL: http://host:port/artifacts/example_type?name\u003deq:old_name"},{"line_number":1160,"context_line":""},{"line_number":1161,"context_line":"      Response:"},{"line_number":1162,"context_line":""}],"source_content_type":"text/x-rst","patch_set":13,"id":"1aa78d24_2155ec4f","line":1159,"range":{"start_line":1159,"start_character":63,"end_line":1159,"end_character":71},"in_reply_to":"3aaa91ec_1e7820f8","updated":"2016-07-04 16:57:58.000000000","message":"Done","commit_id":"064a5c0f00734193211cda2605b324ccdb073463"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"5f4fcdae9e49a8b148a55928eb0128ae6023e442","unresolved":false,"context_lines":[{"line_number":1475,"context_line":"Other deployer impact"},{"line_number":1476,"context_line":"---------------------"},{"line_number":1477,"context_line":""},{"line_number":1478,"context_line":"For the reason that other projects are dependent on Glance release cycle and"},{"line_number":1479,"context_line":"that merely artifact type updating doesn\u0027t have to be constrained by the norms"},{"line_number":1480,"context_line":"of the 6 monthly releases."},{"line_number":1481,"context_line":""},{"line_number":1482,"context_line":"There is an agreement to create a single new repository where all new"},{"line_number":1483,"context_line":"glare-objects (Artifact types) will go. It will either be a oslo-inc style"},{"line_number":1484,"context_line":"library, but preferably a non-client OpenStack library which can be released"},{"line_number":1485,"context_line":"to pip and the Glare objects can be then pulled into Glance repository using"},{"line_number":1486,"context_line":"the right upper constraints per branch and at the same time adhere to the"}],"source_content_type":"text/x-rst","patch_set":13,"id":"3aaa91ec_34affb95","line":1483,"range":{"start_line":1478,"start_character":0,"end_line":1483,"end_character":39},"updated":"2016-06-27 19:55:23.000000000","message":"I suggest combining the previous paragraph and this sentence to read:\n\nThe Glare service will follow the Glance release cycle.  It is expected that artifact type updating, however, will proceed more quickly than that, and thus we want to make it possible to update artifact toyeand than a 6 month cycle.  We propose to address this situation by creating a single new repository where all new glare-objects (Artifact types) will go.","commit_id":"064a5c0f00734193211cda2605b324ccdb073463"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"5f4fcdae9e49a8b148a55928eb0128ae6023e442","unresolved":false,"context_lines":[{"line_number":1475,"context_line":"Other deployer impact"},{"line_number":1476,"context_line":"---------------------"},{"line_number":1477,"context_line":""},{"line_number":1478,"context_line":"For the reason that other projects are dependent on Glance release cycle and"},{"line_number":1479,"context_line":"that merely artifact type updating doesn\u0027t have to be constrained by the norms"},{"line_number":1480,"context_line":"of the 6 monthly releases."},{"line_number":1481,"context_line":""},{"line_number":1482,"context_line":"There is an agreement to create a single new repository where all new"},{"line_number":1483,"context_line":"glare-objects (Artifact types) will go. It will either be a oslo-inc style"},{"line_number":1484,"context_line":"library, but preferably a non-client OpenStack library which can be released"},{"line_number":1485,"context_line":"to pip and the Glare objects can be then pulled into Glance repository using"},{"line_number":1486,"context_line":"the right upper constraints per branch and at the same time adhere to the"}],"source_content_type":"text/x-rst","patch_set":13,"id":"3aaa91ec_34eb7bb2","line":1483,"range":{"start_line":1478,"start_character":0,"end_line":1483,"end_character":39},"updated":"2016-06-27 19:55:23.000000000","message":"I\u0027d suggest changing this to something like: \n\nThe Glare service will follow the Glance release cycle.  It is expected that artifact type updating, however, will proceed more quickly than a 6 month cycle.  Thus we want to make it possible to update artifact types more frequently, but in a controlled manner that will be easy for deployers.\n\nWe propose to address this situation by creating a single new repository where all new glare-objects (Artifact types) will go.  It will ...","commit_id":"064a5c0f00734193211cda2605b324ccdb073463"},{"author":{"_account_id":11391,"name":"Mikhail Fedosin","email":"mfedosin@redhat.com","username":"fedosinme"},"change_message_id":"15ca8a66ae86db9301446405424338404f6c6054","unresolved":false,"context_lines":[{"line_number":1475,"context_line":"Other deployer impact"},{"line_number":1476,"context_line":"---------------------"},{"line_number":1477,"context_line":""},{"line_number":1478,"context_line":"For the reason that other projects are dependent on Glance release cycle and"},{"line_number":1479,"context_line":"that merely artifact type updating doesn\u0027t have to be constrained by the norms"},{"line_number":1480,"context_line":"of the 6 monthly releases."},{"line_number":1481,"context_line":""},{"line_number":1482,"context_line":"There is an agreement to create a single new repository where all new"},{"line_number":1483,"context_line":"glare-objects (Artifact types) will go. It will either be a oslo-inc style"},{"line_number":1484,"context_line":"library, but preferably a non-client OpenStack library which can be released"},{"line_number":1485,"context_line":"to pip and the Glare objects can be then pulled into Glance repository using"},{"line_number":1486,"context_line":"the right upper constraints per branch and at the same time adhere to the"}],"source_content_type":"text/x-rst","patch_set":13,"id":"1aa78d24_a4260ab8","line":1483,"range":{"start_line":1478,"start_character":0,"end_line":1483,"end_character":39},"in_reply_to":"3aaa91ec_34eb7bb2","updated":"2016-07-04 16:57:58.000000000","message":"Done","commit_id":"064a5c0f00734193211cda2605b324ccdb073463"}]}
