Re: [openstack-dev] [nova] Proposal: remove the server groups feature

2014-05-04 Thread Jay Lau
The topic is Scheduler hints for VM life
cyclehttp://junodesignsummit.sched.org/event/77801877aa42b595f14ae8b020cd1999#.
Thanks.


2014-05-04 10:06 GMT+08:00 Qiming Teng teng...@linux.vnet.ibm.com:

 On Thu, May 01, 2014 at 08:49:11PM +0800, Jay Lau wrote:
  Jay Pipes and all, I'm planning to merge this topic to
 
 http://junodesignsummit.sched.org/event/77801877aa42b595f14ae8b020cd1999after
  some discussion in this week's Gantt IRC meeting, hope it is OK.
 
  Thanks!

 The link above didn't work.  How about telling us the name of the topic?


  2014-05-01 19:56 GMT+08:00 Day, Phil philip@hp.com:
 

 In the original API there was a way to remove members from the
 group.
 This didn't make it into the code that was submitted.
   
Well, it didn't make it in because it was broken. If you add an
 instance
   to a
group after it's running, a migration may need to take place in
 order to
   keep
the semantics of the group. That means that for a while the policy
 will
   be
being violated, and if we can't migrate the instance somewhere to
   satisfy the
policy then we need to either drop it back out, or be in violation.
   Either some
additional states (such as being queued for inclusion in a group,
 etc)
   may be
required, or some additional footnotes on what it means to be in a
 group
might have to be made.
   
It was for the above reasons, IIRC, that we decided to leave that bit
   out since
the semantics and consequences clearly hadn't been fully thought-out.
Obviously they can be addressed, but I fear the result will be ...
 ugly.
   I think
there's a definite possibility that leaving out those dynamic
 functions
   will look
more desirable than an actual implementation.
   
   If we look at a server group as a general contained or servers, that
 may
   have an attribute that expresses scheduling policy, then it doesn't
 seem to
   ugly to restrict the conditions on which an add is allowed to only
 those
   that don't break the (optional) policy.Wouldn't even have to go to
 the
   scheduler to work this out.
  


 ___
 OpenStack-dev mailing list
 OpenStack-dev@lists.openstack.org
 http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev




-- 
Thanks,

Jay
___
OpenStack-dev mailing list
OpenStack-dev@lists.openstack.org
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev


Re: [openstack-dev] [nova] Proposal: remove the server groups feature

2014-05-03 Thread Qiming Teng
On Thu, May 01, 2014 at 08:49:11PM +0800, Jay Lau wrote:
 Jay Pipes and all, I'm planning to merge this topic to
 http://junodesignsummit.sched.org/event/77801877aa42b595f14ae8b020cd1999after
 some discussion in this week's Gantt IRC meeting, hope it is OK.
 
 Thanks!

The link above didn't work.  How about telling us the name of the topic?


 2014-05-01 19:56 GMT+08:00 Day, Phil philip@hp.com:
 
   
In the original API there was a way to remove members from the group.
This didn't make it into the code that was submitted.
  
   Well, it didn't make it in because it was broken. If you add an instance
  to a
   group after it's running, a migration may need to take place in order to
  keep
   the semantics of the group. That means that for a while the policy will
  be
   being violated, and if we can't migrate the instance somewhere to
  satisfy the
   policy then we need to either drop it back out, or be in violation.
  Either some
   additional states (such as being queued for inclusion in a group, etc)
  may be
   required, or some additional footnotes on what it means to be in a group
   might have to be made.
  
   It was for the above reasons, IIRC, that we decided to leave that bit
  out since
   the semantics and consequences clearly hadn't been fully thought-out.
   Obviously they can be addressed, but I fear the result will be ... ugly.
  I think
   there's a definite possibility that leaving out those dynamic functions
  will look
   more desirable than an actual implementation.
  
  If we look at a server group as a general contained or servers, that may
  have an attribute that expresses scheduling policy, then it doesn't seem to
  ugly to restrict the conditions on which an add is allowed to only those
  that don't break the (optional) policy.Wouldn't even have to go to the
  scheduler to work this out.
 


___
OpenStack-dev mailing list
OpenStack-dev@lists.openstack.org
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev


Re: [openstack-dev] [nova] Proposal: remove the server groups feature

2014-05-01 Thread Day, Phil
 
  In the original API there was a way to remove members from the group.
  This didn't make it into the code that was submitted.
 
 Well, it didn't make it in because it was broken. If you add an instance to a
 group after it's running, a migration may need to take place in order to keep
 the semantics of the group. That means that for a while the policy will be
 being violated, and if we can't migrate the instance somewhere to satisfy the
 policy then we need to either drop it back out, or be in violation. Either 
 some
 additional states (such as being queued for inclusion in a group, etc) may be
 required, or some additional footnotes on what it means to be in a group
 might have to be made.
 
 It was for the above reasons, IIRC, that we decided to leave that bit out 
 since
 the semantics and consequences clearly hadn't been fully thought-out.
 Obviously they can be addressed, but I fear the result will be ... ugly. I 
 think
 there's a definite possibility that leaving out those dynamic functions will 
 look
 more desirable than an actual implementation.
 
If we look at a server group as a general contained or servers, that may have 
an attribute that expresses scheduling policy, then it doesn't seem to ugly to 
restrict the conditions on which an add is allowed to only those that don't 
break the (optional) policy.Wouldn't even have to go to the scheduler to 
work this out.


___
OpenStack-dev mailing list
OpenStack-dev@lists.openstack.org
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev


Re: [openstack-dev] [nova] Proposal: remove the server groups feature

2014-05-01 Thread Jay Lau
Jay Pipes and all, I'm planning to merge this topic to
http://junodesignsummit.sched.org/event/77801877aa42b595f14ae8b020cd1999after
some discussion in this week's Gantt IRC meeting, hope it is OK.

Thanks!


2014-05-01 19:56 GMT+08:00 Day, Phil philip@hp.com:

  
   In the original API there was a way to remove members from the group.
   This didn't make it into the code that was submitted.
 
  Well, it didn't make it in because it was broken. If you add an instance
 to a
  group after it's running, a migration may need to take place in order to
 keep
  the semantics of the group. That means that for a while the policy will
 be
  being violated, and if we can't migrate the instance somewhere to
 satisfy the
  policy then we need to either drop it back out, or be in violation.
 Either some
  additional states (such as being queued for inclusion in a group, etc)
 may be
  required, or some additional footnotes on what it means to be in a group
  might have to be made.
 
  It was for the above reasons, IIRC, that we decided to leave that bit
 out since
  the semantics and consequences clearly hadn't been fully thought-out.
  Obviously they can be addressed, but I fear the result will be ... ugly.
 I think
  there's a definite possibility that leaving out those dynamic functions
 will look
  more desirable than an actual implementation.
 
 If we look at a server group as a general contained or servers, that may
 have an attribute that expresses scheduling policy, then it doesn't seem to
 ugly to restrict the conditions on which an add is allowed to only those
 that don't break the (optional) policy.Wouldn't even have to go to the
 scheduler to work this out.


 ___
 OpenStack-dev mailing list
 OpenStack-dev@lists.openstack.org
 http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev




-- 
Thanks,

Jay
___
OpenStack-dev mailing list
OpenStack-dev@lists.openstack.org
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev


Re: [openstack-dev] [nova] Proposal: remove the server groups feature

2014-05-01 Thread Jay Pipes
On Thu, 2014-05-01 at 20:49 +0800, Jay Lau wrote:
 Jay Pipes and all, I'm planning to merge this topic to
 http://junodesignsummit.sched.org/event/77801877aa42b595f14ae8b020cd1999 
 after some discussion in this week's Gantt IRC meeting, hope it is OK.

I'll be there :)

Thanks!
-jay

 
 
 2014-05-01 19:56 GMT+08:00 Day, Phil philip@hp.com:
  
   In the original API there was a way to remove members from
 the group.
   This didn't make it into the code that was submitted.
 
  Well, it didn't make it in because it was broken. If you add
 an instance to a
  group after it's running, a migration may need to take place
 in order to keep
  the semantics of the group. That means that for a while the
 policy will be
  being violated, and if we can't migrate the instance
 somewhere to satisfy the
  policy then we need to either drop it back out, or be in
 violation. Either some
  additional states (such as being queued for inclusion in a
 group, etc) may be
  required, or some additional footnotes on what it means to
 be in a group
  might have to be made.
 
  It was for the above reasons, IIRC, that we decided to leave
 that bit out since
  the semantics and consequences clearly hadn't been fully
 thought-out.
  Obviously they can be addressed, but I fear the result will
 be ... ugly. I think
  there's a definite possibility that leaving out those
 dynamic functions will look
  more desirable than an actual implementation.
 
 
 If we look at a server group as a general contained or
 servers, that may have an attribute that expresses scheduling
 policy, then it doesn't seem to ugly to restrict the
 conditions on which an add is allowed to only those that don't
 break the (optional) policy.Wouldn't even have to go to
 the scheduler to work this out.
 
 
 ___
 OpenStack-dev mailing list
 OpenStack-dev@lists.openstack.org
 http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev
 
 
 
 
 -- 
 Thanks,
 
 
 Jay
 
 ___
 OpenStack-dev mailing list
 OpenStack-dev@lists.openstack.org
 http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev



___
OpenStack-dev mailing list
OpenStack-dev@lists.openstack.org
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev


Re: [openstack-dev] [nova] Proposal: remove the server groups feature

2014-04-29 Thread Qiming Teng
On Mon, Apr 28, 2014 at 10:58:50AM -0600, Chris Friesen wrote:
 On 04/25/2014 03:15 PM, Jay Pipes wrote:
 
 There are myriad problems with the above user experience and
 implementation. Let me explain them.
 
 1. The user isn't creating a server group when they issue a nova
 server-group-create call. They are creating a policy and calling it a
 group. Cognitive dissonance results from this mismatch.
 
 I actually don't think this is true.  From my perspective they are
 actually creating a group, and then when booting servers they can be
 added into the group.
 
 The group happens to have a policy, it is not only a policy.

I tend to agree to this. Server groups today are just a starting point.
A server group can be used for different purposes like load-balancing, 
auto-scaling, high-availability or even a combination of them, just name
a few.  With that said, I would also like to see the policies separated 
from the group itself.  One or more policies can be associated with a
group (just like a 'floating-ip'), but the policies are managed
separately.
 2. There's no way to add an existing server to this group.
 
 In the original API there was a way to add existing servers to the
 group.  This didn't make it into the code that was submitted.  It is
 however supported by the instance group db API in nova.

To disallow putting an apple into a basket of oranges, we will need to
come up with some admission control/validation.  It is complicated, but
doable, IMO.

 3. There's no way to remove members from the group
 
 In the original API there was a way to remove members from the
 group. This didn't make it into the code that was submitted.
 

Just like 'adding new members', 'removing members' can be done if
certain conditions are met.  We can safely assume the users do
understand what they are doing.  I mean, we can leave the high level
policy decisions to users, with nova only providing dumb mechanisms.

 4. There's no way to manually add members to the server group
 
 Isn't this the same as item 2?
 
 5. The act of telling the scheduler to place instances near or away from
 some other instances has been hidden behind the server group API, which
 means that users doing a nova help boot will see a --group option that
 doesn't make much sense, as it doesn't describe the scheduling policy
 activity.

The confusion here is understandable, because we want to consider both
the policies and the mechanisms at the same time.  Maybe we can leave
the policies out of this discussion.

 
 There are many things hidden away that affect server
 booting...metadata matching between host aggregates and flavor extra
 specs, for instance.
 
 As I understand it, originally the concept of server groups was
 more broad.  They supported multiple policies, arbitrary group
 metadata, etc.  The scheduler policy was only one of the things that
 could be associated with a group.  This is why the underlying
 database structure is more complicated than necessary for the
 current set of supported operations.
 
 What we have currently is sort of a dumbed-down version but now
 that we have the basic support we can start adding in additional
 functionality as desired.
 
 Chris
 


___
OpenStack-dev mailing list
OpenStack-dev@lists.openstack.org
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev


Re: [openstack-dev] [nova] Proposal: remove the server groups feature

2014-04-28 Thread Day, Phil
 -Original Message-
 From: Jay Pipes [mailto:jaypi...@gmail.com]
 Sent: 25 April 2014 23:29
 To: openstack-dev@lists.openstack.org
 Subject: Re: [openstack-dev] [nova] Proposal: remove the server groups
 feature
 
 On Fri, 2014-04-25 at 22:00 +, Day, Phil wrote:
  Hi Jay,
 
  I'm going to disagree with you on this one, because:
 
 No worries, Phil, I expected some dissention and I completely appreciate
 your feedback and perspective :)

Always happy to meet your expectations ;-)

Seem that where we mainly disagree is on the usability of the current Server 
Group API - and maybe we just need a wider range of views to see where the 
majority feeling is on that.

The folks we've got who have been looking for affinity/anti-affinity scheduling 
(we've been holding off from the previous filters because they include DB 
lookups) don't seem to find the Server Groups schematic confusing - you know 
you want to do something with a group of servers so you create a group, define 
the properties for that group, and add servers to it as you create them.

I agree there are a number of things needed to round this out (such as 
add/remove server, and some form of quota on the maximum size of a group), but 
I just don't see the  basic approach as broken in the way that you do - and I 
am worried that we end up spinning on much needed functionality if we start to 
rework it now.

The tagging approach  (if I understand it correctly) seems like it would start 
to introduce system schematics to values that are currently just user defined 
free text - which I think might lead to more confusion  / name-space clashes 
around which tags are now in effect reserved names and which are still user 
defined.   I think I prefer the clearer separation.

Phil
 
  i) This is a feature that was discussed in at least one if not two Design
 Summits and went through a long review period, it wasn't one of those
 changes that merged in 24 hours before people could take a good look at it.
 
 Completely understood. That still doesn't mean we can't propose to get rid
 of it early instead of letting it sit around when an alternate implementation
 would be better for the user of OpenStack.
 
Whatever you feel about the implementation,  it is now in the API and we
 should assume that people have started coding against it.
 
 Sure, maybe. AFAIK, it's only in the v2 API, though, not in the v3 API 
 (sorry, I
 made a mistake about that in my original email). Is there a reason it wasn't
 added to the v3 API?
 
I don't think it gives any credibility to Openstack as a platform if we 
  yank
 features back out just after they've landed.
 
 Perhaps not, though I think we have less credibility if we don't recognize
 when a feature isn't implemented with users in mind and leave it in the code
 base to the detriment and confusion of users. We absolutely must, IMO, as a
 community, be able to say this isn't right
 and have a path for changing or removing something.
 
 If that path is deprecation vs outright removal, so be it, I'd be cool with 
 that.
 I'd just like to nip this anti-feature in the bud early so that it doesn't 
 become
 the next feature like file-injection to persist in Nova well after its time 
 has
 come and passed.
 
  ii) Sever Group - It's a way of defining a group of servers, and the initial
 thing (only thing right now) you can define for such a group is the affinity 
 or
 anti-affinity for scheduling.
 
 We already had ways of defining groups of servers. This new feature
 doesn't actually define a group of servers. It defines a policy, which is not
 particularly useful, as it's something that is better specified at the time of
 launching.
 
Maybe in time we'll add other group properties or operations - like
 delete all the servers in a group (I know some QA folks that would love to
 have that feature).
 
 We already have the ability to define a group of servers using key=value tags.
 Deleting all servers in a group is a three-line bash script that loops over 
 the
 results of a nova list command and calls nova delete.
 Trust me, I've done group deletes in this way many times.
 
I don't see why it shouldn't be possible to have a server group that 
  doesn't
 have a scheduling policy associated to it.
 
 I don't think the grouping of servers should have *anything* to do with
 scheduling :) That's the point of my proposal. Servers can and should be
 grouped using simple tags or key=value pair tags.
 
 The grouping of servers together doesn't have anything of substance to do
 with scheduling policies.
 
 I don't see any  Cognitive dissonance here - I think your just assuming 
  that
 the only reason for being able to group servers is for scheduling.
 
 Again, I don't think scheduling and grouping of servers has anything to do
 with each other, thus my proposal to remove the relationship between
 groups of servers and scheduling policies, which is what the existing server
 group API and implementation does

Re: [openstack-dev] [nova] Proposal: remove the server groups feature

2014-04-28 Thread Steve Gordon
- Original Message -
 Hi Stackers,
 
8--8--8--8--8--8--
 
 Proposal
 
 
 I propose to scrap the server groups API entirely and replace it with a
 simpler way to accomplish the same basic thing.
 
 Create two new options to nova boot:
 
  --near-tag TAG
 and
  --not-near-tag TAG
 
 The first would tell the scheduler to place the new VM near other VMs
 having a particular tag. The latter would tell the scheduler to place
 the new VM *not* near other VMs with a particular tag.

Would we continue to grow this set of arguments in response to the addition of 
new policies, how much do we expect this to grow? The two most likely additions 
I can think of are soft/best effort versions of the current two, are there 
any other proposals/ideas out there - I know we're a creative bunch ;)?

 What is a tag? Well, currently, since the Compute API doesn't have a
 concept of a single string tag, the tag could be a key=value pair that
 would be matched against the server extra properties.
 
 Once a real user-controlled simple string tags system is added to the
 Compute API, a tag would be just that, a simple string that may be
 attached or detached from some object (in this case, a server object).
 
 How does this solve all the issues highlighted above? In order, it
 solves the issues like so:
 
 1. There's no need to have any server group object any more. Servers
 have a set of tags (key/value pairs in v2/v3 API) that may be used to
 identify a type of server. The activity of launching an instance would
 now have options for the user to indicate their affinity preference,
 which removes the cognitive dissonance that happens due to the user
 needing to know what a server group is (a policy, not a group).

Would the user's affinity preference stay with the instance for consideration 
in future operations post-boot (either now or in a future extension of this 
functionality)?

 2. Since there is no more need to maintain a separate server group
 object, if a user launched 3 instances and then wanted to make sure that
 3 new instances don't end up on the same hosts, all the user needs to do
 is tag the existing instances with a tag, and issue a call to:
 
  nova boot --not-near-tag $TAG ...
 
 and the affinity policy is applied properly.

The fact that membership can't be changed, at least in the initial 
implementation, is explicitly called out in the design wiki for the server 
group api [1]. My understanding is that this was not because implementing an 
add/remove that works the way you suggest would have been particularly 
problematic but because user expectations when the group membership is modified 
are not just that the new instances booted into the group subsequently are 
placed with affinity/anti-affinity but that the existing instances that were 
added to the group are also evaluated and moved as necessary to ensure *all* 
members of the group meet the policy.

So in the example this would mean ensuring that all 6 VMs have anti-affinity, 
not just the latest 3 that are being booted do (or perhaps I am misreading what 
you are proposing?). Similarly there is an expectation that it's possible to 
look at a group and easily determine whether it was placed with a policy, and 
if so what that policy was (not saying that could not be implemented on top of 
your proposal, just recording for completeness).

Whether solutions to meet these expectations belongs in Nova or somewhere else 
is probably another matter but when dealing with users who use this 
functionality and they talk about modifying group membership *this* is what 
they expect. 
On the other hand this proposal does seem to offer more flexibility for some 
more complex use cases, for example where users want to place pairs of 
instances in their own instance groups with affinity, but have them placed with 
anti-affinity for other pairs. Perhaps I am missing something in the server 
groups design (or proposed extensions of it) on this point though.

I think everyone agrees that the server groups API as it stands is not the 
final solution here, but I think it's important to refer back to the previous 
design summit discussions [2][3] on this functionality and ensure any 
replacement caters not just to reimplementing the current state of server 
groups but also ensuring that it's easily extended to cover future needs 
(particularly those already discussed/considered in framing the current 
functionality).

Thanks,

Steve

[1] https://wiki.openstack.org/wiki/GroupApiExtension
[2] https://etherpad.openstack.org/p/group-scheduling
[3] https://etherpad.openstack.org/p/NovaIcehouse-Instance-Group-API

___
OpenStack-dev mailing list
OpenStack-dev@lists.openstack.org
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev


Re: [openstack-dev] [nova] Proposal: remove the server groups feature

2014-04-28 Thread Steve Gordon


- Original Message -
 On Fri, 25 Apr 2014 18:28:38 -0400
 Jay Pipes jaypi...@gmail.com wrote:
  
  
  Sure, maybe. AFAIK, it's only in the v2 API, though, not in the v3 API
  (sorry, I made a mistake about that in my original email). Is there a
  reason it wasn't added to the v3 API?
  
 
 We did have a pretty strong rule for most of the Icehouse
 development cycle to only merge new API features if the change was
 added either first to the V3 API or at the same time as the V2 API.
 However this (almost unintentionally) ended up getting relaxed whilst
 all the V2 vs V3 API discussions were occurring. As a result there are
 some features that were merged into V2 that we definitely need to now
 add to the V3 API in Juno.
 
 Since the V3 API is still experimental we have some flexibility, but
 transition pain for those moving from V2 to V3 is still going to be a
 factor in terms of what we want to support.
 
 Chris

Yeah, looks like this fell by the wayside during those discussions, the v3 
patchset linked from the blueprint is here:

https://review.openstack.org/#/c/70533/

-Steve

___
OpenStack-dev mailing list
OpenStack-dev@lists.openstack.org
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev


Re: [openstack-dev] [nova] Proposal: remove the server groups feature

2014-04-28 Thread Chris Friesen

On 04/25/2014 03:15 PM, Jay Pipes wrote:


There are myriad problems with the above user experience and
implementation. Let me explain them.

1. The user isn't creating a server group when they issue a nova
server-group-create call. They are creating a policy and calling it a
group. Cognitive dissonance results from this mismatch.


I actually don't think this is true.  From my perspective they are 
actually creating a group, and then when booting servers they can be 
added into the group.


The group happens to have a policy, it is not only a policy.


2. There's no way to add an existing server to this group.


In the original API there was a way to add existing servers to the 
group.  This didn't make it into the code that was submitted.  It is 
however supported by the instance group db API in nova.



3. There's no way to remove members from the group


In the original API there was a way to remove members from the group. 
This didn't make it into the code that was submitted.



4. There's no way to manually add members to the server group


Isn't this the same as item 2?


5. The act of telling the scheduler to place instances near or away from
some other instances has been hidden behind the server group API, which
means that users doing a nova help boot will see a --group option that
doesn't make much sense, as it doesn't describe the scheduling policy
activity.


There are many things hidden away that affect server booting...metadata 
matching between host aggregates and flavor extra specs, for instance.


As I understand it, originally the concept of server groups was more 
broad.  They supported multiple policies, arbitrary group metadata, etc. 
 The scheduler policy was only one of the things that could be 
associated with a group.  This is why the underlying database structure 
is more complicated than necessary for the current set of supported 
operations.


What we have currently is sort of a dumbed-down version but now that 
we have the basic support we can start adding in additional 
functionality as desired.


Chris

___
OpenStack-dev mailing list
OpenStack-dev@lists.openstack.org
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev


Re: [openstack-dev] [nova] Proposal: remove the server groups feature

2014-04-28 Thread Chris Friesen

On 04/28/2014 06:58 AM, Steve Gordon wrote:

- Original Message -



Create two new options to nova boot:

--near-tag TAG and --not-near-tag TAG

The first would tell the scheduler to place the new VM near other
VMs having a particular tag. The latter would tell the scheduler
to place the new VM *not* near other VMs with a particular tag.



Would we continue to grow this set of arguments in response to the
addition of new policies, how much do we expect this to grow? The two
most likely additions I can think of are soft/best effort
versions of the current two, are there any other proposals/ideas out
there - I know we're a creative bunch ;)?


One logical extension that came up previously is a max group size, maybe 
expressed as a quota or something.




1. There's no need to have any server group object any more.
Servers have a set of tags (key/value pairs in v2/v3 API) that may
be used to identify a type of server. The activity of launching an
instance would now have options for the user to indicate their
affinity preference, which removes the cognitive dissonance that
happens due to the user needing to know what a server group is (a
policy, not a group).



Would the user's affinity preference stay with the instance for
consideration in future operations post-boot (either now or in a
future extension of this functionality)?


Whichever way it's implemented, we need to preserve the boot time 
scheduler constraints so that any time we reschedule (migration, 
evacuation, resize, etc.) the constraints will be re-evaluated.


Chris

___
OpenStack-dev mailing list
OpenStack-dev@lists.openstack.org
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev


Re: [openstack-dev] [nova] Proposal: remove the server groups feature

2014-04-28 Thread Dan Smith
 2. There's no way to add an existing server to this group.
 
 In the original API there was a way to add existing servers to the
 group.  This didn't make it into the code that was submitted.  It is
 however supported by the instance group db API in nova.
 
 3. There's no way to remove members from the group
 
 In the original API there was a way to remove members from the group.
 This didn't make it into the code that was submitted.

Well, it didn't make it in because it was broken. If you add an instance
to a group after it's running, a migration may need to take place in
order to keep the semantics of the group. That means that for a while
the policy will be being violated, and if we can't migrate the instance
somewhere to satisfy the policy then we need to either drop it back out,
or be in violation. Either some additional states (such as being queued
for inclusion in a group, etc) may be required, or some additional
footnotes on what it means to be in a group might have to be made.

It was for the above reasons, IIRC, that we decided to leave that bit
out since the semantics and consequences clearly hadn't been fully
thought-out. Obviously they can be addressed, but I fear the result will
be ... ugly. I think there's a definite possibility that leaving out
those dynamic functions will look more desirable than an actual
implementation.

--Dan

___
OpenStack-dev mailing list
OpenStack-dev@lists.openstack.org
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev


Re: [openstack-dev] [nova] Proposal: remove the server groups feature

2014-04-28 Thread Chris Friesen

On 04/28/2014 11:22 AM, Dan Smith wrote:

2. There's no way to add an existing server to this group.


In the original API there was a way to add existing servers to the
group.  This didn't make it into the code that was submitted.  It is
however supported by the instance group db API in nova.


3. There's no way to remove members from the group


In the original API there was a way to remove members from the group.
This didn't make it into the code that was submitted.


Well, it didn't make it in because it was broken. If you add an instance
to a group after it's running, a migration may need to take place in
order to keep the semantics of the group. That means that for a while
the policy will be being violated, and if we can't migrate the instance
somewhere to satisfy the policy then we need to either drop it back out,
or be in violation. Either some additional states (such as being queued
for inclusion in a group, etc) may be required, or some additional
footnotes on what it means to be in a group might have to be made.


I think your comment actually applies to adding existing instances to a 
group.  There's no good reason not to allow removing instances from a group.



As for the case of addition, we could start with something simple...if 
adding an instance to a group would violate the group scheduling policy, 
then raise an exception.



It was for the above reasons, IIRC, that we decided to leave that bit
out since the semantics and consequences clearly hadn't been fully
thought-out. Obviously they can be addressed, but I fear the result will
be ... ugly. I think there's a definite possibility that leaving out
those dynamic functions will look more desirable than an actual
implementation.


Your idea of pending group membership doesn't sound too ugly.

That said, I would expect adding existing instances to a group to be 
something that would be done under fairly well-controlled circumstances. 
 In that case I think it would be reasonable to push the work of 
managing any migrations onto whoever is trying to create a group from 
existing instances.


Chris

___
OpenStack-dev mailing list
OpenStack-dev@lists.openstack.org
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev


Re: [openstack-dev] [nova] Proposal: remove the server groups feature

2014-04-28 Thread Mike Spreitzer
Steve Gordon sgor...@redhat.com wrote on 04/28/2014 08:58:35 AM:

 - Original Message -
  Hi Stackers,
  Proposal
  
  Create two new options to nova boot:
  
   --near-tag TAG
  and
   --not-near-tag TAG
  
  The first would tell the scheduler to place the new VM near other VMs
  having a particular tag. The latter would tell the scheduler to 
place
  the new VM *not* near other VMs with a particular tag.
 
 Would we continue to grow this set of arguments in response to the 
 addition of new policies, how much do we expect this to grow? The 
 two most likely additions I can think of are soft/best effort 
 versions of the current two, are there any other proposals/ideas out
 there - I know we're a creative bunch ;)?

I brought an extensive list to the last summit; see 
https://wiki.openstack.org/wiki/Heat/PolicyExtension (but concrete syntax 
proposals B and C, I only brought A at the time, and am editing B and C 
into existence now) and do not be distracted by the fact that it is a Heat 
proposal; the policy issues are prior issues for scheduling irrespective 
of heat involvement.  Note that I not only add policy types but also endow 
some of them with parameters.

Regards,
Mike

___
OpenStack-dev mailing list
OpenStack-dev@lists.openstack.org
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev


Re: [openstack-dev] [nova] Proposal: remove the server groups feature

2014-04-26 Thread Christopher Yeoh
On Fri, 25 Apr 2014 18:28:38 -0400
Jay Pipes jaypi...@gmail.com wrote:
 
  i) This is a feature that was discussed in at least one if not two
  Design Summits and went through a long review period, it wasn't one
  of those changes that merged in 24 hours before people could take a
  good look at it.
 
 Completely understood. That still doesn't mean we can't propose to get
 rid of it early instead of letting it sit around when an alternate
 implementation would be better for the user of OpenStack.

Long term stability is also very important though - the balance
between perfect and good enough. I think that raising the bar on what
we allow in the first place is really the key here (and that as
discussed previously may involve new features being considered
experimental for a period of time).

 
Whatever you feel about the implementation,  it is now in the API
  and we should assume that people have started coding against it.
 
 Sure, maybe. AFAIK, it's only in the v2 API, though, not in the v3 API
 (sorry, I made a mistake about that in my original email). Is there a
 reason it wasn't added to the v3 API?
 

We did have a pretty strong rule for most of the Icehouse
development cycle to only merge new API features if the change was
added either first to the V3 API or at the same time as the V2 API.
However this (almost unintentionally) ended up getting relaxed whilst
all the V2 vs V3 API discussions were occurring. As a result there are
some features that were merged into V2 that we definitely need to now
add to the V3 API in Juno.

Since the V3 API is still experimental we have some flexibility, but
transition pain for those moving from V2 to V3 is still going to be a
factor in terms of what we want to support.

Chris

___
OpenStack-dev mailing list
OpenStack-dev@lists.openstack.org
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev


Re: [openstack-dev] [nova] Proposal: remove the server groups feature

2014-04-26 Thread Hai Bo
On Sat, Apr 26, 2014 at 5:15 AM, Jay Pipes jaypi...@gmail.com wrote:

 Hi Stackers,

 When recently digging in to the new server group v3 API extension
 introduced in Icehouse, I was struck with a bit of cognitive dissonance
 that I can't seem to shake. While I understand and support the idea
 behind the feature (affinity and anti-affinity scheduling hints), I
 can't help but feel the implementation is half-baked and results in a
 very awkward user experience.

 The use case here is very simple:

 Alice wants to launch an instance and make sure that the instance does
 not land on a compute host that contains other instances of that type.

 The current user experience is that the user creates a server group
 like so:

 nova server-group-create $GROUP_NAME --policy=anti-affinity

 and then, when the user wishes to launch an instance and make sure it
 doesn't land on a host with another of that instance type, the user does
 the following:

 nova boot --group $GROUP_UUID ...

 There are myriad problems with the above user experience and
 implementation. Let me explain them.

 1. The user isn't creating a server group when they issue a nova
 server-group-create call. They are creating a policy and calling it a
 group. Cognitive dissonance results from this mismatch.

 2. There's no way to add an existing server to this group. What this
 means is that the user needs to effectively have pre-considered their
 environment and policy before ever launching a VM. To realize why this
 is a problem, consider the following:

  - User creates three VMs that consume high I/O utilization
  - User then wants to launch three more VMs of the same kind and make
 sure they don't end up on the same hosts as the others

 No can do, since the first three VMs weren't started using a --group
 scheduler hint.

 3. There's no way to remove members from the group

 4. There's no way to manually add members to the server group

 5. The act of telling the scheduler to place instances near or away from
 some other instances has been hidden behind the server group API, which
 means that users doing a nova help boot will see a --group option that
 doesn't make much sense, as it doesn't describe the scheduling policy
 activity.

 Proposal
 

 I propose to scrap the server groups API entirely and replace it with a
 simpler way to accomplish the same basic thing.

 Create two new options to nova boot:

  --near-tag TAG
 and
  --not-near-tag TAG


Hi jay,

I have a little question.
Whether it will support multiple tags for the server?
Maybe  we hope a server to near some servers and not near another servers
currently.

Best regards to you.
Ricky



 The first would tell the scheduler to place the new VM near other VMs
 having a particular tag. The latter would tell the scheduler to place
 the new VM *not* near other VMs with a particular tag.

 What is a tag? Well, currently, since the Compute API doesn't have a
 concept of a single string tag, the tag could be a key=value pair that
 would be matched against the server extra properties.

 Once a real user-controlled simple string tags system is added to the
 Compute API, a tag would be just that, a simple string that may be
 attached or detached from some object (in this case, a server object).

 How does this solve all the issues highlighted above? In order, it
 solves the issues like so:

 1. There's no need to have any server group object any more. Servers
 have a set of tags (key/value pairs in v2/v3 API) that may be used to
 identify a type of server. The activity of launching an instance would
 now have options for the user to indicate their affinity preference,
 which removes the cognitive dissonance that happens due to the user
 needing to know what a server group is (a policy, not a group).

 2. Since there is no more need to maintain a separate server group
 object, if a user launched 3 instances and then wanted to make sure that
 3 new instances don't end up on the same hosts, all the user needs to do
 is tag the existing instances with a tag, and issue a call to:

  nova boot --not-near-tag $TAG ...

 and the affinity policy is applied properly.

 3. Removal of members of the server group is no longer an issue.
 Simply untag a server to remove it from the set of servers you wish to
 use in applying some affinity policy

 4. Likewise, since there's no server group object, in order to relate an
 existing server to another is to simply place a tag on the server.

 5. The act of applying affinity policies is now directly related to the
 act of launching instances, which is where it should be.

 I'll type up a real blueprint spec for this, but wanted to throw the
 idea out there, since it's something that struck me recently when I
 tried to explain the new server groups feature.

 Thoughts and feedback welcome,
 -jay


 ___
 OpenStack-dev mailing list
 OpenStack-dev@lists.openstack.org
 

Re: [openstack-dev] [nova] Proposal: remove the server groups feature

2014-04-26 Thread Jay Lau
I think server group is an important feature especially when working with
heat auto scaling group, there is already some discussion for this
http://markmail.org/message/jl5wlx3nr3g53ko5

The current server group feature does support add/delete a VM instance
to/from the server group but seems not able to manage existing VM
instances, but this can be enhanced.

The server group feature need two steps to create the VM instance:
1) Create a server group with policy
2) Create VMs for the server group

What Jay Pipes proposed is using resource tags directly:
1) Create VMs with a resource tag to specify the policy.

I think that those two directions are very similar, but what Jay Pipes
proposed does not specify the resource group and seems the resource group
was implicitly specified in resource tag.

Just some of my understanding. Thanks!



2014-04-27 1:25 GMT+08:00 Vishvananda Ishaya vishvana...@gmail.com:


 On Apr 25, 2014, at 2:25 PM, Chris Behrens cbehr...@codestud.com wrote:

 
  On Apr 25, 2014, at 2:15 PM, Jay Pipes jaypi...@gmail.com wrote:
 
  Hi Stackers,
 
  When recently digging in to the new server group v3 API extension
  introduced in Icehouse, I was struck with a bit of cognitive dissonance
  that I can't seem to shake. While I understand and support the idea
  behind the feature (affinity and anti-affinity scheduling hints), I
  can't help but feel the implementation is half-baked and results in a
  very awkward user experience.
 
  I agree with all you said about this.
 
  Proposal
  
 
  I propose to scrap the server groups API entirely and replace it with a
  simpler way to accomplish the same basic thing.
 
  Create two new options to nova boot:
 
  --near-tag TAG
  and
  --not-near-tag TAG
 
  The first would tell the scheduler to place the new VM near other VMs
  having a particular tag. The latter would tell the scheduler to place
  the new VM *not* near other VMs with a particular tag.
 
  What is a tag? Well, currently, since the Compute API doesn't have a
  concept of a single string tag, the tag could be a key=value pair that
  would be matched against the server extra properties.
 
  You can actually already achieve this behavior… although with a little
 more work. There’s the Affinty filter which allows you to specify a
 same_host/different_host scheduler hint where you explicitly specify the
 instance uuids you want…  (the extra work is having to know the instance
 uuids).

 It was my understanding from previous discussions that having the concept
 of a group was necessary for future schediuling decisions, especially
 involving live migration. The uuids you need to be far from at launch time
 won’t necessarily be the ones you need to be far from when a migration is
 performed. Server groups handle this case, although Jay’s proposal of
 near/far from tag would also solve this as long as the near-to/far-from
 data was saved in the instance record. My only concern here is removing an
 api we just added, so a smoother transition would be preferable.

 Vish

 
  But yeah, I think this makes more sense to me.
 
  - Chris
 
 
 
  ___
  OpenStack-dev mailing list
  OpenStack-dev@lists.openstack.org
  http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev


 ___
 OpenStack-dev mailing list
 OpenStack-dev@lists.openstack.org
 http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev




-- 
Thanks,

Jay
___
OpenStack-dev mailing list
OpenStack-dev@lists.openstack.org
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev


Re: [openstack-dev] [nova] Proposal: remove the server groups feature

2014-04-26 Thread Mike Spreitzer
Jay Lau jay.lau@gmail.com wrote on 04/27/2014 12:31:01 AM:

 I think server group is an important feature especially when working
 with heat auto scaling group, there is already some discussion for this 
 http://markmail.org/message/jl5wlx3nr3g53ko5

 The current server group feature does support add/delete a VM 
 instance to/from the server group but seems not able to manage 
 existing VM instances, but this can be enhanced.

 The server group feature need two steps to create the VM instance:
 1) Create a server group with policy
 2) Create VMs for the server group

 What Jay Pipes proposed is using resource tags directly:
 1) Create VMs with a resource tag to specify the policy.

No, the tag contributes to the grouping; the policy is identified by the 
choice of command line switch (--affinity vs. --anti-affinity).

 I think that those two directions are very similar, but what Jay 
 Pipes proposed does not specify the resource group and seems the 
 resource group was implicitly specified in resource tag. 

In short, the proposal from Jay Pipes *does* have groups but their 
membership is declared in a different way than in the current server 
groups feature.  Jay's proposal is not really about *removing* server 
groups but rather it is a proposal to change their API.

Regards,
Mike___
OpenStack-dev mailing list
OpenStack-dev@lists.openstack.org
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev


Re: [openstack-dev] [nova] Proposal: remove the server groups feature

2014-04-25 Thread Chris Behrens

On Apr 25, 2014, at 2:15 PM, Jay Pipes jaypi...@gmail.com wrote:

 Hi Stackers,
 
 When recently digging in to the new server group v3 API extension
 introduced in Icehouse, I was struck with a bit of cognitive dissonance
 that I can't seem to shake. While I understand and support the idea
 behind the feature (affinity and anti-affinity scheduling hints), I
 can't help but feel the implementation is half-baked and results in a
 very awkward user experience.

I agree with all you said about this.

 Proposal
 
 
 I propose to scrap the server groups API entirely and replace it with a
 simpler way to accomplish the same basic thing.
 
 Create two new options to nova boot:
 
 --near-tag TAG
 and
 --not-near-tag TAG
 
 The first would tell the scheduler to place the new VM near other VMs
 having a particular tag. The latter would tell the scheduler to place
 the new VM *not* near other VMs with a particular tag.
 
 What is a tag? Well, currently, since the Compute API doesn't have a
 concept of a single string tag, the tag could be a key=value pair that
 would be matched against the server extra properties.

You can actually already achieve this behavior… although with a little more 
work. There’s the Affinty filter which allows you to specify a 
same_host/different_host scheduler hint where you explicitly specify the 
instance uuids you want…  (the extra work is having to know the instance uuids).

But yeah, I think this makes more sense to me.

- Chris



___
OpenStack-dev mailing list
OpenStack-dev@lists.openstack.org
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev


Re: [openstack-dev] [nova] Proposal: remove the server groups feature

2014-04-25 Thread Steve Gordon
- Original Message -
 5. The act of applying affinity policies is now directly related to the
 act of launching instances, which is where it should be.

Well, that may be another discussion :). Something I have been pondering of 
late is the intersection of the server groups feature with the find host and 
evacuate instance proposal that allows evacuation without specifying a target 
host - instead re-scheduling the instance [1]. 

User expectations, I think, in this case would be that the group policies 
(however implemented) would stay with the VM throughout its lifecycle (or at 
least until the policy was explicitly removed/changed) and be taken into 
account when evacuating in this fashion. With the current model this 
expectation appears to be met for anti-affinity, but when it comes to affinity 
I would expect that the scheduler will place the evacuated instance right back 
where it came from as it doesn't have enough understanding to attempt to 
evacuate the entire group at once.

-Steve

[1] https://blueprints.launchpad.net/nova/+spec/find-host-and-evacuate-instance

___
OpenStack-dev mailing list
OpenStack-dev@lists.openstack.org
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev


Re: [openstack-dev] [nova] Proposal: remove the server groups feature

2014-04-25 Thread Day, Phil
Hi Jay,

I'm going to disagree with you on this one, because:

i) This is a feature that was discussed in at least one if not two Design 
Summits and went through a long review period, it wasn't one of those changes 
that merged in 24 hours before people could take a good look at it.  Whatever 
you feel about the implementation,  it is now in the API and we should assume 
that people have started coding against it.  I don't think it gives any 
credibility to Openstack as a platform if we yank features back out just after 
they've landed. 

ii) Sever Group - It's a way of defining a group of servers, and the initial 
thing (only thing right now) you can define for such a group is the affinity or 
anti-affinity for scheduling.  Maybe in time we'll add other group properties 
or operations - like delete all the servers in a group (I know some QA folks 
that would love to have that feature).  I don't see why it shouldn't be 
possible to have a server group that doesn't have a scheduling policy 
associated to it.   I don't see any  Cognitive dissonance here - I think your 
just assuming that the only reason for being able to group servers is for 
scheduling.

iii) If the issue is that you can't add or remove servers from a group, then 
why don't we add those operations to the API (you could add a server to a group 
providing doing so  doesn't break any policy that might be associated with the 
group).   Seems like a useful addition to me.

iv) Since the user created the group, and chose a name for it that is 
presumably meaningful, then I don't understand why you think --group XXX 
isn't going to be meaningful to that same user ?

So I think there are a bunch of API operations missing, but I don't see any 
advantage in throwing away what's now in place and  replacing it with a tag 
mechanism that basically says everything with this tag is in a sort of group.

Cheers,
Phil


PS: Congrats on the TC election


 -Original Message-
 From: Jay Pipes [mailto:jaypi...@gmail.com]
 Sent: 25 April 2014 22:16
 To: OpenStack Development Mailing List
 Subject: [openstack-dev] [nova] Proposal: remove the server groups feature
 
 Hi Stackers,
 
 When recently digging in to the new server group v3 API extension
 introduced in Icehouse, I was struck with a bit of cognitive dissonance that I
 can't seem to shake. While I understand and support the idea behind the
 feature (affinity and anti-affinity scheduling hints), I can't help but feel 
 the
 implementation is half-baked and results in a very awkward user experience.
 
 The use case here is very simple:
 
 Alice wants to launch an instance and make sure that the instance does not
 land on a compute host that contains other instances of that type.
 
 The current user experience is that the user creates a server group
 like so:
 
 nova server-group-create $GROUP_NAME --policy=anti-affinity
 
 and then, when the user wishes to launch an instance and make sure it
 doesn't land on a host with another of that instance type, the user does the
 following:
 
 nova boot --group $GROUP_UUID ...
 
 There are myriad problems with the above user experience and
 implementation. Let me explain them.
 
 1. The user isn't creating a server group when they issue a nova server-
 group-create call. They are creating a policy and calling it a group. 
 Cognitive
 dissonance results from this mismatch.
 
 2. There's no way to add an existing server to this group. What this means
 is that the user needs to effectively have pre-considered their environment
 and policy before ever launching a VM. To realize why this is a problem,
 consider the following:
 
  - User creates three VMs that consume high I/O utilization
  - User then wants to launch three more VMs of the same kind and make
 sure they don't end up on the same hosts as the others
 
 No can do, since the first three VMs weren't started using a --group
 scheduler hint.
 
 3. There's no way to remove members from the group
 
 4. There's no way to manually add members to the server group
 
 5. The act of telling the scheduler to place instances near or away from some
 other instances has been hidden behind the server group API, which means
 that users doing a nova help boot will see a --group option that doesn't make
 much sense, as it doesn't describe the scheduling policy activity.
 
 Proposal
 
 
 I propose to scrap the server groups API entirely and replace it with a 
 simpler
 way to accomplish the same basic thing.
 
 Create two new options to nova boot:
 
  --near-tag TAG
 and
  --not-near-tag TAG
 
 The first would tell the scheduler to place the new VM near other VMs
 having a particular tag. The latter would tell the scheduler to place the 
 new
 VM *not* near other VMs with a particular tag.
 
 What is a tag? Well, currently, since the Compute API doesn't have a
 concept of a single string tag, the tag could be a key=value pair that would 
 be
 matched against the server extra properties.
 
 Once a real 

Re: [openstack-dev] [nova] Proposal: remove the server groups feature

2014-04-25 Thread Jay Pipes
On Fri, 2014-04-25 at 22:00 +, Day, Phil wrote:
 Hi Jay,
 
 I'm going to disagree with you on this one, because:

No worries, Phil, I expected some dissention and I completely appreciate
your feedback and perspective :)

 i) This is a feature that was discussed in at least one if not two Design 
 Summits and went through a long review period, it wasn't one of those changes 
 that merged in 24 hours before people could take a good look at it.

Completely understood. That still doesn't mean we can't propose to get
rid of it early instead of letting it sit around when an alternate
implementation would be better for the user of OpenStack.

   Whatever you feel about the implementation,  it is now in the API and we 
 should assume that people have started coding against it.

Sure, maybe. AFAIK, it's only in the v2 API, though, not in the v3 API
(sorry, I made a mistake about that in my original email). Is there a
reason it wasn't added to the v3 API?

   I don't think it gives any credibility to Openstack as a platform if we 
 yank features back out just after they've landed.

Perhaps not, though I think we have less credibility if we don't
recognize when a feature isn't implemented with users in mind and leave
it in the code base to the detriment and confusion of users. We
absolutely must, IMO, as a community, be able to say this isn't right
and have a path for changing or removing something.

If that path is deprecation vs outright removal, so be it, I'd be cool
with that. I'd just like to nip this anti-feature in the bud early so
that it doesn't become the next feature like file-injection to persist
in Nova well after its time has come and passed.

 ii) Sever Group - It's a way of defining a group of servers, and the initial 
 thing (only thing right now) you can define for such a group is the affinity 
 or anti-affinity for scheduling.

We already had ways of defining groups of servers. This new feature
doesn't actually define a group of servers. It defines a policy, which
is not particularly useful, as it's something that is better specified
at the time of launching.

   Maybe in time we'll add other group properties or operations - like delete 
 all the servers in a group (I know some QA folks that would love to have 
 that feature).

We already have the ability to define a group of servers using key=value
tags. Deleting all servers in a group is a three-line bash script that
loops over the results of a nova list command and calls nova delete.
Trust me, I've done group deletes in this way many times.

   I don't see why it shouldn't be possible to have a server group that 
 doesn't have a scheduling policy associated to it.

I don't think the grouping of servers should have *anything* to do with
scheduling :) That's the point of my proposal. Servers can and should be
grouped using simple tags or key=value pair tags.

The grouping of servers together doesn't have anything of substance to
do with scheduling policies.

I don't see any  Cognitive dissonance here - I think your just assuming 
 that the only reason for being able to group servers is for scheduling.

Again, I don't think scheduling and grouping of servers has anything to
do with each other, thus my proposal to remove the relationship between
groups of servers and scheduling policies, which is what the existing
server group API and implementation does.

 iii) If the issue is that you can't add or remove servers from a group, then 
 why don't we add those operations to the API (you could add a server to a 
 group providing doing so  doesn't break any policy that might be associated 
 with the group). 

We already have this ability today, thus my proposal to get rid of
server groups.

   Seems like a useful addition to me.

It's an addition that isn't needed, as we already have this today.

 iv) Since the user created the group, and chose a name for it that is 
 presumably meaningful, then I don't understand why you think --group XXX 
 isn't going to be meaningful to that same user ?

See point above about removing the unnecessary relationship between
grouping of servers and scheduling policies.

 So I think there are a bunch of API operations missing, but I don't see any 
 advantage in throwing away what's now in place and  replacing it with a tag 
 mechanism that basically says everything with this tag is in a sort of 
 group.

We already have the tag group mechanism in place, that's kind of what
I've been saying...

 PS: Congrats on the TC election

Cheers, appreciated. Looking forward to healthy debates and buying you a
few beers at the summit :)

best,
-jay

 
  -Original Message-
  From: Jay Pipes [mailto:jaypi...@gmail.com]
  Sent: 25 April 2014 22:16
  To: OpenStack Development Mailing List
  Subject: [openstack-dev] [nova] Proposal: remove the server groups feature
  
  Hi Stackers,
  
  When recently digging in to the new server group v3 API extension
  introduced in Icehouse, I was struck with a bit of cognitive 

Re: [openstack-dev] [nova] Proposal: remove the server groups feature

2014-04-25 Thread Russell Bryant
On 04/25/2014 05:15 PM, Jay Pipes wrote:
 Thoughts and feedback welcome,

I'd love to talk about how to improve this functionality, while still
allowing for future policy expansion.

Can we punt this discussion to summit though?  I don't think we need
much time.  Perhaps over a break or something.  I'd like to be involved
with this discussion and decision, but I'm out for the next month or so
(but will be at the summit).

-- 
Russell Bryant

___
OpenStack-dev mailing list
OpenStack-dev@lists.openstack.org
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev


Re: [openstack-dev] [nova] Proposal: remove the server groups feature

2014-04-25 Thread Mike Spreitzer
Jay Pipes jaypi...@gmail.com wrote on 04/25/2014 06:28:38 PM:

 On Fri, 2014-04-25 at 22:00 +, Day, Phil wrote:
  Hi Jay,
  
  I'm going to disagree with you on this one, because:
 
 No worries, Phil, I expected some dissention and I completely appreciate
 your feedback and perspective :)

I myself sit between the two camps on this one.  I share Jay's unhappiness 
with server groups, as they are today.  However, I see an evolutionary 
path forward from today's server groups to something that makes much more 
sense to me and my colleagues.  I do not see as clear a path forward from 
Jay's proposal, but am willing to think more about that.  I will start by 
outlining where I want to go, and then address the specific points that 
have been raised in this email thread so far.

I would like to see the OpenStack architecture have a place for what I 
have been calling holistic scheduling.  That is making a simultaneous 
scheduling decision about a whole collection of virtual resources of 
various types (Nova VMs, Cinder storage volumes, network bandwidth, ...), 
taking into account a rich composite policy statement.  This is not just a 
pipe dream, my group has been doing this for years.  What we are 
struggling with is finding an evolutionary path to a place where it can be 
done in an OpenStack context.  One part of the struggle is due to the fact 
that in our previous work the part that is analogous to Heat is not 
optional, while in OpenStack Heat is most definitely optional.  Some of 
the things I have written in the past have not clearly separated 
scheduling and Heat and left Heat optional, but please rest assured that I 
am making no proposal now to violate those things.  I see scheduling and 
orchestration as distinct functions; the potential for confusion arises 
because (a) holistic scheduling needs input that has some similarity to 
what you see in a Heat template today and (b) making the scheduling 
simultaneous requires moving it from its current place (downstream from 
orchestration) to an earlier place (upstream from orchestration).

The OpenStack community has historically used the word scheduling to 
refer to placement problems, always in the time-invariant 
now-and-forseeable future, and I am following that usage here.  Other 
communities consider scheduling to also include interesting variation 
over time, but I am not trying to bring that into this debate.  (Nor am I 
denying its interest and value, I am just trying to keep this discussion 
focused.)

The discussion in this email thread has recognized that scheduler hints 
are applied only at creation time today, but it has already been noted 
(e.g., in http://summit.openstack.org/cfp/details/99) that scheduling 
policy statements should be retained for the lifetime of the virtual 
resource.  That is true regardless of whether the policy statements come 
in through today's server groups, the alternate proposal from Jay Pipes, 
or some other alternative or evolution.

I agree with Jay that groups have no inherent connection to scheduling. My 
colleagues and I have found grouping to be a useful technique to make APIs 
and documents more concise, and we find a top-level group to be the 
natural scope for a simultaneous decision.  We have been working example 
problems with a non-trivial size and amount of structure; when you get 
beyond small simple examples you see the usefulness of grouping more 
clearly.  For a couple of examples, see a 3-tier web application in 
https://docs.google.com/drawings/d/1nridrUUwNaDrHQoGwSJ_KXYC7ik09wUuV3vXw1MyvlY 
and a deployment of an IBM product called Connections in 
https://docs.google.com/file/d/0BypF9OutGsW3ZUYwYkNjZGJFejQ (this latter 
example has been shorn of its networking policies, and is a literal 
abstract of something we did using software that could not cope with 
policies applied directly to virtual resources, so some of its groups are 
not well motivated --- but others *are*).  The groups are handy for making 
it possible to draw pictures without too many lines, and write documents 
that are readably concise.  But everything said with groups could be said 
without groups, if we allowed policy statements to be placed on virtual 
resources and on pairs of virtual resources --- it would just take a heck 
of a lot more policy statements.

If you want to make a simultaneous decision about several virtual 
resources, you need a description of all those virtual resources up-front. 
 So even in a totally Heat-free environment you find yourself wanting 
something that looks like a document or data structure describing multiple 
virtual resources --- and the policies that apply to them, and thus also 
the groups that allow for concise applications of policies; note also that 
the whole set of virtual resources involved is a group.

When you have an example of non-trivial size and structure, you generally 
do not want to make a change by a collection of atomic edits, each 
individually scheduled.