From: Tiziano Müller <[email protected]>

---
 src/libvirt-php.c | 83 ++++++++++++++++++++++++++++++++++++++++++++++++++++++-
 src/libvirt-php.h |  2 ++
 2 files changed, 84 insertions(+), 1 deletion(-)

diff --git a/src/libvirt-php.c b/src/libvirt-php.c
index 0b8345a..834eff8 100644
--- a/src/libvirt-php.c
+++ b/src/libvirt-php.c
@@ -115,6 +115,8 @@ static zend_function_entry libvirt_functions[] = {
        PHP_FE(libvirt_domain_get_job_info, NULL)
        PHP_FE(libvirt_domain_xml_xpath, NULL)
        PHP_FE(libvirt_domain_get_block_info, NULL)
+       PHP_FE(libvirt_domain_get_block_job_info, NULL)
+       PHP_FE(libvirt_domain_block_pull, NULL)
        PHP_FE(libvirt_domain_get_network_info, NULL)
        PHP_FE(libvirt_domain_get_autostart, NULL)
        PHP_FE(libvirt_domain_set_autostart, NULL)
@@ -125,7 +127,7 @@ static zend_function_entry libvirt_functions[] = {
        PHP_FE(libvirt_domain_get_screen_dimensions, NULL)
        PHP_FE(libvirt_domain_send_keys, NULL)
        PHP_FE(libvirt_domain_send_pointer_event, NULL)
-        PHP_FE(libvirt_domain_update_device, NULL)
+       PHP_FE(libvirt_domain_update_device, NULL)
        /* Domain snapshot functions */
        PHP_FE(libvirt_domain_has_current_snapshot, NULL)
        PHP_FE(libvirt_domain_snapshot_create, NULL)
@@ -5236,6 +5238,85 @@ PHP_FUNCTION(libvirt_domain_get_block_info)
 #endif
 
 /*
+       Function name:  libvirt_domain_get_block_job_info
+       Since version:  0.4.9
+       Description:    Function is used to get the domain's block job 
information
+       Arguments:      @res [resource]: libvirt domain resource, e.g. from 
libvirt_domain_lookup_by_*()
+                       @dev [string]: device to get block job information about
+       Returns: TRUE when nothing found, FALSE in case of failure,
+                       block job information array of device, type, bandwidth, 
cur, end otherwise
+*/
+#if LIBVIR_VERSION_NUMBER>=9005
+PHP_FUNCTION(libvirt_domain_get_block_job_info) {
+       php_libvirt_domain *domain=NULL;
+       zval *zdomain;
+       int retval;
+       char *dev;
+       int dev_len;
+
+       struct _virDomainBlockJobInfo info;
+
+       GET_DOMAIN_FROM_ARGS("rs",&zdomain,&dev,&dev_len);
+
+       retval=virDomainGetBlockJobInfo(domain->domain, dev, &info, 0);
+
+       if (retval == -1) {
+               set_error("Cannot get domain block job information" TSRMLS_CC);
+               RETURN_FALSE;
+       } else if (retval == 0) {
+               RETURN_TRUE;
+       }
+
+       array_init(return_value);
+       LONGLONG_INIT
+       add_assoc_long(return_value, "type", (long)info.type);
+       LONGLONG_ASSOC(return_value, "bandwidth", info.bandwidth);
+       LONGLONG_ASSOC(return_value, "cur", info.cur);
+       LONGLONG_ASSOC(return_value, "end", info.end);
+}
+#else
+PHP_FUNCTION(libvirt_domain_get_block_job_info)
+{
+       set_error("Only libvirt 0.9.5 and higher supports getting the block job 
information" TSRMLS_CC);
+       RETURN_FALSE;
+}
+#endif
+
+/*
+       Function name:  libvirt_domain_block_pull
+       Since version:  0.4.9
+       Description:    Function is used populate a disk image with data from 
its backing image
+       Arguments:      @res [resource]: libvirt domain resource, e.g. from 
libvirt_domain_lookup_by_*()
+                       @disk [string]: disk for which to pull data from the 
backing image
+                       @bandwidth [int]: maximum bandwidth in MiB/s used to do 
the copy
+       Returns: TRUE if the operation has started, FALSE otherwise
+*/
+#if LIBVIR_VERSION_NUMBER>=9005
+PHP_FUNCTION(libvirt_domain_block_pull) {
+       php_libvirt_domain *domain=NULL;
+       zval *zdomain;
+       int retval;
+       char *disk;
+       long disk_len, flags=0, bandwidth=0;
+
+       GET_DOMAIN_FROM_ARGS("rs|ll",&zdomain,&disk,&disk_len, &bandwidth, 
&flags);
+
+       retval=virDomainBlockPull(domain->domain, disk, bandwidth, flags);
+
+       if (retval == -1) {
+               set_error("Cannot perform block pull for domain" TSRMLS_CC);
+               RETURN_FALSE;
+       }
+}
+#else
+PHP_FUNCTION(libvirt_domain_block_pull)
+{
+       set_error("Only libvirt 0.9.5 and higher supports pull data from 
backing image" TSRMLS_CC);
+       RETURN_FALSE;
+}
+#endif
+
+/*
        Function name:  libvirt_domain_xml_xpath
        Since version:  0.4.1(-1)
        Description:    Function is used to get the result of xPath expression 
that's run against the domain
diff --git a/src/libvirt-php.h b/src/libvirt-php.h
index bbcb3f2..6bb1b1b 100644
--- a/src/libvirt-php.h
+++ b/src/libvirt-php.h
@@ -334,6 +334,8 @@ PHP_FUNCTION(libvirt_domain_migrate);
 PHP_FUNCTION(libvirt_domain_get_job_info);
 PHP_FUNCTION(libvirt_domain_xml_xpath);
 PHP_FUNCTION(libvirt_domain_get_block_info);
+PHP_FUNCTION(libvirt_domain_get_block_job_info);
+PHP_FUNCTION(libvirt_domain_block_pull);
 PHP_FUNCTION(libvirt_domain_get_network_info);
 PHP_FUNCTION(libvirt_domain_migrate_to_uri);
 PHP_FUNCTION(libvirt_domain_migrate_to_uri2);
-- 
1.8.2.1

--
libvir-list mailing list
[email protected]
https://www.redhat.com/mailman/listinfo/libvir-list

Reply via email to