On Fri, May 24, 2013 at 9:24 PM, Min Chen <min.c...@citrix.com> wrote:

> +1 on enforcing it through db constraints. Create a JIRA ticket
> https://issues.apache.org/jira/browse/CLOUDSTACK-2676 to track this issue.
>

+1 enforce db constraints. May be have an options/feature in dbcreator to
enforce this check and populate in case it's missing or wrong.

Cheers.


>
> Thanks
> -min
>
> On 5/24/13 6:20 AM, "Alex Huang" <alex.hu...@citrix.com> wrote:
>
> >+1 on adding the constraints.  Just make sure you add them after
> >upgrading the data.
> >
> >Populating with id in the upgrade prevents exactly the problem you've
> >described.  That's why we're doing it.
> >
> >
> >--Alex
> >
> >> -----Original Message-----
> >> From: Nitin Mehta [mailto:nitin.me...@citrix.com]
> >> Sent: Thursday, May 23, 2013 11:09 PM
> >> To: dev@cloudstack.apache.org
> >> Subject: Re: Convention on UUID column
> >>
> >> Agree with Koushik. Lets enforce the not null constraint on all the
> >>UUID fields
> >> now that we are populating it.
> >>
> >> Also wanted to ask why we are populating it with the ID and not a
> >>generated
> >> UUID ? Doesn't break the backward compatibilty going either ways but the
> >> later is more consistent right and can be used in future as they are
> >>always
> >> unique across the system - say for storing templates directly under
> >>?UUID of
> >> the template/vol/snapshot on sec. storage than using the folder
> >>structure of
> >> templates/account_id/template_id/real_template ?
> >> Clients who have hardcoded against CS for system vm ids, service
> >>offering ids
> >> etc. will break definitely though - is that ok ?
> >>
> >> Thanks,
> >> -Nitin
> >>
> >> On 24/05/13 9:26 AM, "Koushik Das" <koushik....@citrix.com> wrote:
> >>
> >> >
> >> >It is better to add constraints in the db for all uuid fields. That way
> >> >uuid field will never get missed out. I see that for some tables there
> >> >is a NOT NULL constraint.
> >> >
> >> >-Koushik
> >> >
> >> >> -----Original Message-----
> >> >> From: Min Chen [mailto:min.c...@citrix.com]
> >> >> Sent: Friday, May 24, 2013 4:09 AM
> >> >> To: dev@cloudstack.apache.org
> >> >> Subject: Convention on UUID column
> >> >>
> >> >> Hi there,
> >> >>
> >> >> During API refactoring efforts, Rohit and I run into several issues
> >> >>due to  empty UUID column for existing DB entries. Since UUID was
> >> >>introduced later  in 3.0.x, we have to always conditionally handle
> >> >>existing customers with  empty UUID columns for different entities,
> >> >>causing much headache for  various upgrade cases. To make sure that we
> >> >>have a consistent upgrade base  for all 4.1 customers later, in
> >> >>schema-410to420.sql, we have added sql scripts  to populate UUID
> >> >>column of all pre-4.1 schema tables with values from their  ID column
> >> >>if UUID column is NULL. To make this work properly, we require  that
> >> >>all UUID columns should be populated with values when you add new
> >> >>data into both pre-4.1 schema or post-4.1 schema. I just noticed that
> >> >>this  assumption may not be well known to community, since I am seeing
> >> >>this sql  in schema-410to420.sql:
> >> >>
> >> >>
> >> >> INSERT INTO `cloud`.`vm_template` (id, unique_name, name, public,
> >> >>created, type, hvm, bits, account_id, url, checksum, enable_password,
> >> >>display_text, format, guest_os_id, featured, cross_zones,
> >> >>hypervisor_type)
> >> >>
> >> >>      VALUES (10, 'routing-10', 'SystemVM Template (LXC)', 0, now(),
> >> >>'SYSTEM',  0, 64, 1,
> >> >>'http://download.cloud.com/templates/acton/acton-systemvm-
> >> >> 02062012.qcow2.bz2', '2755de1f9ef2ce4d6f2bee2efbb4da92', 0,
> >> 'SystemVM
> >> >>Template (LXC)', 'QCOW2', 15, 0, 1, 'LXC');
> >> >>
> >> >>
> >> >> Instead, this should be modified as:
> >> >>
> >> >>
> >> >> INSERT INTO `cloud`.`vm_template` (id, uuid, unique_name, name,
> >> >>public,  created, type, hvm, bits, account_id, url, checksum,
> >> >>enable_password,  display_text, format, guest_os_id, featured,
> >> >>cross_zones,
> >> >>hypervisor_type)
> >> >>
> >> >>      VALUES (10, UUID(), 'routing-10', 'SystemVM Template (LXC)', 0,
> >> >>now(),  'SYSTEM', 0, 64, 1,
> >> >>'http://download.cloud.com/templates/acton/acton-
> >> >> systemvm-02062012.qcow2.bz2', '2755de1f9ef2ce4d6f2bee2efbb4da92', 0,
> >> >>'SystemVM Template (LXC)', 'QCOW2', 15, 0, 1, 'LXC');
> >> >>
> >> >> I have made this fix in master, but want to raise this topic to get
> >> >>community's  attention on this.
> >> >>
> >> >> Thanks
> >> >> -min
> >> >>
> >> >
> >
>
>

Reply via email to