Re: [openstack-dev] Your suggestions in the BP

2014-06-02 Thread Stephen Balukoff
Hi ya'll!

Comments inline:


On Sun, Jun 1, 2014 at 1:09 PM, Brandon Logan brandon.lo...@rackspace.com
wrote:

 Hi Eugene and Sam,

 On Sun, 2014-06-01 at 12:07 +0400, Eugene Nikanorov wrote:
  Hi Sam,
 
  Eugene, please comment on the migration process bellow.
 
  I think that closing down the status handling should be done
  in phase 1.
  I don't mind. If you're talking about provisioning status then such
  status (if we're still going to maintain it per each kind of object)
  goes to various associations: loadbalancer-listener, or
  loadbalancer-listener-pool, etc.
  Not a big deal of course, it was just my initial intent to limit phase
  #1 as much as possible.

 I was hoping to limit it as well to keep it focused on just the
 refactoring portion.  I didn't want the scope to include all new
 features and changes under the sun.  It also makes reviewing much
 simpler.


I'm OK with limiting scope here so long as we don't implement something
that is effectively forward compatible with whatever we will probably
want to do in the future. (So, having a discussion around this is probably
worthwhile.)  To phrase this another way, what consumes the 'status'
information, and what do they really want to know?



 
 
  Missing to do so, will create tests and other depending
  workflows that assume the current status field, which will
  add  a technology debt to this new code.
  I'd say it would depend on the strategy options you're suggestion
  below.
  As far as bw compatibility is concerned (if it's concerned at all), we
  have to support existing status field, so that would not be any
  additional debt.
 
 
  Migration and co-existence:
  I think that it would be better to have the new object model
  and API done in a way that does not break existing code, and
  then switch the old api to redirect to the new api.
  Basically this means creating another lbaas plugin, that expose
  existing lbaas api extension.
  I'm not sure how this can be done considering the difference between
  new proposed api and existing api.
 
  This might be done in one of the two ways bellow:
  1. Rename all objects in the new api so you have a clear
  demarcation point. This might be sufficient.
  I'm not sure how this could be done, can you explain?
  I actually would consider changing the prefix to /v3/ to not to deal
  with any renamings, that would require some minor refactoring on
  extension framework side.
 His suggestion in the BP was to rename pool, healthmonitor, and member
 to group, healthcheck, and node respectively.  Since loadbalancer and
 listener are already new those don't have to be renamed.  This way the
 old object models and db tables remain intact and the old API can still
 function as before.
 
  2. Copy the existing LBaaS extension and create a
  new-lbaas extension with new object names, then create a
  new old lbaas extension that has the old API but redirect
  to the new API
  I also don't fully understand this, please explain.
 I need more clarification on this as well.  Sounds like you're saying to
 create a lbaas extension v2 with the new object names.  Then copy the
 existing lbaas extension and change it to redirect to the v2 extension.
 If that is the case, why create a new old lbaas and just change the
 old lbaas extension?
 
 
 
  Doing 2, can allow co-existence of old code with old drivers
  until new code with new drivers can take its place.
  New extension + new plugin, is that what you are suggesting? To me it
  would be the cleanest and the most simple way to execute the
  transition, but... i'm not sure it was a consensus on design session.

 I agree this would be the cleanest but I was under the impression this
 was not an accepted way to go.  I'd honestly prefer a v2 extension and
 v2 plugin.  This would require different names for the object model and
 db tables since you don't want the old api and new api sharing the same
 tables.  We can either append v2 to the names or rename them entirely.
 Sam suggested group for pool, healthcheck for healthmonitor, and node
 for member.  I'd prefer nodepool for pool myself.


nodepool isn't a bad name, eh. To throw this into the pot, too: How about
'backend' for the renamed pool (or does that imply too much)?



 Either way, I need to know if we can go with this route or not.  I've
 started on writing the code a bit but relationship conversations has
 stalled that some.  I think if we can go with this route it will make
 the code much more clear.

 Thanks,
 Brandon


Yep, knowing this is going to be key to where we need to put engineering
time into this, eh.

Stephen


-- 
Stephen Balukoff
Blue Box Group, LLC
(800)613-4305 x807
___
OpenStack-dev mailing list
OpenStack-dev@lists.openstack.org
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev


Re: [openstack-dev] Your suggestions in the BP

2014-06-01 Thread Samuel Bercovici
Hi Brandon Eugene and Everyone,

Eugene, please comment on the migration process bellow.

I think that closing down the status handling should be done in phase 1. 
Missing to do so, will create tests and other depending workflows that assume 
the current status field, which will add  a technology debt to this new code.

Migration and co-existence:
I think that it would be better to have the new object model and API done in a 
way that does not break existing code, and then switch the old api to 
redirect to the new api.
This might be done in one of the two ways bellow:
1. Rename all objects in the new api so you have a clear demarcation point. 
This might be sufficient.
2. Copy the existing LBaaS extension and create a new-lbaas extension with 
new object names, then create a new old lbaas extension that has the old 
API but redirect to the new API

Doing 2, can allow co-existence of old code with old drivers until new code 
with new drivers can take its place.

Regards,
-Sam.




-Original Message-
From: Brandon Logan [mailto:brandon.lo...@rackspace.com] 
Sent: Friday, May 30, 2014 6:38 PM
To: Samuel Bercovici
Subject: Your suggestions in the BP

Hi Sam!

Thanks for the suggestions.  I don't think the different statuses should be 
addressed in the blueprint.  I think it would be better left to have its own 
focus in its own blueprint.  I feel the same way about the subnet_id.  I think 
if this blueprint focuses just on the object model change and the migration to 
it, it would be better.

As for having a v2 version of all the table or entirely new tables.  Are you 
suggesting just keeping the old API going to the old object models and database 
tables?  Also, if say I renamed the pool object to nodepool (I prefer that over 
group), then are you also suggesting the new API will have a /nodepools 
resource along with the object model NodePool and database table nodepool?  I'm 
intrigued by this idea, but wasn't totally clear on what you were suggesting.  

Thanks,
Brandon


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


Re: [openstack-dev] Your suggestions in the BP

2014-06-01 Thread Eugene Nikanorov
Hi Sam,

Eugene, please comment on the migration process bellow.

 I think that closing down the status handling should be done in phase 1.

I don't mind. If you're talking about provisioning status then such status
(if we're still going to maintain it per each kind of object) goes to
various associations: loadbalancer-listener, or loadbalancer-listener-pool,
etc.
Not a big deal of course, it was just my initial intent to limit phase #1
as much as possible.

Missing to do so, will create tests and other depending workflows that
 assume the current status field, which will add  a technology debt to
 this new code.

I'd say it would depend on the strategy options you're suggestion below.
As far as bw compatibility is concerned (if it's concerned at all), we have
to support existing status field, so that would not be any additional debt.



 Migration and co-existence:
 I think that it would be better to have the new object model and API done
 in a way that does not break existing code, and then switch the old api
 to redirect to the new api.

Basically this means creating another lbaas plugin, that expose existing
lbaas api extension.
I'm not sure how this can be done considering the difference between new
proposed api and existing api.


 This might be done in one of the two ways bellow:
 1. Rename all objects in the new api so you have a clear demarcation
 point. This might be sufficient.

I'm not sure how this could be done, can you explain?
I actually would consider changing the prefix to /v3/ to not to deal with
any renamings, that would require some minor refactoring on extension
framework side.


 2. Copy the existing LBaaS extension and create a new-lbaas extension
 with new object names, then create a new old lbaas extension that has the
 old API but redirect to the new API

I also don't fully understand this, please explain.


 Doing 2, can allow co-existence of old code with old drivers until new
 code with new drivers can take its place.

New extension + new plugin, is that what you are suggesting? To me it would
be the cleanest and the most simple way to execute the transition, but...
i'm not sure it was a consensus on design session.


Thanks,
Eugene.


 Regards,
 -Sam.




 -Original Message-
 From: Brandon Logan [mailto:brandon.lo...@rackspace.com]
 Sent: Friday, May 30, 2014 6:38 PM
 To: Samuel Bercovici
 Subject: Your suggestions in the BP

 Hi Sam!

 Thanks for the suggestions.  I don't think the different statuses should
 be addressed in the blueprint.  I think it would be better left to have its
 own focus in its own blueprint.  I feel the same way about the subnet_id.
  I think if this blueprint focuses just on the object model change and the
 migration to it, it would be better.

 As for having a v2 version of all the table or entirely new tables.  Are
 you suggesting just keeping the old API going to the old object models and
 database tables?  Also, if say I renamed the pool object to nodepool (I
 prefer that over group), then are you also suggesting the new API will have
 a /nodepools resource along with the object model NodePool and database
 table nodepool?  I'm intrigued by this idea, but wasn't totally clear on
 what you were suggesting.

 Thanks,
 Brandon



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


Re: [openstack-dev] Your suggestions in the BP

2014-06-01 Thread Brandon Logan
Hi Eugene and Sam,

On Sun, 2014-06-01 at 12:07 +0400, Eugene Nikanorov wrote:
 Hi Sam,
 
 Eugene, please comment on the migration process bellow.
 
 I think that closing down the status handling should be done
 in phase 1.
 I don't mind. If you're talking about provisioning status then such
 status (if we're still going to maintain it per each kind of object)
 goes to various associations: loadbalancer-listener, or
 loadbalancer-listener-pool, etc. 
 Not a big deal of course, it was just my initial intent to limit phase
 #1 as much as possible.

I was hoping to limit it as well to keep it focused on just the
refactoring portion.  I didn't want the scope to include all new
features and changes under the sun.  It also makes reviewing much
simpler.

 
 
 Missing to do so, will create tests and other depending
 workflows that assume the current status field, which will
 add  a technology debt to this new code.
 I'd say it would depend on the strategy options you're suggestion
 below.
 As far as bw compatibility is concerned (if it's concerned at all), we
 have to support existing status field, so that would not be any
 additional debt.
  
 
 Migration and co-existence:
 I think that it would be better to have the new object model
 and API done in a way that does not break existing code, and
 then switch the old api to redirect to the new api.
 Basically this means creating another lbaas plugin, that expose
 existing lbaas api extension.
 I'm not sure how this can be done considering the difference between
 new proposed api and existing api.
  
 This might be done in one of the two ways bellow:
 1. Rename all objects in the new api so you have a clear
 demarcation point. This might be sufficient.
 I'm not sure how this could be done, can you explain?
 I actually would consider changing the prefix to /v3/ to not to deal
 with any renamings, that would require some minor refactoring on
 extension framework side.
His suggestion in the BP was to rename pool, healthmonitor, and member
to group, healthcheck, and node respectively.  Since loadbalancer and
listener are already new those don't have to be renamed.  This way the
old object models and db tables remain intact and the old API can still
function as before.
  
 2. Copy the existing LBaaS extension and create a
 new-lbaas extension with new object names, then create a
 new old lbaas extension that has the old API but redirect
 to the new API
 I also don't fully understand this, please explain.
I need more clarification on this as well.  Sounds like you're saying to
create a lbaas extension v2 with the new object names.  Then copy the
existing lbaas extension and change it to redirect to the v2 extension.
If that is the case, why create a new old lbaas and just change the
old lbaas extension?
 
 
 
 Doing 2, can allow co-existence of old code with old drivers
 until new code with new drivers can take its place.
 New extension + new plugin, is that what you are suggesting? To me it
 would be the cleanest and the most simple way to execute the
 transition, but... i'm not sure it was a consensus on design session.

I agree this would be the cleanest but I was under the impression this
was not an accepted way to go.  I'd honestly prefer a v2 extension and
v2 plugin.  This would require different names for the object model and
db tables since you don't want the old api and new api sharing the same
tables.  We can either append v2 to the names or rename them entirely.
Sam suggested group for pool, healthcheck for healthmonitor, and node
for member.  I'd prefer nodepool for pool myself.  

Either way, I need to know if we can go with this route or not.  I've
started on writing the code a bit but relationship conversations has
stalled that some.  I think if we can go with this route it will make
the code much more clear.

Thanks,
Brandon

  
 
 
 Thanks,
 Eugene.
 
 
 
 Regards,
 -Sam.
 
 
 
 
 -Original Message-
 From: Brandon Logan [mailto:brandon.lo...@rackspace.com]
 Sent: Friday, May 30, 2014 6:38 PM
 To: Samuel Bercovici
 Subject: Your suggestions in the BP
 
 Hi Sam!
 
 Thanks for the suggestions.  I don't think the different
 statuses should be addressed in the blueprint.  I think it
 would be better left to have its own focus in its own
 blueprint.  I feel the same way about the subnet_id.  I think
 if this blueprint focuses just on the object model change and
 the migration to it, it would be better.
 
 As for having a v2 version of all the table or entirely new
 tables.  Are you suggesting just keeping the old API going to
 the old object models and database tables?  Also,