提交 615c8cce 编写于 作者: J John Ferlan

secret: Introduce virSecretUsageIDForDef

Move the driver specific secretUsageIDForDef into secret_conf.c. It could
be more of a general purpose API.
上级 00a3f0d0
/* /*
* secret_conf.c: internal <secret> XML handling * secret_conf.c: internal <secret> XML handling
* *
* Copyright (C) 2009-2014 Red Hat, Inc. * Copyright (C) 2009-2014, 2016 Red Hat, Inc.
* *
* This library is free software; you can redistribute it and/or * This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public * modify it under the terms of the GNU Lesser General Public
...@@ -39,6 +39,28 @@ VIR_LOG_INIT("conf.secret_conf"); ...@@ -39,6 +39,28 @@ VIR_LOG_INIT("conf.secret_conf");
VIR_ENUM_IMPL(virSecretUsage, VIR_SECRET_USAGE_TYPE_LAST, VIR_ENUM_IMPL(virSecretUsage, VIR_SECRET_USAGE_TYPE_LAST,
"none", "volume", "ceph", "iscsi") "none", "volume", "ceph", "iscsi")
const char *
virSecretUsageIDForDef(virSecretDefPtr def)
{
switch (def->usage_type) {
case VIR_SECRET_USAGE_TYPE_NONE:
return "";
case VIR_SECRET_USAGE_TYPE_VOLUME:
return def->usage.volume;
case VIR_SECRET_USAGE_TYPE_CEPH:
return def->usage.ceph;
case VIR_SECRET_USAGE_TYPE_ISCSI:
return def->usage.target;
default:
return NULL;
}
}
void void
virSecretDefFree(virSecretDefPtr def) virSecretDefFree(virSecretDefPtr def)
{ {
......
/* /*
* secret_conf.h: internal <secret> XML handling API * secret_conf.h: internal <secret> XML handling API
* *
* Copyright (C) 2009-2010, 2013-2014 Red Hat, Inc. * Copyright (C) 2009-2010, 2013-2014, 2016 Red Hat, Inc.
* *
* This library is free software; you can redistribute it and/or * This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public * modify it under the terms of the GNU Lesser General Public
...@@ -43,6 +43,8 @@ struct _virSecretDef { ...@@ -43,6 +43,8 @@ struct _virSecretDef {
} usage; } usage;
}; };
const char *virSecretUsageIDForDef(virSecretDefPtr def);
void virSecretDefFree(virSecretDefPtr def); void virSecretDefFree(virSecretDefPtr def);
virSecretDefPtr virSecretDefParseString(const char *xml); virSecretDefPtr virSecretDefParseString(const char *xml);
virSecretDefPtr virSecretDefParseFile(const char *filename); virSecretDefPtr virSecretDefParseFile(const char *filename);
......
...@@ -786,6 +786,7 @@ virSecretDefFormat; ...@@ -786,6 +786,7 @@ virSecretDefFormat;
virSecretDefFree; virSecretDefFree;
virSecretDefParseFile; virSecretDefParseFile;
virSecretDefParseString; virSecretDefParseString;
virSecretUsageIDForDef;
virSecretUsageTypeFromString; virSecretUsageTypeFromString;
virSecretUsageTypeToString; virSecretUsageTypeToString;
......
...@@ -567,26 +567,6 @@ secretConnectListSecrets(virConnectPtr conn, ...@@ -567,26 +567,6 @@ secretConnectListSecrets(virConnectPtr conn,
return -1; return -1;
} }
static const char *
secretUsageIDForDef(virSecretDefPtr def)
{
switch (def->usage_type) {
case VIR_SECRET_USAGE_TYPE_NONE:
return "";
case VIR_SECRET_USAGE_TYPE_VOLUME:
return def->usage.volume;
case VIR_SECRET_USAGE_TYPE_CEPH:
return def->usage.ceph;
case VIR_SECRET_USAGE_TYPE_ISCSI:
return def->usage.target;
default:
return NULL;
}
}
#define MATCH(FLAG) (flags & (FLAG)) #define MATCH(FLAG) (flags & (FLAG))
static int static int
...@@ -640,7 +620,7 @@ secretConnectListAllSecrets(virConnectPtr conn, ...@@ -640,7 +620,7 @@ secretConnectListAllSecrets(virConnectPtr conn,
virGetSecret(conn, virGetSecret(conn,
secret->def->uuid, secret->def->uuid,
secret->def->usage_type, secret->def->usage_type,
secretUsageIDForDef(secret->def)))) virSecretUsageIDForDef(secret->def))))
goto cleanup; goto cleanup;
} }
ret_nsecrets++; ret_nsecrets++;
...@@ -691,7 +671,7 @@ secretLookupByUUID(virConnectPtr conn, ...@@ -691,7 +671,7 @@ secretLookupByUUID(virConnectPtr conn,
ret = virGetSecret(conn, ret = virGetSecret(conn,
secret->def->uuid, secret->def->uuid,
secret->def->usage_type, secret->def->usage_type,
secretUsageIDForDef(secret->def)); virSecretUsageIDForDef(secret->def));
cleanup: cleanup:
secretDriverUnlock(); secretDriverUnlock();
...@@ -721,7 +701,7 @@ secretLookupByUsage(virConnectPtr conn, ...@@ -721,7 +701,7 @@ secretLookupByUsage(virConnectPtr conn,
ret = virGetSecret(conn, ret = virGetSecret(conn,
secret->def->uuid, secret->def->uuid,
secret->def->usage_type, secret->def->usage_type,
secretUsageIDForDef(secret->def)); virSecretUsageIDForDef(secret->def));
cleanup: cleanup:
secretDriverUnlock(); secretDriverUnlock();
...@@ -752,7 +732,7 @@ secretDefineXML(virConnectPtr conn, ...@@ -752,7 +732,7 @@ secretDefineXML(virConnectPtr conn,
if (!(secret = secretFindByUUID(new_attrs->uuid))) { if (!(secret = secretFindByUUID(new_attrs->uuid))) {
/* No existing secret with same UUID, /* No existing secret with same UUID,
* try look for matching usage instead */ * try look for matching usage instead */
const char *usageID = secretUsageIDForDef(new_attrs); const char *usageID = virSecretUsageIDForDef(new_attrs);
char uuidstr[VIR_UUID_STRING_BUFLEN]; char uuidstr[VIR_UUID_STRING_BUFLEN];
if ((secret = secretFindByUsage(new_attrs->usage_type, usageID))) { if ((secret = secretFindByUsage(new_attrs->usage_type, usageID))) {
...@@ -785,8 +765,8 @@ secretDefineXML(virConnectPtr conn, ...@@ -785,8 +765,8 @@ secretDefineXML(virConnectPtr conn,
goto cleanup; goto cleanup;
} }
} else { } else {
const char *newUsageID = secretUsageIDForDef(new_attrs); const char *newUsageID = virSecretUsageIDForDef(new_attrs);
const char *oldUsageID = secretUsageIDForDef(secret->def); const char *oldUsageID = virSecretUsageIDForDef(secret->def);
if (STRNEQ(oldUsageID, newUsageID)) { if (STRNEQ(oldUsageID, newUsageID)) {
char uuidstr[VIR_UUID_STRING_BUFLEN]; char uuidstr[VIR_UUID_STRING_BUFLEN];
virUUIDFormat(secret->def->uuid, uuidstr); virUUIDFormat(secret->def->uuid, uuidstr);
...@@ -831,7 +811,7 @@ secretDefineXML(virConnectPtr conn, ...@@ -831,7 +811,7 @@ secretDefineXML(virConnectPtr conn,
ret = virGetSecret(conn, ret = virGetSecret(conn,
secret->def->uuid, secret->def->uuid,
secret->def->usage_type, secret->def->usage_type,
secretUsageIDForDef(secret->def)); virSecretUsageIDForDef(secret->def));
goto cleanup; goto cleanup;
restore_backup: restore_backup:
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册