提交 56368124 编写于 作者: P Peter Krempa

conf: Add support for http(s) query strings

Add a new attribute for holding the query part for http(s) disks.
Signed-off-by: NPeter Krempa <pkrempa@redhat.com>
Reviewed-by: NJán Tomko <jtomko@redhat.com>
上级 b24281c9
......@@ -2847,7 +2847,7 @@
&lt;/disk&gt;
&lt;disk type='network' device='cdrom'&gt;
&lt;driver name='qemu' type='raw'/&gt;
&lt;source protocol="http" name="url_path"&gt;
&lt;source protocol="http" name="url_path" query="foo=bar&amp;amp;baz=flurb&gt;
&lt;host name="hostname" port="80"/&gt;
&lt;cookies&gt;
&lt;cookie name="test"&gt;somevalue&lt;/cookie&gt;
......@@ -3113,6 +3113,11 @@
('tls' <span class="since">Since 4.5.0</span>)
</p>
<p>For protocols <code>http</code> and <code>https</code> an
optional attribute <code>query</code> specifies the query string.
(<span class="since">Since 6.2.0</span>)
</p>
<p>For "iscsi" (<span class="since">since 1.0.4</span>), the
<code>name</code> attribute may include a logical unit number,
separated from the target's name by a slash (e.g.,
......
......@@ -1869,6 +1869,9 @@
</choice>
</attribute>
<attribute name="name"/>
<optional>
<attribute name="query"/>
</optional>
<ref name="diskSourceCommon"/>
<ref name="diskSourceNetworkHost"/>
<optional>
......@@ -1894,6 +1897,9 @@
</choice>
</attribute>
<attribute name="name"/>
<optional>
<attribute name="query"/>
</optional>
<ref name="diskSourceCommon"/>
<ref name="diskSourceNetworkHost"/>
<optional>
......
......@@ -9482,6 +9482,10 @@ virDomainDiskSourceNetworkParse(xmlNodePtr node,
/* config file currently only works with remote disks */
src->configFile = virXPathString("string(./config/@file)", ctxt);
if (src->protocol == VIR_STORAGE_NET_PROTOCOL_HTTP ||
src->protocol == VIR_STORAGE_NET_PROTOCOL_HTTPS)
src->query = virXMLPropString(node, "query");
if (virDomainStorageNetworkParseHosts(node, &src->hosts, &src->nhosts) < 0)
return -1;
......@@ -24591,6 +24595,7 @@ virDomainDiskSourceFormatNetwork(virBufferPtr attrBuf,
path = g_strdup_printf("%s/%s", src->volume, src->path);
virBufferEscapeString(attrBuf, " name='%s'", path ? path : src->path);
virBufferEscapeString(attrBuf, " query='%s'", src->query);
if (src->haveTLS != VIR_TRISTATE_BOOL_ABSENT &&
!(flags & VIR_DOMAIN_DEF_FORMAT_MIGRATABLE &&
......
......@@ -2418,6 +2418,7 @@ virStorageSourceCopy(const virStorageSource *src,
def->compat = g_strdup(src->compat);
def->tlsAlias = g_strdup(src->tlsAlias);
def->tlsCertdir = g_strdup(src->tlsCertdir);
def->query = g_strdup(src->query);
if (src->sliceStorage)
def->sliceStorage = virStorageSourceSliceCopy(src->sliceStorage);
......@@ -2696,6 +2697,7 @@ virStorageSourceClear(virStorageSourcePtr def)
VIR_FREE(def->volume);
VIR_FREE(def->snapshot);
VIR_FREE(def->configFile);
VIR_FREE(def->query);
virStorageSourceNetCookiesClear(def);
virStorageSourcePoolDefFree(def->srcpool);
virBitmapFree(def->features);
......
......@@ -284,6 +284,7 @@ struct _virStorageSource {
char *snapshot; /* for storage systems supporting internal snapshots */
char *configFile; /* some storage systems use config file as part of
the source definition */
char *query; /* query string for HTTP based protocols */
size_t nhosts;
virStorageNetHostDefPtr hosts;
size_t ncookies;
......
......@@ -42,7 +42,7 @@
</disk>
<disk type='network' device='disk'>
<driver name='qemu' type='raw'/>
<source protocol='https' name='test4.img'>
<source protocol='https' name='test4.img' query='par=val&amp;other=ble'>
<host name='example.org' port='1234'/>
<ssl verify='no'/>
<cookies>
......
......@@ -49,7 +49,7 @@
</disk>
<disk type='network' device='disk'>
<driver name='qemu' type='raw'/>
<source protocol='https' name='test4.img'>
<source protocol='https' name='test4.img' query='par=val&amp;other=ble'>
<host name='example.org' port='1234'/>
<ssl verify='no'/>
<cookies>
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册