"virDomainMigrateSetMaxSpeed" : (False, ("bandwidth")),
"virDomainSetMaxMemory" : (False, ("memory")),
"virDomainSetMemory" : (False, ("memory")),
- "virDomainSetMemoryFlags" : (False, ("memory")) }
+ "virDomainSetMemoryFlags" : (False, ("memory")),
+ "virDomainBlockJobSetSpeed" : (False, ("bandwidth")),
+ "virDomainBlockPull" : (False, ("bandwidth")) }
def checkLongLegacyFunction(self, name, return_type, signature):
if "long" in return_type and "long long" not in return_type:
# [unsigned] long long
long_legacy_struct_fields = \
{ "_virDomainInfo" : ("maxMem", "memory"),
- "_virNodeInfo" : ("memory") }
+ "_virNodeInfo" : ("memory"),
+ "_virDomainBlockJobInfo" : ("bandwidth") }
def checkLongLegacyStruct(self, name, fields):
for field in fields:
int virDomainUpdateDeviceFlags(virDomainPtr domain,
const char *xml, unsigned int flags);
+/*
+ * BlockJob API
+ */
+
+/**
+ * virDomainBlockJobType:
+ *
+ * VIR_DOMAIN_BLOCK_JOB_TYPE_PULL: Block Pull (virDomainBlockPull)
+ */
+typedef enum {
+ VIR_DOMAIN_BLOCK_JOB_TYPE_UNKNOWN = 0,
+ VIR_DOMAIN_BLOCK_JOB_TYPE_PULL = 1,
+} virDomainBlockJobType;
+
+/* An iterator for monitoring block job operations */
+typedef unsigned long long virDomainBlockJobCursor;
+
+typedef struct _virDomainBlockJobInfo virDomainBlockJobInfo;
+struct _virDomainBlockJobInfo {
+ virDomainBlockJobType type;
+ unsigned long bandwidth;
+ /*
+ * The following fields provide an indication of block job progress. @cur
+ * indicates the current position and will be between 0 and @end. @end is
+ * the final cursor position for this operation and represents completion.
+ * To approximate progress, divide @cur by @end.
+ */
+ virDomainBlockJobCursor cur;
+ virDomainBlockJobCursor end;
+};
+typedef virDomainBlockJobInfo *virDomainBlockJobInfoPtr;
+
+int virDomainBlockJobAbort(virDomainPtr dom, const char *path,
+ unsigned int flags);
+int virDomainGetBlockJobInfo(virDomainPtr dom, const char *path,
+ virDomainBlockJobInfoPtr info,
+ unsigned int flags);
+int virDomainBlockJobSetSpeed(virDomainPtr dom, const char *path,
+ unsigned long bandwidth, unsigned int flags);
+
+int virDomainBlockPull(virDomainPtr dom, const char *path,
+ unsigned long bandwidth, unsigned int flags);
+
+
/*
* NUMA support
*/
functions_failed = []
functions_skipped = [
"virConnectListDomains",
+ 'virDomainGetBlockJobInfo',
]
skipped_modules = {
'virStreamEventCallback': "No function types in python",
'virEventHandleCallback': "No function types in python",
'virEventTimeoutCallback': "No function types in python",
+ 'virDomainBlockJobInfoPtr': "Not implemented yet",
}
#######################################################################
unsigned long flags,
int cancelled);
+
+typedef int
+ (*virDrvDomainBlockJobAbort)(virDomainPtr dom, const char *path,
+ unsigned int flags);
+
+typedef int
+ (*virDrvDomainGetBlockJobInfo)(virDomainPtr dom, const char *path,
+ virDomainBlockJobInfoPtr info,
+ unsigned int flags);
+
+typedef int
+ (*virDrvDomainBlockJobSetSpeed)(virDomainPtr dom,
+ const char *path, unsigned long bandwidth,
+ unsigned int flags);
+
+typedef int
+ (*virDrvDomainBlockPull)(virDomainPtr dom, const char *path,
+ unsigned long bandwidth, unsigned int flags);
+
+
/**
* _virDriver:
*
virDrvDomainMigrateFinish3 domainMigrateFinish3;
virDrvDomainMigrateConfirm3 domainMigrateConfirm3;
virDrvDomainSendKey domainSendKey;
+ virDrvDomainBlockJobAbort domainBlockJobAbort;
+ virDrvDomainGetBlockJobInfo domainGetBlockJobInfo;
+ virDrvDomainBlockJobSetSpeed domainBlockJobSetSpeed;
+ virDrvDomainBlockPull domainBlockPull;
};
typedef int
virDomainSaveImageGetXMLDesc;
virDomainUndefineFlags;
virDomainDestroyFlags;
+ virDomainBlockJobAbort;
+ virDomainGetBlockJobInfo;
+ virDomainBlockJobSetSpeed;
+ virDomainBlockPull;
} LIBVIRT_0.9.3;
# .... define new API here using predicted next version number ....