)]}'
{"doc/source/index.rst":[{"author":{"_account_id":170,"name":"Mike Perez","email":"thingee@gmail.com","username":"thingee"},"change_message_id":"6e83efa316462ed1aac8255f8f358c29ba5f0a04","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Volume Service Specifications (cinder)"},{"line_number":5,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Kilo approved specs:"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":".. toctree::"},{"line_number":10,"context_line":"   :glob:"}],"source_content_type":"text/x-rst","patch_set":2,"id":"da86d52c_8d04dc4a","line":7,"updated":"2015-02-12 09:13:13.000000000","message":"this leaked in from other work. I will break this out in the next revision.","commit_id":"610c90441708a88e5fd874d7d98b19d343c454e0"}],"specs/kilo/standard-capabilities.rst":[{"author":{"_account_id":2243,"name":"John Griffith","email":"john.griffith8@gmail.com","username":"john-griffith"},"change_message_id":"284d5ee727fe53be2701b643167c478dfc540b07","unresolved":false,"context_lines":[{"line_number":33,"context_line":" * off"},{"line_number":34,"context_line":" * High priority"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"Creating an interface with these implementations is not completely possible."},{"line_number":37,"context_line":"After unsuccessful attempts, solutions begin surfacing to just expose a list of"},{"line_number":38,"context_line":"capabilities [1][2][3] for the operator to use when creating extra specs."},{"line_number":39,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"da86d52c_a58163c5","line":36,"updated":"2015-02-13 22:21:19.000000000","message":"This isn\u0027t completely accurate, we have an interface that works very well in my opinion.  It doesn\u0027t describe every available option and every detail but it was never intended to do so, it was intended to be the interface and config method to select capabilities not document them.","commit_id":"610c90441708a88e5fd874d7d98b19d343c454e0"},{"author":{"_account_id":2243,"name":"John Griffith","email":"john.griffith8@gmail.com","username":"john-griffith"},"change_message_id":"284d5ee727fe53be2701b643167c478dfc540b07","unresolved":false,"context_lines":[{"line_number":40,"context_line":"Capabilities need to be exposed to the cloud administrator from Cinder, so that"},{"line_number":41,"context_line":"Cinder is not limiting what storage backends can do. However, the capabilities"},{"line_number":42,"context_line":"need to be presented from a common interface when possible, so that the user"},{"line_number":43,"context_line":"experience and usefulness of Cinder is not lost."},{"line_number":44,"context_line":""},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"Proposed change"}],"source_content_type":"text/x-rst","patch_set":2,"id":"da86d52c_6593eb00","line":43,"updated":"2015-02-13 22:21:19.000000000","message":"Might need to work on this, the statement above makes sense to me and I agreed it would be useful to expose the capability info to the admins.\n\nAs this spec continues though and various comments are added there\u0027s a lot of scope creep in my opinion, where we also want this to be self documenting at the same time.  I don\u0027t think we should look at this as a replacement for docs, if there\u0027s insistence that we should report every available capability back up in a data structure I\u0027m ok with that, but we shouldn\u0027t expect it to be a replacement for good documentation that explains in detail what those settings are and how they work.\n\nIn other words, these are just capabilities, not documentation.","commit_id":"610c90441708a88e5fd874d7d98b19d343c454e0"},{"author":{"_account_id":2417,"name":"Ben Swartzlander","email":"ben@swartzlander.org","username":"bswartz"},"change_message_id":"6fd135e4b96360b9ce40f82b47a4548c881c63e6","unresolved":false,"context_lines":[{"line_number":40,"context_line":"Capabilities need to be exposed to the cloud administrator from Cinder, so that"},{"line_number":41,"context_line":"Cinder is not limiting what storage backends can do. However, the capabilities"},{"line_number":42,"context_line":"need to be presented from a common interface when possible, so that the user"},{"line_number":43,"context_line":"experience and usefulness of Cinder is not lost."},{"line_number":44,"context_line":""},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"Proposed change"}],"source_content_type":"text/x-rst","patch_set":2,"id":"da86d52c_81597790","line":43,"in_reply_to":"da86d52c_6593eb00","updated":"2015-02-16 20:48:28.000000000","message":"My personal feeling is that we need both vendor-specific capabilities and also standardized capabilities. The existing system should allow for this quite elegantly.\n\nI would like to see individual vendors adds all of the capabitlities/extra_specs that their backends can possibly support (using prefixed names such as netapp_xxx) and for the Cinder team to look for overlap between them to define common standards which can be clearly documented and implemented by all. The common standardized capabilities are no substitute for the vendors specific ones though.\n\nThe main advantage for the standardized ones would be that admins can expect them to work across backends so they have flexibility to associate 2 or more vendors with a given volume_type. This gives admins the ability to replace one vendor with another seamlessly, or to use a mix of gear from 2 vendors to try to maximize the discount they can obtain.","commit_id":"610c90441708a88e5fd874d7d98b19d343c454e0"},{"author":{"_account_id":6825,"name":"Gary W. Smith","email":"garysmith123@gmail.com","username":"gary-w-smith"},"change_message_id":"dd0efd4fba8ff01e6f89c232a8a12259f9c3c0fc","unresolved":false,"context_lines":[{"line_number":61,"context_line":"          \"location_info\": \"LVMVolumeDriver:ubuntu:stack-volumes:default:0\","},{"line_number":62,"context_line":"          \"pool_name\": \"backend_name\","},{"line_number":63,"context_line":"          \"reserved_percentage\": 0,"},{"line_number":64,"context_line":"          \"storage_protocol\": \"iSCSI\","},{"line_number":65,"context_line":"          \"timestamp\": \"2014-11-21T18:15:28.141161\","},{"line_number":66,"context_line":"          \"total_capacity_gb\": 10.01,"},{"line_number":67,"context_line":"          \"vendor_name\": \"Open Source\","}],"source_content_type":"text/x-rst","patch_set":2,"id":"da86d52c_0c60d3ff","line":64,"updated":"2015-02-12 18:32:04.000000000","message":"Since storage_protocol is something that the scheduler can use and can be put in an volume type extra spec, should it deserve to appear below with a description/list of values/default, etc.?","commit_id":"610c90441708a88e5fd874d7d98b19d343c454e0"},{"author":{"_account_id":1207,"name":"Duncan Thomas","email":"duncan.thomas@gmail.com","username":"duncan-thomas"},"change_message_id":"b41adc2eb8391238fa0e83c80d4a7beff7d87b06","unresolved":false,"context_lines":[{"line_number":61,"context_line":"          \"location_info\": \"LVMVolumeDriver:ubuntu:stack-volumes:default:0\","},{"line_number":62,"context_line":"          \"pool_name\": \"backend_name\","},{"line_number":63,"context_line":"          \"reserved_percentage\": 0,"},{"line_number":64,"context_line":"          \"storage_protocol\": \"iSCSI\","},{"line_number":65,"context_line":"          \"timestamp\": \"2014-11-21T18:15:28.141161\","},{"line_number":66,"context_line":"          \"total_capacity_gb\": 10.01,"},{"line_number":67,"context_line":"          \"vendor_name\": \"Open Source\","}],"source_content_type":"text/x-rst","patch_set":2,"id":"7ad32947_502bdbeb","line":64,"in_reply_to":"7ad32947_22d3833a","updated":"2015-04-28 08:33:07.000000000","message":"Absolutely no reason why not - it was a design possibility we looked at for our in-house solution to do multi-attach, for example - we attach via weird thing for normal attaches and iSCSI for multi-attach. Alternatively, a compute cluster might have a partial FC network, and a backend that exports to both would allow FC to be used where present or fall back to iSCSI.\n\nThere\u0027s no good reason to avoid these being options in advance that I can see?","commit_id":"610c90441708a88e5fd874d7d98b19d343c454e0"},{"author":{"_account_id":170,"name":"Mike Perez","email":"thingee@gmail.com","username":"thingee"},"change_message_id":"dd1d239caec3982414f2e30f63ebe14a0553445d","unresolved":false,"context_lines":[{"line_number":61,"context_line":"          \"location_info\": \"LVMVolumeDriver:ubuntu:stack-volumes:default:0\","},{"line_number":62,"context_line":"          \"pool_name\": \"backend_name\","},{"line_number":63,"context_line":"          \"reserved_percentage\": 0,"},{"line_number":64,"context_line":"          \"storage_protocol\": \"iSCSI\","},{"line_number":65,"context_line":"          \"timestamp\": \"2014-11-21T18:15:28.141161\","},{"line_number":66,"context_line":"          \"total_capacity_gb\": 10.01,"},{"line_number":67,"context_line":"          \"vendor_name\": \"Open Source\","}],"source_content_type":"text/x-rst","patch_set":2,"id":"da86d52c_7213ea00","line":64,"in_reply_to":"da86d52c_0c60d3ff","updated":"2015-02-12 19:17:46.000000000","message":"Under the use case section, it is exposed to the admin via fetching the capabilities.","commit_id":"610c90441708a88e5fd874d7d98b19d343c454e0"},{"author":{"_account_id":170,"name":"Mike Perez","email":"thingee@gmail.com","username":"thingee"},"change_message_id":"a442a2613be3952848b8d48e4e334af3c172eb88","unresolved":false,"context_lines":[{"line_number":61,"context_line":"          \"location_info\": \"LVMVolumeDriver:ubuntu:stack-volumes:default:0\","},{"line_number":62,"context_line":"          \"pool_name\": \"backend_name\","},{"line_number":63,"context_line":"          \"reserved_percentage\": 0,"},{"line_number":64,"context_line":"          \"storage_protocol\": \"iSCSI\","},{"line_number":65,"context_line":"          \"timestamp\": \"2014-11-21T18:15:28.141161\","},{"line_number":66,"context_line":"          \"total_capacity_gb\": 10.01,"},{"line_number":67,"context_line":"          \"vendor_name\": \"Open Source\","}],"source_content_type":"text/x-rst","patch_set":2,"id":"da86d52c_b0a9d591","line":64,"in_reply_to":"da86d52c_3aab0476","updated":"2015-02-12 22:13:47.000000000","message":"If we want to make progress in Kilo with exposing more capabilities, we might want to delay standardizing on protocols. Standardizing on what\u0027s already exposed today to the scheduler will require researching what drivers are setting, communicate/agree on standardizing those. If this is a big deal right now and we think it blocks moving forward, I say we need to look at exposing capabilities in L.","commit_id":"610c90441708a88e5fd874d7d98b19d343c454e0"},{"author":{"_account_id":6825,"name":"Gary W. Smith","email":"garysmith123@gmail.com","username":"gary-w-smith"},"change_message_id":"7334a2909ed64d855d86cfff1626b5af3be3bc29","unresolved":false,"context_lines":[{"line_number":61,"context_line":"          \"location_info\": \"LVMVolumeDriver:ubuntu:stack-volumes:default:0\","},{"line_number":62,"context_line":"          \"pool_name\": \"backend_name\","},{"line_number":63,"context_line":"          \"reserved_percentage\": 0,"},{"line_number":64,"context_line":"          \"storage_protocol\": \"iSCSI\","},{"line_number":65,"context_line":"          \"timestamp\": \"2014-11-21T18:15:28.141161\","},{"line_number":66,"context_line":"          \"total_capacity_gb\": 10.01,"},{"line_number":67,"context_line":"          \"vendor_name\": \"Open Source\","}],"source_content_type":"text/x-rst","patch_set":2,"id":"da86d52c_3aab0476","line":64,"in_reply_to":"da86d52c_7213ea00","updated":"2015-02-12 21:29:08.000000000","message":"What I see in the use case is that the pool has a storage_protocol of iSCSI.  What I don\u0027t see are what the other possible values are (FC, or is it FibreChannel), or any kind of description, etc.  So my question was whether we need to have schema information for \"well-known\" key/value pairs (I think we should).","commit_id":"610c90441708a88e5fd874d7d98b19d343c454e0"},{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"50f53f2f0db9a3d59e3af5f5f8842b551debf6fb","unresolved":false,"context_lines":[{"line_number":61,"context_line":"          \"location_info\": \"LVMVolumeDriver:ubuntu:stack-volumes:default:0\","},{"line_number":62,"context_line":"          \"pool_name\": \"backend_name\","},{"line_number":63,"context_line":"          \"reserved_percentage\": 0,"},{"line_number":64,"context_line":"          \"storage_protocol\": \"iSCSI\","},{"line_number":65,"context_line":"          \"timestamp\": \"2014-11-21T18:15:28.141161\","},{"line_number":66,"context_line":"          \"total_capacity_gb\": 10.01,"},{"line_number":67,"context_line":"          \"vendor_name\": \"Open Source\","}],"source_content_type":"text/x-rst","patch_set":2,"id":"7ad32947_22d3833a","line":64,"in_reply_to":"da86d52c_b0a9d591","updated":"2015-04-27 21:31:03.000000000","message":"It makes sense for other options that the user can choose, e.g. compression\u003d{\u0027raw\u0027,\u0027deduplication\u0027}, the storage_protocol isn\u0027t something the user can choose in this case iSCSI is the only option (at least I don\u0027t think a backend can advertise 2 storage_protocols)","commit_id":"610c90441708a88e5fd874d7d98b19d343c454e0"},{"author":{"_account_id":6825,"name":"Gary W. Smith","email":"garysmith123@gmail.com","username":"gary-w-smith"},"change_message_id":"dd0efd4fba8ff01e6f89c232a8a12259f9c3c0fc","unresolved":false,"context_lines":[{"line_number":72,"context_line":"  }"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"The proposal is to add an additional keys within *capabilities*::"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":" \"capabilities\": {"},{"line_number":77,"context_line":"     ..."},{"line_number":78,"context_line":"     \"provisioning\": {"}],"source_content_type":"text/x-rst","patch_set":2,"id":"da86d52c_b1e2c4d2","line":75,"updated":"2015-02-12 18:32:04.000000000","message":"Having \u0027capabilities\u0027 nested within \u0027capabilities\u0027 is unnecessarily confusing, especially because they refer to different concepts.  The outer \u0027capabilities\u0027 refers to things that the scheduler can schedule against, whereas the inner capabilities is really a schema (i.e. metadata) about those capabilities.","commit_id":"610c90441708a88e5fd874d7d98b19d343c454e0"},{"author":{"_account_id":170,"name":"Mike Perez","email":"thingee@gmail.com","username":"thingee"},"change_message_id":"a442a2613be3952848b8d48e4e334af3c172eb88","unresolved":false,"context_lines":[{"line_number":72,"context_line":"  }"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"The proposal is to add an additional keys within *capabilities*::"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":" \"capabilities\": {"},{"line_number":77,"context_line":"     ..."},{"line_number":78,"context_line":"     \"provisioning\": {"}],"source_content_type":"text/x-rst","patch_set":2,"id":"da86d52c_9094d137","line":75,"in_reply_to":"da86d52c_1aff2035","updated":"2015-02-12 22:13:47.000000000","message":"No metadata. We are done with that term. It\u0027s ambiguous and history on the ML and IRC shows it leads to confusion. We already have three different cases of \"metadata\" in Cinder. So far I think capabilities communicates what a backend is capable of doing. \"information\" or \"schema\" don\u0027t convey what something can do.","commit_id":"610c90441708a88e5fd874d7d98b19d343c454e0"},{"author":{"_account_id":6825,"name":"Gary W. Smith","email":"garysmith123@gmail.com","username":"gary-w-smith"},"change_message_id":"7334a2909ed64d855d86cfff1626b5af3be3bc29","unresolved":false,"context_lines":[{"line_number":72,"context_line":"  }"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"The proposal is to add an additional keys within *capabilities*::"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":" \"capabilities\": {"},{"line_number":77,"context_line":"     ..."},{"line_number":78,"context_line":"     \"provisioning\": {"}],"source_content_type":"text/x-rst","patch_set":2,"id":"da86d52c_1aff2035","line":75,"in_reply_to":"da86d52c_52c6e668","updated":"2015-02-12 21:29:08.000000000","message":"So my point here then is that I would prefer to see the nested dictionary be named something other than \"capabilities\"; maybe \"schema\" or \"information\" or \"metadata\" or something.  Especially since the outer dictionary just gives the current values, while the inner dictionary add descriptions, enumerations and other metadata.","commit_id":"610c90441708a88e5fd874d7d98b19d343c454e0"},{"author":{"_account_id":6825,"name":"Gary W. Smith","email":"garysmith123@gmail.com","username":"gary-w-smith"},"change_message_id":"9efe3f16f00c2baf439e110df786c15cbc5514b3","unresolved":false,"context_lines":[{"line_number":72,"context_line":"  }"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"The proposal is to add an additional keys within *capabilities*::"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":" \"capabilities\": {"},{"line_number":77,"context_line":"     ..."},{"line_number":78,"context_line":"     \"provisioning\": {"}],"source_content_type":"text/x-rst","patch_set":2,"id":"da86d52c_ee1c4915","line":75,"in_reply_to":"da86d52c_9094d137","updated":"2015-02-12 23:19:40.000000000","message":"My apologies on this digression about the name. I misread your answer to Walt\u0027s question -- I thought you were suggesting the first of Walt\u0027s options (a capabilities dictionary within a capabilities dictionary), and hence my objection was to the name of the inner nested dictionary. .  So please ignore this mini-thread; capabilities is a fine name for the whole thing.","commit_id":"610c90441708a88e5fd874d7d98b19d343c454e0"},{"author":{"_account_id":170,"name":"Mike Perez","email":"thingee@gmail.com","username":"thingee"},"change_message_id":"dd1d239caec3982414f2e30f63ebe14a0553445d","unresolved":false,"context_lines":[{"line_number":72,"context_line":"  }"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"The proposal is to add an additional keys within *capabilities*::"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":" \"capabilities\": {"},{"line_number":77,"context_line":"     ..."},{"line_number":78,"context_line":"     \"provisioning\": {"}],"source_content_type":"text/x-rst","patch_set":2,"id":"da86d52c_52c6e668","line":75,"in_reply_to":"da86d52c_b1e2c4d2","updated":"2015-02-12 19:17:46.000000000","message":"See my comment below to Walt about this same exact comment.","commit_id":"610c90441708a88e5fd874d7d98b19d343c454e0"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"5e7a722c9a872fb36bd76c8782b858156d63aa9a","unresolved":false,"context_lines":[{"line_number":73,"context_line":""},{"line_number":74,"context_line":"The proposal is to add an additional keys within *capabilities*::"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":" \"capabilities\": {"},{"line_number":77,"context_line":"     ..."},{"line_number":78,"context_line":"     \"provisioning\": {"},{"line_number":79,"context_line":"         \"available\": True,"}],"source_content_type":"text/x-rst","patch_set":2,"id":"da86d52c_06cc3469","line":76,"updated":"2015-02-12 17:57:41.000000000","message":"Does this key go inside of the above dictionary like so?\n\n\"pools\": [\n{\n  \"name\": \"foo@bar#blah\",\n  \"capabilities\": {\n       \"allocated_capacity_gb\": 0,\n       ...\n      \"capabilities\": {\n           \"provisioning\": {\n ?\n\nOr does it look like....\n\"pools\": [\n{\n  \"name\": \"foo@bar#blah\",\n  \"capabilities\": {\n       \"allocated_capacity_gb\": 0,\n       \"provisioning\": {\n          \"available\": True,\n          \"enum\": [  \"thin\", \"thick\"],\n          \"default\": \"thick\"\n       },\n\n.....\n\n?","commit_id":"610c90441708a88e5fd874d7d98b19d343c454e0"},{"author":{"_account_id":170,"name":"Mike Perez","email":"thingee@gmail.com","username":"thingee"},"change_message_id":"dd1d239caec3982414f2e30f63ebe14a0553445d","unresolved":false,"context_lines":[{"line_number":73,"context_line":""},{"line_number":74,"context_line":"The proposal is to add an additional keys within *capabilities*::"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":" \"capabilities\": {"},{"line_number":77,"context_line":"     ..."},{"line_number":78,"context_line":"     \"provisioning\": {"},{"line_number":79,"context_line":"         \"available\": True,"}],"source_content_type":"text/x-rst","patch_set":2,"id":"da86d52c_917b00f4","line":76,"in_reply_to":"da86d52c_06cc3469","updated":"2015-02-12 19:17:46.000000000","message":"*Within* capabilities, so your second example.","commit_id":"610c90441708a88e5fd874d7d98b19d343c454e0"},{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"9504983715559fc8d4576c627770867bbc126b92","unresolved":false,"context_lines":[{"line_number":75,"context_line":""},{"line_number":76,"context_line":" \"capabilities\": {"},{"line_number":77,"context_line":"     ..."},{"line_number":78,"context_line":"     \"provisioning\": {"},{"line_number":79,"context_line":"         \"available\": True,"},{"line_number":80,"context_line":"          \"enum\": ["},{"line_number":81,"context_line":"              \"thin\","}],"source_content_type":"text/x-rst","patch_set":2,"id":"da86d52c_651106af","line":78,"updated":"2015-02-16 11:22:40.000000000","message":"It is \"provision\" in other places.","commit_id":"610c90441708a88e5fd874d7d98b19d343c454e0"},{"author":{"_account_id":6825,"name":"Gary W. Smith","email":"garysmith123@gmail.com","username":"gary-w-smith"},"change_message_id":"dd0efd4fba8ff01e6f89c232a8a12259f9c3c0fc","unresolved":false,"context_lines":[{"line_number":91,"context_line":"             \"super_compression\""},{"line_number":92,"context_line":"         ],"},{"line_number":93,"context_line":"         \"default\": \"raw\""},{"line_number":94,"context_line":"         \"super_compression_chunk\": {"},{"line_number":95,"context_line":"             \"type\": \"int\","},{"line_number":96,"context_line":"             \"description\": \"Super secret proprietary compression algorithm"},{"line_number":97,"context_line":"                             that takes a size in MB to do some chunking"}],"source_content_type":"text/x-rst","patch_set":2,"id":"da86d52c_919780eb","line":94,"updated":"2015-02-12 18:32:04.000000000","message":"I thought that vendor-specific keys like super_compression_chunk were supposed to be scoped.  Shouldn\u0027t this be \u0027vendorx:super_compression_chunk\u0027 ?","commit_id":"610c90441708a88e5fd874d7d98b19d343c454e0"},{"author":{"_account_id":170,"name":"Mike Perez","email":"thingee@gmail.com","username":"thingee"},"change_message_id":"a442a2613be3952848b8d48e4e334af3c172eb88","unresolved":false,"context_lines":[{"line_number":91,"context_line":"             \"super_compression\""},{"line_number":92,"context_line":"         ],"},{"line_number":93,"context_line":"         \"default\": \"raw\""},{"line_number":94,"context_line":"         \"super_compression_chunk\": {"},{"line_number":95,"context_line":"             \"type\": \"int\","},{"line_number":96,"context_line":"             \"description\": \"Super secret proprietary compression algorithm"},{"line_number":97,"context_line":"                             that takes a size in MB to do some chunking"}],"source_content_type":"text/x-rst","patch_set":2,"id":"da86d52c_70df5d0d","line":94,"in_reply_to":"da86d52c_351b1774","updated":"2015-02-12 22:13:47.000000000","message":"Again see my example below. If you ask for pool1\u0027s capabilities with the backend \"UltimateBlock\", you only get the capabilities of that pool.","commit_id":"610c90441708a88e5fd874d7d98b19d343c454e0"},{"author":{"_account_id":170,"name":"Mike Perez","email":"thingee@gmail.com","username":"thingee"},"change_message_id":"dd1d239caec3982414f2e30f63ebe14a0553445d","unresolved":false,"context_lines":[{"line_number":91,"context_line":"             \"super_compression\""},{"line_number":92,"context_line":"         ],"},{"line_number":93,"context_line":"         \"default\": \"raw\""},{"line_number":94,"context_line":"         \"super_compression_chunk\": {"},{"line_number":95,"context_line":"             \"type\": \"int\","},{"line_number":96,"context_line":"             \"description\": \"Super secret proprietary compression algorithm"},{"line_number":97,"context_line":"                             that takes a size in MB to do some chunking"}],"source_content_type":"text/x-rst","patch_set":2,"id":"da86d52c_d28016f9","line":94,"in_reply_to":"da86d52c_919780eb","updated":"2015-02-12 19:17:46.000000000","message":"Do whatever you want, but look at how it\u0027s output to the admin user in the CLI to the admin user. If the capability is already listed under a particular backend, it\u0027s redundant to say the backend again.\n\npools: [\n    \"backend_name\": SuperStorage\n    \"capabilities\" {\n        \"compression\": {\n            \"enum\": [\n                \"thin\",\n                \"thick\",\n            ].\n            default: \"thick\",\n            \"supestorage_super_compression\": {\n                ...\n            }\n        }\n    }\n]","commit_id":"610c90441708a88e5fd874d7d98b19d343c454e0"},{"author":{"_account_id":6825,"name":"Gary W. Smith","email":"garysmith123@gmail.com","username":"gary-w-smith"},"change_message_id":"7334a2909ed64d855d86cfff1626b5af3be3bc29","unresolved":false,"context_lines":[{"line_number":91,"context_line":"             \"super_compression\""},{"line_number":92,"context_line":"         ],"},{"line_number":93,"context_line":"         \"default\": \"raw\""},{"line_number":94,"context_line":"         \"super_compression_chunk\": {"},{"line_number":95,"context_line":"             \"type\": \"int\","},{"line_number":96,"context_line":"             \"description\": \"Super secret proprietary compression algorithm"},{"line_number":97,"context_line":"                             that takes a size in MB to do some chunking"}],"source_content_type":"text/x-rst","patch_set":2,"id":"da86d52c_351b1774","line":94,"in_reply_to":"da86d52c_d28016f9","updated":"2015-02-12 21:29:08.000000000","message":"I thought it was required that vender-specific keys were scoped?  It that a misunderstanding on my part?","commit_id":"610c90441708a88e5fd874d7d98b19d343c454e0"},{"author":{"_account_id":170,"name":"Mike Perez","email":"thingee@gmail.com","username":"thingee"},"change_message_id":"09ca1487c9476eaaffd936639d3a8e54601ee7de","unresolved":false,"context_lines":[{"line_number":91,"context_line":"             \"super_compression\""},{"line_number":92,"context_line":"         ],"},{"line_number":93,"context_line":"         \"default\": \"raw\""},{"line_number":94,"context_line":"         \"super_compression_chunk\": {"},{"line_number":95,"context_line":"             \"type\": \"int\","},{"line_number":96,"context_line":"             \"description\": \"Super secret proprietary compression algorithm"},{"line_number":97,"context_line":"                             that takes a size in MB to do some chunking"}],"source_content_type":"text/x-rst","patch_set":2,"id":"da86d52c_26e5b337","line":94,"in_reply_to":"da86d52c_d28016f9","updated":"2015-02-12 19:21:10.000000000","message":"and to amend, backend_name should be under capabilities.","commit_id":"610c90441708a88e5fd874d7d98b19d343c454e0"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"5e7a722c9a872fb36bd76c8782b858156d63aa9a","unresolved":false,"context_lines":[{"line_number":96,"context_line":"             \"description\": \"Super secret proprietary compression algorithm"},{"line_number":97,"context_line":"                             that takes a size in MB to do some chunking"},{"line_number":98,"context_line":"                             magic.\","},{"line_number":99,"context_line":"             \"default\": 10"},{"line_number":100,"context_line":"         }"},{"line_number":101,"context_line":"     },"},{"line_number":102,"context_line":"     \"qos\": {"}],"source_content_type":"text/x-rst","patch_set":2,"id":"da86d52c_113c70c7","line":99,"updated":"2015-02-12 17:57:41.000000000","message":"what about ranges?\n\nAlso, how are these specified as extra specs in a volume type?\n\nkey \u003d value\n \"compression\" \u003d \"raw\"\n \"compression.super_compression_chunk\" \u003d 4\n\n?","commit_id":"610c90441708a88e5fd874d7d98b19d343c454e0"},{"author":{"_account_id":1207,"name":"Duncan Thomas","email":"duncan.thomas@gmail.com","username":"duncan-thomas"},"change_message_id":"b41adc2eb8391238fa0e83c80d4a7beff7d87b06","unresolved":false,"context_lines":[{"line_number":96,"context_line":"             \"description\": \"Super secret proprietary compression algorithm"},{"line_number":97,"context_line":"                             that takes a size in MB to do some chunking"},{"line_number":98,"context_line":"                             magic.\","},{"line_number":99,"context_line":"             \"default\": 10"},{"line_number":100,"context_line":"         }"},{"line_number":101,"context_line":"     },"},{"line_number":102,"context_line":"     \"qos\": {"}],"source_content_type":"text/x-rst","patch_set":2,"id":"7ad32947_b06a2f19","line":99,"in_reply_to":"da86d52c_11047048","updated":"2015-04-28 08:33:07.000000000","message":"Having a standard way to communicate ranges and enums allows a much more intuitive UI","commit_id":"610c90441708a88e5fd874d7d98b19d343c454e0"},{"author":{"_account_id":170,"name":"Mike Perez","email":"thingee@gmail.com","username":"thingee"},"change_message_id":"dd1d239caec3982414f2e30f63ebe14a0553445d","unresolved":false,"context_lines":[{"line_number":96,"context_line":"             \"description\": \"Super secret proprietary compression algorithm"},{"line_number":97,"context_line":"                             that takes a size in MB to do some chunking"},{"line_number":98,"context_line":"                             magic.\","},{"line_number":99,"context_line":"             \"default\": 10"},{"line_number":100,"context_line":"         }"},{"line_number":101,"context_line":"     },"},{"line_number":102,"context_line":"     \"qos\": {"}],"source_content_type":"text/x-rst","patch_set":2,"id":"da86d52c_11047048","line":99,"in_reply_to":"da86d52c_113c70c7","updated":"2015-02-12 19:17:46.000000000","message":"Communicate it in the description and validate the value is within the range in the driver itself.\n\nYour second question is answered in the use case section of how an administrator would create a volume type.","commit_id":"610c90441708a88e5fd874d7d98b19d343c454e0"},{"author":{"_account_id":2243,"name":"John Griffith","email":"john.griffith8@gmail.com","username":"john-griffith"},"change_message_id":"284d5ee727fe53be2701b643167c478dfc540b07","unresolved":false,"context_lines":[{"line_number":139,"context_line":"Each capability should define the following:"},{"line_number":140,"context_line":""},{"line_number":141,"context_line":"**available**"},{"line_number":142,"context_line":" By default a capability is reported as **False** for *available*. There are"},{"line_number":143,"context_line":" exceptions to this by capabilities that map to any minimum features [4]. An"},{"line_number":144,"context_line":" example, *provision*, which maps to the minimum feature of creating a volume."},{"line_number":145,"context_line":" A driver can report it supports a feature by setting *available* to **True**."}],"source_content_type":"text/x-rst","patch_set":2,"id":"da86d52c_258732b8","line":142,"updated":"2015-02-13 22:21:19.000000000","message":"I think that was meant to be \"or\" not \"for\"","commit_id":"610c90441708a88e5fd874d7d98b19d343c454e0"},{"author":{"_account_id":6825,"name":"Gary W. Smith","email":"garysmith123@gmail.com","username":"gary-w-smith"},"change_message_id":"dd0efd4fba8ff01e6f89c232a8a12259f9c3c0fc","unresolved":false,"context_lines":[{"line_number":139,"context_line":"Each capability should define the following:"},{"line_number":140,"context_line":""},{"line_number":141,"context_line":"**available**"},{"line_number":142,"context_line":" By default a capability is reported as **False** for *available*. There are"},{"line_number":143,"context_line":" exceptions to this by capabilities that map to any minimum features [4]. An"},{"line_number":144,"context_line":" example, *provision*, which maps to the minimum feature of creating a volume."},{"line_number":145,"context_line":" A driver can report it supports a feature by setting *available* to **True**."}],"source_content_type":"text/x-rst","patch_set":2,"id":"da86d52c_71704c08","line":142,"updated":"2015-02-12 18:32:04.000000000","message":"It is not clear why \u0027available\u0027 is needed.  It seems available means that there are entries under the category.","commit_id":"610c90441708a88e5fd874d7d98b19d343c454e0"},{"author":{"_account_id":1207,"name":"Duncan Thomas","email":"duncan.thomas@gmail.com","username":"duncan-thomas"},"change_message_id":"b41adc2eb8391238fa0e83c80d4a7beff7d87b06","unresolved":false,"context_lines":[{"line_number":139,"context_line":"Each capability should define the following:"},{"line_number":140,"context_line":""},{"line_number":141,"context_line":"**available**"},{"line_number":142,"context_line":" By default a capability is reported as **False** for *available*. There are"},{"line_number":143,"context_line":" exceptions to this by capabilities that map to any minimum features [4]. An"},{"line_number":144,"context_line":" example, *provision*, which maps to the minimum feature of creating a volume."},{"line_number":145,"context_line":" A driver can report it supports a feature by setting *available* to **True**."}],"source_content_type":"text/x-rst","patch_set":2,"id":"7ad32947_d0db6bec","line":142,"in_reply_to":"7ad32947_24a030f4","updated":"2015-04-28 08:33:07.000000000","message":"Valid point. Should we just consider not mentioning it to be \u0027not supported\u0027 instead?","commit_id":"610c90441708a88e5fd874d7d98b19d343c454e0"},{"author":{"_account_id":170,"name":"Mike Perez","email":"thingee@gmail.com","username":"thingee"},"change_message_id":"6e98fa2ee43ed740e7ab9a356517d940c2cfe339","unresolved":false,"context_lines":[{"line_number":139,"context_line":"Each capability should define the following:"},{"line_number":140,"context_line":""},{"line_number":141,"context_line":"**available**"},{"line_number":142,"context_line":" By default a capability is reported as **False** for *available*. There are"},{"line_number":143,"context_line":" exceptions to this by capabilities that map to any minimum features [4]. An"},{"line_number":144,"context_line":" example, *provision*, which maps to the minimum feature of creating a volume."},{"line_number":145,"context_line":" A driver can report it supports a feature by setting *available* to **True**."}],"source_content_type":"text/x-rst","patch_set":2,"id":"da86d52c_cb98251e","line":142,"in_reply_to":"da86d52c_258732b8","updated":"2015-02-13 23:19:03.000000000","message":"What?","commit_id":"610c90441708a88e5fd874d7d98b19d343c454e0"},{"author":{"_account_id":170,"name":"Mike Perez","email":"thingee@gmail.com","username":"thingee"},"change_message_id":"dd1d239caec3982414f2e30f63ebe14a0553445d","unresolved":false,"context_lines":[{"line_number":139,"context_line":"Each capability should define the following:"},{"line_number":140,"context_line":""},{"line_number":141,"context_line":"**available**"},{"line_number":142,"context_line":" By default a capability is reported as **False** for *available*. There are"},{"line_number":143,"context_line":" exceptions to this by capabilities that map to any minimum features [4]. An"},{"line_number":144,"context_line":" example, *provision*, which maps to the minimum feature of creating a volume."},{"line_number":145,"context_line":" A driver can report it supports a feature by setting *available* to **True**."}],"source_content_type":"text/x-rst","patch_set":2,"id":"da86d52c_d20ad677","line":142,"in_reply_to":"da86d52c_71704c08","updated":"2015-02-12 19:17:46.000000000","message":"For the cases when a backend can not do the standard capability, it\u0027s a way to explicitly say so.\n\n\"pools\": [\n    {\n         \"replication\": {\n             \"available\": False\n             ...\n         }\n         ...\n]\n\nIt\u0027s debatable to be neglected in the cases that you are able to support it, and you list additional settings. So for example:\n\n\"pools\": [\n    {\n         \"provision\": {\n              \"enum\": [\n                   \"thin\",\n                   \"thick\"\n              ]\n         }\n     }\n]\n\nIt\u0027s obvious provision is available.","commit_id":"610c90441708a88e5fd874d7d98b19d343c454e0"},{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"50f53f2f0db9a3d59e3af5f5f8842b551debf6fb","unresolved":false,"context_lines":[{"line_number":139,"context_line":"Each capability should define the following:"},{"line_number":140,"context_line":""},{"line_number":141,"context_line":"**available**"},{"line_number":142,"context_line":" By default a capability is reported as **False** for *available*. There are"},{"line_number":143,"context_line":" exceptions to this by capabilities that map to any minimum features [4]. An"},{"line_number":144,"context_line":" example, *provision*, which maps to the minimum feature of creating a volume."},{"line_number":145,"context_line":" A driver can report it supports a feature by setting *available* to **True**."}],"source_content_type":"text/x-rst","patch_set":2,"id":"7ad32947_24a030f4","line":142,"in_reply_to":"da86d52c_cb98251e","updated":"2015-04-27 21:31:03.000000000","message":"So, what happens when a new standard capability is added and a driver does not support it? e.g. If the driver does not report the \"replication\" it will be considered as False?","commit_id":"610c90441708a88e5fd874d7d98b19d343c454e0"},{"author":{"_account_id":6825,"name":"Gary W. Smith","email":"garysmith123@gmail.com","username":"gary-w-smith"},"change_message_id":"7334a2909ed64d855d86cfff1626b5af3be3bc29","unresolved":false,"context_lines":[{"line_number":139,"context_line":"Each capability should define the following:"},{"line_number":140,"context_line":""},{"line_number":141,"context_line":"**available**"},{"line_number":142,"context_line":" By default a capability is reported as **False** for *available*. There are"},{"line_number":143,"context_line":" exceptions to this by capabilities that map to any minimum features [4]. An"},{"line_number":144,"context_line":" example, *provision*, which maps to the minimum feature of creating a volume."},{"line_number":145,"context_line":" A driver can report it supports a feature by setting *available* to **True**."}],"source_content_type":"text/x-rst","patch_set":2,"id":"da86d52c_5a135800","line":142,"in_reply_to":"da86d52c_d20ad677","updated":"2015-02-12 21:29:08.000000000","message":"ok, fair enough","commit_id":"610c90441708a88e5fd874d7d98b19d343c454e0"},{"author":{"_account_id":170,"name":"Mike Perez","email":"thingee@gmail.com","username":"thingee"},"change_message_id":"6e83efa316462ed1aac8255f8f358c29ba5f0a04","unresolved":false,"context_lines":[{"line_number":170,"context_line":"Capabilities. If there is enough of a common use case and interest, it will be"},{"line_number":171,"context_line":"approved."},{"line_number":172,"context_line":""},{"line_number":173,"context_line":"The initial proposed list of **Standard Capabilities** are:"},{"line_number":174,"context_line":""},{"line_number":175,"context_line":"* Provision"},{"line_number":176,"context_line":" * enum pushed from driver"}],"source_content_type":"text/x-rst","patch_set":2,"id":"da86d52c_4dd024c9","line":173,"updated":"2015-02-12 09:13:13.000000000","message":"What other capabilities would folks like to see here?","commit_id":"610c90441708a88e5fd874d7d98b19d343c454e0"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"5e7a722c9a872fb36bd76c8782b858156d63aa9a","unresolved":false,"context_lines":[{"line_number":170,"context_line":"Capabilities. If there is enough of a common use case and interest, it will be"},{"line_number":171,"context_line":"approved."},{"line_number":172,"context_line":""},{"line_number":173,"context_line":"The initial proposed list of **Standard Capabilities** are:"},{"line_number":174,"context_line":""},{"line_number":175,"context_line":"* Provision"},{"line_number":176,"context_line":" * enum pushed from driver"}],"source_content_type":"text/x-rst","patch_set":2,"id":"da86d52c_862e6441","line":173,"in_reply_to":"da86d52c_4dd024c9","updated":"2015-02-12 17:57:41.000000000","message":"raid_level,  disk_type (ssd, platter), disk_rpm","commit_id":"610c90441708a88e5fd874d7d98b19d343c454e0"},{"author":{"_account_id":1207,"name":"Duncan Thomas","email":"duncan.thomas@gmail.com","username":"duncan-thomas"},"change_message_id":"b41adc2eb8391238fa0e83c80d4a7beff7d87b06","unresolved":false,"context_lines":[{"line_number":170,"context_line":"Capabilities. If there is enough of a common use case and interest, it will be"},{"line_number":171,"context_line":"approved."},{"line_number":172,"context_line":""},{"line_number":173,"context_line":"The initial proposed list of **Standard Capabilities** are:"},{"line_number":174,"context_line":""},{"line_number":175,"context_line":"* Provision"},{"line_number":176,"context_line":" * enum pushed from driver"}],"source_content_type":"text/x-rst","patch_set":2,"id":"7ad32947_90fcd33f","line":173,"in_reply_to":"da86d52c_862e6441","updated":"2015-04-28 08:33:07.000000000","message":"raid level, disk type and RPM make no sense at all for many array architectures, having them as standard (aka required) capabilities seems like a bad choice.","commit_id":"610c90441708a88e5fd874d7d98b19d343c454e0"},{"author":{"_account_id":170,"name":"Mike Perez","email":"thingee@gmail.com","username":"thingee"},"change_message_id":"6e83efa316462ed1aac8255f8f358c29ba5f0a04","unresolved":false,"context_lines":[{"line_number":178,"context_line":" * enum pushed from driver"},{"line_number":179,"context_line":"* QOS"},{"line_number":180,"context_line":"  * *Addition Settings* pushed from driver."},{"line_number":181,"context_line":"* Replication"},{"line_number":182,"context_line":"  * *Addition Settings* pushed from driver."},{"line_number":183,"context_line":""},{"line_number":184,"context_line":"Alternatives"}],"source_content_type":"text/x-rst","patch_set":2,"id":"da86d52c_2d669051","line":181,"updated":"2015-02-12 09:13:13.000000000","message":"I have no idea what replication would look like from vendors. I guess these will just be pushed up?","commit_id":"610c90441708a88e5fd874d7d98b19d343c454e0"},{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"50f53f2f0db9a3d59e3af5f5f8842b551debf6fb","unresolved":false,"context_lines":[{"line_number":194,"context_line":"like to create some new volume types in Cinder. They can begin this by asking"},{"line_number":195,"context_line":"Cinder for a particular backend/pool what its Capabilities are::"},{"line_number":196,"context_line":""},{"line_number":197,"context_line":" $ cinder get_capabilities \u003chost\u003e#pool"},{"line_number":198,"context_line":""},{"line_number":199,"context_line":" name: ubuntu@UltimateBlock#pool1"},{"line_number":200,"context_line":" pool_name: pool1"}],"source_content_type":"text/x-rst","patch_set":2,"id":"7ad32947_aa09a933","line":197,"updated":"2015-04-27 21:31:03.000000000","message":"Wouldn\u0027t this fit better on \"cinder-manage host list\"? That avoid yet another command. It would take an extra parameter, \"cinder-manage host list [host]\" that if passed would return the host info.","commit_id":"610c90441708a88e5fd874d7d98b19d343c454e0"},{"author":{"_account_id":1207,"name":"Duncan Thomas","email":"duncan.thomas@gmail.com","username":"duncan-thomas"},"change_message_id":"b41adc2eb8391238fa0e83c80d4a7beff7d87b06","unresolved":false,"context_lines":[{"line_number":194,"context_line":"like to create some new volume types in Cinder. They can begin this by asking"},{"line_number":195,"context_line":"Cinder for a particular backend/pool what its Capabilities are::"},{"line_number":196,"context_line":""},{"line_number":197,"context_line":" $ cinder get_capabilities \u003chost\u003e#pool"},{"line_number":198,"context_line":""},{"line_number":199,"context_line":" name: ubuntu@UltimateBlock#pool1"},{"line_number":200,"context_line":" pool_name: pool1"}],"source_content_type":"text/x-rst","patch_set":2,"id":"7ad32947_b086afb7","line":197,"in_reply_to":"7ad32947_aa09a933","updated":"2015-04-28 08:33:07.000000000","message":"cinder-manage is a different command with totally different use-cases. It should not in any way be confused with the day-to-day management REST API","commit_id":"610c90441708a88e5fd874d7d98b19d343c454e0"},{"author":{"_account_id":2243,"name":"John Griffith","email":"john.griffith8@gmail.com","username":"john-griffith"},"change_message_id":"284d5ee727fe53be2701b643167c478dfc540b07","unresolved":false,"context_lines":[{"line_number":207,"context_line":" reserved_percentage: 0"},{"line_number":208,"context_line":" total_capacity_gb: 1000"},{"line_number":209,"context_line":" Capabilities:"},{"line_number":210,"context_line":"     Provision:"},{"line_number":211,"context_line":"         Available: True"},{"line_number":212,"context_line":"         Options:"},{"line_number":213,"context_line":"             thin"}],"source_content_type":"text/x-rst","patch_set":2,"id":"da86d52c_e56fdb91","line":210,"updated":"2015-02-13 22:21:19.000000000","message":"I still find this one kinda strange, I know we talked about this, but I\u0027m not sure there\u0027s any value in condensing thin/thick into a single entry.  First off if you don\u0027t do provisioning... well... umm... yeah, not very useful.\n\nStill think just reporting them independently is a better answer.","commit_id":"610c90441708a88e5fd874d7d98b19d343c454e0"},{"author":{"_account_id":170,"name":"Mike Perez","email":"thingee@gmail.com","username":"thingee"},"change_message_id":"6e98fa2ee43ed740e7ab9a356517d940c2cfe339","unresolved":false,"context_lines":[{"line_number":207,"context_line":" reserved_percentage: 0"},{"line_number":208,"context_line":" total_capacity_gb: 1000"},{"line_number":209,"context_line":" Capabilities:"},{"line_number":210,"context_line":"     Provision:"},{"line_number":211,"context_line":"         Available: True"},{"line_number":212,"context_line":"         Options:"},{"line_number":213,"context_line":"             thin"}],"source_content_type":"text/x-rst","patch_set":2,"id":"da86d52c_0bba3d6e","line":210,"in_reply_to":"da86d52c_e56fdb91","updated":"2015-02-13 23:19:03.000000000","message":"Ok, I might be misunderstanding things from the midcycle meetup then. I thought we wanted the ability to say things like:\n\n{\n    \"provision\": \u0027thick,\n     ...\n}\n\nor \n\n{\n    \"provision\": \"thin\"\n    ...\n}","commit_id":"610c90441708a88e5fd874d7d98b19d343c454e0"},{"author":{"_account_id":2243,"name":"John Griffith","email":"john.griffith8@gmail.com","username":"john-griffith"},"change_message_id":"284d5ee727fe53be2701b643167c478dfc540b07","unresolved":false,"context_lines":[{"line_number":218,"context_line":"     Qos:"},{"line_number":219,"context_line":"         Available: True"},{"line_number":220,"context_line":""},{"line_number":221,"context_line":"         Additional Settings:"},{"line_number":222,"context_line":"             min_iops:"},{"line_number":223,"context_line":"                 Description: Minimum IOPs guaranteed. Up to 2000 IOPS."},{"line_number":224,"context_line":"                 Default: 1000"}],"source_content_type":"text/x-rst","patch_set":2,"id":"da86d52c_6503ebbe","line":221,"updated":"2015-02-13 22:21:19.000000000","message":"ValidSettings, or ValidKeys maybe?  Def prefer no spaces :)","commit_id":"610c90441708a88e5fd874d7d98b19d343c454e0"},{"author":{"_account_id":170,"name":"Mike Perez","email":"thingee@gmail.com","username":"thingee"},"change_message_id":"6e98fa2ee43ed740e7ab9a356517d940c2cfe339","unresolved":false,"context_lines":[{"line_number":218,"context_line":"     Qos:"},{"line_number":219,"context_line":"         Available: True"},{"line_number":220,"context_line":""},{"line_number":221,"context_line":"         Additional Settings:"},{"line_number":222,"context_line":"             min_iops:"},{"line_number":223,"context_line":"                 Description: Minimum IOPs guaranteed. Up to 2000 IOPS."},{"line_number":224,"context_line":"                 Default: 1000"}],"source_content_type":"text/x-rst","patch_set":2,"id":"da86d52c_8bd62df0","line":221,"in_reply_to":"da86d52c_6503ebbe","updated":"2015-02-13 23:19:03.000000000","message":"Why? This is just output from the cli, and more \"pretty\" for humans, not code.","commit_id":"610c90441708a88e5fd874d7d98b19d343c454e0"},{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"50f53f2f0db9a3d59e3af5f5f8842b551debf6fb","unresolved":false,"context_lines":[{"line_number":220,"context_line":""},{"line_number":221,"context_line":"         Additional Settings:"},{"line_number":222,"context_line":"             min_iops:"},{"line_number":223,"context_line":"                 Description: Minimum IOPs guaranteed. Up to 2000 IOPS."},{"line_number":224,"context_line":"                 Default: 1000"},{"line_number":225,"context_line":"             max_iops:"},{"line_number":226,"context_line":"                 Description: Maximum IOPs guaranteed. Should be greater than"}],"source_content_type":"text/x-rst","patch_set":2,"id":"7ad32947_6d8deb7a","line":223,"updated":"2015-04-27 21:31:03.000000000","message":"This description seems good at first look but it adds another place to update documentation and will lead to inconsistencies in the future. Its better not to load this output will more info and leave it in docs.","commit_id":"610c90441708a88e5fd874d7d98b19d343c454e0"},{"author":{"_account_id":2243,"name":"John Griffith","email":"john.griffith8@gmail.com","username":"john-griffith"},"change_message_id":"284d5ee727fe53be2701b643167c478dfc540b07","unresolved":false,"context_lines":[{"line_number":232,"context_line":"         Available: True"},{"line_number":233,"context_line":"         Options:"},{"line_number":234,"context_line":"             raw"},{"line_number":235,"context_line":"             deduplication"},{"line_number":236,"context_line":"             super_compression"},{"line_number":237,"context_line":"         Default: raw"},{"line_number":238,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"da86d52c_c512d708","line":235,"updated":"2015-02-13 22:21:19.000000000","message":"deduplication isn\u0027t compression, it\u0027s a separate \"thing\", you can do one or the other or both.","commit_id":"610c90441708a88e5fd874d7d98b19d343c454e0"},{"author":{"_account_id":170,"name":"Mike Perez","email":"thingee@gmail.com","username":"thingee"},"change_message_id":"6e98fa2ee43ed740e7ab9a356517d940c2cfe339","unresolved":false,"context_lines":[{"line_number":232,"context_line":"         Available: True"},{"line_number":233,"context_line":"         Options:"},{"line_number":234,"context_line":"             raw"},{"line_number":235,"context_line":"             deduplication"},{"line_number":236,"context_line":"             super_compression"},{"line_number":237,"context_line":"         Default: raw"},{"line_number":238,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"da86d52c_cb074580","line":235,"in_reply_to":"da86d52c_c512d708","updated":"2015-02-13 23:19:03.000000000","message":"Purely an example. This list is pushed up from the driver.","commit_id":"610c90441708a88e5fd874d7d98b19d343c454e0"},{"author":{"_account_id":2243,"name":"John Griffith","email":"john.griffith8@gmail.com","username":"john-griffith"},"change_message_id":"284d5ee727fe53be2701b643167c478dfc540b07","unresolved":false,"context_lines":[{"line_number":238,"context_line":""},{"line_number":239,"context_line":"         Additional Settings:"},{"line_number":240,"context_line":"            super_compression_chunk:"},{"line_number":241,"context_line":"                Description: Super secret proprietary compression"},{"line_number":242,"context_line":"                             algorithm that takes a size in MB to do some"},{"line_number":243,"context_line":"                             chunking magic."},{"line_number":244,"context_line":"                Type: integer"}],"source_content_type":"text/x-rst","patch_set":2,"id":"da86d52c_e51d1b12","line":241,"updated":"2015-02-13 22:21:19.000000000","message":"I was really hoping we weren\u0027t going to go down the path of everybody just shoving a ton of stuff in here, but i suppose it doesn\u0027t matter too much.  Just be wary we don\u0027t want information overload; we\u0027re supposed to be making things easier, not more complex and difficult to parse.","commit_id":"610c90441708a88e5fd874d7d98b19d343c454e0"},{"author":{"_account_id":6825,"name":"Gary W. Smith","email":"garysmith123@gmail.com","username":"gary-w-smith"},"change_message_id":"dd0efd4fba8ff01e6f89c232a8a12259f9c3c0fc","unresolved":false,"context_lines":[{"line_number":295,"context_line":" {"},{"line_number":296,"context_line":"     \"provision\": \"thin\","},{"line_number":297,"context_line":"     \"compression\": {"},{"line_number":298,"context_line":"         \"type\": \"super_compression\""},{"line_number":299,"context_line":"         {"},{"line_number":300,"context_line":"             \"super_compression_chunk\": 20"},{"line_number":301,"context_line":"         }"}],"source_content_type":"text/x-rst","patch_set":2,"id":"da86d52c_ac3c2794","line":298,"updated":"2015-02-12 18:32:04.000000000","message":"This doesn\u0027t look like type definitions that I\u0027ve seen. Extra specs are currently key:value pairs, where the value is a \"simple\" value (string, int, boolean).  Are you suggesting that the values can now be dictionaries and other objects?","commit_id":"610c90441708a88e5fd874d7d98b19d343c454e0"},{"author":{"_account_id":1207,"name":"Duncan Thomas","email":"duncan.thomas@gmail.com","username":"duncan-thomas"},"change_message_id":"b41adc2eb8391238fa0e83c80d4a7beff7d87b06","unresolved":false,"context_lines":[{"line_number":295,"context_line":" {"},{"line_number":296,"context_line":"     \"provision\": \"thin\","},{"line_number":297,"context_line":"     \"compression\": {"},{"line_number":298,"context_line":"         \"type\": \"super_compression\""},{"line_number":299,"context_line":"         {"},{"line_number":300,"context_line":"             \"super_compression_chunk\": 20"},{"line_number":301,"context_line":"         }"}],"source_content_type":"text/x-rst","patch_set":2,"id":"7ad32947_10444372","line":298,"in_reply_to":"da86d52c_8652df10","updated":"2015-04-28 08:33:07.000000000","message":"I think the dotted notation is fine for now, and one less thing to have to go figure out back-compatability on.","commit_id":"610c90441708a88e5fd874d7d98b19d343c454e0"},{"author":{"_account_id":170,"name":"Mike Perez","email":"thingee@gmail.com","username":"thingee"},"change_message_id":"dd1d239caec3982414f2e30f63ebe14a0553445d","unresolved":false,"context_lines":[{"line_number":295,"context_line":" {"},{"line_number":296,"context_line":"     \"provision\": \"thin\","},{"line_number":297,"context_line":"     \"compression\": {"},{"line_number":298,"context_line":"         \"type\": \"super_compression\""},{"line_number":299,"context_line":"         {"},{"line_number":300,"context_line":"             \"super_compression_chunk\": 20"},{"line_number":301,"context_line":"         }"}],"source_content_type":"text/x-rst","patch_set":2,"id":"da86d52c_8652df10","line":298,"in_reply_to":"da86d52c_ac3c2794","updated":"2015-02-12 19:17:46.000000000","message":"True. So we either have to change this or do as Walt suggested:\n\nprovision: thin\n\ncompression.type: super_compression\n\ncompression.super_compression_chunk: 20\n\nqos.min_iops: 1000\n\nqos.max_iops: 20000\n\nreplication: False","commit_id":"610c90441708a88e5fd874d7d98b19d343c454e0"},{"author":{"_account_id":1207,"name":"Duncan Thomas","email":"duncan.thomas@gmail.com","username":"duncan-thomas"},"change_message_id":"b41adc2eb8391238fa0e83c80d4a7beff7d87b06","unresolved":false,"context_lines":[{"line_number":300,"context_line":"             \"super_compression_chunk\": 20"},{"line_number":301,"context_line":"         }"},{"line_number":302,"context_line":"     },"},{"line_number":303,"context_line":"     \"qos\": {"},{"line_number":304,"context_line":"         \"min_iops\": 1000,"},{"line_number":305,"context_line":"         \"max_iops\": 20000,"},{"line_number":306,"context_line":"     },"}],"source_content_type":"text/x-rst","patch_set":2,"id":"7ad32947_50187b84","line":303,"updated":"2015-04-28 08:33:07.000000000","message":"We have QoS specified as QoS types then attached to the type, not directly in the type...","commit_id":"610c90441708a88e5fd874d7d98b19d343c454e0"},{"author":{"_account_id":6825,"name":"Gary W. Smith","email":"garysmith123@gmail.com","username":"gary-w-smith"},"change_message_id":"dd0efd4fba8ff01e6f89c232a8a12259f9c3c0fc","unresolved":false,"context_lines":[{"line_number":315,"context_line":"extra_specs by specifying **False**."},{"line_number":316,"context_line":""},{"line_number":317,"context_line":"From the schedulers perspective, it\u0027s not filtering based on the values of"},{"line_number":318,"context_line":"these *standard capabilitiy*. As explained earlier, explicitly setting a value"},{"line_number":319,"context_line":"to a *standard capabilitiy* is setting **True** for that capability to be"},{"line_number":320,"context_line":"requirement."},{"line_number":321,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"da86d52c_ecb1bfe0","line":318,"updated":"2015-02-12 18:32:04.000000000","message":"I think a spell check is in order :-)","commit_id":"610c90441708a88e5fd874d7d98b19d343c454e0"},{"author":{"_account_id":6825,"name":"Gary W. Smith","email":"garysmith123@gmail.com","username":"gary-w-smith"},"change_message_id":"dd0efd4fba8ff01e6f89c232a8a12259f9c3c0fc","unresolved":false,"context_lines":[{"line_number":325,"context_line":"     \"provision\": True,"},{"line_number":326,"context_line":"     \"compression\": True,"},{"line_number":327,"context_line":"     \"qos\": True,"},{"line_number":328,"context_line":" }"},{"line_number":329,"context_line":""},{"line_number":330,"context_line":"Again, the backends report an *available* key that is either set to **True**"},{"line_number":331,"context_line":"or **False**. A backend that will match the above will be reporting the"}],"source_content_type":"text/x-rst","patch_set":2,"id":"da86d52c_37e4040c","line":328,"updated":"2015-02-12 18:32:04.000000000","message":"This seems to imply that the scheduler ignores all of the values in the volume type; e.g. if the volume type says provision:thick, then it would succesfully match against any driver that advertised the provisioning is available.  Is that correct?  If so, that would remove a lot of usefulness of volume types.","commit_id":"610c90441708a88e5fd874d7d98b19d343c454e0"},{"author":{"_account_id":170,"name":"Mike Perez","email":"thingee@gmail.com","username":"thingee"},"change_message_id":"dd1d239caec3982414f2e30f63ebe14a0553445d","unresolved":false,"context_lines":[{"line_number":325,"context_line":"     \"provision\": True,"},{"line_number":326,"context_line":"     \"compression\": True,"},{"line_number":327,"context_line":"     \"qos\": True,"},{"line_number":328,"context_line":" }"},{"line_number":329,"context_line":""},{"line_number":330,"context_line":"Again, the backends report an *available* key that is either set to **True**"},{"line_number":331,"context_line":"or **False**. A backend that will match the above will be reporting the"}],"source_content_type":"text/x-rst","patch_set":2,"id":"da86d52c_d258168c","line":328,"in_reply_to":"da86d52c_37e4040c","updated":"2015-02-12 19:17:46.000000000","message":"I disagree. It begins to make the scheduler more simpler and provides more freedom to the driver. The scheduler picks a backend, and leaves the rest of the values as hints to backend for placement. See discussion below. It\u0027s not exactly perfect, yet.","commit_id":"610c90441708a88e5fd874d7d98b19d343c454e0"},{"author":{"_account_id":170,"name":"Mike Perez","email":"thingee@gmail.com","username":"thingee"},"change_message_id":"a442a2613be3952848b8d48e4e334af3c172eb88","unresolved":false,"context_lines":[{"line_number":325,"context_line":"     \"provision\": True,"},{"line_number":326,"context_line":"     \"compression\": True,"},{"line_number":327,"context_line":"     \"qos\": True,"},{"line_number":328,"context_line":" }"},{"line_number":329,"context_line":""},{"line_number":330,"context_line":"Again, the backends report an *available* key that is either set to **True**"},{"line_number":331,"context_line":"or **False**. A backend that will match the above will be reporting the"}],"source_content_type":"text/x-rst","patch_set":2,"id":"da86d52c_3047a5bd","line":328,"in_reply_to":"da86d52c_b5f1c702","updated":"2015-02-12 22:13:47.000000000","message":"Yup, again see the discussion below. You\u0027re saying exactly the open question to this design that I have. The reason I\u0027m writing this spec is because it was what we discussed on IRC. Now that there are examples, of what we talked about, I want discussions.","commit_id":"610c90441708a88e5fd874d7d98b19d343c454e0"},{"author":{"_account_id":6825,"name":"Gary W. Smith","email":"garysmith123@gmail.com","username":"gary-w-smith"},"change_message_id":"7334a2909ed64d855d86cfff1626b5af3be3bc29","unresolved":false,"context_lines":[{"line_number":325,"context_line":"     \"provision\": True,"},{"line_number":326,"context_line":"     \"compression\": True,"},{"line_number":327,"context_line":"     \"qos\": True,"},{"line_number":328,"context_line":" }"},{"line_number":329,"context_line":""},{"line_number":330,"context_line":"Again, the backends report an *available* key that is either set to **True**"},{"line_number":331,"context_line":"or **False**. A backend that will match the above will be reporting the"}],"source_content_type":"text/x-rst","patch_set":2,"id":"da86d52c_b5f1c702","line":328,"in_reply_to":"da86d52c_d258168c","updated":"2015-02-12 21:29:08.000000000","message":"Say I want to have a \u0027gold\u0027 volume type that will select a backend that uses thick provisioning, and a \u0027silver\u0027 volume type that uses a backend that uses thin provisioning.  How would that work?  It seems that the scheduler would just see that both backend support provisioning and arbitrarily pick one.","commit_id":"610c90441708a88e5fd874d7d98b19d343c454e0"},{"author":{"_account_id":170,"name":"Mike Perez","email":"thingee@gmail.com","username":"thingee"},"change_message_id":"6e83efa316462ed1aac8255f8f358c29ba5f0a04","unresolved":false,"context_lines":[{"line_number":345,"context_line":"         \"available\": True,"},{"line_number":346,"context_line":"         ..."},{"line_number":347,"context_line":"     }"},{"line_number":348,"context_line":" }"},{"line_number":349,"context_line":""},{"line_number":350,"context_line":"Note that *replication* in the volume type\u0027s extra_specs was set to **False**"},{"line_number":351,"context_line":"so the scheduler doesn\u0027t use it to filter on. This is because a backend may"}],"source_content_type":"text/x-rst","patch_set":2,"id":"da86d52c_6d0ec88d","line":348,"updated":"2015-02-12 09:13:13.000000000","message":"John, this was the question I was meaning to ask you on IRC, but couldn\u0027t articulate it at the time...\n\nLets say you have two backends, and they both report True for the same capabilities that are required from a volume type\u0027s extra_specs. We can agree that either backend will be picked at this point, and it\u0027s up to the weigher.\n\nBut what if the volume type in addition specifies vendor specific keys. Since we\u0027re not to filter on those vendor specific keys, the backend that might receive the volume provision request ends up with key/values that are specific to the other backend.","commit_id":"610c90441708a88e5fd874d7d98b19d343c454e0"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"aaac977e78c8f33fad75ce8bf77bb7dbb0c96277","unresolved":false,"context_lines":[{"line_number":345,"context_line":"         \"available\": True,"},{"line_number":346,"context_line":"         ..."},{"line_number":347,"context_line":"     }"},{"line_number":348,"context_line":" }"},{"line_number":349,"context_line":""},{"line_number":350,"context_line":"Note that *replication* in the volume type\u0027s extra_specs was set to **False**"},{"line_number":351,"context_line":"so the scheduler doesn\u0027t use it to filter on. This is because a backend may"}],"source_content_type":"text/x-rst","patch_set":2,"id":"da86d52c_11751efa","line":348,"in_reply_to":"da86d52c_1a51d72f","updated":"2015-02-13 17:14:05.000000000","message":"From what I can tell from John\u0027s explanation, he basically says make it a scoped key, because it\u0027s vendor specific.   I don\u0027t think thin vs. thick/full is a vendor specific key.","commit_id":"610c90441708a88e5fd874d7d98b19d343c454e0"},{"author":{"_account_id":170,"name":"Mike Perez","email":"thingee@gmail.com","username":"thingee"},"change_message_id":"1db4829edbdfe906e666aa7a5841911f29f8794d","unresolved":false,"context_lines":[{"line_number":345,"context_line":"         \"available\": True,"},{"line_number":346,"context_line":"         ..."},{"line_number":347,"context_line":"     }"},{"line_number":348,"context_line":" }"},{"line_number":349,"context_line":""},{"line_number":350,"context_line":"Note that *replication* in the volume type\u0027s extra_specs was set to **False**"},{"line_number":351,"context_line":"so the scheduler doesn\u0027t use it to filter on. This is because a backend may"}],"source_content_type":"text/x-rst","patch_set":2,"id":"da86d52c_1a51d72f","line":348,"in_reply_to":"da86d52c_2eff4103","updated":"2015-02-13 02:05:06.000000000","message":"Walt, this is pretty much I just said twice above. I think John just clarified things within the comments on the main patch page.","commit_id":"610c90441708a88e5fd874d7d98b19d343c454e0"},{"author":{"_account_id":170,"name":"Mike Perez","email":"thingee@gmail.com","username":"thingee"},"change_message_id":"dd1d239caec3982414f2e30f63ebe14a0553445d","unresolved":false,"context_lines":[{"line_number":345,"context_line":"         \"available\": True,"},{"line_number":346,"context_line":"         ..."},{"line_number":347,"context_line":"     }"},{"line_number":348,"context_line":" }"},{"line_number":349,"context_line":""},{"line_number":350,"context_line":"Note that *replication* in the volume type\u0027s extra_specs was set to **False**"},{"line_number":351,"context_line":"so the scheduler doesn\u0027t use it to filter on. This is because a backend may"}],"source_content_type":"text/x-rst","patch_set":2,"id":"da86d52c_b1364401","line":348,"in_reply_to":"da86d52c_5e828cc8","updated":"2015-02-12 19:17:46.000000000","message":"Discussion about this is on IRC http://eavesdrop.openstack.org/irclogs/%23openstack-cinder/%23openstack-cinder.2015-02-12.log\n\nTLDR, from what I got from John is that we want to keep the scheduler filtering simple. Any additional keys are hints to the volume driver. My question in the comment you replied to though still stands as a possible issue with this approach.\n\nSo let me try to articulate the problem I see with this current design. Say the following two backends are reported up to the scheduler:\n\n\"pools\": [\n    {\n        \"name\": \"vendorA#poolA\",\n        \"capabilities\": {\n            \"provision\": {\n                \"available\": True,\n                \"enum\": [\n                    \"thin\",\n                    \"thick\"\n                ]\n                \"default\": \"thick\"\n            },\n            \"compression\": {\n                 \"available\": True,\n                 \"enum\": [\n                     \"raw\",\n                     \"deduplication\",\n                     \"super_compression\"\n                 ],\n                 \"default\": \"raw\"\n                 \"super_compression_chunk\": {\n                     \"type\": \"int\",\n                     \"description\": \"Super secret proprietary compression algorithm\n                                     that takes a size in MB to do some chunking\n                                     magic.\",\n                     \"default\": 10\n                 }\n            },\n            \"qos\": {\n                \"available\": False\n            },\n            \"replication\": {\n                \"available\": False\n            }\n        }\n    },\n    {\n        \"name\": \"vendorB#poolA\",\n        \"capabilities\": {\n            \"provision\": {\n                \"available\": True,\n                \"enum\": [\n                    \"thin\",\n                    \"thick\"\n                ]\n                \"default\": \"thick\"\n            },\n            \"compression\": {\n                 \"available\": True,\n                 \"enum\": [\n                     \"raw\",\n                     \"deduplication\",\n                 ],\n                 \"default\": \"raw\"\n            },\n            \"qos\": {\n                \"available\": False\n            },\n            \"replication\": {\n                \"available\": False\n            }\n        }\n    },\n]\n\nThe volume type that is created has extra specs like so:\n\n{\n    \"provision\": \"thin\",\n     \"compression\": \"super_compression\"\n}\n\nWith the current design, the scheduler sees this as:\n\n{\n    \"provision\": True,\n    \"compression\": True\n}\n\nEither backend vendorA or vendorB is picked. Lets say vendorB gets picked. It now has no idea what to do with \"super_compression\".","commit_id":"610c90441708a88e5fd874d7d98b19d343c454e0"},{"author":{"_account_id":6825,"name":"Gary W. Smith","email":"garysmith123@gmail.com","username":"gary-w-smith"},"change_message_id":"dd0efd4fba8ff01e6f89c232a8a12259f9c3c0fc","unresolved":false,"context_lines":[{"line_number":345,"context_line":"         \"available\": True,"},{"line_number":346,"context_line":"         ..."},{"line_number":347,"context_line":"     }"},{"line_number":348,"context_line":" }"},{"line_number":349,"context_line":""},{"line_number":350,"context_line":"Note that *replication* in the volume type\u0027s extra_specs was set to **False**"},{"line_number":351,"context_line":"so the scheduler doesn\u0027t use it to filter on. This is because a backend may"}],"source_content_type":"text/x-rst","patch_set":2,"id":"da86d52c_17438042","line":348,"in_reply_to":"da86d52c_5e828cc8","updated":"2015-02-12 18:32:04.000000000","message":"Duncan, if vendor keys are scoped, the CapabilitiesFilter currently ignores them (https://github.com/openstack/cinder/blob/master/cinder/openstack/common/scheduler/filters/capabilities_filter.py#L39-L41), right?  I am having difficulties understanding why this is done.","commit_id":"610c90441708a88e5fd874d7d98b19d343c454e0"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"b8bd1a26814e495d31e3b0a09e4ddb224d253d4c","unresolved":false,"context_lines":[{"line_number":345,"context_line":"         \"available\": True,"},{"line_number":346,"context_line":"         ..."},{"line_number":347,"context_line":"     }"},{"line_number":348,"context_line":" }"},{"line_number":349,"context_line":""},{"line_number":350,"context_line":"Note that *replication* in the volume type\u0027s extra_specs was set to **False**"},{"line_number":351,"context_line":"so the scheduler doesn\u0027t use it to filter on. This is because a backend may"}],"source_content_type":"text/x-rst","patch_set":2,"id":"da86d52c_2eff4103","line":348,"in_reply_to":"da86d52c_6b9dacbb","updated":"2015-02-12 23:38:05.000000000","message":"I\u0027m a bit confused here.  If the scheduler ignores values, then we can get a provision request to a backend that doesn\u0027t actually support the value in the extra spec.\n\nFor example,\n\nthe extra spec is\nprovision: \u0027thin\u0027\n\nSince the scheduler only treats this as \nprovision: True\n\nThe scheduler can send that request to a backend that doesn\u0027t support thin provisioning, as the pool/backend reports up\nprovision: available\n  enum: [thick]\n\n\nThe driver in this case will fail to create the volume.\nI\u0027m not sure this is what we want by having the scheduler ignore the values.","commit_id":"610c90441708a88e5fd874d7d98b19d343c454e0"},{"author":{"_account_id":1207,"name":"Duncan Thomas","email":"duncan.thomas@gmail.com","username":"duncan-thomas"},"change_message_id":"36a01de7e78d9ede2e47671813028739829076a6","unresolved":false,"context_lines":[{"line_number":345,"context_line":"         \"available\": True,"},{"line_number":346,"context_line":"         ..."},{"line_number":347,"context_line":"     }"},{"line_number":348,"context_line":" }"},{"line_number":349,"context_line":""},{"line_number":350,"context_line":"Note that *replication* in the volume type\u0027s extra_specs was set to **False**"},{"line_number":351,"context_line":"so the scheduler doesn\u0027t use it to filter on. This is because a backend may"}],"source_content_type":"text/x-rst","patch_set":2,"id":"da86d52c_5e828cc8","line":348,"in_reply_to":"da86d52c_6d0ec88d","updated":"2015-02-12 10:23:11.000000000","message":"*why* can\u0027t we filter on vendor keys? We can right now, and taking that away seems crazy!","commit_id":"610c90441708a88e5fd874d7d98b19d343c454e0"},{"author":{"_account_id":2243,"name":"John Griffith","email":"john.griffith8@gmail.com","username":"john-griffith"},"change_message_id":"cc9b9e2d175ce26e5e5b1e37094e390c007d89b9","unresolved":false,"context_lines":[{"line_number":345,"context_line":"         \"available\": True,"},{"line_number":346,"context_line":"         ..."},{"line_number":347,"context_line":"     }"},{"line_number":348,"context_line":" }"},{"line_number":349,"context_line":""},{"line_number":350,"context_line":"Note that *replication* in the volume type\u0027s extra_specs was set to **False**"},{"line_number":351,"context_line":"so the scheduler doesn\u0027t use it to filter on. This is because a backend may"}],"source_content_type":"text/x-rst","patch_set":2,"id":"da86d52c_6b9dacbb","line":348,"in_reply_to":"da86d52c_6d0ec88d","updated":"2015-02-12 22:21:48.000000000","message":"yes, ok so I was missing this in our conversation last night.  If the key is added and not scoped the filter will in fact look for that item in the capabilities struct and require it.\n\nSo even though they\u0027re labelled as vendor-unique you can still filter on them.  Easy enough to verify, but I\u0027m pretty sure that\u0027s accurate.\n\nIf you scope it though, it\u0027s ignored, that\u0027s the trick.","commit_id":"610c90441708a88e5fd874d7d98b19d343c454e0"},{"author":{"_account_id":6825,"name":"Gary W. Smith","email":"garysmith123@gmail.com","username":"gary-w-smith"},"change_message_id":"7334a2909ed64d855d86cfff1626b5af3be3bc29","unresolved":false,"context_lines":[{"line_number":345,"context_line":"         \"available\": True,"},{"line_number":346,"context_line":"         ..."},{"line_number":347,"context_line":"     }"},{"line_number":348,"context_line":" }"},{"line_number":349,"context_line":""},{"line_number":350,"context_line":"Note that *replication* in the volume type\u0027s extra_specs was set to **False**"},{"line_number":351,"context_line":"so the scheduler doesn\u0027t use it to filter on. This is because a backend may"}],"source_content_type":"text/x-rst","patch_set":2,"id":"da86d52c_b50d47ea","line":348,"in_reply_to":"da86d52c_b1364401","updated":"2015-02-12 21:29:08.000000000","message":"This is basically the same issue I raised in my last comment on line 327.  By dumbing down the scheduler to just look at the high-level, i.e. whether a category is enabled or not, we lose the ability to schedule based on the value of those keys.","commit_id":"610c90441708a88e5fd874d7d98b19d343c454e0"},{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"50f53f2f0db9a3d59e3af5f5f8842b551debf6fb","unresolved":false,"context_lines":[{"line_number":406,"context_line":"in a format the scheduler will understand. If capabilities are not being"},{"line_number":407,"context_line":"reported, the default **False** on features will be done. The exception to this"},{"line_number":408,"context_line":"again are on capabilities that map to minimum features [4], such as *provision*"},{"line_number":409,"context_line":"which maps to creating volumes."},{"line_number":410,"context_line":""},{"line_number":411,"context_line":"Implementation"},{"line_number":412,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":2,"id":"7ad32947_0d9f9704","line":409,"updated":"2015-04-27 21:31:03.000000000","message":"So, the first implementation of this BP will have to patch all drivers and make then report all minimum features?","commit_id":"610c90441708a88e5fd874d7d98b19d343c454e0"}],"specs/kilo/standard-capability-categories.rst":[{"author":{"_account_id":6825,"name":"Gary W. Smith","email":"garysmith123@gmail.com","username":"gary-w-smith"},"change_message_id":"8a3cc688badc8d3d2e49582fef1c8de6d1c8d662","unresolved":false,"context_lines":[{"line_number":165,"context_line":"        \"volume_backend_name\": \"backend_name\","},{"line_number":166,"context_line":"        \"extra_specs\": ["},{"line_number":167,"context_line":"          {"},{"line_number":168,"context_line":"            \"qos\": {"},{"line_number":169,"context_line":"              \"max_iops\": {"},{"line_number":170,"context_line":"                \"description\": \"The maximum IOPs required for volume.\","},{"line_number":171,"context_line":"                \"title\": \"Maximum IOPs\","}],"source_content_type":"text/x-rst","patch_set":1,"id":"da86d52c_5f276564","line":168,"updated":"2015-02-03 18:21:20.000000000","message":"I would prefer to see this presented a bit differently. Instead of adding another level in the hierarchy, add a \"category\" field to each extra spec item. For example:\n\n \"max_iops\" : {\n   \"description\": \"The maximum IOPs required for volume.\",\n   \"title\": \"Maximum IOPs\",\n   \"type\": \"int\",\n   \"category: \"qos\"\n}\n\nThe primary benefit is that this would still be in valid jsonschema format and thus we could still retain the option of using python\u0027s jsonschema package to validate incoming extra specs against the schema (for enforcing value types, enumerated values, etc.). \n\nIt also makes uncategorized items more straightforward -- those items that lack a \"category\" property would be considered\nuncategorized, rather than their presence in an \"Uncategorized\" object.","commit_id":"e0866757dcb355f67337352d81c84ff2ad7a721c"},{"author":{"_account_id":177,"name":"Alex Meade","email":"mr.alex.meade@gmail.com","username":"alex-meade"},"change_message_id":"c3f5fd428d7ea015506b7dc784ca44dc5092b8ee","unresolved":false,"context_lines":[{"line_number":165,"context_line":"        \"volume_backend_name\": \"backend_name\","},{"line_number":166,"context_line":"        \"extra_specs\": ["},{"line_number":167,"context_line":"          {"},{"line_number":168,"context_line":"            \"qos\": {"},{"line_number":169,"context_line":"              \"max_iops\": {"},{"line_number":170,"context_line":"                \"description\": \"The maximum IOPs required for volume.\","},{"line_number":171,"context_line":"                \"title\": \"Maximum IOPs\","}],"source_content_type":"text/x-rst","patch_set":1,"id":"da86d52c_80ec282b","line":168,"in_reply_to":"da86d52c_5f276564","updated":"2015-02-09 19:16:36.000000000","message":"I agree with this. It\u0027s also a much simpler change in the interface.","commit_id":"e0866757dcb355f67337352d81c84ff2ad7a721c"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"42da1b01633114b7344b98662386bd65bdac1288","unresolved":false,"context_lines":[{"line_number":201,"context_line":"  }"},{"line_number":202,"context_line":""},{"line_number":203,"context_line":"The point is all QOS capabilities go under QOS. All replication capabilities go"},{"line_number":204,"context_line":"under \"replication\". These are are made possible by the Cinder community"},{"line_number":205,"context_line":"agreeing on categories for the capabilities."},{"line_number":206,"context_line":""},{"line_number":207,"context_line":"Anything that doesn\u0027t fit in the agreed standard categories for capabilities is"}],"source_content_type":"text/x-rst","patch_set":1,"id":"da86d52c_7e09822b","line":204,"updated":"2015-02-10 03:05:58.000000000","message":"duplicate \"are\".","commit_id":"e0866757dcb355f67337352d81c84ff2ad7a721c"},{"author":{"_account_id":1207,"name":"Duncan Thomas","email":"duncan.thomas@gmail.com","username":"duncan-thomas"},"change_message_id":"77cedef15afe05a6d8bea8f43cf584eacd58ab1e","unresolved":false,"context_lines":[{"line_number":224,"context_line":"REST API impact"},{"line_number":225,"context_line":"---------------"},{"line_number":226,"context_line":""},{"line_number":227,"context_line":"As mentioned before, there are "},{"line_number":228,"context_line":""},{"line_number":229,"context_line":"Security impact"},{"line_number":230,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"fa81d914_6e3620e9","line":227,"updated":"2015-01-29 15:22:53.000000000","message":"Incomplete...","commit_id":"e0866757dcb355f67337352d81c84ff2ad7a721c"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"42da1b01633114b7344b98662386bd65bdac1288","unresolved":false,"context_lines":[{"line_number":295,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":296,"context_line":""},{"line_number":297,"context_line":"For developers, mainly Cinder volume driver maintainers will need to know what"},{"line_number":298,"context_line":"are the standard capability categories are."},{"line_number":299,"context_line":""},{"line_number":300,"context_line":"References"},{"line_number":301,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":1,"id":"da86d52c_1e188674","line":298,"updated":"2015-02-10 03:05:58.000000000","message":"Should remove one \"are\".","commit_id":"e0866757dcb355f67337352d81c84ff2ad7a721c"}],"specs/liberty/standard-capabilities.rst":[{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"03d50534421163839201e1274c195fb687a8ca4d","unresolved":false,"context_lines":[{"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"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"The initial ``well defined`` capabilities are: "},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"* QOS"},{"line_number":28,"context_line":"* Compression"}],"source_content_type":"text/x-rst","patch_set":3,"id":"7a016987_5ec24054","line":25,"updated":"2015-05-30 01:54:04.000000000","message":"trailing white space","commit_id":"7b7b8ce18205f8a43ede439f78a8a697188f8b9d"},{"author":{"_account_id":170,"name":"Mike Perez","email":"thingee@gmail.com","username":"thingee"},"change_message_id":"2a8b0f131e8ac927aefddfce50de7219c349ec12","unresolved":false,"context_lines":[{"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"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"The initial ``well defined`` capabilities are: "},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"* QOS"},{"line_number":28,"context_line":"* Compression"}],"source_content_type":"text/x-rst","patch_set":3,"id":"7a016987_be1da674","line":25,"in_reply_to":"7a016987_5ec24054","updated":"2015-05-31 23:08:03.000000000","message":"Done","commit_id":"7b7b8ce18205f8a43ede439f78a8a697188f8b9d"},{"author":{"_account_id":10796,"name":"Deepak C Shetty (deepakcs)","email":"dpkshetty@gmail.com","username":"deepakcs"},"change_message_id":"dda4c7e286f5ddf64058029779f79f3cedc40433","unresolved":false,"context_lines":[{"line_number":28,"context_line":"* Compression"},{"line_number":29,"context_line":"* Replication"},{"line_number":30,"context_line":"* Thin provisioning"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"Keep in mind this is just an agreement that these are common features that"},{"line_number":33,"context_line":"a backend could support. As shown in the proposal of how this will work [1],"},{"line_number":34,"context_line":"backends will still be able to push up the specific keys they look for in"}],"source_content_type":"text/x-rst","patch_set":4,"id":"3afb71cf_0a5e7f12","line":31,"updated":"2015-06-11 14:17:30.000000000","message":"Why is snapshot left out, isn\u0027t that common enuf to quality for well defined ?","commit_id":"6387e7f4c76849316de0289c14bcb9993a5e29d7"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"62e85f2938830a10e781b5b68a0a8f9350f2df9d","unresolved":false,"context_lines":[{"line_number":49,"context_line":"-----------------"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"None. This information comes directly from the volume drivers, reported to the"},{"line_number":52,"context_line":"scheduler, to the Cinder API."},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"REST API impact"},{"line_number":55,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":4,"id":"5afe65bd_58068421","line":52,"updated":"2015-06-01 22:04:47.000000000","message":"How does it affect the existing scheduler and filters?\n\nCurrently the Capabilities filter expects the keys and value pairs.\nAlso any keys with the \u0027:\u0027 character in it is ignored (a.k.a. vendor specific keys)","commit_id":"6387e7f4c76849316de0289c14bcb9993a5e29d7"},{"author":{"_account_id":2759,"name":"Huang Zhiteng","email":"winston.d@gmail.com","username":"zhiteng-huang"},"change_message_id":"528ca7519063260edb9bddb79acf28298673776c","unresolved":false,"context_lines":[{"line_number":49,"context_line":"-----------------"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"None. This information comes directly from the volume drivers, reported to the"},{"line_number":52,"context_line":"scheduler, to the Cinder API."},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"REST API impact"},{"line_number":55,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":4,"id":"5afe65bd_394aa984","line":52,"updated":"2015-06-02 00:17:27.000000000","message":"Walt, my understanding is the creation of so-call \u0027well-defined\u0027/standard capabilities shouldn\u0027t affect any existing public scheduler filters/weighers, as it doesn\u0027t change the convention for \u0027:\u0027 separated scoped keys.","commit_id":"6387e7f4c76849316de0289c14bcb9993a5e29d7"}]}
