[libvirt] [PATCH v3 3/8] test: Implement readonly snapshot APIs

Cole Robinson crobinso at redhat.com
Tue Oct 1 16:54:37 UTC 2013


On 09/26/2013 10:44 AM, Michal Privoznik wrote:
> On 25.09.2013 21:15, Cole Robinson wrote:
>> This is just stolen from qemu_driver.c with tweaks to fit the
>> test driver.
>> ---
>>  src/test/test_driver.c | 392 +++++++++++++++++++++++++++++++++++++++++++++++++
>>  1 file changed, 392 insertions(+)
>>
>> diff --git a/src/test/test_driver.c b/src/test/test_driver.c
>> index 7e60716..9a39087 100644
>> --- a/src/test/test_driver.c
>> +++ b/src/test/test_driver.c
>> @@ -45,6 +45,7 @@
>>  #include "interface_conf.h"
>>  #include "domain_conf.h"
>>  #include "domain_event.h"
>> +#include "snapshot_conf.h"
>>  #include "fdstream.h"
>>  #include "storage_conf.h"
>>  #include "node_device_conf.h"
>> @@ -423,6 +424,27 @@ static const unsigned long long defaultPoolAlloc = 0;
>>  static int testStoragePoolObjSetDefaults(virStoragePoolObjPtr pool);
>>  static int testNodeGetInfo(virConnectPtr conn, virNodeInfoPtr info);
>>  
>> +static virDomainObjPtr
>> +testDomObjFromDomain(virDomainPtr domain)
>> +{
>> +    virDomainObjPtr vm;
>> +    testConnPtr driver = domain->conn->privateData;
>> +    char uuidstr[VIR_UUID_STRING_BUFLEN];
>> +
>> +    testDriverLock(driver);
>> +    vm = virDomainObjListFindByUUID(driver->domains, domain->uuid);
>> +    if (!vm) {
>> +        virUUIDFormat(domain->uuid, uuidstr);
>> +        virReportError(VIR_ERR_NO_DOMAIN,
>> +                       _("no domain with matching uuid '%s' (%s)"),
>> +                       uuidstr, domain->name);
>> +        vm = NULL;
> 
> This line is NOP. But we have the very same line in qemu driver too. So
> please remove this and post patch that cleanups *DomObjFromDomain()
> functions (quick look into libxl and lxc drivers shows these functions
> can be simplified a bit).
> 

I dropped it from this patch, but the qemu driver isn't affected anymore since
that code was recently altered.

>> +    }
>> +
>> +    testDriverUnlock(driver);
>> +    return vm;
>> +}
> 
> Once we have this function a follow up patch would be nice - turn all these
> 
> testDriverLock()
> virDomainObjListFindByName()
> testDriverUnlock()
> 
> into testDomObjFromDomain().
> 

Yeah there's definitely a lot of opportunity for such cleanups in the test driver.

>> +
>>  static char *
>>  testDomainGenerateIfname(virDomainDefPtr domdef) {
>>      int maxif = 1024;
>> @@ -6098,6 +6120,362 @@ cleanup:
>>  }
>>  
>>  
>> +/*
>> + * Snapshot APIs
>> + */
>> +
> 
> Yup, these are true copy of qemu functions.
> 
>>  static virDriver testDriver = {
>>      .no = VIR_DRV_TEST,
>>      .name = "Test",
>> @@ -6174,6 +6552,20 @@ static virDriver testDriver = {
>>      .domainManagedSave = testDomainManagedSave, /* 1.1.3 */
>>      .domainHasManagedSaveImage = testDomainHasManagedSaveImage, /* 1.1.3 */
>>      .domainManagedSaveRemove = testDomainManagedSaveRemove, /* 1.1.3 */
>> +
>> +    .domainSnapshotNum = testDomainSnapshotNum, /* 1.1.3 */
>> +    .domainSnapshotListNames = testDomainSnapshotListNames, /* 1.1.3 */
>> +    .domainListAllSnapshots = testDomainListAllSnapshots, /* 1.1.3 */
>> +    .domainSnapshotGetXMLDesc = testDomainSnapshotGetXMLDesc, /* 1.1.3 */
>> +    .domainSnapshotNumChildren = testDomainSnapshotNumChildren, /* 1.1.3 */
>> +    .domainSnapshotListChildrenNames = testDomainSnapshotListChildrenNames, /* 1.1.3 */
>> +    .domainSnapshotListAllChildren = testDomainSnapshotListAllChildren, /* 1.1.3 */
>> +    .domainSnapshotLookupByName = testDomainSnapshotLookupByName, /* 1.1.3 */
>> +    .domainHasCurrentSnapshot = testDomainHasCurrentSnapshot, /* 1.1.3 */
>> +    .domainSnapshotGetParent = testDomainSnapshotGetParent, /* 1.1.3 */
>> +    .domainSnapshotCurrent = testDomainSnapshotCurrent, /* 1.1.3 */
>> +    .domainSnapshotIsCurrent = testDomainSnapshotIsCurrent, /* 1.1.3 */
>> +    .domainSnapshotHasMetadata = testDomainSnapshotHasMetadata, /* 1.1.3 */
>>  };
>>  
>>  static virNetworkDriver testNetworkDriver = {
>>
> 
> Unfortunately, we are in the freeze, so you'll need to update these to
> 1.1.4 and push after the release.
> 
> ACK
> 

Pushed with those changes.

Thanks,
Cole




More information about the libvir-list mailing list