* Cinder doesn't work with the current rados python bindings @ 2016-12-13 20:29 Victor Denisov 2016-12-13 21:38 ` Jason Dillaman 2016-12-14 9:17 ` Alexey Sheplyakov 0 siblings, 2 replies; 10+ messages in thread From: Victor Denisov @ 2016-12-13 20:29 UTC (permalink / raw) To: ceph-devel Hello, Who knows where pybind/rados/rados.pyx came from? I talked to a guy in the cinder development team - he tried to build his code against the latest python bindings from master. It looks like the api's changed. Rados.conf_get('features') used to return an integer. It returns a string right now. I looked into the git history and I see that pybind.pyx has been where it's right now only since February this year. I presume cinder's using an older version. Can someone advise me on how I can track down the changes in python bindings. Thank you in advance. Victor. ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: Cinder doesn't work with the current rados python bindings 2016-12-13 20:29 Cinder doesn't work with the current rados python bindings Victor Denisov @ 2016-12-13 21:38 ` Jason Dillaman 2016-12-14 0:10 ` Victor Denisov 2016-12-14 9:17 ` Alexey Sheplyakov 1 sibling, 1 reply; 10+ messages in thread From: Jason Dillaman @ 2016-12-13 21:38 UTC (permalink / raw) To: Victor Denisov; +Cc: ceph-devel Are you referring to rbd_default_features [1]? If so, that was a change with unintentional consequences in the master branch that I will need to fix before the final Kraken release. [1] https://github.com/openstack/cinder/blob/9fcb3bf1ad00913654872858d0cec839a6a2f0c8/cinder/volume/drivers/rbd.py#L152 On Tue, Dec 13, 2016 at 3:29 PM, Victor Denisov <vdenisov@mirantis.com> wrote: > Hello, > > Who knows where pybind/rados/rados.pyx came from? > I talked to a guy in the cinder development team - he tried to build > his code against the latest python bindings from master. > It looks like the api's changed. Rados.conf_get('features') used to > return an integer. > It returns a string right now. > > I looked into the git history and I see that pybind.pyx has been where > it's right now only since February this year. I presume cinder's using > an older version. > > Can someone advise me on how I can track down the changes in python bindings. > > Thank you in advance. > > Victor. > -- > To unsubscribe from this list: send the line "unsubscribe ceph-devel" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html -- Jason ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: Cinder doesn't work with the current rados python bindings 2016-12-13 21:38 ` Jason Dillaman @ 2016-12-14 0:10 ` Victor Denisov 2016-12-14 0:24 ` Jason Dillaman 0 siblings, 1 reply; 10+ messages in thread From: Victor Denisov @ 2016-12-14 0:10 UTC (permalink / raw) To: Jason Dillaman; +Cc: ceph-devel Yes. This is exactly the line I mean. Is there any chance I can do it myself? What kind of change is required? I can unblock the cinder guy as well as contribute. Let me know if I can be useful. Thanks. V. On Tue, Dec 13, 2016 at 1:38 PM, Jason Dillaman <jdillama@redhat.com> wrote: > Are you referring to rbd_default_features [1]? If so, that was a > change with unintentional consequences in the master branch that I > will need to fix before the final Kraken release. > > [1] https://github.com/openstack/cinder/blob/9fcb3bf1ad00913654872858d0cec839a6a2f0c8/cinder/volume/drivers/rbd.py#L152 > > On Tue, Dec 13, 2016 at 3:29 PM, Victor Denisov <vdenisov@mirantis.com> wrote: >> Hello, >> >> Who knows where pybind/rados/rados.pyx came from? >> I talked to a guy in the cinder development team - he tried to build >> his code against the latest python bindings from master. >> It looks like the api's changed. Rados.conf_get('features') used to >> return an integer. >> It returns a string right now. >> >> I looked into the git history and I see that pybind.pyx has been where >> it's right now only since February this year. I presume cinder's using >> an older version. >> >> Can someone advise me on how I can track down the changes in python bindings. >> >> Thank you in advance. >> >> Victor. >> -- >> To unsubscribe from this list: send the line "unsubscribe ceph-devel" in >> the body of a message to majordomo@vger.kernel.org >> More majordomo info at http://vger.kernel.org/majordomo-info.html > > > > -- > Jason ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: Cinder doesn't work with the current rados python bindings 2016-12-14 0:10 ` Victor Denisov @ 2016-12-14 0:24 ` Jason Dillaman 2016-12-14 0:26 ` Victor Denisov 2016-12-14 9:44 ` Mykola Golub 0 siblings, 2 replies; 10+ messages in thread From: Jason Dillaman @ 2016-12-14 0:24 UTC (permalink / raw) To: Victor Denisov; +Cc: ceph-devel I actually already opened a ticket for this [1] and started to fix it since I would consider this a release blocker for Kraken. [1] http://tracker.ceph.com/issues/18247 On Tue, Dec 13, 2016 at 7:10 PM, Victor Denisov <vdenisov@mirantis.com> wrote: > Yes. This is exactly the line I mean. > Is there any chance I can do it myself? > What kind of change is required? > I can unblock the cinder guy as well as contribute. > Let me know if I can be useful. > > Thanks. > V. > > On Tue, Dec 13, 2016 at 1:38 PM, Jason Dillaman <jdillama@redhat.com> wrote: >> Are you referring to rbd_default_features [1]? If so, that was a >> change with unintentional consequences in the master branch that I >> will need to fix before the final Kraken release. >> >> [1] https://github.com/openstack/cinder/blob/9fcb3bf1ad00913654872858d0cec839a6a2f0c8/cinder/volume/drivers/rbd.py#L152 >> >> On Tue, Dec 13, 2016 at 3:29 PM, Victor Denisov <vdenisov@mirantis.com> wrote: >>> Hello, >>> >>> Who knows where pybind/rados/rados.pyx came from? >>> I talked to a guy in the cinder development team - he tried to build >>> his code against the latest python bindings from master. >>> It looks like the api's changed. Rados.conf_get('features') used to >>> return an integer. >>> It returns a string right now. >>> >>> I looked into the git history and I see that pybind.pyx has been where >>> it's right now only since February this year. I presume cinder's using >>> an older version. >>> >>> Can someone advise me on how I can track down the changes in python bindings. >>> >>> Thank you in advance. >>> >>> Victor. >>> -- >>> To unsubscribe from this list: send the line "unsubscribe ceph-devel" in >>> the body of a message to majordomo@vger.kernel.org >>> More majordomo info at http://vger.kernel.org/majordomo-info.html >> >> >> >> -- >> Jason -- Jason ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: Cinder doesn't work with the current rados python bindings 2016-12-14 0:24 ` Jason Dillaman @ 2016-12-14 0:26 ` Victor Denisov 2016-12-14 9:44 ` Mykola Golub 1 sibling, 0 replies; 10+ messages in thread From: Victor Denisov @ 2016-12-14 0:26 UTC (permalink / raw) To: Jason Dillaman; +Cc: ceph-devel I see. Thank you. On Tue, Dec 13, 2016 at 4:24 PM, Jason Dillaman <jdillama@redhat.com> wrote: > I actually already opened a ticket for this [1] and started to fix it > since I would consider this a release blocker for Kraken. > > [1] http://tracker.ceph.com/issues/18247 > > On Tue, Dec 13, 2016 at 7:10 PM, Victor Denisov <vdenisov@mirantis.com> wrote: >> Yes. This is exactly the line I mean. >> Is there any chance I can do it myself? >> What kind of change is required? >> I can unblock the cinder guy as well as contribute. >> Let me know if I can be useful. >> >> Thanks. >> V. >> >> On Tue, Dec 13, 2016 at 1:38 PM, Jason Dillaman <jdillama@redhat.com> wrote: >>> Are you referring to rbd_default_features [1]? If so, that was a >>> change with unintentional consequences in the master branch that I >>> will need to fix before the final Kraken release. >>> >>> [1] https://github.com/openstack/cinder/blob/9fcb3bf1ad00913654872858d0cec839a6a2f0c8/cinder/volume/drivers/rbd.py#L152 >>> >>> On Tue, Dec 13, 2016 at 3:29 PM, Victor Denisov <vdenisov@mirantis.com> wrote: >>>> Hello, >>>> >>>> Who knows where pybind/rados/rados.pyx came from? >>>> I talked to a guy in the cinder development team - he tried to build >>>> his code against the latest python bindings from master. >>>> It looks like the api's changed. Rados.conf_get('features') used to >>>> return an integer. >>>> It returns a string right now. >>>> >>>> I looked into the git history and I see that pybind.pyx has been where >>>> it's right now only since February this year. I presume cinder's using >>>> an older version. >>>> >>>> Can someone advise me on how I can track down the changes in python bindings. >>>> >>>> Thank you in advance. >>>> >>>> Victor. >>>> -- >>>> To unsubscribe from this list: send the line "unsubscribe ceph-devel" in >>>> the body of a message to majordomo@vger.kernel.org >>>> More majordomo info at http://vger.kernel.org/majordomo-info.html >>> >>> >>> >>> -- >>> Jason > > > > -- > Jason ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: Cinder doesn't work with the current rados python bindings 2016-12-14 0:24 ` Jason Dillaman 2016-12-14 0:26 ` Victor Denisov @ 2016-12-14 9:44 ` Mykola Golub 2016-12-14 13:39 ` Jason Dillaman 1 sibling, 1 reply; 10+ messages in thread From: Mykola Golub @ 2016-12-14 9:44 UTC (permalink / raw) To: dillaman; +Cc: Victor Denisov, ceph-devel Could we add to API something like below? int rbd_get_default_features(rados_ioctx_t ioctx, uint64_t *features); or uint64_t rbd_get_default_features(rados_ioctx_t ioctx); (depending on if we want to fail when rbd_default_features is specified incorrectly in config file). This would reduced code duplication (rbd::utils::parse_rbd_default_features and librbd::utils::parse_rbd_default_features), could be used by cinder, and might be helpful for other users, who would want just to add a necessary future to the default ones when creating an image: features = rbd_get_default_features(ioctx); features |= RBD_FEATURE_JOURNALING; rbd_create(..., features); On Tue, Dec 13, 2016 at 07:24:02PM -0500, Jason Dillaman wrote: > I actually already opened a ticket for this [1] and started to fix it > since I would consider this a release blocker for Kraken. > > [1] http://tracker.ceph.com/issues/18247 > > On Tue, Dec 13, 2016 at 7:10 PM, Victor Denisov <vdenisov@mirantis.com> wrote: > > Yes. This is exactly the line I mean. > > Is there any chance I can do it myself? > > What kind of change is required? > > I can unblock the cinder guy as well as contribute. > > Let me know if I can be useful. > > > > Thanks. > > V. > > > > On Tue, Dec 13, 2016 at 1:38 PM, Jason Dillaman <jdillama@redhat.com> wrote: > >> Are you referring to rbd_default_features [1]? If so, that was a > >> change with unintentional consequences in the master branch that I > >> will need to fix before the final Kraken release. > >> > >> [1] https://github.com/openstack/cinder/blob/9fcb3bf1ad00913654872858d0cec839a6a2f0c8/cinder/volume/drivers/rbd.py#L152 > >> > >> On Tue, Dec 13, 2016 at 3:29 PM, Victor Denisov <vdenisov@mirantis.com> wrote: > >>> Hello, > >>> > >>> Who knows where pybind/rados/rados.pyx came from? > >>> I talked to a guy in the cinder development team - he tried to build > >>> his code against the latest python bindings from master. > >>> It looks like the api's changed. Rados.conf_get('features') used to > >>> return an integer. > >>> It returns a string right now. > >>> > >>> I looked into the git history and I see that pybind.pyx has been where > >>> it's right now only since February this year. I presume cinder's using > >>> an older version. > >>> > >>> Can someone advise me on how I can track down the changes in python bindings. > >>> > >>> Thank you in advance. > >>> > >>> Victor. > >>> -- > >>> To unsubscribe from this list: send the line "unsubscribe ceph-devel" in > >>> the body of a message to majordomo@vger.kernel.org > >>> More majordomo info at http://vger.kernel.org/majordomo-info.html > >> > >> > >> > >> -- > >> Jason > > > > -- > Jason > -- > To unsubscribe from this list: send the line "unsubscribe ceph-devel" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html -- Mykola Golub ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: Cinder doesn't work with the current rados python bindings 2016-12-14 9:44 ` Mykola Golub @ 2016-12-14 13:39 ` Jason Dillaman 2016-12-14 14:12 ` Mykola Golub 0 siblings, 1 reply; 10+ messages in thread From: Jason Dillaman @ 2016-12-14 13:39 UTC (permalink / raw) To: Mykola Golub; +Cc: Victor Denisov, ceph-devel In the short and medium term, there isn't any way to get multiple versions of OpenStack to stop directly parsing librbd configuration options and switch to new API methods. The only reason they are overriding the default image features is to ensure layering support is enabled. In the C/C++ APIs, we have a clean way [1] to add individual features while keeping the default feature set, but this isn't currently exposed in the Python API. For the Kraken release, I think the only two real options are to (1) add internal support for a config validator that takes the human friendly, comma delimited feature names and automatically converts them to the integer that has previously been expected, or (2) revert the change and go back to using a non-user friendly bitmask. I am almost finished w/ my PR for option (1) and I'll get it up for review today. It eliminates that code duplication in the rbd CLI and librbd, which is an added bonus. The downside is that because of the current architecture where all possible Ceph configuration values are "owned" and parsed by common code within librados, that validator needs to live there since librbd has no way to programmatically add a custom validator for any and all instances of a Rados object. [1] https://github.com/ceph/ceph/blob/master/src/include/rbd/librbd.h#L178 On Wed, Dec 14, 2016 at 4:44 AM, Mykola Golub <mgolub@mirantis.com> wrote: > Could we add to API something like below? > > int rbd_get_default_features(rados_ioctx_t ioctx, uint64_t *features); > > or > > uint64_t rbd_get_default_features(rados_ioctx_t ioctx); > > (depending on if we want to fail when rbd_default_features is > specified incorrectly in config file). > > This would reduced code duplication (rbd::utils::parse_rbd_default_features > and librbd::utils::parse_rbd_default_features), could be used by cinder, > and might be helpful for other users, who would want just to add a > necessary future to the default ones when creating an image: > > features = rbd_get_default_features(ioctx); > features |= RBD_FEATURE_JOURNALING; > rbd_create(..., features); > > On Tue, Dec 13, 2016 at 07:24:02PM -0500, Jason Dillaman wrote: >> I actually already opened a ticket for this [1] and started to fix it >> since I would consider this a release blocker for Kraken. >> >> [1] http://tracker.ceph.com/issues/18247 >> >> On Tue, Dec 13, 2016 at 7:10 PM, Victor Denisov <vdenisov@mirantis.com> wrote: >> > Yes. This is exactly the line I mean. >> > Is there any chance I can do it myself? >> > What kind of change is required? >> > I can unblock the cinder guy as well as contribute. >> > Let me know if I can be useful. >> > >> > Thanks. >> > V. >> > >> > On Tue, Dec 13, 2016 at 1:38 PM, Jason Dillaman <jdillama@redhat.com> wrote: >> >> Are you referring to rbd_default_features [1]? If so, that was a >> >> change with unintentional consequences in the master branch that I >> >> will need to fix before the final Kraken release. >> >> >> >> [1] https://github.com/openstack/cinder/blob/9fcb3bf1ad00913654872858d0cec839a6a2f0c8/cinder/volume/drivers/rbd.py#L152 >> >> >> >> On Tue, Dec 13, 2016 at 3:29 PM, Victor Denisov <vdenisov@mirantis.com> wrote: >> >>> Hello, >> >>> >> >>> Who knows where pybind/rados/rados.pyx came from? >> >>> I talked to a guy in the cinder development team - he tried to build >> >>> his code against the latest python bindings from master. >> >>> It looks like the api's changed. Rados.conf_get('features') used to >> >>> return an integer. >> >>> It returns a string right now. >> >>> >> >>> I looked into the git history and I see that pybind.pyx has been where >> >>> it's right now only since February this year. I presume cinder's using >> >>> an older version. >> >>> >> >>> Can someone advise me on how I can track down the changes in python bindings. >> >>> >> >>> Thank you in advance. >> >>> >> >>> Victor. >> >>> -- >> >>> To unsubscribe from this list: send the line "unsubscribe ceph-devel" in >> >>> the body of a message to majordomo@vger.kernel.org >> >>> More majordomo info at http://vger.kernel.org/majordomo-info.html >> >> >> >> >> >> >> >> -- >> >> Jason >> >> >> >> -- >> Jason >> -- >> To unsubscribe from this list: send the line "unsubscribe ceph-devel" in >> the body of a message to majordomo@vger.kernel.org >> More majordomo info at http://vger.kernel.org/majordomo-info.html > > -- > Mykola Golub -- Jason ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: Cinder doesn't work with the current rados python bindings 2016-12-14 13:39 ` Jason Dillaman @ 2016-12-14 14:12 ` Mykola Golub 2016-12-14 14:19 ` Jason Dillaman 0 siblings, 1 reply; 10+ messages in thread From: Mykola Golub @ 2016-12-14 14:12 UTC (permalink / raw) To: dillaman; +Cc: Victor Denisov, ceph-devel On Wed, Dec 14, 2016 at 08:39:03AM -0500, Jason Dillaman wrote: > In the short and medium term, there isn't any way to get multiple > versions of OpenStack to stop directly parsing librbd configuration > options and switch to new API methods. The only reason they are > overriding the default image features is to ensure layering support is > enabled. In the C/C++ APIs, we have a clean way [1] to add individual > features while keeping the default feature set, but this isn't > currently exposed in the Python API. > > For the Kraken release, I think the only two real options are to (1) > add internal support for a config validator that takes the human > friendly, comma delimited feature names and automatically converts > them to the integer that has previously been expected, or (2) revert > the change and go back to using a non-user friendly bitmask. (3) Hardcode rbd_default_features in common/config_opts.h to its numerical value (currently it should work both way). It would make cinder (and other users who parse rbd_default_features) happy until it is explicitly set in the config using a new way (as a list of feature names). Document this restriction -- cinder users who want to change rbd_default_features in ceph.conf would need to continue to use a numeric value. This may be used as workaround on currently affected installations. Victor, could you please try to set rbd_default_features in ceph.conf to its numeric value (61) and see if it fixes the issue? -- Mykola Golub ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: Cinder doesn't work with the current rados python bindings 2016-12-14 14:12 ` Mykola Golub @ 2016-12-14 14:19 ` Jason Dillaman 0 siblings, 0 replies; 10+ messages in thread From: Jason Dillaman @ 2016-12-14 14:19 UTC (permalink / raw) To: Mykola Golub; +Cc: Victor Denisov, ceph-devel I see option (3) as such a large restriction on one of largest (if not the largest) end-users of librbd that it's effectively a vote for just reverting the change. In answer to your other question, yes, Cinder/Nova/Glance will all be happy w/ a string integer since that is exactly what they were getting before (the librados API only provides string representations for config values). On Wed, Dec 14, 2016 at 9:12 AM, Mykola Golub <mgolub@mirantis.com> wrote: > On Wed, Dec 14, 2016 at 08:39:03AM -0500, Jason Dillaman wrote: >> In the short and medium term, there isn't any way to get multiple >> versions of OpenStack to stop directly parsing librbd configuration >> options and switch to new API methods. The only reason they are >> overriding the default image features is to ensure layering support is >> enabled. In the C/C++ APIs, we have a clean way [1] to add individual >> features while keeping the default feature set, but this isn't >> currently exposed in the Python API. >> >> For the Kraken release, I think the only two real options are to (1) >> add internal support for a config validator that takes the human >> friendly, comma delimited feature names and automatically converts >> them to the integer that has previously been expected, or (2) revert >> the change and go back to using a non-user friendly bitmask. > > (3) Hardcode rbd_default_features in common/config_opts.h to its > numerical value (currently it should work both way). It would make > cinder (and other users who parse rbd_default_features) happy until it > is explicitly set in the config using a new way (as a list of feature > names). Document this restriction -- cinder users who want to change > rbd_default_features in ceph.conf would need to continue to use a > numeric value. > > This may be used as workaround on currently affected installations. > Victor, could you please try to set rbd_default_features in ceph.conf > to its numeric value (61) and see if it fixes the issue? > > -- > Mykola Golub -- Jason ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: Cinder doesn't work with the current rados python bindings 2016-12-13 20:29 Cinder doesn't work with the current rados python bindings Victor Denisov 2016-12-13 21:38 ` Jason Dillaman @ 2016-12-14 9:17 ` Alexey Sheplyakov 1 sibling, 0 replies; 10+ messages in thread From: Alexey Sheplyakov @ 2016-12-14 9:17 UTC (permalink / raw) To: Victor Denisov; +Cc: ceph-devel Victor, > Rados.conf_get('features') used to return an integer. It returns a string right now. The rbd_default_features parameter used to be an integer, which is not very user friendly. commit 9b8a2da1902710960a45159172a1f1b8184fa1a2 addressed the issue by changing rbd_default_features to be a comma separated list of human readable feature names. Best regards, Alexey On Wed, Dec 14, 2016 at 12:29 AM, Victor Denisov <vdenisov@mirantis.com> wrote: > Hello, > > Who knows where pybind/rados/rados.pyx came from? > I talked to a guy in the cinder development team - he tried to build > his code against the latest python bindings from master. > It looks like the api's changed. Rados.conf_get('features') used to > return an integer. > It returns a string right now. > > I looked into the git history and I see that pybind.pyx has been where > it's right now only since February this year. I presume cinder's using > an older version. > > Can someone advise me on how I can track down the changes in python bindings. > > Thank you in advance. > > Victor. > -- > To unsubscribe from this list: send the line "unsubscribe ceph-devel" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html ^ permalink raw reply [flat|nested] 10+ messages in thread
end of thread, other threads:[~2016-12-14 14:19 UTC | newest] Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2016-12-13 20:29 Cinder doesn't work with the current rados python bindings Victor Denisov 2016-12-13 21:38 ` Jason Dillaman 2016-12-14 0:10 ` Victor Denisov 2016-12-14 0:24 ` Jason Dillaman 2016-12-14 0:26 ` Victor Denisov 2016-12-14 9:44 ` Mykola Golub 2016-12-14 13:39 ` Jason Dillaman 2016-12-14 14:12 ` Mykola Golub 2016-12-14 14:19 ` Jason Dillaman 2016-12-14 9:17 ` Alexey Sheplyakov
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.