Re: [openstack-dev] [cinder][nova] Is volume connection_info modeled/documented anywhere?

2015-06-10 Thread Duncan Thomas
I don't think you need an entry per driver, you need an entry per
connection type - iSCSI, FC, DRDB, CEPH being the ones I can think of off
the top of my head
On 10 Jun 2015 16:57, Matt Riedemann mrie...@linux.vnet.ibm.com wrote:

 While investigating/discussing bug 1463525 [1] I remembered how little I
 know about what can actually come out of the connection_info dict returned
 from the os-initialize_connection cinder API call.

 So we added some debug logging in nova and I remembered that there are
 potentially credentials (auth_password) stored in connection_info, so we
 have a bug to clean that up in Nova [2].

 The plan is to model connection_info using objects where we have a parent
 object BdmConnectionInfo containing the common keys, like
 'driver_volume_type' and 'data', and then child objects for the
 vendor-specific connection_info objects, like RbdBdmConnectionInfo,
 ISCSIBdmConnectionInfo, etc.

 The problem I have right now is knowing what can all be in there, since
 there are a ton of vendor drivers in Cinder.

 Is anyone aware of a wiki page or devref or anything that documents what
 can be in that wild west connection_info dict?  If not, the first thing I
 was going to do was start documenting that - but where?  It seems it should
 really be modeled in Cinder since it is part of the API contract and if a
 vendor driver were to say rename or drop a key from the connection_info
 they were returning in os-initialize_connection it would be a backwards
 incompatible change.

 Is devref best for this with a listing for each vendor driver?  At least
 then it would be versioned with the code and updates could be made as new
 keys are added to connection_info or new drivers are added to Cinder.

 I'm looking for any advice here in how to get started since I don't
 primarily work on Cinder and don't have a full history here.

 [1] https://bugs.launchpad.net/cinder/+bug/1463525
 [2] https://bugs.launchpad.net/nova/+bug/1321785

 --

 Thanks,

 Matt Riedemann


 __
 OpenStack Development Mailing List (not for usage questions)
 Unsubscribe: openstack-dev-requ...@lists.openstack.org?subject:unsubscribe
 http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev

__
OpenStack Development Mailing List (not for usage questions)
Unsubscribe: openstack-dev-requ...@lists.openstack.org?subject:unsubscribe
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev


[openstack-dev] [cinder][nova] Is volume connection_info modeled/documented anywhere?

2015-06-10 Thread Matt Riedemann
While investigating/discussing bug 1463525 [1] I remembered how little I 
know about what can actually come out of the connection_info dict 
returned from the os-initialize_connection cinder API call.


So we added some debug logging in nova and I remembered that there are 
potentially credentials (auth_password) stored in connection_info, so we 
have a bug to clean that up in Nova [2].


The plan is to model connection_info using objects where we have a 
parent object BdmConnectionInfo containing the common keys, like 
'driver_volume_type' and 'data', and then child objects for the 
vendor-specific connection_info objects, like RbdBdmConnectionInfo, 
ISCSIBdmConnectionInfo, etc.


The problem I have right now is knowing what can all be in there, since 
there are a ton of vendor drivers in Cinder.


Is anyone aware of a wiki page or devref or anything that documents what 
can be in that wild west connection_info dict?  If not, the first thing 
I was going to do was start documenting that - but where?  It seems it 
should really be modeled in Cinder since it is part of the API contract 
and if a vendor driver were to say rename or drop a key from the 
connection_info they were returning in os-initialize_connection it would 
be a backwards incompatible change.


Is devref best for this with a listing for each vendor driver?  At least 
then it would be versioned with the code and updates could be made as 
new keys are added to connection_info or new drivers are added to Cinder.


I'm looking for any advice here in how to get started since I don't 
primarily work on Cinder and don't have a full history here.


[1] https://bugs.launchpad.net/cinder/+bug/1463525
[2] https://bugs.launchpad.net/nova/+bug/1321785

--

Thanks,

Matt Riedemann


__
OpenStack Development Mailing List (not for usage questions)
Unsubscribe: openstack-dev-requ...@lists.openstack.org?subject:unsubscribe
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev


Re: [openstack-dev] [cinder][nova] Is volume connection_info modeled/documented anywhere?

2015-06-10 Thread John Griffith
On Wed, Jun 10, 2015 at 7:54 AM, Matt Riedemann mrie...@linux.vnet.ibm.com
wrote:

 While investigating/discussing bug 1463525 [1] I remembered how little I
 know about what can actually come out of the connection_info dict returned
 from the os-initialize_connection cinder API call.

 So we added some debug logging in nova and I remembered that there are
 potentially credentials (auth_password) stored in connection_info, so we
 have a bug to clean that up in Nova [2].

 The plan is to model connection_info using objects where we have a parent
 object BdmConnectionInfo containing the common keys, like
 'driver_volume_type' and 'data', and then child objects for the
 vendor-specific connection_info objects, like RbdBdmConnectionInfo,
 ISCSIBdmConnectionInfo, etc.

 The problem I have right now is knowing what can all be in there, since
 there are a ton of vendor drivers in Cinder.

 Is anyone aware of a wiki page or devref or anything that documents what
 can be in that wild west connection_info dict?  If not, the first thing I
 was going to do was start documenting that - but where?  It seems it should
 really be modeled in Cinder since it is part of the API contract and if a
 vendor driver were to say rename or drop a key from the connection_info
 they were returning in os-initialize_connection it would be a backwards
 incompatible change.

 Is devref best for this with a listing for each vendor driver?  At least
 then it would be versioned with the code and updates could be made as new
 keys are added to connection_info or new drivers are added to Cinder.

 I'm looking for any advice here in how to get started since I don't
 primarily work on Cinder and don't have a full history here.

 [1] https://bugs.launchpad.net/cinder/+bug/1463525
 [2] https://bugs.launchpad.net/nova/+bug/1321785

 --

 Thanks,

 Matt Riedemann


 __
 OpenStack Development Mailing List (not for usage questions)
 Unsubscribe: openstack-dev-requ...@lists.openstack.org?subject:unsubscribe
 http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev


​Hi Matt,

This used to be much simpler than it is now, so I think documenting it in
the cinder dev docs is a great idea.  The basics of initialize_connection
are documented via a comment (a not so great one) in the code here [1]
which will point you to here [2].

The challenge is as you've noticed things like RBD and now FC and all of
the other crazy transport layers that are getting thrown in.  I don't have
good info on the non-iscsi items, but sounds like you found the RBD stuff
the hard way, maybe the FC stuff is in the code somewhere as well.

I think each of the unique items have their own libvirt connection class,
so that kinda helps organize it a bit.

Also there the provider_* fields in the model update that come in (best
place to see those is in the DB model).

Anyway, I think this is would be great for us to have; I'm happy to help as
much or as little as you like, just hit me up on IRC if you want.

Thanks,
John

[1]:
https://github.com/openstack/cinder/blob/master/cinder/volume/targets/iscsi.py#L278
​
[2]:
https://github.com/openstack/cinder/blob/master/cinder/volume/targets/iscsi.py#L53
__
OpenStack Development Mailing List (not for usage questions)
Unsubscribe: openstack-dev-requ...@lists.openstack.org?subject:unsubscribe
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev