[libvirt] [PATCH v2 01/21] secret: Add support for usage type vTPM, extend schema and test case

Stefan Berger stefanb at linux.vnet.ibm.com
Wed Jul 10 18:11:48 UTC 2019


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 at linux.ibm.com>
Reviewed-by: Marc-André Lureau <marcandre.lureau at redhat.com>
---
 docs/schemas/secret.rng              | 10 ++++++++++
 include/libvirt/libvirt-secret.h     |  1 +
 src/conf/secret_conf.c               | 13 +++++++++++++
 src/util/virsecret.c                 |  2 +-
 tests/secretxml2xmlin/usage-vtpm.xml |  7 +++++++
 tests/secretxml2xmltest.c            |  1 +
 6 files changed, 33 insertions(+), 1 deletion(-)
 create mode 100644 tests/secretxml2xmlin/usage-vtpm.xml

diff --git a/docs/schemas/secret.rng b/docs/schemas/secret.rng
index 1e94d66e48..e0add8a5e9 100644
--- a/docs/schemas/secret.rng
+++ b/docs/schemas/secret.rng
@@ -37,6 +37,7 @@
               <ref name='usageceph'/>
               <ref name='usageiscsi'/>
               <ref name='usagetls'/>
+              <ref name='usagevtpm'/>
               <!-- More choices later -->
             </choice>
           </element>
@@ -81,4 +82,13 @@
     </element>
   </define>
 
+  <define name='usagevtpm'>
+    <attribute name='type'>
+      <value>vtpm</value>
+    </attribute>
+    <element name='name'>
+      <ref name='genericName'/>
+    </element>
+  </define>
+
 </grammar>
diff --git a/include/libvirt/libvirt-secret.h b/include/libvirt/libvirt-secret.h
index 9a1065f0f3..e5aaac9450 100644
--- a/include/libvirt/libvirt-secret.h
+++ b/include/libvirt/libvirt-secret.h
@@ -43,6 +43,7 @@ typedef enum {
     VIR_SECRET_USAGE_TYPE_CEPH = 2,
     VIR_SECRET_USAGE_TYPE_ISCSI = 3,
     VIR_SECRET_USAGE_TYPE_TLS = 4,
+    VIR_SECRET_USAGE_TYPE_VTPM = 5,
 
 # ifdef VIR_ENUM_SENTINELS
     VIR_SECRET_USAGE_TYPE_LAST
diff --git a/src/conf/secret_conf.c b/src/conf/secret_conf.c
index 5b85a7c0be..b291339e77 100644
--- a/src/conf/secret_conf.c
+++ b/src/conf/secret_conf.c
@@ -110,6 +110,15 @@ virSecretDefParseUsage(xmlXPathContextPtr ctxt,
         }
         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:
         virReportError(VIR_ERR_INTERNAL_ERROR,
                        _("unexpected secret usage type %d"),
@@ -257,6 +266,10 @@ virSecretDefFormatUsage(virBufferPtr buf,
         virBufferEscapeString(buf, "<name>%s</name>\n", def->usage_id);
         break;
 
+    case VIR_SECRET_USAGE_TYPE_VTPM:
+        virBufferEscapeString(buf, "<name>%s</name>\n", def->usage_id);
+        break;
+
     default:
         virReportError(VIR_ERR_INTERNAL_ERROR,
                        _("unexpected secret usage type %d"),
diff --git a/src/util/virsecret.c b/src/util/virsecret.c
index 854dc72b06..7844a76a56 100644
--- a/src/util/virsecret.c
+++ b/src/util/virsecret.c
@@ -34,7 +34,7 @@ VIR_LOG_INIT("util.secret");
 
 VIR_ENUM_IMPL(virSecretUsage,
               VIR_SECRET_USAGE_TYPE_LAST,
-              "none", "volume", "ceph", "iscsi", "tls",
+              "none", "volume", "ceph", "iscsi", "tls", "vtpm",
 );
 
 void
diff --git a/tests/secretxml2xmlin/usage-vtpm.xml b/tests/secretxml2xmlin/usage-vtpm.xml
new file mode 100644
index 0000000000..5baff3034d
--- /dev/null
+++ b/tests/secretxml2xmlin/usage-vtpm.xml
@@ -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>
diff --git a/tests/secretxml2xmltest.c b/tests/secretxml2xmltest.c
index fd93703424..595583346a 100644
--- a/tests/secretxml2xmltest.c
+++ b/tests/secretxml2xmltest.c
@@ -80,6 +80,7 @@ mymain(void)
     DO_TEST("usage-ceph");
     DO_TEST("usage-iscsi");
     DO_TEST("usage-tls");
+    DO_TEST("usage-vtpm");
 
     return ret == 0 ? EXIT_SUCCESS : EXIT_FAILURE;
 }
-- 
2.20.1




More information about the libvir-list mailing list