)]}'
{"specs/ocata/approved/api-capabilities.rst":[{"author":{"_account_id":5441,"name":"Andrew Laski","email":"andrew@lascii.com","username":"alaski"},"change_message_id":"ec5e2749d643aa3ea0b528403a9662c7823c5b8b","unresolved":false,"context_lines":[{"line_number":17,"context_line":"disable features for user protection, or because of security demands"},{"line_number":18,"context_line":"on their systems."},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"While we want to limit these differences, complete eliminate will be"},{"line_number":21,"context_line":"impossible while continuing to support multiple virt backends, at"},{"line_number":22,"context_line":"multiple software levels. The next best approach is to be explicit"},{"line_number":23,"context_line":"about exposing features we expect may end up in an optional realm. And"}],"source_content_type":"text/x-rst","patch_set":1,"id":"5a8bc5a2_069bae66","line":20,"range":{"start_line":20,"start_character":59,"end_line":20,"end_character":60},"updated":"2016-09-27 15:19:43.000000000","message":"s/e/ion/","commit_id":"137986555643e0ae08d324dbb871ea3c06b06c55"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"584e3aac374cff296a9b61d326a3ec524c805a48","unresolved":false,"context_lines":[{"line_number":27,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"This addresses the problem that we will not be able to ensure that we"},{"line_number":30,"context_line":"always have the exact same features available."},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"Use Cases"},{"line_number":33,"context_line":"---------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3a98d1f4_9916654a","line":30,"updated":"2016-10-03 13:28:37.000000000","message":"So, technically the problem this spec solves is not actually \"ensuring that we always have the exact same features available\", but rather the problem that the user does not have a way of asking the OpenStack Compute service which features it has enabled.","commit_id":"137986555643e0ae08d324dbb871ea3c06b06c55"},{"author":{"_account_id":5441,"name":"Andrew Laski","email":"andrew@lascii.com","username":"alaski"},"change_message_id":"ec5e2749d643aa3ea0b528403a9662c7823c5b8b","unresolved":false,"context_lines":[{"line_number":34,"context_line":""},{"line_number":35,"context_line":"Nova would like to expose a Live Resize operation on guests, but we"},{"line_number":36,"context_line":"know that it will not work with baremetal computes, and that many"},{"line_number":37,"context_line":"sites will disable it as it causes fragmentation in their scheduler."},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"Proposed change"},{"line_number":40,"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":"5a8bc5a2_b1a316b1","line":37,"updated":"2016-09-27 15:19:43.000000000","message":"It\u0027s not just this use case. It\u0027s worth adding a note that there are many use cases along this same line.","commit_id":"137986555643e0ae08d324dbb871ea3c06b06c55"},{"author":{"_account_id":2750,"name":"Sean Dague","email":"sean@dague.net","username":"sdague"},"change_message_id":"877d7398d97912fae3835a12629b7c6a156b7da6","unresolved":false,"context_lines":[{"line_number":34,"context_line":""},{"line_number":35,"context_line":"Nova would like to expose a Live Resize operation on guests, but we"},{"line_number":36,"context_line":"know that it will not work with baremetal computes, and that many"},{"line_number":37,"context_line":"sites will disable it as it causes fragmentation in their scheduler."},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"Proposed change"},{"line_number":40,"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":"3a98d1f4_3002903f","line":37,"in_reply_to":"5a8bc5a2_b1a316b1","updated":"2016-09-28 13:49:18.000000000","message":"Agreed, this was just the first one that came to mind","commit_id":"137986555643e0ae08d324dbb871ea3c06b06c55"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"584e3aac374cff296a9b61d326a3ec524c805a48","unresolved":false,"context_lines":[{"line_number":39,"context_line":"Proposed change"},{"line_number":40,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"In order to make the detection of capabilities be consistence, we must"},{"line_number":43,"context_line":"first have a root of truth that explains all the capabilities that"},{"line_number":44,"context_line":"might exist in this cloud."},{"line_number":45,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"3a98d1f4_1950950a","line":42,"updated":"2016-10-03 13:28:37.000000000","message":"s/consistence/consistent/","commit_id":"137986555643e0ae08d324dbb871ea3c06b06c55"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"584e3aac374cff296a9b61d326a3ec524c805a48","unresolved":false,"context_lines":[{"line_number":40,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"In order to make the detection of capabilities be consistence, we must"},{"line_number":43,"context_line":"first have a root of truth that explains all the capabilities that"},{"line_number":44,"context_line":"might exist in this cloud."},{"line_number":45,"context_line":""},{"line_number":46,"context_line":".. code:: javascript"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3a98d1f4_996bc5b6","line":43,"updated":"2016-10-03 13:28:37.000000000","message":"s/root of truth that explains/an agreed-upon method of listing/?","commit_id":"137986555643e0ae08d324dbb871ea3c06b06c55"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"da489e67f781722f1cb941883d1cbbe30f821c39","unresolved":false,"context_lines":[{"line_number":49,"context_line":""},{"line_number":50,"context_line":"   {"},{"line_number":51,"context_line":"      \"allowed\": [\"CAP_RESIZE\"],"},{"line_number":52,"context_line":"      \"known\": [\"CAP_RESIZE\", \"CAP_LIVE_RESIZE\", \"CAP_LIVE_MIGRATION\"]"},{"line_number":53,"context_line":"   }"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"The top level resource would return 2 values. Capabilities which are"}],"source_content_type":"text/x-rst","patch_set":1,"id":"5a8bc5a2_3b3173ed","line":52,"range":{"start_line":52,"start_character":7,"end_line":52,"end_character":70},"updated":"2016-09-28 10:15:42.000000000","message":"For the \"known\" field, there is same API in the placement about traits propose. ( I need to update the spec for new design https://review.openstack.org/345138)\n\nI\u0027m thinking of there is API \u0027/traits\u0027 (tag rename to trait now). That API will list all the Trait which is known by openstack. The traits will come from \u0027os-traits\u0027 library for standard trait and from DB for user custom trait.\n\nThis API is used by other service to validate whether user input a valid trait.\n\n\nFor \u0027allowed\u0027 field, there is API \u0027/resource_providers/traits\u0027 in placement for list all the traits supported in the cloud. But this is different with this API, it isn\u0027t mix with policy, it\u0027s just about the capabilities of compute node.","commit_id":"137986555643e0ae08d324dbb871ea3c06b06c55"},{"author":{"_account_id":5441,"name":"Andrew Laski","email":"andrew@lascii.com","username":"alaski"},"change_message_id":"ec5e2749d643aa3ea0b528403a9662c7823c5b8b","unresolved":false,"context_lines":[{"line_number":49,"context_line":""},{"line_number":50,"context_line":"   {"},{"line_number":51,"context_line":"      \"allowed\": [\"CAP_RESIZE\"],"},{"line_number":52,"context_line":"      \"known\": [\"CAP_RESIZE\", \"CAP_LIVE_RESIZE\", \"CAP_LIVE_MIGRATION\"]"},{"line_number":53,"context_line":"   }"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"The top level resource would return 2 values. Capabilities which are"}],"source_content_type":"text/x-rst","patch_set":1,"id":"5a8bc5a2_cc1725a1","line":52,"updated":"2016-09-27 15:19:43.000000000","message":"It seems to me that we have two choices in representation here:\n\n1. We go with simple keywords like this and maintain a mapping outside of the API, you\u0027ve mentioned doing it in docs. This requires all clients to implement that mapping for themselves to understand that CAP_RESIZE corresponds to -x POST /servers/foo/actions -d {\u0027resize\u0027} or whatever it is.\n\n2. We return a richer representation that a client can consume and programmaticly know which API calls it can make. A simple example might be {\u0027description\u0027: \u0027Resize\u0027, \u0027link\u0027: \u0027/servers/foo/action\u0027}\n\nI had been thinking that people were interested in something more like the second.","commit_id":"137986555643e0ae08d324dbb871ea3c06b06c55"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"981be54d1cd4751383c93f4261005b17123203e9","unresolved":false,"context_lines":[{"line_number":49,"context_line":""},{"line_number":50,"context_line":"   {"},{"line_number":51,"context_line":"      \"allowed\": [\"CAP_RESIZE\"],"},{"line_number":52,"context_line":"      \"known\": [\"CAP_RESIZE\", \"CAP_LIVE_RESIZE\", \"CAP_LIVE_MIGRATION\"]"},{"line_number":53,"context_line":"   }"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"The top level resource would return 2 values. Capabilities which are"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3a98d1f4_109526dd","line":52,"range":{"start_line":52,"start_character":7,"end_line":52,"end_character":70},"in_reply_to":"3a98d1f4_05c8ad21","updated":"2016-09-30 06:29:30.000000000","message":"@Andrew, thanks, I see the point why you think it is different thing now. will try to think about more.","commit_id":"137986555643e0ae08d324dbb871ea3c06b06c55"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"8ebf76576a15cdb89eae6f66185bb82b23f10efe","unresolved":false,"context_lines":[{"line_number":49,"context_line":""},{"line_number":50,"context_line":"   {"},{"line_number":51,"context_line":"      \"allowed\": [\"CAP_RESIZE\"],"},{"line_number":52,"context_line":"      \"known\": [\"CAP_RESIZE\", \"CAP_LIVE_RESIZE\", \"CAP_LIVE_MIGRATION\"]"},{"line_number":53,"context_line":"   }"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"The top level resource would return 2 values. Capabilities which are"}],"source_content_type":"text/x-rst","patch_set":1,"id":"da4df55a_da11795f","line":52,"in_reply_to":"3a98d1f4_109526dd","updated":"2016-12-21 21:03:07.000000000","message":"Regarding Andrew\u0027s first comment. Adam Young has a spec in keystone to store a combination of the URL and method and map that to a role. The idea is that keystonemiddleware would be able to ask keystone which roles were required for an operation based on the request. I\u0027m bringing this up here since I think that pattern would require other services to enforce the mapping (i.e. in order for nova to ask keystone about the roles required for a resize, nova would need to know how to translate CAP_LIVE_RESIZE to the corresponding URL in a request to keystone).\n\nI\u0027d be curious to hear nova\u0027s take on the spec we have in keystone [0].\n\n[0] http://specs.openstack.org/openstack/keystone-specs/specs/keystone/ongoing/role-check-from-middleware.html","commit_id":"137986555643e0ae08d324dbb871ea3c06b06c55"},{"author":{"_account_id":5441,"name":"Andrew Laski","email":"andrew@lascii.com","username":"alaski"},"change_message_id":"d0ffe98593603c10936073002cf982f5c963d478","unresolved":false,"context_lines":[{"line_number":49,"context_line":""},{"line_number":50,"context_line":"   {"},{"line_number":51,"context_line":"      \"allowed\": [\"CAP_RESIZE\"],"},{"line_number":52,"context_line":"      \"known\": [\"CAP_RESIZE\", \"CAP_LIVE_RESIZE\", \"CAP_LIVE_MIGRATION\"]"},{"line_number":53,"context_line":"   }"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"The top level resource would return 2 values. Capabilities which are"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3a98d1f4_86db2b1b","line":52,"range":{"start_line":52,"start_character":7,"end_line":52,"end_character":70},"in_reply_to":"3a98d1f4_239ec956","updated":"2016-09-28 14:53:52.000000000","message":"Alex: I don\u0027t think that these APIs will overlap. Traits are going to be features of the hardware available, like cpu:x86, while capabilities are API actions that can be used like CAP_RESIZE. I don\u0027t believe that things like CAP_RESIZE should be put into the traits library.\n\nSean: Yeah, I don\u0027t believe we can put enough info into the response for a client to arbitrarily make the request necessary to perform the action. But I do think a client like novaclient/openstackclient which already knows how to do a resize could match against the response data somehow to know that it corresponds to resize.\n\nDoing it as a list of strings is fine too. I just expect that at some point we may want a library to help match strings to URLs.","commit_id":"137986555643e0ae08d324dbb871ea3c06b06c55"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"16d8b7a161cc77878300f32fc8cdad02fbc240bd","unresolved":false,"context_lines":[{"line_number":49,"context_line":""},{"line_number":50,"context_line":"   {"},{"line_number":51,"context_line":"      \"allowed\": [\"CAP_RESIZE\"],"},{"line_number":52,"context_line":"      \"known\": [\"CAP_RESIZE\", \"CAP_LIVE_RESIZE\", \"CAP_LIVE_MIGRATION\"]"},{"line_number":53,"context_line":"   }"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"The top level resource would return 2 values. Capabilities which are"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3a98d1f4_239ec956","line":52,"range":{"start_line":52,"start_character":7,"end_line":52,"end_character":70},"in_reply_to":"3a98d1f4_853168ef","updated":"2016-09-28 14:29:33.000000000","message":"@Andrew, there are similar concepts. \"/traits\" is for \"known\". \"/resource_providers/traits\" is similar to \"allow\", it is more about \"have\". it is about all the traits which all the resource_providers have, and note that it is only about the traits, it didn\u0027t consider the \"policy\". So only \"/traits\" totally work same with \"known\" field.\n\nActually I didn\u0027t suggest anything at here. I just provide some info at here, and looking for get some answer for some question I can get by myself. I thought about the relationship between traits API and nova caps API. So I just not sure whether those duplicated API (\"/traits\" work same with \"known\" and data (placement will store all the traits, whether nova need another copy?) is ok.  Maybe we can use traits library for this caps API also.","commit_id":"137986555643e0ae08d324dbb871ea3c06b06c55"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"0f40740686dc262d9d182c6d79d928b9d4d55fa4","unresolved":false,"context_lines":[{"line_number":49,"context_line":""},{"line_number":50,"context_line":"   {"},{"line_number":51,"context_line":"      \"allowed\": [\"CAP_RESIZE\"],"},{"line_number":52,"context_line":"      \"known\": [\"CAP_RESIZE\", \"CAP_LIVE_RESIZE\", \"CAP_LIVE_MIGRATION\"]"},{"line_number":53,"context_line":"   }"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"The top level resource would return 2 values. Capabilities which are"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3a98d1f4_efff4932","line":52,"range":{"start_line":52,"start_character":7,"end_line":52,"end_character":70},"in_reply_to":"3a98d1f4_86db2b1b","updated":"2016-09-29 00:04:37.000000000","message":"@Andrew, thanks for the reply. But from the line 66, it said we will put the caps in flavor. If that means we will schedule instance based on those caps, so those caps should be in scheduler?","commit_id":"137986555643e0ae08d324dbb871ea3c06b06c55"},{"author":{"_account_id":5441,"name":"Andrew Laski","email":"andrew@lascii.com","username":"alaski"},"change_message_id":"518ad512035491826e109383307eb7364d745da2","unresolved":false,"context_lines":[{"line_number":49,"context_line":""},{"line_number":50,"context_line":"   {"},{"line_number":51,"context_line":"      \"allowed\": [\"CAP_RESIZE\"],"},{"line_number":52,"context_line":"      \"known\": [\"CAP_RESIZE\", \"CAP_LIVE_RESIZE\", \"CAP_LIVE_MIGRATION\"]"},{"line_number":53,"context_line":"   }"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"The top level resource would return 2 values. Capabilities which are"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3a98d1f4_05c8ad21","line":52,"range":{"start_line":52,"start_character":7,"end_line":52,"end_character":70},"in_reply_to":"3a98d1f4_efff4932","updated":"2016-09-29 15:04:08.000000000","message":"I understood that differently so it will be helpful for Sean to clarify. I read it as maybe a flavor will have a capability like \"CAN_USE_REMOTE_VOLUME\" meaning that an instance with that flavor can attach volumes, and a flavor without that would not allow it. It\u0027s a silly example. But still not the same thing as a trait.","commit_id":"137986555643e0ae08d324dbb871ea3c06b06c55"},{"author":{"_account_id":5441,"name":"Andrew Laski","email":"andrew@lascii.com","username":"alaski"},"change_message_id":"0ce8bd1dbcc0668f6ef5579d9e4142b7e8c25491","unresolved":false,"context_lines":[{"line_number":49,"context_line":""},{"line_number":50,"context_line":"   {"},{"line_number":51,"context_line":"      \"allowed\": [\"CAP_RESIZE\"],"},{"line_number":52,"context_line":"      \"known\": [\"CAP_RESIZE\", \"CAP_LIVE_RESIZE\", \"CAP_LIVE_MIGRATION\"]"},{"line_number":53,"context_line":"   }"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"The top level resource would return 2 values. Capabilities which are"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3a98d1f4_853168ef","line":52,"range":{"start_line":52,"start_character":7,"end_line":52,"end_character":70},"in_reply_to":"5a8bc5a2_3b3173ed","updated":"2016-09-28 13:13:49.000000000","message":"Alex: Are you saying that the traits API proposal also uses the same sort of concept of exposing \"allowed\" and \"known\", so you think it would work here as well? Or are you suggesting that this API should be a part of the traits API and use the traits library?","commit_id":"137986555643e0ae08d324dbb871ea3c06b06c55"},{"author":{"_account_id":2750,"name":"Sean Dague","email":"sean@dague.net","username":"sdague"},"change_message_id":"877d7398d97912fae3835a12629b7c6a156b7da6","unresolved":false,"context_lines":[{"line_number":49,"context_line":""},{"line_number":50,"context_line":"   {"},{"line_number":51,"context_line":"      \"allowed\": [\"CAP_RESIZE\"],"},{"line_number":52,"context_line":"      \"known\": [\"CAP_RESIZE\", \"CAP_LIVE_RESIZE\", \"CAP_LIVE_MIGRATION\"]"},{"line_number":53,"context_line":"   }"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"The top level resource would return 2 values. Capabilities which are"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3a98d1f4_5009dc30","line":52,"in_reply_to":"5a8bc5a2_cc1725a1","updated":"2016-09-28 13:49:18.000000000","message":"The challenge is that in #2 it\u0027s actually not all the information you need to know how to do a RESIZE.\n\nI\u0027m skeptical that we\u0027re going to be able to make this machine consumable, and there will still be docs.","commit_id":"137986555643e0ae08d324dbb871ea3c06b06c55"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"eb08e1040a216cb4afff77de1ef4f6be6463a7ad","unresolved":false,"context_lines":[{"line_number":52,"context_line":"      \"known\": [\"CAP_RESIZE\", \"CAP_LIVE_RESIZE\", \"CAP_LIVE_MIGRATION\"]"},{"line_number":53,"context_line":"   }"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"The top level resource would return 2 values. Capabilities which are"},{"line_number":56,"context_line":"supported in this cloud, for your user, and a list of all capabilities"},{"line_number":57,"context_line":"that are known to be possible."},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"The known field will grow over time whenever a new capability is added"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3a98d1f4_6db9fe14","line":56,"range":{"start_line":55,"start_character":47,"end_line":56,"end_character":24},"updated":"2016-10-01 01:12:02.000000000","message":"I guess the above capabilities(GET /capabilities) should represent maximum supported features on each cloud, right?\n\nOn multiple-hypervisors clouds, the capabilities will be different from hypervisor hosts(kvm, baremetal, etc). So the above root capabilities will be sum of hypervisor hosts\u0027 capabilities.","commit_id":"137986555643e0ae08d324dbb871ea3c06b06c55"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"584e3aac374cff296a9b61d326a3ec524c805a48","unresolved":false,"context_lines":[{"line_number":52,"context_line":"      \"known\": [\"CAP_RESIZE\", \"CAP_LIVE_RESIZE\", \"CAP_LIVE_MIGRATION\"]"},{"line_number":53,"context_line":"   }"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"The top level resource would return 2 values. Capabilities which are"},{"line_number":56,"context_line":"supported in this cloud, for your user, and a list of all capabilities"},{"line_number":57,"context_line":"that are known to be possible."},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"The known field will grow over time whenever a new capability is added"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3a98d1f4_f9d5a9e4","line":56,"range":{"start_line":55,"start_character":47,"end_line":56,"end_character":24},"in_reply_to":"3a98d1f4_6db9fe14","updated":"2016-10-03 13:28:37.000000000","message":"@kenichi: yeah, I think so. The allowed would be the union of all caps of all supported hypervisors. Sean, please confirm...","commit_id":"137986555643e0ae08d324dbb871ea3c06b06c55"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"247d4fddff8c5b575edd9439b5ddb01122bb8455","unresolved":false,"context_lines":[{"line_number":52,"context_line":"      \"known\": [\"CAP_RESIZE\", \"CAP_LIVE_RESIZE\", \"CAP_LIVE_MIGRATION\"]"},{"line_number":53,"context_line":"   }"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"The top level resource would return 2 values. Capabilities which are"},{"line_number":56,"context_line":"supported in this cloud, for your user, and a list of all capabilities"},{"line_number":57,"context_line":"that are known to be possible."},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"The known field will grow over time whenever a new capability is added"}],"source_content_type":"text/x-rst","patch_set":1,"id":"1a95cdbc_b6e5aca9","line":56,"range":{"start_line":55,"start_character":47,"end_line":56,"end_character":24},"in_reply_to":"3a98d1f4_f9d5a9e4","updated":"2016-10-04 19:38:47.000000000","message":"will this info be queried or stored in the cloud? if store , maybe some format need talk about ? otherwise, query each compute node seems not a good idea?","commit_id":"137986555643e0ae08d324dbb871ea3c06b06c55"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"da489e67f781722f1cb941883d1cbbe30f821c39","unresolved":false,"context_lines":[{"line_number":56,"context_line":"supported in this cloud, for your user, and a list of all capabilities"},{"line_number":57,"context_line":"that are known to be possible."},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"The known field will grow over time whenever a new capability is added"},{"line_number":60,"context_line":"to Nova that we believe fits this category. It will also grow over"},{"line_number":61,"context_line":"time as we expose existing capabilities in this manner. Changes to the"},{"line_number":62,"context_line":"\"known\" list are not versioned, and do not require MV version"}],"source_content_type":"text/x-rst","patch_set":1,"id":"5a8bc5a2_fbd9cb84","line":59,"range":{"start_line":59,"start_character":47,"end_line":59,"end_character":61},"updated":"2016-09-28 10:15:42.000000000","message":"So I guess we should add those capabilities into the \u0027os-traits\u0027 library also. To define standard trait across openstack.","commit_id":"137986555643e0ae08d324dbb871ea3c06b06c55"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"8ed9e4b3cfd5731d6cff5d5d1a14ab9021c78fd8","unresolved":false,"context_lines":[{"line_number":56,"context_line":"supported in this cloud, for your user, and a list of all capabilities"},{"line_number":57,"context_line":"that are known to be possible."},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"The known field will grow over time whenever a new capability is added"},{"line_number":60,"context_line":"to Nova that we believe fits this category. It will also grow over"},{"line_number":61,"context_line":"time as we expose existing capabilities in this manner. Changes to the"},{"line_number":62,"context_line":"\"known\" list are not versioned, and do not require MV version"}],"source_content_type":"text/x-rst","patch_set":1,"id":"fa6399be_e61ad57b","line":59,"range":{"start_line":59,"start_character":47,"end_line":59,"end_character":61},"in_reply_to":"1a95cdbc_c9f01bcc","updated":"2016-10-19 12:00:23.000000000","message":"I think hypervisor capabilities already included in the schedule? otherwise, we might schedule power specified image to x86 host which apparently won\u0027t work\n\nso this capability is from \u0027virtual machine\u0027 point of view and the \u0027trait\u0027 is from r-p point of view?","commit_id":"137986555643e0ae08d324dbb871ea3c06b06c55"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"c0311cba4a8eb08bd0bfe2b3fa8be693b6279a7c","unresolved":false,"context_lines":[{"line_number":56,"context_line":"supported in this cloud, for your user, and a list of all capabilities"},{"line_number":57,"context_line":"that are known to be possible."},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"The known field will grow over time whenever a new capability is added"},{"line_number":60,"context_line":"to Nova that we believe fits this category. It will also grow over"},{"line_number":61,"context_line":"time as we expose existing capabilities in this manner. Changes to the"},{"line_number":62,"context_line":"\"known\" list are not versioned, and do not require MV version"}],"source_content_type":"text/x-rst","patch_set":1,"id":"1a95cdbc_c9f01bcc","line":59,"range":{"start_line":59,"start_character":47,"end_line":59,"end_character":61},"in_reply_to":"3a98d1f4_d948edce","updated":"2016-10-10 03:43:30.000000000","message":"ok, if we don\u0027t want to support scheduling the instance based on the hypervisor capabilities, then we can say they are separately.\n\nBut I\u0027m looking for explanation about why we needn\u0027t hypervisor capabilities based scheduling.\n\nThe use-case can be:\nOn multiple-hypervisors clouds, the user want an instance with live-resize capabilities.","commit_id":"137986555643e0ae08d324dbb871ea3c06b06c55"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"584e3aac374cff296a9b61d326a3ec524c805a48","unresolved":false,"context_lines":[{"line_number":56,"context_line":"supported in this cloud, for your user, and a list of all capabilities"},{"line_number":57,"context_line":"that are known to be possible."},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"The known field will grow over time whenever a new capability is added"},{"line_number":60,"context_line":"to Nova that we believe fits this category. It will also grow over"},{"line_number":61,"context_line":"time as we expose existing capabilities in this manner. Changes to the"},{"line_number":62,"context_line":"\"known\" list are not versioned, and do not require MV version"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3a98d1f4_d948edce","line":59,"range":{"start_line":59,"start_character":47,"end_line":59,"end_character":61},"in_reply_to":"5a8bc5a2_fbd9cb84","updated":"2016-10-03 13:28:37.000000000","message":"-1 let\u0027s keep capabilities and traits separate. Traits are attributes of a resource provider whereas capabilities are features of a hypervisor or deployment of OpenStack.","commit_id":"137986555643e0ae08d324dbb871ea3c06b06c55"},{"author":{"_account_id":5441,"name":"Andrew Laski","email":"andrew@lascii.com","username":"alaski"},"change_message_id":"ec5e2749d643aa3ea0b528403a9662c7823c5b8b","unresolved":false,"context_lines":[{"line_number":57,"context_line":"that are known to be possible."},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"The known field will grow over time whenever a new capability is added"},{"line_number":60,"context_line":"to Nova that we believe fits this category. It will also grow over"},{"line_number":61,"context_line":"time as we expose existing capabilities in this manner. Changes to the"},{"line_number":62,"context_line":"\"known\" list are not versioned, and do not require MV version"},{"line_number":63,"context_line":"bumps. It will also include default admin level actions, because the"}],"source_content_type":"text/x-rst","patch_set":1,"id":"5a8bc5a2_6c19b121","line":60,"range":{"start_line":60,"start_character":57,"end_line":60,"end_character":61},"updated":"2016-09-27 15:19:43.000000000","message":"I think we should allow for the fact that it may shrink over time as well. As much as we say we won\u0027t do this we do in fact remove things at times. Or we may split in such a way that some capabilities are on a new endpoint, in which case they\u0027re not gone but aren\u0027t here.","commit_id":"137986555643e0ae08d324dbb871ea3c06b06c55"},{"author":{"_account_id":2750,"name":"Sean Dague","email":"sean@dague.net","username":"sdague"},"change_message_id":"877d7398d97912fae3835a12629b7c6a156b7da6","unresolved":false,"context_lines":[{"line_number":57,"context_line":"that are known to be possible."},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"The known field will grow over time whenever a new capability is added"},{"line_number":60,"context_line":"to Nova that we believe fits this category. It will also grow over"},{"line_number":61,"context_line":"time as we expose existing capabilities in this manner. Changes to the"},{"line_number":62,"context_line":"\"known\" list are not versioned, and do not require MV version"},{"line_number":63,"context_line":"bumps. It will also include default admin level actions, because the"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3a98d1f4_6b90ad96","line":60,"range":{"start_line":60,"start_character":57,"end_line":60,"end_character":61},"in_reply_to":"5a8bc5a2_6c19b121","updated":"2016-09-28 13:49:18.000000000","message":"Sure, though like db tables, we may just keep these around forever in the code for compat reasons. If it is just a list of strings, it shouldn\u0027t be so bad.","commit_id":"137986555643e0ae08d324dbb871ea3c06b06c55"},{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"0db0e5880e4bc4bf4a4413ad6a821752050d7071","unresolved":false,"context_lines":[{"line_number":61,"context_line":"time as we expose existing capabilities in this manner. Changes to the"},{"line_number":62,"context_line":"\"known\" list are not versioned, and do not require MV version"},{"line_number":63,"context_line":"bumps. It will also include default admin level actions, because the"},{"line_number":64,"context_line":"definition of \"admin\" varies quite a bit between deployments."},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"It is also important to expose capabilities on flavors and"},{"line_number":67,"context_line":"instances. Some flavors may support more or less capabilities than"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3a98d1f4_c5be10d4","line":64,"updated":"2016-09-28 13:19:16.000000000","message":"Taking live resize as an example, knowing whether live resize is supported or not as an API is useful, but live resize covers multiple sub-features. ie it might be possible to live-resize CPU and Disk, but not live resize RAM, so we\u0027d want to expose that finer grained detail too.\n\nWith a flat list model, this suggests we\u0027ll ultimately end up with CAP_LIVE_RESIZE, CAP_LIVE_RESIZE_RAM, CAP_LIVE_RESIZE_CPU and CAP_LIVE_RESIZE_DISK","commit_id":"137986555643e0ae08d324dbb871ea3c06b06c55"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"d4ed92b790ca5c1619c87f69e6dde9d817c6f4f6","unresolved":false,"context_lines":[{"line_number":61,"context_line":"time as we expose existing capabilities in this manner. Changes to the"},{"line_number":62,"context_line":"\"known\" list are not versioned, and do not require MV version"},{"line_number":63,"context_line":"bumps. It will also include default admin level actions, because the"},{"line_number":64,"context_line":"definition of \"admin\" varies quite a bit between deployments."},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"It is also important to expose capabilities on flavors and"},{"line_number":67,"context_line":"instances. Some flavors may support more or less capabilities than"}],"source_content_type":"text/x-rst","patch_set":1,"id":"fa6399be_8f4c70c9","line":64,"in_reply_to":"3a98d1f4_39cd5131","updated":"2016-10-14 11:39:46.000000000","message":"@jaypipes: +1, Cinder is looking to implement a similar API, so service-specific prefix would be beneficial to keep a standard.","commit_id":"137986555643e0ae08d324dbb871ea3c06b06c55"},{"author":{"_account_id":5441,"name":"Andrew Laski","email":"andrew@lascii.com","username":"alaski"},"change_message_id":"d0ffe98593603c10936073002cf982f5c963d478","unresolved":false,"context_lines":[{"line_number":61,"context_line":"time as we expose existing capabilities in this manner. Changes to the"},{"line_number":62,"context_line":"\"known\" list are not versioned, and do not require MV version"},{"line_number":63,"context_line":"bumps. It will also include default admin level actions, because the"},{"line_number":64,"context_line":"definition of \"admin\" varies quite a bit between deployments."},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"It is also important to expose capabilities on flavors and"},{"line_number":67,"context_line":"instances. Some flavors may support more or less capabilities than"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3a98d1f4_7955e0c4","line":64,"in_reply_to":"3a98d1f4_4b6f7192","updated":"2016-09-28 14:53:52.000000000","message":"What about a dict rather than a list, allowing for something like {\u0027CAP_LIVE_RESIZE\u0027: {\u0027RAM\u0027, \"CPU\u0027, \u0027DISK\u0027}}? It\u0027s slightly more complex but provides much greater flexibility.","commit_id":"137986555643e0ae08d324dbb871ea3c06b06c55"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"584e3aac374cff296a9b61d326a3ec524c805a48","unresolved":false,"context_lines":[{"line_number":61,"context_line":"time as we expose existing capabilities in this manner. Changes to the"},{"line_number":62,"context_line":"\"known\" list are not versioned, and do not require MV version"},{"line_number":63,"context_line":"bumps. It will also include default admin level actions, because the"},{"line_number":64,"context_line":"definition of \"admin\" varies quite a bit between deployments."},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"It is also important to expose capabilities on flavors and"},{"line_number":67,"context_line":"instances. Some flavors may support more or less capabilities than"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3a98d1f4_39cd5131","line":64,"in_reply_to":"3a98d1f4_7955e0c4","updated":"2016-10-03 13:28:37.000000000","message":"@alaski: It\u0027s true it provides more flexibility, but I kind of prefer the flat model\u0027s simplicity :) That said, if we want to future-proof these capability strings a bit for potential cross-project consistency, we might consider adding a prefix other than CAP_ and use something like COMPUTE_ or VIRT_.","commit_id":"137986555643e0ae08d324dbb871ea3c06b06c55"},{"author":{"_account_id":2750,"name":"Sean Dague","email":"sean@dague.net","username":"sdague"},"change_message_id":"877d7398d97912fae3835a12629b7c6a156b7da6","unresolved":false,"context_lines":[{"line_number":61,"context_line":"time as we expose existing capabilities in this manner. Changes to the"},{"line_number":62,"context_line":"\"known\" list are not versioned, and do not require MV version"},{"line_number":63,"context_line":"bumps. It will also include default admin level actions, because the"},{"line_number":64,"context_line":"definition of \"admin\" varies quite a bit between deployments."},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"It is also important to expose capabilities on flavors and"},{"line_number":67,"context_line":"instances. Some flavors may support more or less capabilities than"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3a98d1f4_4b6f7192","line":64,"in_reply_to":"3a98d1f4_c5be10d4","updated":"2016-09-28 13:49:18.000000000","message":"That\u0027s possible. It\u0027s going to be a decision about whether we as a Nova team want to expose feature optionality at that level of granularity, or say that CAP_LIVE_RESIZE is just the level that we expose to users.","commit_id":"137986555643e0ae08d324dbb871ea3c06b06c55"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"da489e67f781722f1cb941883d1cbbe30f821c39","unresolved":false,"context_lines":[{"line_number":63,"context_line":"bumps. It will also include default admin level actions, because the"},{"line_number":64,"context_line":"definition of \"admin\" varies quite a bit between deployments."},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"It is also important to expose capabilities on flavors and"},{"line_number":67,"context_line":"instances. Some flavors may support more or less capabilities than"},{"line_number":68,"context_line":"global capabilities."},{"line_number":69,"context_line":""},{"line_number":70,"context_line":""},{"line_number":71,"context_line":".. code:: javascript"}],"source_content_type":"text/x-rst","patch_set":1,"id":"5a8bc5a2_5b81df4c","line":68,"range":{"start_line":66,"start_character":0,"end_line":68,"end_character":20},"updated":"2016-09-28 10:15:42.000000000","message":"This is also same thing for another placement traits related spec https://review.openstack.org/351063","commit_id":"137986555643e0ae08d324dbb871ea3c06b06c55"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"eb08e1040a216cb4afff77de1ef4f6be6463a7ad","unresolved":false,"context_lines":[{"line_number":70,"context_line":""},{"line_number":71,"context_line":".. code:: javascript"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"   GET /servers/{id}/capabilities"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"   {"},{"line_number":76,"context_line":"          \"allowed\": [\"CAP_RESIZE\", \"CAP_LIVE_MIGRATION\"]"},{"line_number":77,"context_line":"   }"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"Capability Registry"},{"line_number":80,"context_line":"-------------------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3a98d1f4_0d4dda3d","line":77,"range":{"start_line":73,"start_character":0,"end_line":77,"end_character":4},"updated":"2016-10-01 01:12:02.000000000","message":"This seems useful for knowing what can users do actually.","commit_id":"137986555643e0ae08d324dbb871ea3c06b06c55"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"eb08e1040a216cb4afff77de1ef4f6be6463a7ad","unresolved":false,"context_lines":[{"line_number":75,"context_line":"   {"},{"line_number":76,"context_line":"          \"allowed\": [\"CAP_RESIZE\", \"CAP_LIVE_MIGRATION\"]"},{"line_number":77,"context_line":"   }"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"Capability Registry"},{"line_number":80,"context_line":"-------------------"},{"line_number":81,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"3a98d1f4_ed118e05","line":78,"updated":"2016-10-01 01:12:02.000000000","message":"Maybe\n\n GET /os-hypervisors/{id}/capabilities\n GET /os-hosts/{id}/capabilities\n\nalso will be useful for admin users.","commit_id":"137986555643e0ae08d324dbb871ea3c06b06c55"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"247d4fddff8c5b575edd9439b5ddb01122bb8455","unresolved":false,"context_lines":[{"line_number":75,"context_line":"   {"},{"line_number":76,"context_line":"          \"allowed\": [\"CAP_RESIZE\", \"CAP_LIVE_MIGRATION\"]"},{"line_number":77,"context_line":"   }"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"Capability Registry"},{"line_number":80,"context_line":"-------------------"},{"line_number":81,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"1a95cdbc_169ae014","line":78,"in_reply_to":"3a98d1f4_ed118e05","updated":"2016-10-04 19:38:47.000000000","message":"this looks like \nhttps://review.openstack.org/#/c/286520/ ?","commit_id":"137986555643e0ae08d324dbb871ea3c06b06c55"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"c0311cba4a8eb08bd0bfe2b3fa8be693b6279a7c","unresolved":false,"context_lines":[{"line_number":83,"context_line":"api-ref document for Nova. The implications of a capability will be"},{"line_number":84,"context_line":"described there."},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"Filtering by policy"},{"line_number":87,"context_line":"-------------------"},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"Many capabilities are impacted by policy. When an operator"}],"source_content_type":"text/x-rst","patch_set":1,"id":"1a95cdbc_29bc1fba","line":86,"range":{"start_line":86,"start_character":0,"end_line":86,"end_character":19},"updated":"2016-10-10 03:43:30.000000000","message":"Do we think filtering the list with more condition? For example:\n\n1. The hypervisor support live-migration, but a PCI device passthrough to the instance, so the instance can\u0027t live-migration.\n2. The user can\u0027t revert a resize for instance which isn\u0027t in resized status yet. We have similar patch for enable some actions on specific instance status, then we drop in the question whether we need microversion. If the capabilities discovery API can answer the question, then we needn\u0027t microversion for this case anymore.","commit_id":"137986555643e0ae08d324dbb871ea3c06b06c55"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"c0311cba4a8eb08bd0bfe2b3fa8be693b6279a7c","unresolved":false,"context_lines":[{"line_number":88,"context_line":""},{"line_number":89,"context_line":"Many capabilities are impacted by policy. When an operator"},{"line_number":90,"context_line":"disables/enables some feature for a class of users based on policy"},{"line_number":91,"context_line":"that should be reflected in this list."},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"Alternatives"},{"line_number":94,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"1a95cdbc_090843d9","line":91,"updated":"2016-10-10 03:43:30.000000000","message":"When the end user found a feature disallow for him, there is no way to know the reason why it is disallowed. Maybe the end user wants to know whether this disallowed for the role of his user account, then the end user can know he need change another user account with more power. This is also granularity problem.","commit_id":"137986555643e0ae08d324dbb871ea3c06b06c55"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"8ed9e4b3cfd5731d6cff5d5d1a14ab9021c78fd8","unresolved":false,"context_lines":[{"line_number":88,"context_line":""},{"line_number":89,"context_line":"Many capabilities are impacted by policy. When an operator"},{"line_number":90,"context_line":"disables/enables some feature for a class of users based on policy"},{"line_number":91,"context_line":"that should be reflected in this list."},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"Alternatives"},{"line_number":94,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"fa6399be_66e24503","line":91,"in_reply_to":"1a95cdbc_090843d9","updated":"2016-10-19 12:00:23.000000000","message":"general policy stuff also don\u0027t give detail on \u0027you are not authorized, change to xxxx role \u0027 may work?","commit_id":"137986555643e0ae08d324dbb871ea3c06b06c55"}]}
