Hi John,

Thanks a lot for your detailed feedback, but I strongly suggest to continue
to discuss about them after this development is wrapped up
because this feature is provided as a plugin and and will not work unless
you turn it on in case you don't want to use.

Thanks
Alex Ough


On Fri, Jun 27, 2014 at 11:49 AM, John Burwell <jburw...@basho.com> wrote:

> Alex,
>
> I appreciate you taking the time to answer my questions since I am late
> joining this conversation.  I wanted to make sure I understand the
> underlying design and its assumptions before commenting in depth. My
> detailed followups are in-line below.  TL;DR I am concerned that the design
> does not properly address the myriad of network partition or conflict
> resolution scenarios that will inevitably arise in real world operation.
>  Furthermore, you did not answer my biggest question — why isn’t something
> like Percona master-master replication [1] not sufficient for this
> capability?
>
> I apologize again for missing the original proposal thread as we could
> have addressed these issues before code was cut.  I would imagine you are
> likely frustrated by the length of time it has taken to get this patch into
> master.  I would like to say you experience is atypical, and my goal is to
> help find the best design/solution for multi-region data sync.  Finally,
> please don’t take my feedback (or anyone else’s) as a lack of appreciate
> for your efforts.  I come at every review from the perspective that I will
> be one of the people responsible for supporting/maintaining it in future
> releases.  Therefore, I want to ensure that new work does not incur any
> technical debt that would hobble the community’s long term development
> efforts.
>
> Thanks,
> -John
>
> On June 27, 2014 at 7:46:21 AM, Alex Ough (alex.o...@sungardas.com) wrote:
>
> Jonn,
>
> 1. out of spec. we can add this later if necessary.
> 2. out of spec. we can add this later if necessary.
> 3. out of spec. we can add this later if necessary.
>
> I want to understand why these data elements were not included.  To my
> mind, this feature is functionally incomplete without the inclusion of
> project and event data.  One of the primary use cases for this capability
> will be geographical distribution of applications/system for which sync’ed
> project data will be required.  Without the synchronization of the event
> data, it is impossible to gain a complete operational picture of the
> infrastructure being managed.  Template data I could accept as being
> deferred to a later release though I think this omission will disappoint
> many multi-region users.
>
> Today, we sidestep these issues because we don’t sync anything — each
> region runs an independent CloudStack instance owned and operated by the
> same organization.  However, once we start syncing data between regions, we
> need to ensure that the data set is logically complete.  If we do not, the
> feature will, at best, be cruft the community must maintain and frustrate
> users.
>
>
> 4. Whenever there are changes in the records, the time stamps are logged
> and the later change wins.
>
> Timestamps are, perhaps, the most unreliable approach to conflict
> resolution.  (As an side, Riak defaults to last write wins, and we regret
> that decision on a daily basis.  So much so that it won’t be the default in
> 2.0.)  It requires complete time sync across all regions which is
> notoriously difficult to achieve. In practice, it typically requires GPS
> receivers in each data center.  When clocks fall out of sync, data gets
> silently corrupted — no errors occur. Therefore, I do not believe we can
> accept timestamp based conflict resolution due to high likelihood of data
> corruption.
>
> I highly suggest reading Lamport’s classic Time, Clocks, and the Ordering
> of Events in a Distributed System [2] paper for a deeper examination of the
> issues with using wall clocks for data synchronization and approaches to
> achieving partial event ordering.  Thankfully, there are safe approaches to
> distributed conflict resolution such as vector clocks[3][4][5], version
> vectors[6], and CRDTs [7].
>
>
> 5. It relies on the order of events, so if the order is reversed with some
> reason, the creations will fail, but they will be covered by FullScan.
>
> First, there is no guaranteed order of message delivery unless the
> synchronization mechanism uses a single consumer thread.  While this
> approach would assure ordered processing, it not would scale sufficiently
> (i.e. realtime data sync wouldn’t be on the very long end of eventually
> consistent).  How does the FullScan operation exchange data between
> regions?  Also, do you intend for this feature to be a master-master or
> master-slave replication model?  If it is master-master, a final
> reconciliation step will be required by the region initiating the FullScan
> operation which a tricky bit to properly implement since changes may occur
> in the data between the time the FullScan is initiated and the
> reconciliation begins.  How does the mechanism handle an interruption of
> the FullScan operation (e.g. management server or database crash or network
> partition during sync operation)?
>
> In terms of handling the referential integrity issue, one approach that
> could work would be to resubmit the message when a referential integrity
> error occurs — assuming that the message for a parent record is either
> waiting in the queue or being processed concurrently.  Such an approach
> must include a retry count and limit to protect against scenarios where the
> parent-child relationships can not be resolved and the management server
> simply needs to give up.
>
> 6. It sounds like not related with this project.
>
> Partition tolerance is absolutely critical to any data synchronization
> operation.  In CAP terms, you are proposing a available/partition tolerant
> mechanism.  There will inevitably be network partitions when synchronizing
> data across WAN links (as there will be inside a datacenter). How does this
> design provide the partition tolerance to ensure correct and complete sync
> following periods of network unavailability between regions?  I suggest
> reading Kyle Kingsbury’s excellent Call Me Maybe [8] series on this
> subject.  To give away a bit of the ending, RabbitMQ does not provide
> proper partition tolerance [9][10].  Without understanding how this
> attribute will be fulfilled, the design is, in my view, incomplete.
>
>
> 7. The interval for FullScan processing is configurable in the global
> setting, 'region.full.scan.interval'.
>
> The interval does not address the problem that the system may be be under
> high load when the FullScan starts.  Without back pressure, this mechanism
> could cause an internal denial of service since it may perform full scans
> of potentially large tables.  Therefore, there should be check in the
> FullScan that the system is not too busy to perform the operation.  If it
> is, then it should skip the FullScan and try again at the next interval.
>  Also, how does the FullScan operation prevent memory explosion as data
> sets grow?
>
>
>
> Thanks
> Alex Ough
>
>
> [1]:
> http://www.percona.com/doc/percona-xtradb-cluster/5.5/features/multimaster-replication.html
> [2]: http://web.stanford.edu/class/cs240/readings/lamport.pdf
> [3]: http://en.wikipedia.org/wiki/Vector_clock (yes, Wikipedia has a
> good, straightforward explanation)
> [4]: http://basho.com/why-vector-clocks-are-easy/
> [5]: http://basho.com/why-vector-clocks-are-hard/
> [6]: http://en.wikipedia.org/wiki/Version_vector
> [7]: http://pagesperso-systeme.lip6.fr/Marc.Shapiro/papers/RR-6956.pdf
> [8]: http://aphyr.com/
> [9]: http://aphyr.com/posts/315-call-me-maybe-rabbitmq
> [10]: https://www.rabbitmq.com/partitions.html
>
>
> On Fri, Jun 27, 2014 at 12:02 AM, John Burwell <jburw...@basho.com> wrote:
>
>> All,
>>
>> I apologize for joining this conversation late.  I understand that this
>> patch was submitted back in February.  Around this time, my family had a
>> significant medical event, and I was disengaged from all work activities —
>> missing the original conversation.
>>
>> Reading through the specification, and briefly reviewing the code, I
>> would like to understand the following assumptions/design decisions:
>>
>>    1. Why aren’t projects being sync’ed?  It seems very likely that users
>> would want to have projects span data centers for redundancy/DR purposes.
>>    2. Why aren’t events being sync’ed?  I can imagine a number of
>> scenarios where I would want to examine the operation of an logical
>> application or system across both regions. Without the sync of event data,
>> I would be forced to either perform that interleave visually with two
>> browser tabs or dump the data into another datastore to be merged.
>>    3. Why isn’t template metadata being sync’ed?  When spanning an
>> application/system across regions, it would seem to follow that I would
>> want to use the same templates.
>>    4. How does this design deal with modifications to a record in two or
>> more regions during a network partition?
>>    5. Given that messages can/will be processed out of order, how is
>> referential integrity maintained when a parent and a set of children are
>> created (e.g. creation of a new account and a set of users rapidly through
>> the API)?
>>    6. Is RabbitMQ being relied upon to provide partition tolerance?
>>    7. Is there a back pressure mechanism to throttle the full sync
>> operation when the database/management server is under heavy load?
>>
>> Finally, I would like to understand why we are taking on multi-datacenter
>> data replication in CloudStack, and not deferring to underlying datastore.
>>  Speaking as someone whose $dayjob involves delivering such a system (at
>> Basho for Riak), it is a very hard thing to get right (there literally
>> thousands of corner cases).  The design document does not speak to this
>> decision, and I would like understand how CloudStack could not leverage
>> existing, mature mechanisms at the datastore-level.
>>
>> I apologize if some of these questions have been answered already.  I
>> attempt to look back in the archives, but given the span of this
>> conversation, it was difficult to piece together retroactively.
>>
>> Thanks,
>> -John
>>
>> On June 26, 2014 at 5:34:31 PM, Alex Ough (alex.o...@sungardas.com)
>> wrote:
>>
>> Sounds like it goes back to what I said.... I wish they have been involved
>> more actively from the start.
>>
>> Thanks but really making me tired.
>> Alex Ough
>>
>>
>> On Thu, Jun 26, 2014 at 5:17 PM, Alena Prokharchyk <
>> alena.prokharc...@citrix.com> wrote:
>>
>> > I did logic review according to the FS assuming that the FS (and the
>> > design described there) was approved on the [PROPOSAL] stage, BEFORE the
>> > code was put it to the review board. Was it approved at that stage?
>> >
>> > Alex, the feature is not small, and considering that it raised so many
>> > questions and arguing, I would really like to get a final design/logic
>> > review + “ship it” from people having expertise on the topic, and/or who
>> > originally participated in review/discussion: Chiradeep, Kishan, Murail.
>> >
>> > Thank you,
>> > Alena.
>> >
>> > From: Alex Ough <alex.o...@sungardas.com>
>> > Date: Thursday, June 26, 2014 at 1:53 PM
>> >
>> > To: Alena Prokharchyk <alena.prokharc...@citrix.com>
>> > Cc: Kishan Kavala <kishan.kav...@citrix.com>, "
>> dev@cloudstack.apache.org"
>> > <dev@cloudstack.apache.org>, Murali Reddy <murali.re...@citrix.com>,
>> Ram
>> > Ganesh <ram.gan...@citrix.com>, Animesh Chaturvedi <
>> > animesh.chaturv...@citrix.com>
>> > Subject: Re: Review Request 20099: Domain-Account-User Sync Up Among
>> > Multiple Regions (Core Changes)
>> >
>> > Alena,
>> > Didn't you say that you guys already "did logic review" in the previous
>> > email?
>> >
>> > Thanks
>> > Alex Ough
>> >
>> >
>> > On Thu, Jun 26, 2014 at 2:59 PM, Alena Prokharchyk <
>> > alena.prokharc...@citrix.com> wrote:
>> >
>> >> Alex, sorry to hear that it took so long to get on the review process.
>> >> The question still remains – before you started working on
>> implementation,
>> >> and posted your plugin’s code, was the FS approved/reviewed as a part
>> of
>> >> [PROPOSAL] discussion? We should never start the development until you
>> get
>> >> the input from the community on the FS and confirm that the design is
>> valid
>> >> and the feature can contribute to CS. Only after the proposal is
>> accepted,
>> >> you can request the Reviewboard ticket review. So I did assume that the
>> >> [PROPOSAL] phase was finished, and the FS was validated as a part of
>> it,
>> >> when I was asked by Daan to review the Reviewboard ticket.
>> >>
>> >> I’ve also looked at the history. I can see that Chiradeep contributed
>> >> to the design/plugin logic discussion as well as pointed to the changes
>> >> that need to be done to the code structure. I helped to review the
>> second.
>> >>
>> >> Lets wait for the update from Kishan. Kishan, in addition to answering
>> >> Alex’s questions, please go over the plugin design once again.
>> >>
>> >> Thank you,
>> >> Alena.
>> >>
>> >> From: Alex Ough <alex.o...@sungardas.com>
>> >> Date: Thursday, June 26, 2014 at 11:32 AM
>> >>
>> >> To: Alena Prokharchyk <alena.prokharc...@citrix.com>
>> >> Cc: Kishan Kavala <kishan.kav...@citrix.com>, "
>> dev@cloudstack.apache.org"
>> >> <dev@cloudstack.apache.org>, Murali Reddy <murali.re...@citrix.com>,
>> Ram
>> >> Ganesh <ram.gan...@citrix.com>, Animesh Chaturvedi <
>> >> animesh.chaturv...@citrix.com>
>> >> Subject: Re: Review Request 20099: Domain-Account-User Sync Up Among
>> >> Multiple Regions (Core Changes)
>> >>
>> >> Alena,
>> >>
>> >> It has been reduced almost twice because a lot has been separated from
>> >> the CS and moved to the plug-in not because they are 'unnecessary'.
>> Please
>> >> remember that my initial implementation was inside the CS not as a
>> plug-in
>> >> as I said in the previous email.
>> >>
>> >> Of course, I asked and urged the review repeatedly and you'll see the
>> >> all the histories of them if you find emails using this subject, which
>> >> started 10/17/13.
>> >> [DISCUSS] Domain-Account-User Sync Up Among Multiple Regions
>> >> Even if I asked so many times, unfortunately, I couldn't get an actual
>> >> feedback until Daan finally asked Chiradeep and you to review them,
>> >> which is 3/10/14.
>> >>
>> >> Kishan,
>> >> I posted 2 questions, so please guide me for the questions.
>> >>
>> >> Thanks
>> >> Alex Ough
>> >>
>> >>
>> >>
>> >> On Thu, Jun 26, 2014 at 12:57 PM, Alena Prokharchyk <
>> >> alena.prokharc...@citrix.com> wrote:
>> >>
>> >>> Alex,
>> >>>
>> >>> By “huge” I’ve meant that there was a lot of repetitive hardcoded
>> >>> things, lot of unnecessary changes to the CS orchestration layer. If
>> you
>> >>> compare a number of changes now and originally, you can see that it
>> reduced
>> >>> almost twice.
>> >>>
>> >>> But lets discuss the complains about lack of initial review as its
>> >>> more important question.
>> >>>
>> >>> Review of the design spec should happen before you start
>> >>> designing/coding. As I jumped on review much later, after you’ve
>> submitted
>> >>> the entire plugin code, so I I didn’t participate in “Feature Request”
>> >>> discussion review that might have happened earlier. And I do assume
>> that
>> >>> the reviews/emails exchanges were done at that initial phase? You
>> should
>> >>> have contacted the people participating in the initial phase, and ask
>> them
>> >>> for the review as well.
>> >>>
>> >>> As a part of my review, I’ve made sure to cover the things I’m certain
>> >>> should have been changed. I’ve reviewed the feature logic as well,
>> >>> consulting the FS you’ve written. I’m not saying that there is
>> anything
>> >>> wrong with your initial design, but asking for a second opinion from
>> the
>> >>> guys who have more expertise in Regions.
>> >>>
>> >>> Kishan, please help to do the final review the Alex’s plugin design
>> >>> https://reviews.apache.org/r/17790
>> >>>
>> >>> Thank you,
>> >>> Alena.
>> >>> From: Alex Ough <alex.o...@sungardas.com>
>> >>> Date: Wednesday, June 25, 2014 at 9:03 PM
>> >>>
>> >>> To: Alena Prokharchyk <alena.prokharc...@citrix.com>
>> >>> Cc: Kishan Kavala <kishan.kav...@citrix.com>, "
>> dev@cloudstack.apache.org"
>> >>> <dev@cloudstack.apache.org>, Murali Reddy <murali.re...@citrix.com>,
>> >>> Ram Ganesh <ram.gan...@citrix.com>, Animesh Chaturvedi <
>> >>> animesh.chaturv...@citrix.com>
>> >>> Subject: Re: Review Request 20099: Domain-Account-User Sync Up Among
>> >>> Multiple Regions (Core Changes)
>> >>>
>> >>> Alena,
>> >>>
>> >>> I understand that you have been helping a lot to make my codes to
>> >>> match the coding standards, but I'm not sure what you mean by "the
>> code
>> >>> base was unnecessary huge".
>> >>> The initial implementation was to support the synchronization inside
>> the
>> >>> CS because this feature is missing in the current multiple region
>> support,
>> >>> and most of jobs were to separate the implementation from the CS
>> because
>> >>> you guys wanted me to provide it as a plugin.
>> >>>
>> >>> And I kept asking reviews for the design spec from when I published
>> >>> the documents with initial prototype, it took a while for you to
>> start to
>> >>> review my implementation and they have been mostly about the coding
>> >>> standards instead of the logic itself. So I'm saying that it would
>> have
>> >>> been better if there has been someone to review the design spec and
>> the
>> >>> prototype from the initial phase.
>> >>>
>> >>> Again, I really appreciate your help to come this far, but it was also
>> >>> very painful for me.
>> >>> Thanks
>> >>> Alex Ough
>> >>>
>> >>>
>> >>> On Wed, Jun 25, 2014 at 10:41 PM, Alena Prokharchyk <
>> >>> alena.prokharc...@citrix.com> wrote:
>> >>>
>> >>>> Alex,
>> >>>>
>> >>>> In the beginning the code was not very well organazied, didn't match
>> >>>> coding standarts (no use of spring, misleading names, not segregated
>> to its
>> >>>> own plugin), and the code base was unneccessary huge.
>> >>>> All of the above it very hard to review and understand the code logic
>> >>>> from the beginning and engage more people to the review. Therefore
>> >>>> Chiradeep pointed it in his original review that the code needs to
>> match CS
>> >>>> standarts first, and be better organized. I helped to review the
>> fixes, and
>> >>>> did logic review as well after the code came into “reviewable” shape.
>> >>>>
>> >>>> I'm asking Kishan/Murali to look at it to see if anything is missing
>> >>>> or incorrect in the final review, not to make you override or change
>> >>>> everything you've already put in.
>> >>>>
>> >>>> Thank you,
>> >>>> Alena.
>> >>>>
>> >>>> From: Alex Ough <alex.o...@sungardas.com>
>> >>>> Date: Wednesday, June 25, 2014 at 7:12 PM
>> >>>>
>> >>>> To: Alena Prokharchyk <alena.prokharc...@citrix.com>
>> >>>> Cc: Kishan Kavala <kishan.kav...@citrix.com>, "
>> >>>> dev@cloudstack.apache.org" <dev@cloudstack.apache.org>, Murali
>> Reddy <
>> >>>> murali.re...@citrix.com>, Ram Ganesh <ram.gan...@citrix.com>,
>> Animesh
>> >>>> Chaturvedi <animesh.chaturv...@citrix.com>
>> >>>> Subject: Re: Review Request 20099: Domain-Account-User Sync Up Among
>> >>>> Multiple Regions (Core Changes)
>> >>>>
>> >>>> Alena,
>> >>>>
>> >>>> Don't get me wrong. What I'm saying is that it would have been better
>> >>>> if you asked the review to whomever you thought was important when
>> you
>> >>>> started the review.
>> >>>>
>> >>>> Thanks
>> >>>> Alex Ough
>> >>>>
>> >>>>
>> >>>> On Wed, Jun 25, 2014 at 9:45 PM, Alena Prokharchyk <
>> >>>> alena.prokharc...@citrix.com> wrote:
>> >>>>
>> >>>>> Alex,
>> >>>>>
>> >>>>> I did my best to review the code, made sure it came in shape with
>> >>>>> the CS guidelines and java code style There was no way to
>> anticipate all
>> >>>>> the things to fix originally, as every subsequent review update
>> added more
>> >>>>> things to fix as the review code was new/refactored.
>> >>>>>
>> >>>>> And I don’t see anything wrong about asking for a FINAL opinion from
>> >>>>> other people on the mailing list, considering some of them
>> participated in
>> >>>>> the review process along the way already (Kishan). Anybody can
>> review the
>> >>>>> review ticket till its closed, and point to the items that other
>> reviewers
>> >>>>> might have missed.
>> >>>>>
>> >>>>> Thank you,
>> >>>>> Alena.
>> >>>>>
>> >>>>> From: Alex Ough <alex.o...@sungardas.com>
>> >>>>> Date: Wednesday, June 25, 2014 at 6:33 PM
>> >>>>> To: Alena Prokharchyk <alena.prokharc...@citrix.com>
>> >>>>> Cc: Kishan Kavala <kishan.kav...@citrix.com>, "
>> >>>>> dev@cloudstack.apache.org" <dev@cloudstack.apache.org>, Murali
>> Reddy <
>> >>>>> murali.re...@citrix.com>, Ram Ganesh <ram.gan...@citrix.com>,
>> Animesh
>> >>>>> Chaturvedi <animesh.chaturv...@citrix.com>
>> >>>>>
>> >>>>> Subject: Re: Review Request 20099: Domain-Account-User Sync Up Among
>> >>>>> Multiple Regions (Core Changes)
>> >>>>>
>> >>>>> Thanks Alena, and I'm glad if they spend time for the review, but
>> >>>>> could it be a little earlier for you to ask them to review instead
>> of at
>> >>>>> the last moment?
>> >>>>> I'm really exhausted with repeatedly added items whenever I post a
>> >>>>> review.
>> >>>>>
>> >>>>> Thanks
>> >>>>> Alex Ough
>> >>>>>
>> >>>>>
>> >>>>> On Wed, Jun 25, 2014 at 7:44 PM, Alena Prokharchyk <
>> >>>>> alena.prokharc...@citrix.com> wrote:
>> >>>>>
>> >>>>>> Alex, looks fine to me. Make sure that you put the regionId
>> >>>>>> validation as our in-built API validation won’t work in this case
>> because
>> >>>>>> there is no UUID field support for the Region object. You can
>> check how
>> >>>>>> validation is begin done in updateRegion/deleteRegion scenarios.
>> >>>>>>
>> >>>>>> Kishan/Murali, can you please spend some time doing the final
>> >>>>>> review for Alex’s tickets? As you are the original developers for
>> Region,
>> >>>>>> and probably have the most expertise on the topic. I don’t want to
>> commit
>> >>>>>> the fixes before I hear “ship it” from both of you, guys.
>> >>>>>>
>> >>>>>> Thanks,
>> >>>>>> Alena.
>> >>>>>> From: Alex Ough <alex.o...@sungardas.com>
>> >>>>>> Date: Wednesday, June 25, 2014 at 4:02 PM
>> >>>>>> To: Kishan Kavala <kishan.kav...@citrix.com>
>> >>>>>> Cc: Alena Prokharchyk <alena.prokharc...@citrix.com>, "
>> >>>>>> dev@cloudstack.apache.org" <dev@cloudstack.apache.org>, Murali
>> Reddy
>> >>>>>> <murali.re...@citrix.com>, Ram Ganesh <ram.gan...@citrix.com>,
>> >>>>>> Animesh Chaturvedi <animesh.chaturv...@citrix.com>
>> >>>>>>
>> >>>>>> Subject: Re: Review Request 20099: Domain-Account-User Sync Up
>> Among
>> >>>>>> Multiple Regions (Core Changes)
>> >>>>>>
>> >>>>>> Hi Alena,
>> >>>>>>
>> >>>>>> Can you confirm if this fix is correct?
>> >>>>>>
>> >>>>>> @Parameter(name = ApiConstants.ORIGINATED_REGION_ID, type =
>> >>>>>> CommandType.INTEGER, description = "Region where this account is
>> created.",
>> >>>>>> since = "4.5")
>> >>>>>> private Integer originatedRegionId;
>> >>>>>>
>> >>>>>> Thanks
>> >>>>>> Alex Ough
>> >>>>>>
>> >>>>>>
>> >>>>>> On Wed, Jun 25, 2014 at 11:03 AM, Kishan Kavala <
>> >>>>>> kishan.kav...@citrix.com> wrote:
>> >>>>>>
>> >>>>>>> Alex,
>> >>>>>>>
>> >>>>>>> You can refer to the code from initDataSource method in
>> >>>>>>> Transaction.java.
>> >>>>>>>
>> >>>>>>> Properties file can be loaded using the following:
>> >>>>>>>
>> >>>>>>>
>> >>>>>>>
>> >>>>>>> *File dbPropsFile = PropertiesUtil.findConfigFile(propsFileName);*
>> >>>>>>>
>> >>>>>>>
>> >>>>>>>
>> >>>>>>> *From:* Alex Ough [mailto:alex.o...@sungardas.com]
>> >>>>>>> *Sent:* Wednesday, 25 June 2014 4:31 PM
>> >>>>>>> *To:* Kishan Kavala
>> >>>>>>> *Cc:* Alena Prokharchyk; dev@cloudstack.apache.org; Murali Reddy;
>> >>>>>>> Ram Ganesh; Animesh Chaturvedi
>> >>>>>>>
>> >>>>>>> *Subject:* Re: Review Request 20099: Domain-Account-User Sync Up
>> >>>>>>> Among Multiple Regions (Core Changes)
>> >>>>>>>
>> >>>>>>>
>> >>>>>>>
>> >>>>>>> Thanks Kishan, but there seems to be lots of 'db.properties'
>> files,
>> >>>>>>> so which one should be referenced?
>> >>>>>>>
>> >>>>>>>
>> >>>>>>>
>> >>>>>>> Alex Ough
>> >>>>>>>
>> >>>>>>>
>> >>>>>>>
>> >>>>>>> On Wed, Jun 25, 2014 at 2:25 AM, Kishan Kavala <
>> >>>>>>> kishan.kav...@citrix.com> wrote:
>> >>>>>>>
>> >>>>>>> Alex,
>> >>>>>>>
>> >>>>>>> As Alena mentioned, it is admin’s responsibility to keep ids same
>> >>>>>>> across Regions. Ids should be used as unique identifier. Region
>> name is
>> >>>>>>> merely descriptive name and its mostly associated with geographic
>> location.
>> >>>>>>>
>> >>>>>>> Also note that region name can be updated anytime using
>> updateRegion
>> >>>>>>> API.
>> >>>>>>>
>> >>>>>>>
>> >>>>>>>
>> >>>>>>> Unlike, other internal Ids in CS, region Ids are assigned by
>> admin.
>> >>>>>>> So exposing region Id to admin should not be an issue.
>> >>>>>>>
>> >>>>>>>
>> >>>>>>>
>> >>>>>>> Id of the local region cannot be guaranteed to be “1” always.
>> Region
>> >>>>>>> Id has to be unique across all regions. While creating new region
>> admin
>> >>>>>>> will provide unique region id to *cloud-setup-databases* script.
>> Id
>> >>>>>>> of the local region is stored in db.properties. To identify a
>> Local region
>> >>>>>>> you can use one of the following options:
>> >>>>>>>
>> >>>>>>> 1. Look up region.id in db.properties
>> >>>>>>>
>> >>>>>>> 2. Add a new column in region table
>> >>>>>>>
>> >>>>>>>
>> >>>>>>>
>> >>>>>>>
>> >>>>>>>
>> >>>>>>> *From:* Alex Ough [mailto:alex.o...@sungardas.com]
>> >>>>>>> *Sent:* Wednesday, 25 June 2014 8:18 AM
>> >>>>>>> *To:* Alena Prokharchyk
>> >>>>>>> *Cc:* dev@cloudstack.apache.org; Kishan Kavala; Murali Reddy; Ram
>> >>>>>>> Ganesh; Animesh Chaturvedi
>> >>>>>>>
>> >>>>>>>
>> >>>>>>> *Subject:* Re: Review Request 20099: Domain-Account-User Sync Up
>> >>>>>>> Among Multiple Regions (Core Changes)
>> >>>>>>>
>> >>>>>>>
>> >>>>>>>
>> >>>>>>> There is one thing that was not mentioned, which is that currently
>> >>>>>>> the id of 'Local' region is always 1 and if we do not guarantee
>> that, there
>> >>>>>>> is no way to find out which is the local region unless we add one
>> more
>> >>>>>>> field to tells which is the local region.
>> >>>>>>>
>> >>>>>>> I'm wondering if we have a solution for this now.
>> >>>>>>>
>> >>>>>>>
>> >>>>>>>
>> >>>>>>> Thanks
>> >>>>>>>
>> >>>>>>> Alex Ough
>> >>>>>>>
>> >>>>>>>
>> >>>>>>>
>> >>>>>>> On Tue, Jun 24, 2014 at 9:59 PM, Alex Ough <
>> alex.o...@sungardas.com>
>> >>>>>>> wrote:
>> >>>>>>>
>> >>>>>>> I agree with that the ids are unique identifier, but they are
>> >>>>>>> usually internal purpose not exposed to the users. So it is a
>> little
>> >>>>>>> strange to ask users to assign ids when they add new regions. And
>> if we do
>> >>>>>>> not allow duplicated names, I'm not sure why it is not good to
>> use names as
>> >>>>>>> a unique identifier.
>> >>>>>>>
>> >>>>>>>
>> >>>>>>>
>> >>>>>>> It's been a long way to come this far with several reasons, so I
>> >>>>>>> really want to wrap this up as soon as possible, and this doesn't
>> seem to
>> >>>>>>> be a major obstacle, so let me just use 'id' as a parameter if
>> there is no
>> >>>>>>> one with a different thought until tomorrow morning.
>> >>>>>>>
>> >>>>>>>
>> >>>>>>>
>> >>>>>>> Thanks
>> >>>>>>>
>> >>>>>>> Alex Ough
>> >>>>>>>
>> >>>>>>>
>> >>>>>>>
>> >>>>>>> On Tue, Jun 24, 2014 at 8:52 PM, Alena Prokharchyk <
>> >>>>>>> alena.prokharc...@citrix.com> wrote:
>> >>>>>>>
>> >>>>>>> Alex, id is used as a unique identifier for CS objects. And it is
>> >>>>>>> the CS requirement to refer to the object by id if the id is
>> present. Look
>> >>>>>>> at all the other APIs. We nowhere refer to the network/vpc/vm by
>> name just
>> >>>>>>> because its more human readable. The id is used by Api layer when
>> parameter
>> >>>>>>> validation is done, by lots of Dao methods (findById is one of
>> them), etc.
>> >>>>>>> Even look at updateRegion/deleteRegion – we don’t refer to them
>> by name,
>> >>>>>>> but by the id.
>> >>>>>>>
>> >>>>>>>
>> >>>>>>>
>> >>>>>>> The reason why Kishan added the support for controlling the id by
>> >>>>>>> adding it to the createRegion call (and making it unique) is
>> exactly that –
>> >>>>>>> region administrator can decide what id to set on the region, and
>> to
>> >>>>>>> introduce the region with the same id to the other regions’ db.
>> >>>>>>>
>> >>>>>>>
>> >>>>>>>
>> >>>>>>> So I would still suggest on using the id of the region in the API
>> >>>>>>> calls you are modifying. Unless developers who worked on regions
>> feature –
>> >>>>>>> Kishan/Murali – come up with the valid objection.
>> >>>>>>>
>> >>>>>>>
>> >>>>>>>
>> >>>>>>> Thanks,
>> >>>>>>>
>> >>>>>>> Alena.
>> >>>>>>>
>> >>>>>>>
>> >>>>>>>
>> >>>>>>> *From: *Alex Ough <alex.o...@sungardas.com>
>> >>>>>>> *Date: *Tuesday, June 24, 2014 at 5:41 PM
>> >>>>>>>
>> >>>>>>>
>> >>>>>>> *To: *Alena Prokharchyk <alena.prokharc...@citrix.com>
>> >>>>>>> *Cc: *"dev@cloudstack.apache.org" <dev@cloudstack.apache.org>,
>> >>>>>>> Kishan Kavala <kishan.kav...@citrix.com>, Murali Reddy <
>> >>>>>>> murali.re...@citrix.com>, Ram Ganesh <ram.gan...@citrix.com>,
>> >>>>>>> Animesh Chaturvedi <animesh.chaturv...@citrix.com>
>> >>>>>>> *Subject: *Re: Review Request 20099: Domain-Account-User Sync Up
>> >>>>>>> Among Multiple Regions (Core Changes)
>> >>>>>>>
>> >>>>>>>
>> >>>>>>>
>> >>>>>>> We can use the same ids & names, but we don't have to use the same
>> >>>>>>> ids if we use names, which is a little easier because names are
>> user
>> >>>>>>> readable but ids are not, so we don't need to memorize/check all
>> the ids
>> >>>>>>> when we add new regions in multiple regions, which can be
>> confusing.
>> >>>>>>>
>> >>>>>>>
>> >>>>>>>
>> >>>>>>> Thanks
>> >>>>>>>
>> >>>>>>> Alex Ough
>> >>>>>>>
>> >>>>>>>
>> >>>>>>>
>> >>>>>>> On Tue, Jun 24, 2014 at 8:33 PM, Alena Prokharchyk <
>> >>>>>>> alena.prokharc...@citrix.com> wrote:
>> >>>>>>>
>> >>>>>>> Aren’t we supposed to sync the regions across the multiple regions
>> >>>>>>> Dbs? Because that’s what region FS states:
>> >>>>>>>
>> >>>>>>>
>> >>>>>>>
>> >>>>>>>
>> >>>>>>>
>> https://cwiki.apache.org/confluence/display/CLOUDSTACK/AWS-Style+Regions+Functional+Spec
>> ,
>> >>>>>>> “Adding 2nd region” paragraph, bullet #4:
>> >>>>>>>
>> >>>>>>>
>> >>>>>>>
>> >>>>>>> 1. Install a 2nd CS instance.
>> >>>>>>>
>> >>>>>>> 2. While installing database set region_id using -r option in
>> >>>>>>> cloud-setup-databases script (Make sure *database_key* is same
>> >>>>>>> across all regions).
>> >>>>>>>
>> >>>>>>> *cloud-setup-databases cloud:**<**dbpassword**>**@localhost
>> >>>>>>> --deploy-as=root:**<**password**>** -e **<**encryption_type**>*
>> >>>>>>> * -m **<**management_server_key**>** -k **<**database_key**> -r
>> >>>>>>> <region_id>*
>> >>>>>>>
>> >>>>>>> 3. Start mgmt server
>> >>>>>>>
>> >>>>>>> 4. *Using addRegion API, add region 1 to region 2 and also region
>> 2
>> >>>>>>> to region 1.*
>> >>>>>>>
>> >>>>>>>
>> >>>>>>>
>> >>>>>>> I assume that we expect the admin to add the region with the same
>> >>>>>>> name and the same id to ALL regions Dbs (both id and name should
>> be passed
>> >>>>>>> to createRegion call). So they are all in sync. Isn’t it the
>> requirement?
>> >>>>>>> If so, we should rely on the fact that all regions Dbs will have
>> the same
>> >>>>>>> set of regions having the same ids and names cross regions.
>> >>>>>>>
>> >>>>>>>
>> >>>>>>>
>> >>>>>>> Thanks,
>> >>>>>>>
>> >>>>>>> Alena.
>> >>>>>>>
>> >>>>>>> *From: *Alex Ough <alex.o...@sungardas.com>
>> >>>>>>> *Date: *Tuesday, June 24, 2014 at 5:17 PM
>> >>>>>>> *To: *Alena Prokharchyk <alena.prokharc...@citrix.com>
>> >>>>>>> *Cc: *"dev@cloudstack.apache.org" <dev@cloudstack.apache.org>,
>> >>>>>>> Kishan Kavala <kishan.kav...@citrix.com>, Murali Reddy <
>> >>>>>>> murali.re...@citrix.com>, Ram Ganesh <ram.gan...@citrix.com>,
>> >>>>>>> Animesh Chaturvedi <animesh.chaturv...@citrix.com>
>> >>>>>>>
>> >>>>>>>
>> >>>>>>> *Subject: *Re: Review Request 20099: Domain-Account-User Sync Up
>> >>>>>>> Among Multiple Regions (Core Changes)
>> >>>>>>>
>> >>>>>>>
>> >>>>>>>
>> >>>>>>> What I'm trying to say is that when we pass the ids of regions,
>> the
>> >>>>>>> receivers do not know what the originated region is and the id of
>> each
>> >>>>>>> region is not same across all the regions.
>> >>>>>>>
>> >>>>>>>
>> >>>>>>>
>> >>>>>>> Thanks
>> >>>>>>>
>> >>>>>>> Alex Ough
>> >>>>>>>
>> >>>>>>>
>> >>>>>>>
>> >>>>>>> On Tue, Jun 24, 2014 at 7:35 PM, Alena Prokharchyk <
>> >>>>>>> alena.prokharc...@citrix.com> wrote:
>> >>>>>>>
>> >>>>>>> Alex, thank you for summarizing.
>> >>>>>>>
>> >>>>>>>
>> >>>>>>>
>> >>>>>>> I still don’t see why id can’t be unique across regions as you can
>> >>>>>>> control the id assignment – id is required when createRegion call
>> is made.
>> >>>>>>> And that’s how the region should be represented in other region’s
>> Dbs – by
>> >>>>>>> its id that is unique across the regions. Kishan/Murali, please
>> confirm.
>> >>>>>>>
>> >>>>>>>
>> >>>>>>>
>> >>>>>>> Thank you,
>> >>>>>>>
>> >>>>>>> Alena.
>> >>>>>>>
>> >>>>>>>
>> >>>>>>>
>> >>>>>>> *From: *Alex Ough <alex.o...@sungardas.com>
>> >>>>>>> *Date: *Tuesday, June 24, 2014 at 4:22 PM
>> >>>>>>> *To: *"dev@cloudstack.apache.org" <dev@cloudstack.apache.org>
>> >>>>>>> *Cc: *Alena Prokharchyk <alena.prokharc...@citrix.com>, Kishan
>> >>>>>>> Kavala <kishan.kav...@citrix.com>, Murali Reddy <
>> >>>>>>> murali.re...@citrix.com>, Ram Ganesh <ram.gan...@citrix.com>,
>> >>>>>>> Animesh Chaturvedi <animesh.chaturv...@citrix.com>
>> >>>>>>>
>> >>>>>>>
>> >>>>>>> *Subject: *Re: Review Request 20099: Domain-Account-User Sync Up
>> >>>>>>> Among Multiple Regions (Core Changes)
>> >>>>>>>
>> >>>>>>>
>> >>>>>>>
>> >>>>>>> All,
>> >>>>>>>
>> >>>>>>>
>> >>>>>>>
>> >>>>>>> There is one open question in this topic, which is to figure out
>> >>>>>>> which value is appropriate to pass the region object, id or name?
>> >>>>>>>
>> >>>>>>> During this implementation, we decided to add the information of
>> >>>>>>> regions where user/account/domain objects have been originally
>> >>>>>>> created/modified/removed.
>> >>>>>>>
>> >>>>>>> But the ids of regions are not same across the regions and
>> currently
>> >>>>>>> the regions do not have uuids(they will not be same either if we
>> add them
>> >>>>>>> to regions), so I'd like to use names.
>> >>>>>>>
>> >>>>>>>
>> >>>>>>>
>> >>>>>>> Please let me know what you think.
>> >>>>>>>
>> >>>>>>> Thanks
>> >>>>>>>
>> >>>>>>> Alex Ough
>> >>>>>>>
>> >>>>>>>
>> >>>>>>>
>> >>>>>>> On Tue, Jun 24, 2014 at 7:05 PM, Animesh Chaturvedi <
>> >>>>>>> animesh.chaturv...@citrix.com> wrote:
>> >>>>>>>
>> >>>>>>> Let’s have the discussion on dev mailing list
>> >>>>>>>
>> >>>>>>>
>> >>>>>>>
>> >>>>>>> Thanks
>> >>>>>>>
>> >>>>>>> Animesh
>> >>>>>>>
>> >>>>>>>
>> >>>>>>>
>> >>>>>>> *From:* Alena Prokharchyk
>> >>>>>>> *Sent:* Tuesday, June 24, 2014 3:06 PM
>> >>>>>>> *To:* Alex Ough; Kishan Kavala; Murali Reddy
>> >>>>>>> *Cc:* Animesh Chaturvedi; Ram Ganesh
>> >>>>>>>
>> >>>>>>>
>> >>>>>>> *Subject:* Re: Review Request 20099: Domain-Account-User Sync Up
>> >>>>>>> Among Multiple Regions (Core Changes)
>> >>>>>>>
>> >>>>>>>
>> >>>>>>>
>> >>>>>>> Adding Kishan to the thread as he was the one who implemented the
>> >>>>>>> region feature originally.
>> >>>>>>>
>> >>>>>>>
>> >>>>>>>
>> >>>>>>> Kishan, in a situation when there are 2 regions in the system, we
>> >>>>>>> expect “region” table to be populated with the same id/name in
>> both Dbs for
>> >>>>>>> both regions, right? So my question is – what uniquely identifies
>> the
>> >>>>>>> region in CS system in cross region setup – id/name?
>> >>>>>>>
>> >>>>>>>
>> >>>>>>>
>> >>>>>>> That unique identifier should be the value that is passed to the
>> >>>>>>> calls you modify, Alex. WE can’t just pass some random name to
>> the call
>> >>>>>>> without making any further verification.
>> >>>>>>>
>> >>>>>>>
>> >>>>>>>
>> >>>>>>> Kishan/Murali, please help to verify this part of Alex’s fix as it
>> >>>>>>> should really be someone with an expertise in Regions. I’ve
>> reviewed the
>> >>>>>>> rest of the feature, just this one item is open. See my latest
>> comment to
>> >>>>>>> the https://reviews.apache.org/r/17790/diff/?page=1#0 as well as
>> >>>>>>> refer to this email thread for the context.
>> >>>>>>>
>> >>>>>>>
>> >>>>>>>
>> >>>>>>> -Alena.
>> >>>>>>>
>> >>>>>>>
>> >>>>>>>
>> >>>>>>> *From: *Alena Prokharchyk <alena.prokharc...@citrix.com>
>> >>>>>>> *Date: *Tuesday, June 24, 2014 at 2:54 PM
>> >>>>>>> *To: *Alex Ough <alex.o...@sungardas.com>
>> >>>>>>> *Subject: *Re: Review Request 20099: Domain-Account-User Sync Up
>> >>>>>>> Among Multiple Regions (Core Changes)
>> >>>>>>>
>> >>>>>>>
>> >>>>>>>
>> >>>>>>> That what would everybody assume 100% just by looking at the
>> >>>>>>> parameter description and parameter – that you refer to region
>> UUID :
>> >>>>>>> "Region where this account is created.”/ORIGINATEDREGIONUUID
>> >>>>>>>
>> >>>>>>> In CS the UUID has a special meaning. It has to have the UUID
>> >>>>>>> format, and its randomly generated value that is stored in the DB
>> along
>> >>>>>>> with the actual db id. I can see that regionVO lacks UUID field.
>> Looks like
>> >>>>>>> existing RegionVO object lacks this filed unlike other CS objects
>> (uservm,
>> >>>>>>> etc). I will follow up with Murali on that.
>> >>>>>>>
>> >>>>>>>
>> >>>>>>>
>> >>>>>>> Alex, so originatedRegionUUID refers to the region name, correct?.
>> >>>>>>> Why don’t use the region id instead? That’s what we do when refer
>> to CS
>> >>>>>>> objects – we always refer to them by id which is unique. Which is
>> true even
>> >>>>>>> for the region:
>> >>>>>>>
>> >>>>>>>
>> >>>>>>>
>> >>>>>>> mysql> show create table region;
>> >>>>>>>
>> >>>>>>>
>> >>>>>>>
>> >>>>>>> UNIQUE KEY `id` (`id`),
>> >>>>>>>
>> >>>>>>> UNIQUE KEY `name` (`name`)
>> >>>>>>>
>> >>>>>>>
>> >>>>>>>
>> >>>>>>>
>> >>>>>>>
>> >>>>>>> That’s what you do when you manipulate the region itself
>> >>>>>>> (delete/updateRegion) - refer to the region by its id. And this
>> field is
>> >>>>>>> returned to you when you call listRegions API:
>> >>>>>>>
>> >>>>>>>
>> >>>>>>>
>> >>>>>>> http://localhost:8096/?command=listRegions
>> >>>>>>>
>> >>>>>>> <region>
>> >>>>>>>
>> >>>>>>> <id>1</id>
>> >>>>>>>
>> >>>>>>> <name>Local</name>
>> >>>>>>>
>> >>>>>>> <endpoint>http://localhost:8080/client/</endpoint>
>> >>>>>>>
>> >>>>>>> <gslbserviceenabled>true</gslbserviceenabled>
>> >>>>>>>
>> >>>>>>> <portableipserviceenabled>false</portableipserviceenabled>
>> >>>>>>>
>> >>>>>>> </region>
>> >>>>>>>
>> >>>>>>>
>> >>>>>>>
>> >>>>>>>
>> >>>>>>>
>> >>>>>>> Please correct if I miss something.
>> >>>>>>>
>> >>>>>>> -Alena.
>> >>>>>>>
>> >>>>>>>
>> >>>>>>>
>> >>>>>>> *From: *Alex Ough <alex.o...@sungardas.com>
>> >>>>>>> *Date: *Tuesday, June 24, 2014 at 2:33 PM
>> >>>>>>> *To: *Alena Prokharchyk <alena.prokharc...@citrix.com>
>> >>>>>>> *Subject: *Re: Review Request 20099: Domain-Account-User Sync Up
>> >>>>>>> Among Multiple Regions (Core Changes)
>> >>>>>>>
>> >>>>>>>
>> >>>>>>>
>> >>>>>>> Thanks for the clarification, but here is a thing.
>> >>>>>>>
>> >>>>>>>
>> >>>>>>>
>> >>>>>>> I'm passing names as the values of originatedRegionUuids because
>> the
>> >>>>>>> uuids are randomly generated and the same regions do NOT have the
>> same
>> >>>>>>> uuidss.
>> >>>>>>>
>> >>>>>>> So I'd like to change the parameter types into String.
>> >>>>>>>
>> >>>>>>> Let me know if you think otherwise.
>> >>>>>>>
>> >>>>>>>
>> >>>>>>>
>> >>>>>>> Thanks
>> >>>>>>>
>> >>>>>>> Alex Ough
>> >>>>>>>
>> >>>>>>>
>> >>>>>>>
>> >>>>>>> On Tue, Jun 24, 2014 at 5:17 PM, Alena Prokharchyk <
>> >>>>>>> alena.prokharc...@citrix.com> wrote:
>> >>>>>>>
>> >>>>>>> Alex,
>> >>>>>>>
>> >>>>>>>
>> >>>>>>>
>> >>>>>>> take a look at ParamProcessWorker class, and how API parameters
>> are
>> >>>>>>> being dispatched/verified.
>> >>>>>>>
>> >>>>>>>
>> >>>>>>>
>> >>>>>>>
>> >>>>>>>
>> >>>>>>> 1) public void processParameters(final BaseCmd cmd, final Map
>> >>>>>>> params) method
>> >>>>>>>
>> >>>>>>>
>> >>>>>>>
>> >>>>>>> First of all, EntityType parameter should be defined in the
>> >>>>>>> @Parameter annotation for the originatedRegionID field. This
>> parameter is
>> >>>>>>> used by paramProcessWorker to make "if entity exists" validation
>> >>>>>>>
>> >>>>>>>
>> >>>>>>>
>> >>>>>>>
>> >>>>>>>
>> >>>>>>> 2) Check another method in the same class:
>> >>>>>>>
>> >>>>>>>
>> >>>>>>>
>> >>>>>>> private void setFieldValue(final Field field, final BaseCmd
>> cmdObj,
>> >>>>>>> final Object paramObj, final Parameter annotation) throws
>> >>>>>>> IllegalArgumentException, ParseException {
>> >>>>>>>
>> >>>>>>>
>> >>>>>>>
>> >>>>>>> Thats the method responsible for dispatching/setting the field
>> >>>>>>> values. Here is the snippet of the code for the case when UUID is
>> defined:
>> >>>>>>>
>> >>>>>>>
>> >>>>>>>
>> >>>>>>> case UUID:
>> >>>>>>>
>> >>>>>>> if (paramObj.toString().isEmpty())
>> >>>>>>>
>> >>>>>>> break;
>> >>>>>>>
>> >>>>>>> final Long internalId =
>> >>>>>>> translateUuidToInternalId(paramObj.toString(), annotation);
>> >>>>>>>
>> >>>>>>> field.set(cmdObj, internalId);
>> >>>>>>>
>> >>>>>>> break;
>> >>>>>>>
>> >>>>>>>
>> >>>>>>>
>> >>>>>>> it always transforms the UUID to Long id, not string. And at the
>> >>>>>>> end, it will be internal DB UUID, not the UUID. If you need the
>> UUID, you
>> >>>>>>> have to get it by a) retrieving the object from the DB by id b)
>> Getting its
>> >>>>>>> UUID property.
>> >>>>>>>
>> >>>>>>>
>> >>>>>>>
>> >>>>>>> If you leave it as a String, you will hit IllegalArgumentException
>> >>>>>>> at "field.set(cmdObj, internalId);" line.
>> >>>>>>>
>> >>>>>>>
>> >>>>>>>
>> >>>>>>>
>> >>>>>>>
>> >>>>>>> Hope it answers your questions, and let me know if anything else
>> >>>>>>> needs to be clarified.
>> >>>>>>>
>> >>>>>>>
>> >>>>>>>
>> >>>>>>> -alena.
>> >>>>>>>
>> >>>>>>>
>> >>>>>>>
>> >>>>>>> *From: *Alex Ough <alex.o...@sungardas.com>
>> >>>>>>> *Date: *Tuesday, June 24, 2014 at 1:57 PM
>> >>>>>>>
>> >>>>>>>
>> >>>>>>> *To: *Alena Prokharchyk <alena.prokharc...@citrix.com>
>> >>>>>>> *Subject: *Re: Review Request 20099: Domain-Account-User Sync Up
>> >>>>>>> Among Multiple Regions (Core Changes)
>> >>>>>>>
>> >>>>>>>
>> >>>>>>>
>> >>>>>>> Why do you want to change UUID to 'Long'?
>> >>>>>>>
>> >>>>>>> Can you just correct what I fixed?
>> >>>>>>>
>> >>>>>>>
>> >>>>>>>
>> >>>>>>> On Tue, Jun 24, 2014 at 4:21 PM, Alena Prokharchyk <
>> >>>>>>> alena.prokharc...@citrix.com> wrote:
>> >>>>>>>
>> >>>>>>> You need to put:
>> >>>>>>>
>> >>>>>>>
>> >>>>>>>
>> >>>>>>> * the entityType parameter to the annotation.
>> >>>>>>>
>> >>>>>>> - Change the type to Long as I’ve already mentioned. Check how
>> >>>>>>> other commands handle the parameters (networkId, vpcId, etc)
>> >>>>>>>
>> >>>>>>> —Alena.
>> >>>>>>>
>> >>>>>>>
>> >>>>>>>
>> >>>>>>> *From: *Alex Ough <alex.o...@sungardas.com>
>> >>>>>>> *Date: *Tuesday, June 24, 2014 at 12:47 PM
>> >>>>>>>
>> >>>>>>>
>> >>>>>>> *To: *Alena Prokharchyk <alena.prokharc...@citrix.com>
>> >>>>>>> *Subject: *Re: Review Request 20099: Domain-Account-User Sync Up
>> >>>>>>> Among Multiple Regions (Core Changes)
>> >>>>>>>
>> >>>>>>>
>> >>>>>>>
>> >>>>>>> Will this change work?
>> >>>>>>>
>> >>>>>>>
>> >>>>>>>
>> >>>>>>> @Parameter(name = ApiConstants.ORIGINATED_REGION_ID, type =
>> >>>>>>> CommandType.UUID, description = "Region UUID where this account is
>> >>>>>>> created.", since = "4.5")
>> >>>>>>>
>> >>>>>>> private String originatedRegionUUID;
>> >>>>>>>
>> >>>>>>>
>> >>>>>>>
>> >>>>>>>
>> >>>>>>>
>> >>>>>>> On Tue, Jun 24, 2014 at 3:25 PM, Alex Ough <
>> alex.o...@sungardas.com>
>> >>>>>>> wrote:
>> >>>>>>>
>> >>>>>>> Alena,
>> >>>>>>>
>> >>>>>>>
>> >>>>>>>
>> >>>>>>> This is what really frustrates me, but can you give the final
>> items
>> >>>>>>> instead of keeping adding more items whenever I post a review,
>> please?
>> >>>>>>>
>> >>>>>>> Can you gurantee that this is the only item you want me to fix?
>> >>>>>>>
>> >>>>>>>
>> >>>>>>>
>> >>>>>>> On Tue, Jun 24, 2014 at 3:04 PM, Alena Prokharchyk <
>> >>>>>>> alena.prokharc...@citrix.com> wrote:
>> >>>>>>>
>> >>>>>>> Alex, as a part of the fix, also change the param name to be
>> >>>>>>> regionId (there should be a value in apiconstants already) as the
>> parameter
>> >>>>>>> really reflects CS region object, and we usually refer to those as
>> >>>>>>> networkID, vpcID (not uuid) although uuid are passed in. Check if
>> the rest
>> >>>>>>> of the api changes you've done, respect this rule. Sorry, out of
>> the office
>> >>>>>>> now and cant check myself if there are any.
>> >>>>>>>
>> >>>>>>> -alena
>> >>>>>>>
>> >>>>>>>
>> >>>>>>> > On Jun 24, 2014, at 11:12 AM, "Alena Prokharchyk" <
>> >>>>>>> alena.prokharc...@citrix.com> wrote:
>> >>>>>>> >
>> >>>>>>> >
>> >>>>>>> > -----------------------------------------------------------
>> >>>>>>>
>> >>>>>>> > This is an automatically generated e-mail. To reply, visit:
>> >>>>>>>
>> >>>>>>> > https://reviews.apache.org/r/20099/#review46557
>> >>>>>>> > -----------------------------------------------------------
>> >>>>>>>
>> >>>>>>> >
>> >>>>>>> >
>> >>>>>>> > Alex, one small thing.
>> >>>>>>> >
>> >>>>>>> > Just noticed that in the API commands you pass regionUUID as a
>> >>>>>>> string. You should pass it as a type of UUID and specify the
>> entityType
>> >>>>>>> parameter in @Parameter so the entity validation is done
>> correctly. Example:
>> >>>>>>> >
>> >>>>>>> > @Parameter(name=ApiConstants.ZONE_ID, type=CommandType.UUID,
>> >>>>>>> entityType = ZoneResponse.class,
>> >>>>>>> > required=true, description="the Zone ID for the
>> >>>>>>> network")
>> >>>>>>> > private Long zoneId;
>> >>>>>>> >
>> >>>>>>> > That is the rule when passing id/uuid of the first class CS
>> object
>> >>>>>>> to the API call
>> >>>>>>> >
>> >>>>>>> > Then be aware of the fact that the APIDispatcher will transform
>> >>>>>>> UUID to the actual DB id, and that would be the Id that you pass
>> to the
>> >>>>>>> services call. If what you need is UUID, not the actual id, to be
>> saved in
>> >>>>>>> the callContext, you have to transform it explicitly.
>> >>>>>>> >
>> >>>>>>> > - Alena Prokharchyk
>> >>>>>>> >
>> >>>>>>> >
>> >>>>>>>
>> >>>>>>> >> On June 24, 2014, 3:54 p.m., Alex Ough wrote:
>> >>>>>>> >>
>> >>>>>>> >> -----------------------------------------------------------
>> >>>>>>>
>> >>>>>>> >> This is an automatically generated e-mail. To reply, visit:
>> >>>>>>> >> https://reviews.apache.org/r/20099/
>> >>>>>>>
>> >>>>>>> >> -----------------------------------------------------------
>> >>>>>>> >>
>> >>>>>>> >> (Updated June 24, 2014, 3:54 p.m.)
>> >>>>>>> >>
>> >>>>>>> >>
>> >>>>>>> >> Review request for cloudstack.
>> >>>>>>> >>
>> >>>>>>> >>
>> >>>>>>> >> Repository: cloudstack-git
>> >>>>>>> >>
>> >>>>>>> >>
>> >>>>>>> >> Description
>> >>>>>>> >> -------
>> >>>>>>>
>> >>>>>>> >>
>> >>>>>>> >> This is the review request for the core changes related with
>> >>>>>>> #17790 that has only the new plugin codes.
>> >>>>>>> >>
>> >>>>>>> >>
>> >>>>>>>
>> >>>>>>> >> Diffs
>> >>>>>>> >> -----
>> >>>>>>> >>
>> >>>>>>> >> api/src/com/cloud/event/EventTypes.java 0fa3cd5
>> >>>>>>>
>> >>>>>>> >> api/src/com/cloud/user/AccountService.java eac8a76
>> >>>>>>> >> api/src/com/cloud/user/DomainService.java 4c1f93d
>> >>>>>>> >> api/src/org/apache/cloudstack/api/ApiConstants.java adda5f4
>> >>>>>>> >> api/src/org/apache/cloudstack/api/BaseCmd.java ac9a208
>> >>>>>>> >>
>> >>>>>>>
>> api/src/org/apache/cloudstack/api/command/admin/account/CreateAccountCmd.java
>> >>>>>>> 50d67d9
>> >>>>>>> >>
>> >>>>>>>
>> api/src/org/apache/cloudstack/api/command/admin/account/DeleteAccountCmd.java
>> >>>>>>> 5754ec5
>> >>>>>>> >>
>> >>>>>>>
>> api/src/org/apache/cloudstack/api/command/admin/account/DisableAccountCmd.java
>> >>>>>>> 3e5e1d3
>> >>>>>>> >>
>> >>>>>>>
>> api/src/org/apache/cloudstack/api/command/admin/account/EnableAccountCmd.java
>> >>>>>>> f30c985
>> >>>>>>> >>
>> >>>>>>>
>> api/src/org/apache/cloudstack/api/command/admin/account/LockAccountCmd.java
>> >>>>>>> 3c185e4
>> >>>>>>> >>
>> >>>>>>>
>> api/src/org/apache/cloudstack/api/command/admin/account/UpdateAccountCmd.java
>> >>>>>>> a7ce74a
>> >>>>>>> >>
>> >>>>>>>
>> api/src/org/apache/cloudstack/api/command/admin/domain/CreateDomainCmd.java
>> >>>>>>> 312c9ee
>> >>>>>>> >>
>> >>>>>>>
>> api/src/org/apache/cloudstack/api/command/admin/domain/DeleteDomainCmd.java
>> >>>>>>> a6d2b0b
>> >>>>>>> >>
>> >>>>>>>
>> api/src/org/apache/cloudstack/api/command/admin/domain/UpdateDomainCmd.java
>> >>>>>>> 409a84d
>> >>>>>>> >>
>> >>>>>>>
>> api/src/org/apache/cloudstack/api/command/admin/region/AddRegionCmd.java
>> >>>>>>> f6743ba
>> >>>>>>> >>
>> >>>>>>>
>> api/src/org/apache/cloudstack/api/command/admin/region/UpdateRegionCmd.java
>> >>>>>>> b08cbbb
>> >>>>>>> >>
>> >>>>>>>
>> api/src/org/apache/cloudstack/api/command/admin/user/CreateUserCmd.java
>> >>>>>>> 8f223ac
>> >>>>>>> >>
>> >>>>>>>
>> api/src/org/apache/cloudstack/api/command/admin/user/DeleteUserCmd.java
>> >>>>>>> 08ba521
>> >>>>>>> >>
>> >>>>>>>
>> api/src/org/apache/cloudstack/api/command/admin/user/DisableUserCmd.java
>> >>>>>>> c6e09ef
>> >>>>>>> >>
>> >>>>>>>
>> api/src/org/apache/cloudstack/api/command/admin/user/EnableUserCmd.java
>> >>>>>>> d69eccf
>> >>>>>>> >>
>> >>>>>>>
>> api/src/org/apache/cloudstack/api/command/admin/user/LockUserCmd.java
>> >>>>>>> 69623d0
>> >>>>>>> >>
>> >>>>>>>
>> api/src/org/apache/cloudstack/api/command/admin/user/RegisterCmd.java
>> >>>>>>> 2090d21
>> >>>>>>> >>
>> >>>>>>>
>> api/src/org/apache/cloudstack/api/command/admin/user/UpdateUserCmd.java
>> >>>>>>> f21e264
>> >>>>>>> >> api/src/org/apache/cloudstack/api/response/RegionResponse.java
>> >>>>>>> 6c74fa6
>> >>>>>>> >> api/src/org/apache/cloudstack/region/Region.java df64e44
>> >>>>>>> >> api/src/org/apache/cloudstack/region/RegionService.java afefcc7
>> >>>>>>> >>
>> >>>>>>>
>> api/test/org/apache/cloudstack/api/command/test/RegionCmdTest.java 10c3d85
>> >>>>>>> >> client/pom.xml 29fef4f
>> >>>>>>> >>
>> >>>>>>>
>> engine/schema/resources/META-INF/cloudstack/core/spring-engine-schema-core-daos-context.xml
>> >>>>>>> 2ef0d20
>> >>>>>>> >> engine/schema/src/com/cloud/user/AccountVO.java 0f5a044
>> >>>>>>> >> engine/schema/src/org/apache/cloudstack/region/RegionVO.java
>> >>>>>>> 608bd2b
>> >>>>>>> >>
>> >>>>>>>
>> plugins/network-elements/juniper-contrail/test/org/apache/cloudstack/network/contrail/management/MockAccountManager.java
>> >>>>>>> 4136b5c
>> >>>>>>> >> plugins/pom.xml b5e6a61
>> >>>>>>> >>
>> >>>>>>>
>> plugins/user-authenticators/ldap/src/org/apache/cloudstack/api/command/LdapCreateAccountCmd.java
>> >>>>>>> b753952
>> >>>>>>> >>
>> >>>>>>>
>> plugins/user-authenticators/ldap/src/org/apache/cloudstack/api/command/LdapImportUsersCmd.java
>> >>>>>>> 6f7be90
>> >>>>>>>
>> >>>>>>> >> server/src/com/cloud/api/ApiResponseHelper.java f1f0d2c
>> >>>>>>> >> server/src/com/cloud/api/dispatch/ParamProcessWorker.java
>> 1592b93
>> >>>>>>> >> server/src/com/cloud/event/ActionEventUtils.java 2b3cfea
>> >>>>>>> >> server/src/com/cloud/projects/ProjectManagerImpl.java d10c059
>> >>>>>>> >> server/src/com/cloud/user/AccountManager.java 194c5d2
>> >>>>>>> >> server/src/com/cloud/user/AccountManagerImpl.java 7a889f1
>> >>>>>>> >> server/src/com/cloud/user/DomainManager.java f72b18a
>> >>>>>>> >> server/src/com/cloud/user/DomainManagerImpl.java fbbe0c2
>> >>>>>>> >> server/src/org/apache/cloudstack/region/RegionManager.java
>> >>>>>>> 6f25481
>> >>>>>>> >> server/src/org/apache/cloudstack/region/RegionManagerImpl.java
>> >>>>>>> 8910714
>> >>>>>>> >> server/src/org/apache/cloudstack/region/RegionServiceImpl.java
>> >>>>>>> 98cf500
>> >>>>>>> >> server/test/com/cloud/user/AccountManagerImplTest.java 176cf1d
>> >>>>>>> >> server/test/com/cloud/user/MockAccountManagerImpl.java 746fa1b
>> >>>>>>> >> server/test/com/cloud/user/MockDomainManagerImpl.java 7dddefb
>> >>>>>>> >> server/test/org/apache/cloudstack/region/RegionManagerTest.java
>> >>>>>>> d7bc537
>> >>>>>>> >> setup/db/db/schema-440to450.sql ee419a2
>> >>>>>>> >> ui/scripts/regions.js 368c1bf
>> >>>>>>> >>
>> >>>>>>> >> Diff: https://reviews.apache.org/r/20099/diff/
>> >>>>>>> >>
>> >>>>>>> >>
>> >>>>>>> >> Testing
>> >>>>>>> >> -------
>> >>>>>>> >>
>> >>>>>>>
>> >>>>>>> >> 1. Successfully tested real time synchronization as soon as
>> >>>>>>> resources are created/deleted/modified in one region.
>> >>>>>>> >> 2. Successfully tested full scans to synchronize resources that
>> >>>>>>> were missed during real time synchronization because of any
>> reasons like
>> >>>>>>> network connection issues.
>> >>>>>>> >> 3. The tests were done manually and also automatically by
>> >>>>>>> randomly generating changes each region.
>> >>>>>>> >>
>> >>>>>>> >>
>> >>>>>>>
>> >>>>>>> >> Thanks,
>> >>>>>>> >>
>> >>>>>>> >> Alex Ough
>> >>>>>>> >
>> >>>>>>>
>> >>>>>>>
>> >>>>>>>
>> >>>>>>>
>> >>>>>>>
>> >>>>>>>
>> >>>>>>>
>> >>>>>>>
>> >>>>>>>
>> >>>>>>>
>> >>>>>>>
>> >>>>>>>
>> >>>>>>>
>> >>>>>>>
>> >>>>>>>
>> >>>>>>>
>> >>>>>>>
>> >>>>>>>
>> >>>>>>>
>> >>>>>>>
>> >>>>>>>
>> >>>>>>
>> >>>>>>
>> >>>>>
>> >>>>
>> >>>
>> >>
>> >
>>
>>
>
>
>
>

Reply via email to