On Tue, Nov 17, 2009 at 11:26:00AM +0000, Daniel P. Berrange wrote:
On Tue, Nov 17, 2009 at 12:16:11PM +0100, Daniel Veillard wrote:
> This fixes
https://bugzilla.redhat.com/show_bug.cgi?id=504262
> where the xen drivers happily allows to define domains with conflicting
> UUID. This is similar to the virDomainObjIsDuplicate check done in other
> drivers but the internal structures are different so this need to be
> done in a special way
>
> Author: Daniel Veillard <veillard(a)redhat.com>
> Date: Tue Nov 17 12:06:46 2009 +0100
>
> 504262 Check for duplicated UUID in XM Xen defines
>
> * src/xen/xm_internal.c: the XM driver was not checking for previously
> defined UUID on new defines. Similar to virDomainObjIsDuplicate()
> behaviour.
>
> diff --git a/src/xen/xm_internal.c b/src/xen/xm_internal.c
> index f833ce7..47bcc11 100644
> --- a/src/xen/xm_internal.c
> +++ b/src/xen/xm_internal.c
> @@ -2623,6 +2623,26 @@ virDomainPtr xenXMDomainDefineXML(virConnectPtr conn, const
char *xml) {
> return (NULL);
> }
>
> + /*
> + * check that if there is another domain defined with the same uuid
> + * it has the same name
> + */
> + if ((entry = virHashSearch(priv->configCache, xenXMDomainSearchForUUID,
> + (const void *)&(def->uuid))) != NULL) {
> + if ((entry->def != NULL) && (entry->def->name != NULL)
&&
> + (STRNEQ(def->name, entry->def->name))) {
> + char uuidstr[VIR_UUID_STRING_BUFLEN];
> +
> + virUUIDFormat(entry->def->uuid, uuidstr);
> + xenXMError(conn, VIR_ERR_OPERATION_FAILED,
> + _("domain '%s' is already defined with uuid
%s"),
> + entry->def->name, uuidstr);
> + entry = NULL;
> + goto error;
> + }
> + entry = NULL;
> + }
> +
> if (virHashLookup(priv->nameConfigMap, def->name)) {
> /* domain exists, we will overwrite it */
>
>
ACK, though the indentation looks a little off here.
yup some tabs got there, I fixed them before pushing,
Daniel
--
Daniel Veillard | libxml Gnome XML XSLT toolkit