[libvirt] [PATCH v1] update snapshot api

Vasiliy Tolstov v.tolstov at selfip.ru
Tue Jun 9 15:05:05 UTC 2015


Or this patch have problems?

2015-05-07 17:21 GMT+03:00 Vasiliy Tolstov <v.tolstov at selfip.ru>:
> * add constants from libvirt to snapshots api
> * add flags to snapshot functions
>
> Signed-off-by: Vasiliy Tolstov <v.tolstov at selfip.ru>
> ---
>  src/libvirt-php.c | 87 ++++++++++++++++++++++++++++++++++++++-----------------
>  1 file changed, 61 insertions(+), 26 deletions(-)
>
> diff --git a/src/libvirt-php.c b/src/libvirt-php.c
> index 0adc4be..e9b9657 100644
> --- a/src/libvirt-php.c
> +++ b/src/libvirt-php.c
> @@ -1228,34 +1228,58 @@ PHP_MINIT_FUNCTION(libvirt)
>         REGISTER_LONG_CONSTANT("VIR_DOMAIN_CRASHED",            6, CONST_CS | CONST_PERSISTENT);
>
>          /* Volume constants */
> -        REGISTER_LONG_CONSTANT("VIR_STORAGE_VOL_RESIZE_ALLOCATE",        1, CONST_CS | CONST_PERSISTENT);
> -        REGISTER_LONG_CONSTANT("VIR_STORAGE_VOL_RESIZE_DELTA",           2, CONST_CS | CONST_PERSISTENT);
> -        REGISTER_LONG_CONSTANT("VIR_STORAGE_VOL_RESIZE_SHRINK",          4, CONST_CS | CONST_PERSISTENT);
> +       REGISTER_LONG_CONSTANT("VIR_STORAGE_VOL_RESIZE_ALLOCATE",        1, CONST_CS | CONST_PERSISTENT);
> +       REGISTER_LONG_CONSTANT("VIR_STORAGE_VOL_RESIZE_DELTA",           2, CONST_CS | CONST_PERSISTENT);
> +       REGISTER_LONG_CONSTANT("VIR_STORAGE_VOL_RESIZE_SHRINK",          4, CONST_CS | CONST_PERSISTENT);
>
>         /* Domain vCPU flags */
>         REGISTER_LONG_CONSTANT("VIR_DOMAIN_VCPU_CONFIG",        VIR_DOMAIN_VCPU_CONFIG, CONST_CS | CONST_PERSISTENT);
>         REGISTER_LONG_CONSTANT("VIR_DOMAIN_VCPU_CURRENT",       VIR_DOMAIN_VCPU_CURRENT, CONST_CS | CONST_PERSISTENT);
>         REGISTER_LONG_CONSTANT("VIR_DOMAIN_VCPU_LIVE",          VIR_DOMAIN_VCPU_LIVE, CONST_CS | CONST_PERSISTENT);
>         REGISTER_LONG_CONSTANT("VIR_DOMAIN_VCPU_MAXIMUM",       VIR_DOMAIN_VCPU_MAXIMUM, CONST_CS | CONST_PERSISTENT);
> -       REGISTER_LONG_CONSTANT("VIR_DOMAIN_VCPU_GUEST",         VIR_DOMAIN_VCPU_GUEST, CONST_CS | CONST_PERSISTENT);
> +       REGISTER_LONG_CONSTANT("VIR_DOMAIN_VCPU_GUEST", VIR_DOMAIN_VCPU_GUEST, CONST_CS | CONST_PERSISTENT);
>
>         #if LIBVIR_VERSION_NUMBER>=8000
>         /* Domain snapshot constants */
>         REGISTER_LONG_CONSTANT("VIR_SNAPSHOT_DELETE_CHILDREN",   VIR_DOMAIN_SNAPSHOT_DELETE_CHILDREN,   CONST_CS | CONST_PERSISTENT);
> +       REGISTER_LONG_CONSTANT("VIR_SNAPSHOT_DELETE_METADATA_ONLY",     VIR_DOMAIN_SNAPSHOT_DELETE_METADATA_ONLY,       CONST_CS | CONST_PERSISTENT);
> +       REGISTER_LONG_CONSTANT("VIR_SNAPSHOT_DELETE_CHILDREN_ONLY",     VIR_DOMAIN_SNAPSHOT_DELETE_CHILDREN_ONLY,       CONST_CS | CONST_PERSISTENT);
> +       REGISTER_LONG_CONSTANT("VIR_SNAPSHOT_CREATE_REDEFINE",   VIR_DOMAIN_SNAPSHOT_CREATE_REDEFINE,   CONST_CS | CONST_PERSISTENT);
> +       REGISTER_LONG_CONSTANT("VIR_SNAPSHOT_CREATE_CURRENT",   VIR_DOMAIN_SNAPSHOT_CREATE_CURRENT,     CONST_CS | CONST_PERSISTENT);
> +       REGISTER_LONG_CONSTANT("VIR_SNAPSHOT_CREATE_NO_METADATA",       VIR_DOMAIN_SNAPSHOT_CREATE_NO_METADATA, CONST_CS | CONST_PERSISTENT);
> +       REGISTER_LONG_CONSTANT("VIR_SNAPSHOT_CREATE_HALT",      VIR_DOMAIN_SNAPSHOT_CREATE_HALT,        CONST_CS | CONST_PERSISTENT);
> +       REGISTER_LONG_CONSTANT("VIR_SNAPSHOT_CREATE_DISK_ONLY", VIR_DOMAIN_SNAPSHOT_CREATE_DISK_ONLY,   CONST_CS | CONST_PERSISTENT);
> +       REGISTER_LONG_CONSTANT("VIR_SNAPSHOT_CREATE_REUSE_EXT", VIR_DOMAIN_SNAPSHOT_CREATE_REUSE_EXT,   CONST_CS | CONST_PERSISTENT);
> +       REGISTER_LONG_CONSTANT("VIR_SNAPSHOT_CREATE_QUIESCE",   VIR_DOMAIN_SNAPSHOT_CREATE_QUIESCE,     CONST_CS | CONST_PERSISTENT);
> +       REGISTER_LONG_CONSTANT("VIR_SNAPSHOT_CREATE_ATOMIC",    VIR_DOMAIN_SNAPSHOT_CREATE_ATOMIC,      CONST_CS | CONST_PERSISTENT);
> +       REGISTER_LONG_CONSTANT("VIR_SNAPSHOT_CREATE_LIVE",      VIR_DOMAIN_SNAPSHOT_CREATE_LIVE,        CONST_CS | CONST_PERSISTENT);
> +       REGISTER_LONG_CONSTANT("VIR_SNAPSHOT_LIST_DESCENDANTS", VIR_DOMAIN_SNAPSHOT_LIST_DESCENDANTS,   CONST_CS | CONST_PERSISTENT);
> +       REGISTER_LONG_CONSTANT("VIR_SNAPSHOT_LIST_ROOTS",       VIR_DOMAIN_SNAPSHOT_LIST_ROOTS, CONST_CS | CONST_PERSISTENT);
> +       REGISTER_LONG_CONSTANT("VIR_SNAPSHOT_LIST_METADATA",    VIR_DOMAIN_SNAPSHOT_LIST_METADATA,      CONST_CS | CONST_PERSISTENT);
> +       REGISTER_LONG_CONSTANT("VIR_SNAPSHOT_LIST_LEAVES",      VIR_DOMAIN_SNAPSHOT_LIST_LEAVES,        CONST_CS | CONST_PERSISTENT);
> +       REGISTER_LONG_CONSTANT("VIR_SNAPSHOT_LIST_NO_LEAVES",   VIR_DOMAIN_SNAPSHOT_LIST_NO_LEAVES,     CONST_CS | CONST_PERSISTENT);
> +       REGISTER_LONG_CONSTANT("VIR_SNAPSHOT_LIST_NO_METADATA", VIR_DOMAIN_SNAPSHOT_LIST_NO_METADATA,   CONST_CS | CONST_PERSISTENT);
> +       REGISTER_LONG_CONSTANT("VIR_SNAPSHOT_LIST_INACTIVE",    VIR_DOMAIN_SNAPSHOT_LIST_INACTIVE,      CONST_CS | CONST_PERSISTENT);
> +       REGISTER_LONG_CONSTANT("VIR_SNAPSHOT_LIST_ACTIVE",      VIR_DOMAIN_SNAPSHOT_LIST_ACTIVE,        CONST_CS | CONST_PERSISTENT);
> +       REGISTER_LONG_CONSTANT("VIR_SNAPSHOT_LIST_DISK_ONLY",   VIR_DOMAIN_SNAPSHOT_LIST_DISK_ONLY,     CONST_CS | CONST_PERSISTENT);
> +       REGISTER_LONG_CONSTANT("VIR_SNAPSHOT_LIST_INTERNAL",    VIR_DOMAIN_SNAPSHOT_LIST_INTERNAL,      CONST_CS | CONST_PERSISTENT);
> +       REGISTER_LONG_CONSTANT("VIR_SNAPSHOT_LIST_EXTERNAL",    VIR_DOMAIN_SNAPSHOT_LIST_EXTERNAL,      CONST_CS | CONST_PERSISTENT);
> +       REGISTER_LONG_CONSTANT("VIR_SNAPSHOT_REVERT_RUNNING",   VIR_DOMAIN_SNAPSHOT_REVERT_RUNNING,     CONST_CS | CONST_PERSISTENT);
> +       REGISTER_LONG_CONSTANT("VIR_SNAPSHOT_REVERT_PAUSED",    VIR_DOMAIN_SNAPSHOT_REVERT_PAUSED,      CONST_CS | CONST_PERSISTENT);
> +       REGISTER_LONG_CONSTANT("VIR_SNAPSHOT_REVERT_FORCE",     VIR_DOMAIN_SNAPSHOT_REVERT_FORCE,       CONST_CS | CONST_PERSISTENT);
>         #endif
>
>         /* Memory constants */
>         REGISTER_LONG_CONSTANT("VIR_MEMORY_VIRTUAL",            1, CONST_CS | CONST_PERSISTENT);
>
>         /* Version checking constants */
> -       REGISTER_LONG_CONSTANT("VIR_VERSION_BINDING",           VIR_VERSION_BINDING,    CONST_CS | CONST_PERSISTENT);
> -       REGISTER_LONG_CONSTANT("VIR_VERSION_LIBVIRT",           VIR_VERSION_LIBVIRT,    CONST_CS | CONST_PERSISTENT);
> +       REGISTER_LONG_CONSTANT("VIR_VERSION_BINDING",           VIR_VERSION_BINDING,    CONST_CS | CONST_PERSISTENT);
> +       REGISTER_LONG_CONSTANT("VIR_VERSION_LIBVIRT",           VIR_VERSION_LIBVIRT,    CONST_CS | CONST_PERSISTENT);
>
>         /* Network constants */
>         REGISTER_LONG_CONSTANT("VIR_NETWORKS_ACTIVE",           VIR_NETWORKS_ACTIVE,    CONST_CS | CONST_PERSISTENT);
> -       REGISTER_LONG_CONSTANT("VIR_NETWORKS_INACTIVE",         VIR_NETWORKS_INACTIVE,  CONST_CS | CONST_PERSISTENT);
> -       REGISTER_LONG_CONSTANT("VIR_NETWORKS_ALL",              VIR_NETWORKS_ACTIVE |
> -                                                               VIR_NETWORKS_INACTIVE,  CONST_CS | CONST_PERSISTENT);
> +       REGISTER_LONG_CONSTANT("VIR_NETWORKS_INACTIVE", VIR_NETWORKS_INACTIVE,  CONST_CS | CONST_PERSISTENT);
> +       REGISTER_LONG_CONSTANT("VIR_NETWORKS_ALL",              VIR_NETWORKS_ACTIVE | VIR_NETWORKS_INACTIVE,    CONST_CS | CONST_PERSISTENT);
>
>         /* Credential constants */
>         REGISTER_LONG_CONSTANT("VIR_CRED_USERNAME",             1, CONST_CS | CONST_PERSISTENT);
> @@ -6394,17 +6418,19 @@ PHP_FUNCTION(libvirt_domain_get_job_info)
>         Since version:  0.4.1(-2)
>         Description:    Function is used to get the information whether domain has the current snapshot
>         Arguments:      @res [resource]: libvirt domain resource
> +                       @flags [int]
>         Returns:        TRUE is domain has the current snapshot, otherwise FALSE (you may need to check for error using libvirt_get_last_error())
>  */
>  PHP_FUNCTION(libvirt_domain_has_current_snapshot)
>  {
>         php_libvirt_domain *domain=NULL;
>         zval *zdomain;
> +       long flags = 0;
>         int retval;
>
> -       GET_DOMAIN_FROM_ARGS("r",&zdomain);
> +       GET_DOMAIN_FROM_ARGS("r|l",&zdomain, &flags);
>
> -       retval=virDomainHasCurrentSnapshot(domain->domain, 0);
> +       retval=virDomainHasCurrentSnapshot(domain->domain, flags);
>         if (retval <= 0) RETURN_FALSE;
>         RETURN_TRUE;
>  }
> @@ -6415,6 +6441,7 @@ PHP_FUNCTION(libvirt_domain_has_current_snapshot)
>         Description:    This functions is used to lookup for the snapshot by it's name
>         Arguments:      @res [resource]: libvirt domain resource
>                         @name [string]: name of the snapshot to get the resource
> +                       @flags [int]
>         Returns:        domain snapshot resource
>  */
>  PHP_FUNCTION(libvirt_domain_snapshot_lookup_by_name)
> @@ -6423,13 +6450,14 @@ PHP_FUNCTION(libvirt_domain_snapshot_lookup_by_name)
>         zval *zdomain;
>         int name_len;
>         char *name=NULL;
> +       long flags = 0;
>         php_libvirt_snapshot *res_snapshot;
>         virDomainSnapshotPtr snapshot = NULL;
>
> -       GET_DOMAIN_FROM_ARGS("rs",&zdomain,&name,&name_len);
> +       GET_DOMAIN_FROM_ARGS("rs|l",&zdomain,&name,&name_len, &flags);
>
>         if ( (name == NULL) || (name_len<1)) RETURN_FALSE;
> -       snapshot=virDomainSnapshotLookupByName(domain->domain, name, 0);
> +       snapshot=virDomainSnapshotLookupByName(domain->domain, name, flags);
>         if (snapshot==NULL) RETURN_FALSE;
>
>         res_snapshot = (php_libvirt_snapshot *)emalloc(sizeof(php_libvirt_snapshot));
> @@ -6446,6 +6474,7 @@ PHP_FUNCTION(libvirt_domain_snapshot_lookup_by_name)
>         Since version:  0.4.1(-2)
>         Description:    This function creates the domain snapshot for the domain identified by it's resource
>         Arguments:      @res [resource]: libvirt domain resource
> +                       @flags [int]
>         Returns:        domain snapshot resource
>  */
>  PHP_FUNCTION(libvirt_domain_snapshot_create)
> @@ -6453,11 +6482,12 @@ PHP_FUNCTION(libvirt_domain_snapshot_create)
>         php_libvirt_domain *domain=NULL;
>         php_libvirt_snapshot *res_snapshot;
>         zval *zdomain;
> +       long flags = 0;
>         virDomainSnapshotPtr snapshot = NULL;
>
> -       GET_DOMAIN_FROM_ARGS("r",&zdomain);
> +       GET_DOMAIN_FROM_ARGS("r|l",&zdomain, &flags);
>
> -       snapshot=virDomainSnapshotCreateXML(domain->domain, "<domainsnapshot/>", 0);
> +       snapshot=virDomainSnapshotCreateXML(domain->domain, "<domainsnapshot/>", flags);
>         DPRINTF("%s: virDomainSnapshotCreateXML(%p, <xml>) returned %p\n", PHPFUNC, domain->domain, snapshot);
>         if (snapshot == NULL) RETURN_FALSE;
>
> @@ -6475,6 +6505,7 @@ PHP_FUNCTION(libvirt_domain_snapshot_create)
>         Since version:  0.4.1(-2)
>         Description:    Function is used to get the XML description of the snapshot identified by it's resource
>         Arguments:      @res [resource]: libvirt snapshot resource
> +                       @flags [int]
>         Returns:        XML description string for the snapshot
>  */
>  PHP_FUNCTION(libvirt_domain_snapshot_get_xml)
> @@ -6482,11 +6513,12 @@ PHP_FUNCTION(libvirt_domain_snapshot_get_xml)
>         char *xml;
>         char *xml_out;
>         zval *zsnapshot;
> +       long flags = 0;
>         php_libvirt_snapshot *snapshot;
>
> -       GET_SNAPSHOT_FROM_ARGS("r",&zsnapshot);
> +       GET_SNAPSHOT_FROM_ARGS("r|l",&zsnapshot, &flags);
>
> -       xml = virDomainSnapshotGetXMLDesc(snapshot->snapshot, 0);
> +       xml = virDomainSnapshotGetXMLDesc(snapshot->snapshot, flags);
>         if (xml==NULL) RETURN_FALSE;
>
>         RECREATE_STRING_WITH_E(xml_out,xml);
> @@ -6499,19 +6531,21 @@ PHP_FUNCTION(libvirt_domain_snapshot_get_xml)
>         Since version:  0.4.1(-2)
>         Description:    Function is used to revert the domain state to the state identified by the snapshot
>         Arguments:      @res [resource]: libvirt snapshot resource
> +                       @flags [int]
>         Returns:        TRUE on success, FALSE on error
>  */
>  PHP_FUNCTION(libvirt_domain_snapshot_revert)
>  {
>         zval *zsnapshot;
>         php_libvirt_snapshot *snapshot;
> -       int ret;
> +       long flags = 0;
> +       int retval;
>
> -       GET_SNAPSHOT_FROM_ARGS("r",&zsnapshot);
> +       GET_SNAPSHOT_FROM_ARGS("r|l",&zsnapshot, &flags);
>
> -       ret = virDomainRevertToSnapshot(snapshot->snapshot, 0);
> -       DPRINTF("%s: virDomainRevertToSnapshot(%p, 0) returned %d\n", PHPFUNC, snapshot->snapshot, ret);
> -       if (ret == -1) RETURN_FALSE;
> +       retval = virDomainRevertToSnapshot(snapshot->snapshot, flags);
> +       DPRINTF("%s: virDomainRevertToSnapshot(%p, 0) returned %d\n", PHPFUNC, snapshot->snapshot, retval);
> +       if (retval == -1) RETURN_FALSE;
>         RETURN_TRUE;
>  }
>
> @@ -6543,6 +6577,7 @@ PHP_FUNCTION(libvirt_domain_snapshot_delete)
>         Since version:  0.4.1(-2)
>         Description:    Function is used to list domain snapshots for the domain specified by it's resource
>         Arguments:      @res [resource]: libvirt domain resource
> +                       @flags [int]
>         Returns:        libvirt domain snapshot names array
>  */
>  PHP_FUNCTION(libvirt_list_domain_snapshots)
> @@ -6551,17 +6586,18 @@ PHP_FUNCTION(libvirt_list_domain_snapshots)
>         zval *zdomain;
>         int count=-1;
>         int expectedcount=-1;
> +       long flags = 0;
>         char **names;
>         int i;
>
> -       GET_DOMAIN_FROM_ARGS("r",&zdomain);
> +       GET_DOMAIN_FROM_ARGS("r|l",&zdomain, &flags);
>
> -       expectedcount=virDomainSnapshotNum(domain->domain, 0);
> +       expectedcount=virDomainSnapshotNum(domain->domain, flags);
>         DPRINTF("%s: virDomainSnapshotNum(%p, 0) returned %d\n", PHPFUNC, domain->domain, expectedcount);
>
>         if (expectedcount != -1 ) {
>                 names=(char **)emalloc( expectedcount * sizeof(char *) );
> -               count=virDomainSnapshotListNames(domain->domain, names, expectedcount, 0);
> +               count=virDomainSnapshotListNames(domain->domain, names, expectedcount, flags);
>         }
>
>         if ((count != expectedcount) || (count<0)) {
> @@ -8863,4 +8899,3 @@ PHP_FUNCTION(libvirt_logfile_set)
>         RETURN_TRUE;
>  }
>  #endif
> -
> --
> 2.3.3
>



-- 
Vasiliy Tolstov,
e-mail: v.tolstov at selfip.ru




More information about the libvir-list mailing list