)]}'
{"specs/mitaka/approved/server-group-scoped-policies.rst":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"96a0f023e8d7d60e7acec22f691d01b980773d07","unresolved":false,"context_lines":[{"line_number":10,"context_line":""},{"line_number":11,"context_line":".."},{"line_number":12,"context_line":"  Include the URL of your launchpad blueprint:"},{"line_number":13,"context_line":"  https://blueprints.launchpad.net/nova/+spec/example"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Server groups are currently used to ensure that instances in the groups are"},{"line_number":16,"context_line":"either grouped together on the same host (affinity) or spread across different"}],"source_content_type":"text/x-rst","patch_set":2,"id":"3a7e1126_93604537","line":13,"updated":"2015-12-17 14:24:18.000000000","message":"you shall register a bp on launchpad for this spec","commit_id":"0cff31e2c07444a45d3b5bc56afaaa62ba80ec46"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"96a0f023e8d7d60e7acec22f691d01b980773d07","unresolved":false,"context_lines":[{"line_number":55,"context_line":"    capacity in each zone, without requiring (or allowing) the end user to"},{"line_number":56,"context_line":"    explicity target particular zones."},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"* An end user wants to build several instances that can share an IP address."},{"line_number":59,"context_line":"  The deployer\u0027s network is architected in such a way that IP addresses can"},{"line_number":60,"context_line":"  only be shared within certain network segments."},{"line_number":61,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"3a7e1126_ee48c25d","line":58,"updated":"2015-12-17 14:24:18.000000000","message":"Do you real want to share a single IP address between instances? That sounds weird to me.","commit_id":"0cff31e2c07444a45d3b5bc56afaaa62ba80ec46"},{"author":{"_account_id":5441,"name":"Andrew Laski","email":"andrew@lascii.com","username":"alaski"},"change_message_id":"d6d481518a99bb3c74bc99cba1ad765f82381995","unresolved":false,"context_lines":[{"line_number":55,"context_line":"    capacity in each zone, without requiring (or allowing) the end user to"},{"line_number":56,"context_line":"    explicity target particular zones."},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"* An end user wants to build several instances that can share an IP address."},{"line_number":59,"context_line":"  The deployer\u0027s network is architected in such a way that IP addresses can"},{"line_number":60,"context_line":"  only be shared within certain network segments."},{"line_number":61,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"3a7e1126_5ee65db5","line":58,"in_reply_to":"3a7e1126_ee48c25d","updated":"2015-12-17 14:48:42.000000000","message":"This point should be clarified.  The shared IP is essentially a floating IP that can be moved between instances, but the submitter works in a cells deployment where a floating IP only works for instances within the same cell.  So the IP isn\u0027t shared simultaneously but can be moved between instances.","commit_id":"0cff31e2c07444a45d3b5bc56afaaa62ba80ec46"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"96a0f023e8d7d60e7acec22f691d01b980773d07","unresolved":false,"context_lines":[{"line_number":78,"context_line":"  plan ahead).  The user now needs to scale and wants redundancy (as above)."},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"  - The end user creates a server group with maintenance zone anti-affinity and"},{"line_number":81,"context_line":"    adds the existing instance to it.  (Note that this does not cause the"},{"line_number":82,"context_line":"    existing instance to move, but simply marks it as part of the group.)  The"},{"line_number":83,"context_line":"    user can then build additional instances within the group with the"},{"line_number":84,"context_line":"    assurance that no two will be in the same maintenance zone."}],"source_content_type":"text/x-rst","patch_set":2,"id":"3a7e1126_f87161a9","line":81,"updated":"2015-12-17 14:24:18.000000000","message":"Adding existing instance to a group is a missing feature today.","commit_id":"0cff31e2c07444a45d3b5bc56afaaa62ba80ec46"},{"author":{"_account_id":16366,"name":"Randall Nortman","email":"openstack@nortman.net","username":"rnortman"},"change_message_id":"90d59301e7c0738610f6375426c4256fbf117069","unresolved":false,"context_lines":[{"line_number":78,"context_line":"  plan ahead).  The user now needs to scale and wants redundancy (as above)."},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"  - The end user creates a server group with maintenance zone anti-affinity and"},{"line_number":81,"context_line":"    adds the existing instance to it.  (Note that this does not cause the"},{"line_number":82,"context_line":"    existing instance to move, but simply marks it as part of the group.)  The"},{"line_number":83,"context_line":"    user can then build additional instances within the group with the"},{"line_number":84,"context_line":"    assurance that no two will be in the same maintenance zone."}],"source_content_type":"text/x-rst","patch_set":2,"id":"3a7e1126_eeb438f3","line":81,"in_reply_to":"3a7e1126_f87161a9","updated":"2015-12-17 15:15:37.000000000","message":"I plan to submit a separate spec for adding/removing existing instances.  See detailed response below.","commit_id":"0cff31e2c07444a45d3b5bc56afaaa62ba80ec46"},{"author":{"_account_id":5441,"name":"Andrew Laski","email":"andrew@lascii.com","username":"alaski"},"change_message_id":"d6d481518a99bb3c74bc99cba1ad765f82381995","unresolved":false,"context_lines":[{"line_number":79,"context_line":""},{"line_number":80,"context_line":"  - The end user creates a server group with maintenance zone anti-affinity and"},{"line_number":81,"context_line":"    adds the existing instance to it.  (Note that this does not cause the"},{"line_number":82,"context_line":"    existing instance to move, but simply marks it as part of the group.)  The"},{"line_number":83,"context_line":"    user can then build additional instances within the group with the"},{"line_number":84,"context_line":"    assurance that no two will be in the same maintenance zone."},{"line_number":85,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"3a7e1126_39036b0f","line":82,"updated":"2015-12-17 14:48:42.000000000","message":"This point is something that I think requires some debate.  I expect that there could be some unforeseen complications if we allow this behavior, essentially adding a constraint to the instance that is not currently satisfied.  Instead I would expect that adding an instance to a group would fail if it doesn\u0027t meet the current constraints, or better yet implicitly create groups for instances based on where they have landed.","commit_id":"0cff31e2c07444a45d3b5bc56afaaa62ba80ec46"},{"author":{"_account_id":16366,"name":"Randall Nortman","email":"openstack@nortman.net","username":"rnortman"},"change_message_id":"90d59301e7c0738610f6375426c4256fbf117069","unresolved":false,"context_lines":[{"line_number":79,"context_line":""},{"line_number":80,"context_line":"  - The end user creates a server group with maintenance zone anti-affinity and"},{"line_number":81,"context_line":"    adds the existing instance to it.  (Note that this does not cause the"},{"line_number":82,"context_line":"    existing instance to move, but simply marks it as part of the group.)  The"},{"line_number":83,"context_line":"    user can then build additional instances within the group with the"},{"line_number":84,"context_line":"    assurance that no two will be in the same maintenance zone."},{"line_number":85,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"3a7e1126_8effb4a9","line":82,"in_reply_to":"3a7e1126_39036b0f","updated":"2015-12-17 15:15:37.000000000","message":"In an earlier draft I had details of how adding existing instances to a group would work, but then decided to submit that as a separate spec in order to keep this one simpler.  This one will need to reference the new spec.\n\nI think there are arguments to be made either way -- to allow adding even if it violates the constraint, or to prevent adding.  Obviously this is a non-issue for soft policies (which would always succeed).  If we allow hard policies to be violated in this way, it would be useful to return a warning, and perhaps also have an API for listing violations within a group which have crept in because of adding instances post-build.\n\nImplicitly creating groups is an interesting idea, but I think it could get tricky, given that group policies, if we add scopes, can have multiple independent scopes which overlap in arbitrary ways, and a single group can have policies in multiple scopes.  So then the question is -- what group do we create implicitly for a given instance?  There will be many possibilities in the general case.  Probably a solvable problem, but requires some deep thought about corner cases and use cases.","commit_id":"0cff31e2c07444a45d3b5bc56afaaa62ba80ec46"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"06d5c9d263b5cd6230b44d694265db3d60e63280","unresolved":false,"context_lines":[{"line_number":96,"context_line":"    instances is affected, at which time the scheduler will attempt to restore"},{"line_number":97,"context_line":"    balance to the extent possible.)"},{"line_number":98,"context_line":""},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"Proposed change"},{"line_number":101,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":102,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"5a5ae5dd_98ce5c59","line":99,"updated":"2016-02-03 07:44:42.000000000","message":"You defined use cases where the scope is always bigger than a compute host (e.g. rack, switching domain, etc). I feel that scoping on smaller scale is also meaningful. For example if we have a NUMA capable compute host with two NUMA nodes then creating a server group with affinity policy and NUMA node scope would mean that the scheduler shall place instances on the same NUMA node.","commit_id":"0cff31e2c07444a45d3b5bc56afaaa62ba80ec46"},{"author":{"_account_id":16366,"name":"Randall Nortman","email":"openstack@nortman.net","username":"rnortman"},"change_message_id":"10811ea4bcde2314b9d9269d0d7301a541a1dcad","unresolved":false,"context_lines":[{"line_number":96,"context_line":"    instances is affected, at which time the scheduler will attempt to restore"},{"line_number":97,"context_line":"    balance to the extent possible.)"},{"line_number":98,"context_line":""},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"Proposed change"},{"line_number":101,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":102,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"5a5ae5dd_da8bac1d","line":99,"in_reply_to":"5a5ae5dd_98ce5c59","updated":"2016-02-08 00:43:05.000000000","message":"This presents a problem for the data model, which I currently have using the existing host_aggregates mechanism to define groups for the scopes.  This prevents us from using anything smaller than a host.  For the NUMA case you describe, we could special-case it the way we do the implicit \"host\" scope.  This could be done later in a separate spec.  I\u0027m not sure there\u0027s any use case for smaller-than-host scopes other than NUMA, so special-casing it probably makes sense, rather than introducing a whole new data model.","commit_id":"0cff31e2c07444a45d3b5bc56afaaa62ba80ec46"}],"specs/newton/approved/server-group-scoped-policies.rst":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"4bd6a958b5fa916df1a4abb35d2aae07200f5a09","unresolved":false,"context_lines":[{"line_number":14,"context_line":"either grouped together on the same host (affinity) or spread across different"},{"line_number":15,"context_line":"hosts (anti-affinity).  This affinity/anti-affinity concept could be broadly"},{"line_number":16,"context_line":"useful for a number of use cases, but many of these use cases would require"},{"line_number":17,"context_line":"(anti-)affinity with a scope other than the host.  This spec adds a general and"},{"line_number":18,"context_line":"flexible scoping mechanism to server group policies which enables these use"},{"line_number":19,"context_line":"cases.  Under this mechanism, \"host\" is just one of (potentially) many"},{"line_number":20,"context_line":"available scopes; by making host the default scope if none is specified, this"}],"source_content_type":"text/x-rst","patch_set":6,"id":"1a122d0e_5c0368b8","line":17,"range":{"start_line":17,"start_character":49,"end_line":17,"end_character":51},"updated":"2016-05-04 14:46:11.000000000","message":"nit: s/.  T/. T/","commit_id":"cd771c89b46b2b19d8a6711e47f45d324d5a088c"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"4bd6a958b5fa916df1a4abb35d2aae07200f5a09","unresolved":false,"context_lines":[{"line_number":16,"context_line":"useful for a number of use cases, but many of these use cases would require"},{"line_number":17,"context_line":"(anti-)affinity with a scope other than the host.  This spec adds a general and"},{"line_number":18,"context_line":"flexible scoping mechanism to server group policies which enables these use"},{"line_number":19,"context_line":"cases.  Under this mechanism, \"host\" is just one of (potentially) many"},{"line_number":20,"context_line":"available scopes; by making host the default scope if none is specified, this"},{"line_number":21,"context_line":"mechanism is fully backward-compatible with the existing server group policies."},{"line_number":22,"context_line":"Arbitrary additional scopes can be defined by the deployer."}],"source_content_type":"text/x-rst","patch_set":6,"id":"1a122d0e_1c20d048","line":19,"range":{"start_line":19,"start_character":6,"end_line":19,"end_character":8},"updated":"2016-05-04 14:46:11.000000000","message":"nit: a/.  U/. U/","commit_id":"cd771c89b46b2b19d8a6711e47f45d324d5a088c"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"4bd6a958b5fa916df1a4abb35d2aae07200f5a09","unresolved":false,"context_lines":[{"line_number":25,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"Server group policies are currently limited to a single scope: a single host"},{"line_number":28,"context_line":"machine.  As the use cases below illustrate, there are many use cases that"},{"line_number":29,"context_line":"could be addressed by allowing different scopes.  Note that some of these use"},{"line_number":30,"context_line":"cases could be addressed by the existing availability zones mechanism, but that"},{"line_number":31,"context_line":"mechanism also has important limitations."}],"source_content_type":"text/x-rst","patch_set":6,"id":"1a122d0e_9c94e0e8","line":28,"range":{"start_line":28,"start_character":8,"end_line":28,"end_character":10},"updated":"2016-05-04 14:46:11.000000000","message":"extra space","commit_id":"cd771c89b46b2b19d8a6711e47f45d324d5a088c"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"4bd6a958b5fa916df1a4abb35d2aae07200f5a09","unresolved":false,"context_lines":[{"line_number":26,"context_line":""},{"line_number":27,"context_line":"Server group policies are currently limited to a single scope: a single host"},{"line_number":28,"context_line":"machine.  As the use cases below illustrate, there are many use cases that"},{"line_number":29,"context_line":"could be addressed by allowing different scopes.  Note that some of these use"},{"line_number":30,"context_line":"cases could be addressed by the existing availability zones mechanism, but that"},{"line_number":31,"context_line":"mechanism also has important limitations."},{"line_number":32,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"1a122d0e_3c8e6cd0","line":29,"range":{"start_line":29,"start_character":48,"end_line":29,"end_character":50},"updated":"2016-05-04 14:46:11.000000000","message":"extra space","commit_id":"cd771c89b46b2b19d8a6711e47f45d324d5a088c"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"4bd6a958b5fa916df1a4abb35d2aae07200f5a09","unresolved":false,"context_lines":[{"line_number":125,"context_line":"implicitly the sole member of a virtual aggregate associated with this scope."},{"line_number":126,"context_line":"This enables backward compatibility with existing server group policies."},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"Adding/Removing Instances to/from Server Groups"},{"line_number":129,"context_line":"-----------------------------------------------"},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"To make this mechanism cover all the use cases above, we also need to add a"}],"source_content_type":"text/x-rst","patch_set":6,"id":"1a122d0e_72c92d25","line":128,"updated":"2016-05-04 14:46:11.000000000","message":"I think this is a valid effort, but I feel this needs to be phased to limit the scope of the (each) spec. for example:\n# scoped policy\n# add-remove member\n# obfuscated identifiers","commit_id":"cd771c89b46b2b19d8a6711e47f45d324d5a088c"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"4bd6a958b5fa916df1a4abb35d2aae07200f5a09","unresolved":false,"context_lines":[{"line_number":136,"context_line":"to avoid race issues, we will not enforce policies during add-instance"},{"line_number":137,"context_line":"operations; adding a host may result in policy violations.  Policies are"},{"line_number":138,"context_line":"consulted and enforced only during scheduling (including scheduling during"},{"line_number":139,"context_line":"initial boot and also during migrations)."},{"line_number":140,"context_line":""},{"line_number":141,"context_line":"Obfuscation of Identifiers"},{"line_number":142,"context_line":"--------------------------"}],"source_content_type":"text/x-rst","patch_set":6,"id":"1a122d0e_b20e258a","line":139,"updated":"2016-05-04 14:46:11.000000000","message":"What will happen if the a policy is violated with by adding new member to the group and then one of the members needs to be migrated? I think the use expects to keep the policy during migration but that might not be kept as the policy is already violated before the migration.","commit_id":"cd771c89b46b2b19d8a6711e47f45d324d5a088c"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"4bd6a958b5fa916df1a4abb35d2aae07200f5a09","unresolved":false,"context_lines":[{"line_number":217,"context_line":"the full syntax would be, e.g., \"affinity:zone:zone_A\".  Identifiers in the"},{"line_number":218,"context_line":"database are always the real internal identifiers, not the obfuscated"},{"line_number":219,"context_line":"identifiers."},{"line_number":220,"context_line":""},{"line_number":221,"context_line":"The database schema will add an instance_group_policy_scopes table and add a"},{"line_number":222,"context_line":"column to instance_group_policies with a foreign key into the scopes table."},{"line_number":223,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"1a122d0e_92b5e9d1","line":220,"updated":"2016-05-04 14:46:11.000000000","message":"Why do we need to add the \":\u003cscope\u003e\" to the policies field of the InstanceGroup if we create a new object InstanceGroupPolicyScope to hold that info or I misunderstood something?","commit_id":"cd771c89b46b2b19d8a6711e47f45d324d5a088c"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"4bd6a958b5fa916df1a4abb35d2aae07200f5a09","unresolved":false,"context_lines":[{"line_number":222,"context_line":"column to instance_group_policies with a foreign key into the scopes table."},{"line_number":223,"context_line":""},{"line_number":224,"context_line":"For mapping hosts to policy scopes, the existing host aggregate mechanism will"},{"line_number":225,"context_line":"be used.  A metadata tag will map aggregates to policy scopes (just like the"},{"line_number":226,"context_line":"current handling of availability zones).  This approach is subject to race"},{"line_number":227,"context_line":"conditions; see discussion in Alternatives above.  (Note that existing"},{"line_number":228,"context_line":"availability zones implementation is already just as subject to races.)"},{"line_number":229,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"1a122d0e_0d541c52","line":226,"range":{"start_line":225,"start_character":10,"end_line":226,"end_character":40},"updated":"2016-05-04 14:46:11.000000000","message":"As far as I know metadata is a free text, how can we differentiate between metadata that is a scope and metadata that isn\u0027t?","commit_id":"cd771c89b46b2b19d8a6711e47f45d324d5a088c"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"4bd6a958b5fa916df1a4abb35d2aae07200f5a09","unresolved":false,"context_lines":[{"line_number":251,"context_line":""},{"line_number":252,"context_line":"    {\"server_group\": {"},{"line_number":253,"context_line":"        \"name\": \"test\","},{"line_number":254,"context_line":"        \"policies\": ["},{"line_number":255,"context_line":"            \"affinity:zone:acc173ed-867b-4e74-a69d-5586a490947b\"]}}"},{"line_number":256,"context_line":""},{"line_number":257,"context_line":"  And will be answered with the following response body::"},{"line_number":258,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"1a122d0e_51286e85","line":255,"range":{"start_line":254,"start_character":0,"end_line":255,"end_character":67},"updated":"2016-05-04 14:46:11.000000000","message":"Can we make scope and identifier separate keys instead of encoding them into a string?\nSomething like:\n{\"server_group\": {\n        \"name\": \"test\",\n        \"policies\": [\n            {\"affinity\": {\"zone\": \"a-zone\", \"id\": \"acc173ed-867b-4e74-a69d-5586a490947b\"}}]}\n        \nor\n\n{\"server_group\": {\n        \"name\": \"test\",\n        \"policies\": [\n            {\"policy\": \"affinity\", \n             \"zone\": \"a-zone\",\n             \"id\": \"acc173ed-867b-4e74-a69d-5586a490947b\"}]}","commit_id":"cd771c89b46b2b19d8a6711e47f45d324d5a088c"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"4bd6a958b5fa916df1a4abb35d2aae07200f5a09","unresolved":false,"context_lines":[{"line_number":277,"context_line":"            \"anti-affinity:host\""},{"line_number":278,"context_line":"        ]}}"},{"line_number":279,"context_line":""},{"line_number":280,"context_line":"POST: v2.1/{tenant-id}/os-server-groups/{server_group_id}/action"},{"line_number":281,"context_line":""},{"line_number":282,"context_line":"  Add an instance to the group (specify \"add_instance\" action).  Note that this"},{"line_number":283,"context_line":"  does not enforce policies during the add; the operation will succeed even if"}],"source_content_type":"text/x-rst","patch_set":6,"id":"1a122d0e_11e2762f","line":280,"range":{"start_line":280,"start_character":58,"end_line":280,"end_character":64},"updated":"2016-05-04 14:46:11.000000000","message":"Why it is an action instead of a POST on the server_group_id with a modified list of members field?","commit_id":"cd771c89b46b2b19d8a6711e47f45d324d5a088c"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"4bd6a958b5fa916df1a4abb35d2aae07200f5a09","unresolved":false,"context_lines":[{"line_number":287,"context_line":"        \"instance_id\": \"9c975e5f-d7fe-427f-928c-c830ff644a0c\""},{"line_number":288,"context_line":"        }}"},{"line_number":289,"context_line":""},{"line_number":290,"context_line":"POST: v2.1/{tenant-id}/os-server-groups/{server_group_id}/action"},{"line_number":291,"context_line":""},{"line_number":292,"context_line":"  Remove an instance from the group (specify \"remove_instance\" action)."},{"line_number":293,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"1a122d0e_51d22e5c","line":290,"range":{"start_line":290,"start_character":58,"end_line":290,"end_character":64},"updated":"2016-05-04 14:46:11.000000000","message":"same comment as above","commit_id":"cd771c89b46b2b19d8a6711e47f45d324d5a088c"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"4bd6a958b5fa916df1a4abb35d2aae07200f5a09","unresolved":false,"context_lines":[{"line_number":310,"context_line":"  for that scope)."},{"line_number":311,"context_line":""},{"line_number":312,"context_line":"  Note that this API does not actually highlight policy violations in any way;"},{"line_number":313,"context_line":"  finding violations is up to the caller."},{"line_number":314,"context_line":""},{"line_number":315,"context_line":"  Example response::"},{"line_number":316,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"1a122d0e_b1aaa283","line":313,"updated":"2016-05-04 14:46:11.000000000","message":"As an End User that gives me quite a bit of work to figure out if there is a violation. But I guess I have every information to do that so it is just an inconvenience.","commit_id":"cd771c89b46b2b19d8a6711e47f45d324d5a088c"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"4bd6a958b5fa916df1a4abb35d2aae07200f5a09","unresolved":false,"context_lines":[{"line_number":320,"context_line":"            {"},{"line_number":321,"context_line":"                \"instance_id\": \"990f1e6a-ced2-4d75-9fac-a8431a48d21e\","},{"line_number":322,"context_line":"                \"placements\": {"},{"line_number":323,"context_line":"                    \"zone\": \"acc173ed-867b-4e74-a69d-5586a490947b\","},{"line_number":324,"context_line":"                    \"host\": \"02f7d1b8-a5a6-41ed-8829-c479861dcb44\""},{"line_number":325,"context_line":"                    }},"},{"line_number":326,"context_line":"            {"}],"source_content_type":"text/x-rst","patch_set":6,"id":"1a122d0e_d1fc7e41","line":323,"updated":"2016-05-04 14:46:11.000000000","message":"Is \"zone\" the name of a scope here? Will all the scopes be listed here where the host (or instance?) belongs to?","commit_id":"cd771c89b46b2b19d8a6711e47f45d324d5a088c"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"4bd6a958b5fa916df1a4abb35d2aae07200f5a09","unresolved":false,"context_lines":[{"line_number":330,"context_line":"                    \"host\": \"c74d2f27-6768-4418-b162-190942c0cfaf\""},{"line_number":331,"context_line":"                    }}]}}"},{"line_number":332,"context_line":"`"},{"line_number":333,"context_line":"GET: v2.1/{tenant-id}/os-policy-scopes"},{"line_number":334,"context_line":""},{"line_number":335,"context_line":"  List policy scopes."},{"line_number":336,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"1a122d0e_d1711ee0","line":333,"range":{"start_line":333,"start_character":22,"end_line":333,"end_character":38},"updated":"2016-05-04 14:46:11.000000000","message":"\"policy\" is an overloaded term (e.g. api policy) so I think we need to prefix it with server-groups to specify what this api piece talks about. Maybe os-server-groups-policy-scopes as a name?","commit_id":"cd771c89b46b2b19d8a6711e47f45d324d5a088c"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"4bd6a958b5fa916df1a4abb35d2aae07200f5a09","unresolved":false,"context_lines":[{"line_number":368,"context_line":""},{"line_number":369,"context_line":"DELETE: v2.1/{admin-tenant-id}/os-policy-scopes/{policy_scope_id}"},{"line_number":370,"context_line":""},{"line_number":371,"context_line":"  Delete a policy scope (admin-only)"},{"line_number":372,"context_line":""},{"line_number":373,"context_line":"POST: v2.1/{admin-tenant-id}/os-policy-scopes/{policy_scope_id}/action"},{"line_number":374,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"1a122d0e_1446e44e","line":371,"updated":"2016-05-04 14:46:11.000000000","message":"I guess we don\u0027t allow deleting scope if it is still used.","commit_id":"cd771c89b46b2b19d8a6711e47f45d324d5a088c"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"4bd6a958b5fa916df1a4abb35d2aae07200f5a09","unresolved":false,"context_lines":[{"line_number":370,"context_line":""},{"line_number":371,"context_line":"  Delete a policy scope (admin-only)"},{"line_number":372,"context_line":""},{"line_number":373,"context_line":"POST: v2.1/{admin-tenant-id}/os-policy-scopes/{policy_scope_id}/action"},{"line_number":374,"context_line":""},{"line_number":375,"context_line":"  Add an aggregate to the scope (admin-only; specify \"add_aggregate\" action)"},{"line_number":376,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"1a122d0e_d462acd8","line":373,"range":{"start_line":373,"start_character":64,"end_line":373,"end_character":70},"updated":"2016-05-04 14:46:11.000000000","message":"Maybe a POST on the v2.1/{admin-tenant-id}/os-policy-scopes/{policy_scope_id} with a modified aggregates list?","commit_id":"cd771c89b46b2b19d8a6711e47f45d324d5a088c"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"4bd6a958b5fa916df1a4abb35d2aae07200f5a09","unresolved":false,"context_lines":[{"line_number":371,"context_line":"  Delete a policy scope (admin-only)"},{"line_number":372,"context_line":""},{"line_number":373,"context_line":"POST: v2.1/{admin-tenant-id}/os-policy-scopes/{policy_scope_id}/action"},{"line_number":374,"context_line":""},{"line_number":375,"context_line":"  Add an aggregate to the scope (admin-only; specify \"add_aggregate\" action)"},{"line_number":376,"context_line":""},{"line_number":377,"context_line":"POST: v2.1/{admin-tenant-id}/os-policy-scopes/{policy_scope_id}/action"}],"source_content_type":"text/x-rst","patch_set":6,"id":"1a122d0e_f4aec8e5","line":374,"updated":"2016-05-04 14:46:11.000000000","message":"I guess this API can also create a violation of the policy of a server group","commit_id":"cd771c89b46b2b19d8a6711e47f45d324d5a088c"}]}
