secret: Add support for usage type vTPM, extend schema and test case

Add support for usage type vTPM to secret.
Extend the schema for the Secret to support the vTPM usage type
and add a test case for parsing the Secret with usage type vTPM.

Signed-off-by: Stefan Berger <stefanb@linux.ibm.com>
Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
This commit is contained in:
Stefan Berger 2019-07-25 14:21:57 -04:00 committed by Daniel P. Berrangé
parent c1d347027f
commit 50a7b0cb4e
6 changed files with 33 additions and 1 deletions

View File

@ -37,6 +37,7 @@
<ref name='usageceph'/> <ref name='usageceph'/>
<ref name='usageiscsi'/> <ref name='usageiscsi'/>
<ref name='usagetls'/> <ref name='usagetls'/>
<ref name='usagevtpm'/>
<!-- More choices later --> <!-- More choices later -->
</choice> </choice>
</element> </element>
@ -81,4 +82,13 @@
</element> </element>
</define> </define>
<define name='usagevtpm'>
<attribute name='type'>
<value>vtpm</value>
</attribute>
<element name='name'>
<ref name='genericName'/>
</element>
</define>
</grammar> </grammar>

View File

@ -43,6 +43,7 @@ typedef enum {
VIR_SECRET_USAGE_TYPE_CEPH = 2, VIR_SECRET_USAGE_TYPE_CEPH = 2,
VIR_SECRET_USAGE_TYPE_ISCSI = 3, VIR_SECRET_USAGE_TYPE_ISCSI = 3,
VIR_SECRET_USAGE_TYPE_TLS = 4, VIR_SECRET_USAGE_TYPE_TLS = 4,
VIR_SECRET_USAGE_TYPE_VTPM = 5,
# ifdef VIR_ENUM_SENTINELS # ifdef VIR_ENUM_SENTINELS
VIR_SECRET_USAGE_TYPE_LAST VIR_SECRET_USAGE_TYPE_LAST

View File

@ -110,6 +110,15 @@ virSecretDefParseUsage(xmlXPathContextPtr ctxt,
} }
break; break;
case VIR_SECRET_USAGE_TYPE_VTPM:
def->usage_id = virXPathString("string(./usage/name)", ctxt);
if (!def->usage_id) {
virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
_("vTPM usage specified, but name is missing"));
return -1;
}
break;
default: default:
virReportError(VIR_ERR_INTERNAL_ERROR, virReportError(VIR_ERR_INTERNAL_ERROR,
_("unexpected secret usage type %d"), _("unexpected secret usage type %d"),
@ -257,6 +266,10 @@ virSecretDefFormatUsage(virBufferPtr buf,
virBufferEscapeString(buf, "<name>%s</name>\n", def->usage_id); virBufferEscapeString(buf, "<name>%s</name>\n", def->usage_id);
break; break;
case VIR_SECRET_USAGE_TYPE_VTPM:
virBufferEscapeString(buf, "<name>%s</name>\n", def->usage_id);
break;
default: default:
virReportError(VIR_ERR_INTERNAL_ERROR, virReportError(VIR_ERR_INTERNAL_ERROR,
_("unexpected secret usage type %d"), _("unexpected secret usage type %d"),

View File

@ -34,7 +34,7 @@ VIR_LOG_INIT("util.secret");
VIR_ENUM_IMPL(virSecretUsage, VIR_ENUM_IMPL(virSecretUsage,
VIR_SECRET_USAGE_TYPE_LAST, VIR_SECRET_USAGE_TYPE_LAST,
"none", "volume", "ceph", "iscsi", "tls", "none", "volume", "ceph", "iscsi", "tls", "vtpm",
); );
void void

View File

@ -0,0 +1,7 @@
<secret ephemeral='no' private='yes'>
<uuid>aa6c7af2-45a7-477c-85a2-fe86d9f2514e</uuid>
<description>vTPM secret</description>
<usage type='vtpm'>
<name>vTPMvTPMvTPM</name>
</usage>
</secret>

View File

@ -80,6 +80,7 @@ mymain(void)
DO_TEST("usage-ceph"); DO_TEST("usage-ceph");
DO_TEST("usage-iscsi"); DO_TEST("usage-iscsi");
DO_TEST("usage-tls"); DO_TEST("usage-tls");
DO_TEST("usage-vtpm");
return ret == 0 ? EXIT_SUCCESS : EXIT_FAILURE; return ret == 0 ? EXIT_SUCCESS : EXIT_FAILURE;
} }