From: Scott Sullivan <ssullivan@liquidweb.com>
To: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
Cc: dan.mick@inktank.com, stgt@vger.kernel.org
Subject: Re: Patch for adding virsecretuuid & cephx_key ids to --bsopts
Date: Fri, 25 Jul 2014 07:25:21 -0400 [thread overview]
Message-ID: <53D23EA1.305@liquidweb.com> (raw)
In-Reply-To: <20140725.163150.1898388363586176520.fujita.tomonori@lab.ntt.co.jp>
On 07/25/2014 03:31 AM, FUJITA Tomonori wrote:
> On Mon, 21 Jul 2014 15:34:46 -0400
> Scott Sullivan <ssullivan@liquidweb.com> wrote:
>
>> On 06/18/2014 01:49 AM, Dan Mick wrote:
>>> I've seen this; I'm traveling/busy this week so will try to give it
>>> some thought, but no promises
>> ping ?
> I tried to apply however I can't cleanly. Looks like the patch is
> corrupted. Can you resend?
URL: http://paste.debian.net/111595/
Paste:
From 5359b581c5e7bf434979becaefc53a711ef88432 Mon Sep 17 00:00:00 2001
From: Scott Sullivan <ssullivan@liquidweb.com>
Date: Tue, 17 Jun 2014 08:16:09 -0400
Subject: [PATCH] bsopts: Add virsecretuuid && cephx_key
Allow passing either a libvirt secret UUID, or a cephx_key to --bsopts.
Options are
conflicting, so error if both options given. This allows one to do this:
--bsopts="conf=/etc/ceph/ceph.conf;id=cephx_user;virsecretuuid=$MY_LIBVIRT_SECRET_UUID"
-OR-
--bsopts="conf=/etc/ceph/ceph.conf;id=cephx_user;cephx_key=$MY_KEY"
Signed-off-by: Scott Sullivan <ssullivan@liquidweb.com>
---
usr/bs_rbd.c | 64
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 64 insertions(+)
diff --git a/usr/bs_rbd.c b/usr/bs_rbd.c
index 3a052ed..86857b9 100644
--- a/usr/bs_rbd.c
+++ b/usr/bs_rbd.c
@@ -517,6 +517,9 @@ static tgtadm_err bs_rbd_init(struct scsi_lu *lu,
char *bsopts)
struct active_rbd *rbd = RBDP(lu);
char *confname = NULL;
char *clientid = NULL;
+ char *virsecretuuid = NULL;
+ char *given_cephx_key = NULL;
+ char disc_cephx_key[256];
char *clustername = NULL;
char clientid_full[128];
char *ignore = NULL;
@@ -532,6 +535,10 @@ static tgtadm_err bs_rbd_init(struct scsi_lu *lu,
char *bsopts)
clientid = slurp_value(&bsopts);
else if (is_opt("cluster", bsopts))
clustername = slurp_value(&bsopts);
+ else if (is_opt("virsecretuuid", bsopts))
+ virsecretuuid = slurp_value(&bsopts);
+ else if (is_opt("cephx_key", bsopts))
+ given_cephx_key = slurp_value(&bsopts);
else {
ignore = slurp_to_semi(&bsopts);
eprintf("bs_rbd: ignoring unknown option \"%s\"\n",
@@ -547,6 +554,41 @@ static tgtadm_err bs_rbd_init(struct scsi_lu *lu,
char *bsopts)
eprintf("bs_rbd_init: confname %s\n", confname);
if (clustername)
eprintf("bs_rbd_init: clustername %s\n", clustername);
+ if (virsecretuuid)
+ eprintf("bs_rbd_init: virsecretuuid %s\n", virsecretuuid);
+ if (given_cephx_key)
+ eprintf("bs_rbd_init: given_cephx_key %s\n", given_cephx_key);
+
+ /* virsecretuuid && given_cephx_key are conflicting options. */
+ if (virsecretuuid && given_cephx_key) {
+ eprintf("Conflicting options virsecretuuid=[%s] cephx_key=[%s]",
+ virsecretuuid, given_cephx_key);
+ goto fail;
+ }
+
+ /* Get stored key from secret uuid. */
+ if (virsecretuuid) {
+ char libvir_uuid_file_path_buf[256] = "/etc/libvirt/secrets/";
+ strcat(libvir_uuid_file_path_buf, virsecretuuid);
+ strcat(libvir_uuid_file_path_buf, ".base64");
+
+ FILE *fp;
+ fp = fopen(libvir_uuid_file_path_buf , "r");
+ if (fp == NULL) {
+ eprintf("bs_rbd_init: Unable to read %s\n",
+ libvir_uuid_file_path_buf);
+ goto fail;
+ }
+ if (fgets(disc_cephx_key, 256, fp) == NULL) {
+ eprintf("bs_rbd_init: Unable to read %s\n",
+ libvir_uuid_file_path_buf);
+ goto fail;
+ }
+ fclose(fp);
+ strtok(disc_cephx_key, "\n");
+
+ eprintf("bs_rbd_init: disc_cephx_key %s\n", disc_cephx_key);
+ }
eprintf("bs_rbd_init bsopts=%s\n", bsopts);
/*
@@ -570,6 +612,7 @@ static tgtadm_err bs_rbd_init(struct scsi_lu *lu,
char *bsopts)
eprintf("bs_rbd_init: rados_create: %d\n", rados_ret);
return ret;
}
+
/*
* Read config from environment, then conf file(s) which may
* be set by conf=
@@ -584,6 +627,23 @@ static tgtadm_err bs_rbd_init(struct scsi_lu *lu,
char *bsopts)
eprintf("bs_rbd_init: rados_conf_read_file: %d\n", rados_ret);
goto fail;
}
+
+ /* Set given key */
+ if (virsecretuuid) {
+ if (rados_conf_set(rbd->cluster, "key", disc_cephx_key) < 0) {
+ eprintf("bs_rbd_init: failed to set cephx_key: %s\n",
+ disc_cephx_key);
+ goto fail;
+ }
+ }
+ if (given_cephx_key) {
+ if (rados_conf_set(rbd->cluster, "key", given_cephx_key) < 0) {
+ eprintf("bs_rbd_init: failed to set cephx_key: %s\n",
+ given_cephx_key);
+ goto fail;
+ }
+ }
+
rados_ret = rados_connect(rbd->cluster);
if (rados_ret < 0) {
eprintf("bs_rbd_init: rados_connect: %d\n", rados_ret);
@@ -595,6 +655,10 @@ fail:
free(confname);
if (clientid)
free(clientid);
+ if (virsecretuuid)
+ free(virsecretuuid);
+ if (given_cephx_key)
+ free(given_cephx_key);
return ret;
}
--
1.7.10.4
I also checked, and I didn't have any problem applying the patch to the
current master branch:
ssullivan@data ~/syseng/packages/tgt $ git apply --stat
../rpmbuild/SOURCES/tgt-add_virsecretuuid_cephx_key_to_bsopts.patch
usr/bs_rbd.c | 64
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 64 insertions(+)
ssullivan@data ~/syseng/packages/tgt $ git apply --check
../rpmbuild/SOURCES/tgt-add_virsecretuuid_cephx_key_to_bsopts.patch
ssullivan@data ~/syseng/packages/tgt $ git am --signoff <
../rpmbuild/SOURCES/tgt-add_virsecretuuid_cephx_key_to_bsopts.patch
Applying: bsopts: Add virsecretuuid && cephx_key
ssullivan@data ~/syseng/packages/tgt $
next prev parent reply other threads:[~2014-07-25 11:25 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-06-17 12:49 Patch for adding virsecretuuid & cephx_key ids to --bsopts Scott Sullivan
2014-06-17 15:30 ` FUJITA Tomonori
2014-06-18 5:49 ` Dan Mick
2014-07-21 19:34 ` Scott Sullivan
2014-07-25 7:31 ` FUJITA Tomonori
2014-07-25 11:25 ` Scott Sullivan [this message]
2014-07-25 14:38 ` FUJITA Tomonori
2014-07-25 14:47 ` FUJITA Tomonori
2014-07-25 14:56 ` Scott Sullivan
2014-07-26 6:07 ` Dan Mick
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=53D23EA1.305@liquidweb.com \
--to=ssullivan@liquidweb.com \
--cc=dan.mick@inktank.com \
--cc=fujita.tomonori@lab.ntt.co.jp \
--cc=stgt@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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.