Re: Review Request 20099: Domain-Account-User Sync Up Among Multiple Regions (Core Changes)

2015-04-06 Thread Sebastien Goasguen

---
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/20099/#review79043
---


Thank you for submitting your CloudStack contribution through review board. 
After discussion on the dev@cloudstack.apache.org the community decided to 
close down review board and start accepting contributiong through GitHub pull 
requests. We have been using GH PR for several months now and the process is 
better than review board.

We will keep Review Board open for another week to give you time to migrate 
your patch to a github PR if you wish. After that time, your patch will no 
longer be viewable (even though it will not be deleted).

Please consider submitting a pull request.

Great instructions are available at:
https://github.com/apache/cloudstack/blob/master/CONTRIBUTING.md

Thank you very much for your time and your contribution to Apache CloudStack, 
we hope that using this new process will encourage you to do more.

- Sebastien Goasguen


On June 27, 2014, 5:02 p.m., Alex Ough wrote:
 
 ---
 This is an automatically generated e-mail. To reply, visit:
 https://reviews.apache.org/r/20099/
 ---
 
 (Updated June 27, 2014, 5:02 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 5b9ea5c 
   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
  c73d3d9 
   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 ed48d0b 
   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 
   

Re: Review Request 20099: Domain-Account-User Sync Up Among Multiple Regions (Core Changes)

2014-07-03 Thread John Burwell
 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

RE: Review Request 20099: Domain-Account-User Sync Up Among Multiple Regions (Core Changes)

2014-06-29 Thread Kishan Kavala
Alex,
@Encrypt will both encrypt and decrypt. In dev setup, encryption is disabled by 
default. db.cloud.encryption.type is set to none in db.properties.
For encryption to work, you need to do the following:

1.  Set db.cloud.encryption.type=file in db.properties

2.  Set db.cloud.encrypt.secret=db_secret_key in db.properties

3.  Set MS secret key. $cat ms_secret_key  /etc/cloudstack/management/key

4.  Deploy DB


From: Alex Ough [mailto:alex.o...@sungardas.com]
Sent: Friday, 27 June 2014 5:12 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)

Kishan,

1. Why Long instead of Integer : You replied that it should be Integer
2. @Encrypt : Does it both encrypt  decrypt? Is there anything necessary to 
make it work because it doesn't seem to work when I trace the persist.

Thanks
Alex Ough

On Fri, Jun 27, 2014 at 7:39 AM, Kishan Kavala 
kishan.kav...@citrix.commailto:kishan.kav...@citrix.com wrote:
Alex,
Are the questions on review board?

From: Alex Ough [mailto:alex.o...@sungardas.commailto:alex.o...@sungardas.com]
Sent: Friday, 27 June 2014 12:03 AM
To: Alena Prokharchyk
Cc: Kishan Kavala; dev@cloudstack.apache.orgmailto: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)

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.commailto: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.commailto:alex.o...@sungardas.com
Date: Wednesday, June 25, 2014 at 9:03 PM

To: Alena Prokharchyk 
alena.prokharc...@citrix.commailto:alena.prokharc...@citrix.com
Cc: Kishan Kavala kishan.kav...@citrix.commailto:kishan.kav...@citrix.com, 
dev@cloudstack.apache.orgmailto:dev@cloudstack.apache.org 
dev@cloudstack.apache.orgmailto:dev@cloudstack.apache.org, Murali Reddy 
murali.re...@citrix.commailto:murali.re...@citrix.com, Ram Ganesh 
ram.gan...@citrix.commailto:ram.gan...@citrix.com, Animesh Chaturvedi 
animesh.chaturv...@citrix.commailto: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

RE: Review Request 20099: Domain-Account-User Sync Up Among Multiple Regions (Core Changes)

2014-06-27 Thread Kishan Kavala
Alex,
Are the questions on review board?

From: Alex Ough [mailto:alex.o...@sungardas.com]
Sent: Friday, 27 June 2014 12:03 AM
To: Alena Prokharchyk
Cc: Kishan Kavala; 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)

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.commailto: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.commailto:alex.o...@sungardas.com
Date: Wednesday, June 25, 2014 at 9:03 PM

To: Alena Prokharchyk 
alena.prokharc...@citrix.commailto:alena.prokharc...@citrix.com
Cc: Kishan Kavala kishan.kav...@citrix.commailto:kishan.kav...@citrix.com, 
dev@cloudstack.apache.orgmailto:dev@cloudstack.apache.org 
dev@cloudstack.apache.orgmailto:dev@cloudstack.apache.org, Murali Reddy 
murali.re...@citrix.commailto:murali.re...@citrix.com, Ram Ganesh 
ram.gan...@citrix.commailto:ram.gan...@citrix.com, Animesh Chaturvedi 
animesh.chaturv...@citrix.commailto: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.commailto: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

Re: Review Request 20099: Domain-Account-User Sync Up Among Multiple Regions (Core Changes)

2014-06-27 Thread Alex Ough
Kishan,

1. Why Long instead of Integer : You replied that it should be Integer
2. @Encrypt : Does it both encrypt  decrypt? Is there anything necessary
to make it work because it doesn't seem to work when I trace the persist.

Thanks
Alex Ough


On Fri, Jun 27, 2014 at 7:39 AM, Kishan Kavala kishan.kav...@citrix.com
wrote:

  Alex,

 Are the questions on review board?



 *From:* Alex Ough [mailto:alex.o...@sungardas.com]
 *Sent:* Friday, 27 June 2014 12:03 AM
 *To:* Alena Prokharchyk
 *Cc:* Kishan Kavala; 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)



 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

Re: Review Request 20099: Domain-Account-User Sync Up Among Multiple Regions (Core Changes)

2014-06-27 Thread Alex Ough
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.
4. Whenever there are changes in the records, the time stamps are logged
and the later change wins.
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.
6. It sounds like not related with this project.
7. The interval for FullScan processing is configurable in the global
setting, 'region.full.scan.interval'.

Thanks
Alex Ough


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

Re: Review Request 20099: Domain-Account-User Sync Up Among Multiple Regions (Core Changes)

2014-06-27 Thread John Burwell
 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

Re: Review Request 20099: Domain-Account-User Sync Up Among Multiple Regions (Core Changes)

2014-06-27 Thread Alex Ough
 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

Re: Review Request 20099: Domain-Account-User Sync Up Among Multiple Regions (Core Changes)

2014-06-27 Thread Alex Ough

---
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/20099/
---

(Updated June 27, 2014, 5:02 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 (updated)
-

  api/src/com/cloud/event/EventTypes.java 5b9ea5c 
  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
 c73d3d9 
  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 ed48d0b 
  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 77445a9 
  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



Re: Review Request 20099: Domain-Account-User Sync Up Among Multiple Regions (Core Changes)

2014-06-27 Thread John Burwell
 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

Re: Review Request 20099: Domain-Account-User Sync Up Among Multiple Regions (Core Changes)

2014-06-26 Thread Kishan Kavala

---
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/20099/#review46718
---


Alex,
 As discussed on the mailing list, ORIGINATEDREGIONUUID should be the regionId 
which is Long. So all the ORIGINATEDREGIONUUID references should just be 
ORIGINATEDREGIONID and of datatype Long. 

- Kishan Kavala


On June 24, 2014, 9:24 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, 9:24 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 

Re: Review Request 20099: Domain-Account-User Sync Up Among Multiple Regions (Core Changes)

2014-06-26 Thread Kishan Kavala

---
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/20099/#review46719
---


Alex,
 As discussed on the mailing list, ORIGINATEDREGIONUUID should be the regionId 
which is Long. So all the ORIGINATEDREGIONUUID references should just be 
ORIGINATEDREGIONID and of datatype Long. 

- Kishan Kavala


On June 24, 2014, 9:24 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, 9:24 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 

Re: Review Request 20099: Domain-Account-User Sync Up Among Multiple Regions (Core Changes)

2014-06-26 Thread Kishan Kavala

---
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/20099/#review46720
---



engine/schema/src/org/apache/cloudstack/region/RegionVO.java
https://reviews.apache.org/r/20099/#comment82279

You can use @Encrypt annotation to encrypt and decrypt password. Framework 
will do the encryption instead of doing md5hash while persisting. You can refer 
to VpnUserVO.java to see an example.


- Kishan Kavala


On June 24, 2014, 9:24 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, 9:24 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 
 
 

Re: Review Request 20099: Domain-Account-User Sync Up Among Multiple Regions (Core Changes)

2014-06-26 Thread Alex Ough
Kishan,

The type of region id is Integer, not Long, so I'm wondering why it
should be Long.

Alex Ough



On Thu, Jun 26, 2014 at 2:08 AM, Kishan Kavala kishan.kav...@citrix.com
wrote:

This is an automatically generated e-mail. To reply, visit:
 https://reviews.apache.org/r/20099/

 Alex,
  As discussed on the mailing list, ORIGINATEDREGIONUUID should be the 
 regionId which is Long. So all the ORIGINATEDREGIONUUID references should 
 just be ORIGINATEDREGIONID and of datatype Long.


 - Kishan Kavala

 On June 24th, 2014, 9:24 p.m. IST, Alex Ough wrote:
   Review request for cloudstack.
 By Alex Ough.

 *Updated June 24, 2014, 9:24 p.m.*
  *Repository: * cloudstack-git
 Description

 This is the review request for the core changes related with #17790 that has 
 only the new plugin codes.

   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.

   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)
- 

Re: Review Request 20099: Domain-Account-User Sync Up Among Multiple Regions (Core Changes)

2014-06-26 Thread Alena Prokharchyk
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.commailto:alex.o...@sungardas.com
Date: Wednesday, June 25, 2014 at 9:03 PM
To: Alena Prokharchyk 
alena.prokharc...@citrix.commailto:alena.prokharc...@citrix.com
Cc: Kishan Kavala kishan.kav...@citrix.commailto:kishan.kav...@citrix.com, 
dev@cloudstack.apache.orgmailto:dev@cloudstack.apache.org 
dev@cloudstack.apache.orgmailto:dev@cloudstack.apache.org, Murali Reddy 
murali.re...@citrix.commailto:murali.re...@citrix.com, Ram Ganesh 
ram.gan...@citrix.commailto:ram.gan...@citrix.com, Animesh Chaturvedi 
animesh.chaturv...@citrix.commailto: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.commailto: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.commailto:alex.o...@sungardas.com
Date: Wednesday, June 25, 2014 at 7:12 PM

To: Alena Prokharchyk 
alena.prokharc...@citrix.commailto:alena.prokharc...@citrix.com
Cc: Kishan Kavala kishan.kav...@citrix.commailto:kishan.kav...@citrix.com, 
dev@cloudstack.apache.orgmailto:dev@cloudstack.apache.org 
dev@cloudstack.apache.orgmailto:dev@cloudstack.apache.org, Murali Reddy 
murali.re...@citrix.commailto:murali.re...@citrix.com, Ram Ganesh 
ram.gan...@citrix.commailto:ram.gan...@citrix.com, Animesh Chaturvedi 
animesh.chaturv...@citrix.commailto: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.commailto: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

Re: Review Request 20099: Domain-Account-User Sync Up Among Multiple Regions (Core Changes)

2014-06-26 Thread Alex Ough
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

Re: Review Request 20099: Domain-Account-User Sync Up Among Multiple Regions (Core Changes)

2014-06-26 Thread Alena Prokharchyk
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.commailto:alex.o...@sungardas.com
Date: Thursday, June 26, 2014 at 11:32 AM
To: Alena Prokharchyk 
alena.prokharc...@citrix.commailto:alena.prokharc...@citrix.com
Cc: Kishan Kavala kishan.kav...@citrix.commailto:kishan.kav...@citrix.com, 
dev@cloudstack.apache.orgmailto:dev@cloudstack.apache.org 
dev@cloudstack.apache.orgmailto:dev@cloudstack.apache.org, Murali Reddy 
murali.re...@citrix.commailto:murali.re...@citrix.com, Ram Ganesh 
ram.gan...@citrix.commailto:ram.gan...@citrix.com, Animesh Chaturvedi 
animesh.chaturv...@citrix.commailto: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.commailto: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.commailto:alex.o...@sungardas.com
Date: Wednesday, June 25, 2014 at 9:03 PM

To: Alena Prokharchyk 
alena.prokharc...@citrix.commailto:alena.prokharc...@citrix.com
Cc: Kishan Kavala kishan.kav...@citrix.commailto:kishan.kav...@citrix.com, 
dev@cloudstack.apache.orgmailto:dev@cloudstack.apache.org 
dev@cloudstack.apache.orgmailto:dev@cloudstack.apache.org, Murali Reddy 
murali.re...@citrix.commailto:murali.re...@citrix.com, Ram Ganesh 
ram.gan...@citrix.commailto:ram.gan...@citrix.com, Animesh Chaturvedi 
animesh.chaturv...@citrix.commailto: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

Re: Review Request 20099: Domain-Account-User Sync Up Among Multiple Regions (Core Changes)

2014-06-26 Thread Alex Ough
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

Re: Review Request 20099: Domain-Account-User Sync Up Among Multiple Regions (Core Changes)

2014-06-26 Thread Alena Prokharchyk
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.commailto:alex.o...@sungardas.com
Date: Thursday, June 26, 2014 at 1:53 PM
To: Alena Prokharchyk 
alena.prokharc...@citrix.commailto:alena.prokharc...@citrix.com
Cc: Kishan Kavala kishan.kav...@citrix.commailto:kishan.kav...@citrix.com, 
dev@cloudstack.apache.orgmailto:dev@cloudstack.apache.org 
dev@cloudstack.apache.orgmailto:dev@cloudstack.apache.org, Murali Reddy 
murali.re...@citrix.commailto:murali.re...@citrix.com, Ram Ganesh 
ram.gan...@citrix.commailto:ram.gan...@citrix.com, Animesh Chaturvedi 
animesh.chaturv...@citrix.commailto: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.commailto: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.commailto:alex.o...@sungardas.com
Date: Thursday, June 26, 2014 at 11:32 AM

To: Alena Prokharchyk 
alena.prokharc...@citrix.commailto:alena.prokharc...@citrix.com
Cc: Kishan Kavala kishan.kav...@citrix.commailto:kishan.kav...@citrix.com, 
dev@cloudstack.apache.orgmailto:dev@cloudstack.apache.org 
dev@cloudstack.apache.orgmailto:dev@cloudstack.apache.org, Murali Reddy 
murali.re...@citrix.commailto:murali.re...@citrix.com, Ram Ganesh 
ram.gan...@citrix.commailto:ram.gan...@citrix.com, Animesh Chaturvedi 
animesh.chaturv...@citrix.commailto: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.commailto: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

Re: Review Request 20099: Domain-Account-User Sync Up Among Multiple Regions (Core Changes)

2014-06-26 Thread Alex Ough
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

Re: Review Request 20099: Domain-Account-User Sync Up Among Multiple Regions (Core Changes)

2014-06-26 Thread John Burwell
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

RE: Review Request 20099: Domain-Account-User Sync Up Among Multiple Regions (Core Changes)

2014-06-26 Thread Kishan Kavala
Alex, 
You are correct. It should be Integer and not Long.

 -Original Message-
 From: Alex Ough [mailto:alex.o...@sungardas.com]
 Sent: Thursday, 26 June 2014 8:09 PM
 To: Kishan Kavala
 Cc: cloudstack
 Subject: Re: Review Request 20099: Domain-Account-User Sync Up Among
 Multiple Regions (Core Changes)
 
 Kishan,
 
 The type of region id is Integer, not Long, so I'm wondering why it should be
 Long.
 
 Alex Ough
 
 
 
 On Thu, Jun 26, 2014 at 2:08 AM, Kishan Kavala kishan.kav...@citrix.com
 wrote:
 
 This is an automatically generated e-mail. To reply, visit:
  https://reviews.apache.org/r/20099/
 
  Alex,
   As discussed on the mailing list, ORIGINATEDREGIONUUID should be the
 regionId which is Long. So all the ORIGINATEDREGIONUUID references should
 just be ORIGINATEDREGIONID and of datatype Long.
 
 
  - Kishan Kavala
 
  On June 24th, 2014, 9:24 p.m. IST, Alex Ough wrote:
Review request for cloudstack.
  By Alex Ough.
 
  *Updated June 24, 2014, 9:24 p.m.*
   *Repository: * cloudstack-git
  Description
 
  This is the review request for the core changes related with #17790 that has
 only the new plugin codes.
 
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.
 
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/CreateAccount
 Cmd.java
 (50d67d9)
 -
 api/src/org/apache/cloudstack/api/command/admin/account/DeleteAccount
 Cmd.java
 (5754ec5)
 -
 api/src/org/apache/cloudstack/api/command/admin/account/DisableAccount
 Cmd.java
 (3e5e1d3)
 -
 api/src/org/apache/cloudstack/api/command/admin/account/EnableAccount
 Cmd.java
 (f30c985)
 -
 api/src/org/apache/cloudstack/api/command/admin/account/LockAccountCm
 d.java
 (3c185e4)
 -
 api/src/org/apache/cloudstack/api/command/admin/account/UpdateAccount
 Cmd.java
 (a7ce74a)
 -
 api/src/org/apache/cloudstack/api/command/admin/domain/CreateDomainC
 md.java
 (312c9ee)
 -
 api/src/org/apache/cloudstack/api/command/admin/domain/DeleteDomainC
 md.java
 (a6d2b0b)
 -
 api/src/org/apache/cloudstack/api/command/admin/domain/UpdateDomain
 Cmd.java
 (409a84d)
 -
 api/src/org/apache/cloudstack/api/command/admin/region/AddRegionCmd.j
 ava
 (f6743ba)
 -
 api/src/org/apache/cloudstack/api/command/admin/region/UpdateRegionC
 md.java
 (b08cbbb)
 -
 api/src/org/apache/cloudstack/api/command/admin/user/CreateUserCmd.jav
 a
 (8f223ac)
 -
 api/src/org/apache/cloudstack/api/command/admin/user/DeleteUserCmd.jav
 a
 (08ba521)
 -
 api/src/org/apache/cloudstack/api/command/admin/user/DisableUserCmd.ja
 va
 (c6e09ef)
 -
 api/src/org/apache/cloudstack/api/command/admin/user/EnableUserCmd.jav
 a
 (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.ja
 va
 (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/MockAcc
 ountManager.java
 (4136b5c)
 - plugins/pom.xml (b5e6a61)
 - plugins/user-
 authenticators/ldap/src/org/apache/cloudstack/api/command/LdapCreateAcc
 ountCmd.java
 (b753952)
 - plugins/user-
 authenticators/ldap/src/org/apache/cloudstack/api/command/LdapImportUs
 ersCmd.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

RE: Review Request 20099: Domain-Account-User Sync Up Among Multiple Regions (Core Changes)

2014-06-25 Thread Kishan Kavala
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.commailto: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.commailto: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.commailto:alex.o...@sungardas.com
Date: Tuesday, June 24, 2014 at 5:41 PM

To: Alena Prokharchyk 
alena.prokharc...@citrix.commailto:alena.prokharc...@citrix.com
Cc: dev@cloudstack.apache.orgmailto:dev@cloudstack.apache.org 
dev@cloudstack.apache.orgmailto:dev@cloudstack.apache.org, Kishan Kavala 
kishan.kav...@citrix.commailto:kishan.kav...@citrix.com, Murali Reddy 
murali.re...@citrix.commailto:murali.re...@citrix.com, Ram Ganesh 
ram.gan...@citrix.commailto:ram.gan...@citrix.com, Animesh Chaturvedi 
animesh.chaturv...@citrix.commailto: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.commailto: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

Re: Review Request 20099: Domain-Account-User Sync Up Among Multiple Regions (Core Changes)

2014-06-25 Thread Alex Ough
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

RE: Review Request 20099: Domain-Account-User Sync Up Among Multiple Regions (Core Changes)

2014-06-25 Thread Kishan Kavala
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.commailto: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.idhttp://region.id in db.properties

2.   Add a new column in region table


From: Alex Ough [mailto:alex.o...@sungardas.commailto:alex.o...@sungardas.com]
Sent: Wednesday, 25 June 2014 8:18 AM
To: Alena Prokharchyk
Cc: dev@cloudstack.apache.orgmailto: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.commailto: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.commailto: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.commailto:alex.o...@sungardas.com
Date: Tuesday, June 24, 2014 at 5:41 PM

To: Alena Prokharchyk 
alena.prokharc...@citrix.commailto:alena.prokharc...@citrix.com
Cc: dev@cloudstack.apache.orgmailto:dev@cloudstack.apache.org 
dev@cloudstack.apache.orgmailto:dev@cloudstack.apache.org, Kishan Kavala 
kishan.kav...@citrix.commailto:kishan.kav...@citrix.com, Murali Reddy 
murali.re...@citrix.commailto:murali.re...@citrix.com, Ram Ganesh 
ram.gan...@citrix.commailto:ram.gan...@citrix.com, Animesh Chaturvedi 
animesh.chaturv...@citrix.commailto: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

Re: Review Request 20099: Domain-Account-User Sync Up Among Multiple Regions (Core Changes)

2014-06-25 Thread Alena Prokharchyk
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.commailto:alex.o...@sungardas.com
Date: Wednesday, June 25, 2014 at 4:02 PM
To: Kishan Kavala kishan.kav...@citrix.commailto:kishan.kav...@citrix.com
Cc: Alena Prokharchyk 
alena.prokharc...@citrix.commailto:alena.prokharc...@citrix.com, 
dev@cloudstack.apache.orgmailto:dev@cloudstack.apache.org 
dev@cloudstack.apache.orgmailto:dev@cloudstack.apache.org, Murali Reddy 
murali.re...@citrix.commailto:murali.re...@citrix.com, Ram Ganesh 
ram.gan...@citrix.commailto:ram.gan...@citrix.com, Animesh Chaturvedi 
animesh.chaturv...@citrix.commailto: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.commailto: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.commailto:alex.o...@sungardas.com]
Sent: Wednesday, 25 June 2014 4:31 PM
To: Kishan Kavala
Cc: Alena Prokharchyk; 
dev@cloudstack.apache.orgmailto: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.commailto: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.idhttp://region.id in db.properties

2.   Add a new column in region table


From: Alex Ough [mailto:alex.o...@sungardas.commailto:alex.o...@sungardas.com]
Sent: Wednesday, 25 June 2014 8:18 AM
To: Alena Prokharchyk
Cc: dev@cloudstack.apache.orgmailto: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.commailto: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.commailto: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

Re: Review Request 20099: Domain-Account-User Sync Up Among Multiple Regions (Core Changes)

2014-06-25 Thread Alex Ough
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

Re: Review Request 20099: Domain-Account-User Sync Up Among Multiple Regions (Core Changes)

2014-06-25 Thread Alena Prokharchyk
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.commailto:alex.o...@sungardas.com
Date: Wednesday, June 25, 2014 at 6:33 PM
To: Alena Prokharchyk 
alena.prokharc...@citrix.commailto:alena.prokharc...@citrix.com
Cc: Kishan Kavala kishan.kav...@citrix.commailto:kishan.kav...@citrix.com, 
dev@cloudstack.apache.orgmailto:dev@cloudstack.apache.org 
dev@cloudstack.apache.orgmailto:dev@cloudstack.apache.org, Murali Reddy 
murali.re...@citrix.commailto:murali.re...@citrix.com, Ram Ganesh 
ram.gan...@citrix.commailto:ram.gan...@citrix.com, Animesh Chaturvedi 
animesh.chaturv...@citrix.commailto: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.commailto: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.commailto:alex.o...@sungardas.com
Date: Wednesday, June 25, 2014 at 4:02 PM
To: Kishan Kavala kishan.kav...@citrix.commailto:kishan.kav...@citrix.com
Cc: Alena Prokharchyk 
alena.prokharc...@citrix.commailto:alena.prokharc...@citrix.com, 
dev@cloudstack.apache.orgmailto:dev@cloudstack.apache.org 
dev@cloudstack.apache.orgmailto:dev@cloudstack.apache.org, Murali Reddy 
murali.re...@citrix.commailto:murali.re...@citrix.com, Ram Ganesh 
ram.gan...@citrix.commailto:ram.gan...@citrix.com, Animesh Chaturvedi 
animesh.chaturv...@citrix.commailto: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.commailto: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.commailto:alex.o...@sungardas.com]
Sent: Wednesday, 25 June 2014 4:31 PM
To: Kishan Kavala
Cc: Alena Prokharchyk; 
dev@cloudstack.apache.orgmailto: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.commailto: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.idhttp://region.id in db.properties

2.   Add a new column in region

Re: Review Request 20099: Domain-Account-User Sync Up Among Multiple Regions (Core Changes)

2014-06-25 Thread Alex Ough
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

Re: Review Request 20099: Domain-Account-User Sync Up Among Multiple Regions (Core Changes)

2014-06-25 Thread Alena Prokharchyk
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.commailto:alex.o...@sungardas.com
Date: Wednesday, June 25, 2014 at 7:12 PM
To: Alena Prokharchyk 
alena.prokharc...@citrix.commailto:alena.prokharc...@citrix.com
Cc: Kishan Kavala kishan.kav...@citrix.commailto:kishan.kav...@citrix.com, 
dev@cloudstack.apache.orgmailto:dev@cloudstack.apache.org 
dev@cloudstack.apache.orgmailto:dev@cloudstack.apache.org, Murali Reddy 
murali.re...@citrix.commailto:murali.re...@citrix.com, Ram Ganesh 
ram.gan...@citrix.commailto:ram.gan...@citrix.com, Animesh Chaturvedi 
animesh.chaturv...@citrix.commailto: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.commailto: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.commailto:alex.o...@sungardas.com
Date: Wednesday, June 25, 2014 at 6:33 PM
To: Alena Prokharchyk 
alena.prokharc...@citrix.commailto:alena.prokharc...@citrix.com
Cc: Kishan Kavala kishan.kav...@citrix.commailto:kishan.kav...@citrix.com, 
dev@cloudstack.apache.orgmailto:dev@cloudstack.apache.org 
dev@cloudstack.apache.orgmailto:dev@cloudstack.apache.org, Murali Reddy 
murali.re...@citrix.commailto:murali.re...@citrix.com, Ram Ganesh 
ram.gan...@citrix.commailto:ram.gan...@citrix.com, Animesh Chaturvedi 
animesh.chaturv...@citrix.commailto: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.commailto: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.commailto:alex.o...@sungardas.com
Date: Wednesday, June 25, 2014 at 4:02 PM
To: Kishan Kavala kishan.kav...@citrix.commailto:kishan.kav...@citrix.com
Cc: Alena Prokharchyk 
alena.prokharc...@citrix.commailto:alena.prokharc...@citrix.com, 
dev@cloudstack.apache.orgmailto:dev@cloudstack.apache.org 
dev@cloudstack.apache.orgmailto:dev@cloudstack.apache.org, Murali Reddy 
murali.re...@citrix.commailto:murali.re...@citrix.com, Ram Ganesh 
ram.gan...@citrix.commailto:ram.gan...@citrix.com, Animesh Chaturvedi 
animesh.chaturv...@citrix.commailto: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

Re: Review Request 20099: Domain-Account-User Sync Up Among Multiple Regions (Core Changes)

2014-06-25 Thread Alex Ough
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

Re: Review Request 20099: Domain-Account-User Sync Up Among Multiple Regions (Core Changes)

2014-06-24 Thread Alena Prokharchyk

---
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 
   

Re: Review Request 20099: Domain-Account-User Sync Up Among Multiple Regions (Core Changes)

2014-06-24 Thread Alena Prokharchyk
Moving the discussion to the mailing list as it doesn’t have to be private. 
Kishan/Murali, can you please follow up on the remaining review for 
https://reviews.apache.org/r/20099/ (see my last comment and the discussion 
below)

Basically what Alex wants to do is – pass the originated region to 
create/update/deleteAccount commands. And the question is – what type this 
parameter should have (see details below)

Thanks,
Alena.

From: Alena Prokharchyk 
alena.prokharc...@citrix.commailto:alena.prokharc...@citrix.com
Date: Tuesday, June 24, 2014 at 3:06 PM
To: Alex Ough alex.o...@sungardas.commailto:alex.o...@sungardas.com, Kishan 
Kavala kishan.kav...@citrix.commailto:kishan.kav...@citrix.com, Murali 
Reddy murali.re...@citrix.commailto:murali.re...@citrix.com
Cc: Animesh Chaturvedi 
animesh.chaturv...@citrix.commailto:animesh.chaturv...@citrix.com, Ram 
Ganesh ram.gan...@citrix.commailto:ram.gan...@citrix.com
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.commailto:alena.prokharc...@citrix.com
Date: Tuesday, June 24, 2014 at 2:54 PM
To: Alex Ough alex.o...@sungardas.commailto: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
id1/id
nameLocal/name
endpointhttp://localhost:8080/client//endpoint
gslbserviceenabledtrue/gslbserviceenabled
portableipserviceenabledfalse/portableipserviceenabled
/region


Please correct if I miss something.
-Alena.

From: Alex Ough alex.o...@sungardas.commailto:alex.o...@sungardas.com
Date: Tuesday, June 24, 2014 at 2:33 PM
To: Alena Prokharchyk 
alena.prokharc...@citrix.commailto: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.commailto: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

Re: Review Request 20099: Domain-Account-User Sync Up Among Multiple Regions (Core Changes)

2014-06-24 Thread Alex Ough
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

 id1/id

 nameLocal/name

 endpointhttp://localhost:8080/client//endpoint

 gslbserviceenabledtrue/gslbserviceenabled

 portableipserviceenabledfalse/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

Re: Review Request 20099: Domain-Account-User Sync Up Among Multiple Regions (Core Changes)

2014-06-24 Thread Alena Prokharchyk
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.commailto:alex.o...@sungardas.com
Date: Tuesday, June 24, 2014 at 4:22 PM
To: dev@cloudstack.apache.orgmailto:dev@cloudstack.apache.org 
dev@cloudstack.apache.orgmailto:dev@cloudstack.apache.org
Cc: Alena Prokharchyk 
alena.prokharc...@citrix.commailto:alena.prokharc...@citrix.com, Kishan 
Kavala kishan.kav...@citrix.commailto:kishan.kav...@citrix.com, Murali 
Reddy murali.re...@citrix.commailto:murali.re...@citrix.com, Ram Ganesh 
ram.gan...@citrix.commailto:ram.gan...@citrix.com, Animesh Chaturvedi 
animesh.chaturv...@citrix.commailto: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.commailto: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.commailto:alena.prokharc...@citrix.com
Date: Tuesday, June 24, 2014 at 2:54 PM
To: Alex Ough alex.o...@sungardas.commailto: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
id1/id
nameLocal/name
endpointhttp://localhost:8080/client//endpoint
gslbserviceenabledtrue/gslbserviceenabled
portableipserviceenabledfalse/portableipserviceenabled
/region


Please correct if I miss something.
-Alena.

From: Alex Ough alex.o...@sungardas.commailto:alex.o...@sungardas.com
Date: Tuesday, June 24, 2014 at 2:33 PM
To: Alena Prokharchyk 
alena.prokharc...@citrix.commailto: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

Re: Review Request 20099: Domain-Account-User Sync Up Among Multiple Regions (Core Changes)

2014-06-24 Thread Alex Ough
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

 id1/id

 nameLocal/name

 endpointhttp://localhost:8080/client//endpoint

 gslbserviceenabledtrue/gslbserviceenabled

 portableipserviceenabledfalse/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

Re: Review Request 20099: Domain-Account-User Sync Up Among Multiple Regions (Core Changes)

2014-06-24 Thread Alena Prokharchyk
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.commailto:alex.o...@sungardas.com
Date: Tuesday, June 24, 2014 at 5:17 PM
To: Alena Prokharchyk 
alena.prokharc...@citrix.commailto:alena.prokharc...@citrix.com
Cc: dev@cloudstack.apache.orgmailto:dev@cloudstack.apache.org 
dev@cloudstack.apache.orgmailto:dev@cloudstack.apache.org, Kishan Kavala 
kishan.kav...@citrix.commailto:kishan.kav...@citrix.com, Murali Reddy 
murali.re...@citrix.commailto:murali.re...@citrix.com, Ram Ganesh 
ram.gan...@citrix.commailto:ram.gan...@citrix.com, Animesh Chaturvedi 
animesh.chaturv...@citrix.commailto: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.commailto: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.commailto:alex.o...@sungardas.com
Date: Tuesday, June 24, 2014 at 4:22 PM
To: dev@cloudstack.apache.orgmailto:dev@cloudstack.apache.org 
dev@cloudstack.apache.orgmailto:dev@cloudstack.apache.org
Cc: Alena Prokharchyk 
alena.prokharc...@citrix.commailto:alena.prokharc...@citrix.com, Kishan 
Kavala kishan.kav...@citrix.commailto:kishan.kav...@citrix.com, Murali 
Reddy murali.re...@citrix.commailto:murali.re...@citrix.com, Ram Ganesh 
ram.gan...@citrix.commailto:ram.gan...@citrix.com, Animesh Chaturvedi 
animesh.chaturv...@citrix.commailto: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.commailto: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

Re: Review Request 20099: Domain-Account-User Sync Up Among Multiple Regions (Core Changes)

2014-06-24 Thread Alex Ough
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

Re: Review Request 20099: Domain-Account-User Sync Up Among Multiple Regions (Core Changes)

2014-06-24 Thread Alena Prokharchyk
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.commailto:alex.o...@sungardas.com
Date: Tuesday, June 24, 2014 at 5:41 PM
To: Alena Prokharchyk 
alena.prokharc...@citrix.commailto:alena.prokharc...@citrix.com
Cc: dev@cloudstack.apache.orgmailto:dev@cloudstack.apache.org 
dev@cloudstack.apache.orgmailto:dev@cloudstack.apache.org, Kishan Kavala 
kishan.kav...@citrix.commailto:kishan.kav...@citrix.com, Murali Reddy 
murali.re...@citrix.commailto:murali.re...@citrix.com, Ram Ganesh 
ram.gan...@citrix.commailto:ram.gan...@citrix.com, Animesh Chaturvedi 
animesh.chaturv...@citrix.commailto: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.commailto: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.commailto:alex.o...@sungardas.com
Date: Tuesday, June 24, 2014 at 5:17 PM
To: Alena Prokharchyk 
alena.prokharc...@citrix.commailto:alena.prokharc...@citrix.com
Cc: dev@cloudstack.apache.orgmailto:dev@cloudstack.apache.org 
dev@cloudstack.apache.orgmailto:dev@cloudstack.apache.org, Kishan Kavala 
kishan.kav...@citrix.commailto:kishan.kav...@citrix.com, Murali Reddy 
murali.re...@citrix.commailto:murali.re...@citrix.com, Ram Ganesh 
ram.gan...@citrix.commailto:ram.gan...@citrix.com, Animesh Chaturvedi 
animesh.chaturv...@citrix.commailto: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.commailto: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.commailto:alex.o...@sungardas.com
Date: Tuesday, June 24, 2014 at 4:22 PM
To: dev@cloudstack.apache.orgmailto:dev@cloudstack.apache.org 
dev@cloudstack.apache.orgmailto:dev@cloudstack.apache.org
Cc: Alena Prokharchyk 
alena.prokharc...@citrix.commailto:alena.prokharc...@citrix.com, Kishan 
Kavala kishan.kav...@citrix.commailto:kishan.kav...@citrix.com, Murali 
Reddy murali.re...@citrix.commailto:murali.re...@citrix.com, Ram Ganesh

Re: Review Request 20099: Domain-Account-User Sync Up Among Multiple Regions (Core Changes)

2014-06-24 Thread Alex Ough
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

Re: Review Request 20099: Domain-Account-User Sync Up Among Multiple Regions (Core Changes)

2014-06-24 Thread Alex Ough
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

Re: Review Request 20099: Domain-Account-User Sync Up Among Multiple Regions (Core Changes)

2014-06-20 Thread Alex Ough

---
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/20099/
---

(Updated June 20, 2014, 3:06 p.m.)


Review request for cloudstack.


Changes
---

No change in 'spring-server-core-managers-context.xml' because of an issue 
during starting the management server.


Repository: cloudstack-git


Description
---

This is the review request for the core changes related with #17790 that has 
only the new plugin codes.


Diffs (updated)
-

  api/src/com/cloud/event/EventTypes.java 471b3f6 
  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/resources/META-INF/cloudstack/core/spring-server-core-managers-context.xml
 fc1c7e2 
  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



Re: Review Request 20099: Domain-Account-User Sync Up Among Multiple Regions (Core Changes)

2014-06-18 Thread Alex Ough


 On June 17, 2014, 5:06 p.m., Alena Prokharchyk wrote:
  One more comment regarding spring-server-core-managers-context.xml. As your 
  code comes as a CS plugin, all the managers of your plugin should be 
  defined in your plugin's *-context.xml file, not 
  spring-server-core-managers-context.xml. These are the classes of your 
  plugin:
  
  bean id=fullSyncer 
  class=org.apache.cloudstack.mom.multiregion.FullSyncer /
  bean id=fullScanner 
  class=org.apache.cloudstack.mom.multiregion.service.FullScanner /
  bean id=autoGenerator 
  class=org.apache.cloudstack.mom.multiregion.simulator.SimulatorAutoGenerator
   /
  bean id=domainSubscriber 
  class=org.apache.cloudstack.mom.multiregion.subscriber.DomainSubscriber /
  bean id=accountSubscriber 
  class=org.apache.cloudstack.mom.multiregion.subscriber.AccountSubscriber 
  /
  bean id=userSubscriber 
  class=org.apache.cloudstack.mom.multiregion.subscriber.UserSubscriber /
  bean id=injectedCollection 
  class=org.apache.cloudstack.mom.multiregion.InjectedCollection / 
  bean id=syncQueryManagerImpl 
  class=org.apache.cloudstack.mom.multiregion.api.response.SyncQueryManagerImpl/
  bean id=apiSyncResponseHelper 
  class=org.apache.cloudstack.mom.multiregion.api.response.ApiSyncResponseHelper/
  bean id=syncAccountJoinDaoImpl 
  class=org.apache.cloudstack.mom.multiregion.api.dao.SyncAccountJoinDaoImpl
   /
  bean id=syncUserAccountJoinDaoImpl 
  class=org.apache.cloudstack.mom.multiregion.api.dao.SyncUserAccountJoinDaoImpl
   /
  
  
  
  If you want to look at the example, look at any CS plugin, for example 
  cloud-plugin-hypervisor-vmware (refer to spring-vmware-core-context.xml 
  file to see how the managers are defined there)

I moved to 
plugins/event-bus/multiregion/resources/META-INF/cloudstack/spring-plugin-multiregion-system-context.xml
 and have this error during starting the mgmt server.

org.springframework.beans.factory.BeanCreationException: Error creating bean 
with name 'eventNotificationBus': Injection of autowired dependencies failed; 
nested exception is org.springframework.beans.factory.BeanCreationException: 
Could not autowire field: protected 
org.apache.cloudstack.mom.multiregion.subscriber.DomainSubscriber 
org.apache.cloudstack.mom.multiregion.MultiRegionEventBus.domainSubscriber; 
nested exception is 
org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying 
bean of type 
[org.apache.cloudstack.mom.multiregion.subscriber.DomainSubscriber] found for 
dependency: expected at least 1 bean which qualifies as autowire candidate for 
this dependency. Dependency annotations: {@javax.inject.Inject()}

Can you give me how to resolve this?


- Alex


---
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/20099/#review45955
---


On June 15, 2014, 9:40 p.m., Alex Ough wrote:
 
 ---
 This is an automatically generated e-mail. To reply, visit:
 https://reviews.apache.org/r/20099/
 ---
 
 (Updated June 15, 2014, 9:40 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 39ef710 
   api/src/com/cloud/user/AccountService.java 7e37b38 
   api/src/com/cloud/user/DomainService.java 4c1f93d 
   api/src/org/apache/cloudstack/api/ApiConstants.java fdb4558 
   api/src/org/apache/cloudstack/api/BaseCmd.java f6f21ae 
   
 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 
 51e218d 
   api/src/org/apache/cloudstack/api/command/admin/user/DeleteUserCmd.java 
 08ba521 
   

Re: Review Request 20099: Domain-Account-User Sync Up Among Multiple Regions (Core Changes)

2014-06-17 Thread Alena Prokharchyk

---
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/20099/#review45955
---


One more comment regarding spring-server-core-managers-context.xml. As your 
code comes as a CS plugin, all the managers of your plugin should be defined in 
your plugin's *-context.xml file, not spring-server-core-managers-context.xml. 
These are the classes of your plugin:

bean id=fullSyncer class=org.apache.cloudstack.mom.multiregion.FullSyncer 
/
bean id=fullScanner 
class=org.apache.cloudstack.mom.multiregion.service.FullScanner /
bean id=autoGenerator 
class=org.apache.cloudstack.mom.multiregion.simulator.SimulatorAutoGenerator 
/
bean id=domainSubscriber 
class=org.apache.cloudstack.mom.multiregion.subscriber.DomainSubscriber /
bean id=accountSubscriber 
class=org.apache.cloudstack.mom.multiregion.subscriber.AccountSubscriber /
bean id=userSubscriber 
class=org.apache.cloudstack.mom.multiregion.subscriber.UserSubscriber /
bean id=injectedCollection 
class=org.apache.cloudstack.mom.multiregion.InjectedCollection / 
bean id=syncQueryManagerImpl 
class=org.apache.cloudstack.mom.multiregion.api.response.SyncQueryManagerImpl/
bean id=apiSyncResponseHelper 
class=org.apache.cloudstack.mom.multiregion.api.response.ApiSyncResponseHelper/
bean id=syncAccountJoinDaoImpl 
class=org.apache.cloudstack.mom.multiregion.api.dao.SyncAccountJoinDaoImpl /
bean id=syncUserAccountJoinDaoImpl 
class=org.apache.cloudstack.mom.multiregion.api.dao.SyncUserAccountJoinDaoImpl
 /



If you want to look at the example, look at any CS plugin, for example 
cloud-plugin-hypervisor-vmware (refer to spring-vmware-core-context.xml file to 
see how the managers are defined there)

- Alena Prokharchyk


On June 15, 2014, 9:40 p.m., Alex Ough wrote:
 
 ---
 This is an automatically generated e-mail. To reply, visit:
 https://reviews.apache.org/r/20099/
 ---
 
 (Updated June 15, 2014, 9:40 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 39ef710 
   api/src/com/cloud/user/AccountService.java 7e37b38 
   api/src/com/cloud/user/DomainService.java 4c1f93d 
   api/src/org/apache/cloudstack/api/ApiConstants.java fdb4558 
   api/src/org/apache/cloudstack/api/BaseCmd.java f6f21ae 
   
 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 
 51e218d 
   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 
 cf5d355 
   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 d8dbde7 
   client/tomcatconf/commands.properties.in 45debe4 
   
 engine/schema/resources/META-INF/cloudstack/core/spring-engine-schema-core-daos-context.xml
  489b37d 
   engine/schema/src/com/cloud/user/AccountVO.java 0f5a044 
   engine/schema/src/org/apache/cloudstack/region/RegionVO.java 608bd2b 
   
 

Re: Review Request 20099: Domain-Account-User Sync Up Among Multiple Regions (Core Changes)

2014-06-16 Thread Alena Prokharchyk

---
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/20099/#review45853
---


Alex,

* add since=version attribute to all new parameters you've added to the 
existing API calls
* remove listSyncAccounts/ listSyncUsers/listSyncDomains/listSyncDomainChildren
* The important one - while on the call with Alex Huang, and later in all the 
countless emails, we've agreed not to modify the event itself, in order not to 
overload it with the details just specific to your plugin or the region. Now I 
see this in ActionEventUtils:

eventDescription.put(oldentityname, oldEntityName);
eventDescription.put(originatedregionuuid, originatedRegionUuid);

You said the parameter would be saved and read to/from CallContext only? 
Without touching anything else in the CS code like account/domain/user/event 
objects. Please remove it from the event. Or come up with a different solution 
that doesn't touch the event.

- Alena Prokharchyk


On June 15, 2014, 9:40 p.m., Alex Ough wrote:
 
 ---
 This is an automatically generated e-mail. To reply, visit:
 https://reviews.apache.org/r/20099/
 ---
 
 (Updated June 15, 2014, 9:40 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 39ef710 
   api/src/com/cloud/user/AccountService.java 7e37b38 
   api/src/com/cloud/user/DomainService.java 4c1f93d 
   api/src/org/apache/cloudstack/api/ApiConstants.java fdb4558 
   api/src/org/apache/cloudstack/api/BaseCmd.java f6f21ae 
   
 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 
 51e218d 
   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 
 cf5d355 
   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 d8dbde7 
   client/tomcatconf/commands.properties.in 45debe4 
   
 engine/schema/resources/META-INF/cloudstack/core/spring-engine-schema-core-daos-context.xml
  489b37d 
   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
  957f708 
   plugins/pom.xml 9b391b8 
   
 plugins/user-authenticators/ldap/src/org/apache/cloudstack/api/command/LdapCreateAccountCmd.java
  626bb8f 
   
 plugins/user-authenticators/ldap/src/org/apache/cloudstack/api/command/LdapImportUsersCmd.java
  887ad00 
   
 server/resources/META-INF/cloudstack/core/spring-server-core-managers-context.xml
  fc1c7e2 
   server/src/com/cloud/api/ApiResponseHelper.java 38f2f0b 
   server/src/com/cloud/api/dispatch/ParamProcessWorker.java e9bdd8b 
   server/src/com/cloud/event/ActionEventUtils.java 28e5680 
   server/src/com/cloud/projects/ProjectManagerImpl.java d10c059 
   server/src/com/cloud/user/AccountManager.java 03bf842 
   server/src/com/cloud/user/AccountManagerImpl.java 2070ee6 
   

Re: Review Request 20099: Domain-Account-User Sync Up Among Multiple Regions (Core Changes)

2014-06-16 Thread Alex Ough
On Mon, Jun 16, 2014 at 7:07 PM, Alena Prokharchyk 
alena.prokharc...@citrix.com wrote:


 ---
 This is an automatically generated e-mail. To reply, visit:
 https://reviews.apache.org/r/20099/#review45853
 ---


 Alex,

 * add since=version attribute to all new parameters you've added to the
 existing API calls
 * remove listSyncAccounts/
 listSyncUsers/listSyncDomains/listSyncDomainChildren

 WHY??


 * The important one - while on the call with Alex Huang, and later in all
 the countless emails, we've agreed not to modify the event itself, in order
 not to overload it with the details just specific to your plugin or the
 region. Now I see this in ActionEventUtils:

 eventDescription.put(oldentityname, oldEntityName);
 eventDescription.put(originatedregionuuid, originatedRegionUuid);

 WHY???


 You said the parameter would be saved and read to/from CallContext only?
 Without touching anything else in the CS code like
 account/domain/user/event objects. Please remove it from the event. Or come
 up with a different solution that doesn't touch the event.

 WHAT DO YOU MEAN??


 - Alena Prokharchyk


 On June 15, 2014, 9:40 p.m., Alex Ough wrote:
 
  ---
  This is an automatically generated e-mail. To reply, visit:
  https://reviews.apache.org/r/20099/
  ---
 
  (Updated June 15, 2014, 9:40 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 39ef710
api/src/com/cloud/user/AccountService.java 7e37b38
api/src/com/cloud/user/DomainService.java 4c1f93d
api/src/org/apache/cloudstack/api/ApiConstants.java fdb4558
api/src/org/apache/cloudstack/api/BaseCmd.java f6f21ae
 
 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
 51e218d
 
 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
 cf5d355
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 d8dbde7
client/tomcatconf/commands.properties.in 45debe4
 
 engine/schema/resources/META-INF/cloudstack/core/spring-engine-schema-core-daos-context.xml
 489b37d
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
 957f708
plugins/pom.xml 9b391b8
 
 plugins/user-authenticators/ldap/src/org/apache/cloudstack/api/command/LdapCreateAccountCmd.java
 626bb8f
 
 plugins/user-authenticators/ldap/src/org/apache/cloudstack/api/command/LdapImportUsersCmd.java
 887ad00
 
 server/resources/META-INF/cloudstack/core/spring-server-core-managers-context.xml
 fc1c7e2
server/src/com/cloud/api/ApiResponseHelper.java 38f2f0b
server/src/com/cloud/api/dispatch/ParamProcessWorker.java e9bdd8b
server/src/com/cloud/event/ActionEventUtils.java 28e5680
server/src/com/cloud/projects/ProjectManagerImpl.java d10c059

Re: Review Request 20099: Domain-Account-User Sync Up Among Multiple Regions (Core Changes)

2014-06-16 Thread Alena Prokharchyk


On 6/16/14, 4:13 PM, Alex Ough alex.o...@sungardas.com wrote:

On Mon, Jun 16, 2014 at 7:07 PM, Alena Prokharchyk 
alena.prokharc...@citrix.com wrote:


 ---
 This is an automatically generated e-mail. To reply, visit:
 https://reviews.apache.org/r/20099/#review45853
 ---


 Alex,

 * add since=version attribute to all new parameters you've added to
the
 existing API calls
 * remove listSyncAccounts/
 listSyncUsers/listSyncDomains/listSyncDomainChildren

 WHY??


Because when the API commands come as a part of your plugin, they don¹t
have to be registered in the commands.properties file. This file defines
the permissions only, and you can define the permissions in your commands
itself. Use ³authorized² parameter in the @ApiCommand annotation. Example:


authorized = {RoleType.Admin}


If the command is available to Root admin only (equivalent to =1 in
commands.properties)



 * The important one - while on the call with Alex Huang, and later in
all
 the countless emails, we've agreed not to modify the event itself, in
order
 not to overload it with the details just specific to your plugin or the
 region. Now I see this in ActionEventUtils:

 eventDescription.put(oldentityname, oldEntityName);
 eventDescription.put(originatedregionuuid, originatedRegionUuid);

 WHY???


Alex, because in a numerous number of email threads below we¹ve agreed on
the fact that the event object itself won¹t be overloaded and we will keep
it simple. If every plugin overloads the event with the details only
related to this plugin, there will be a mess. We¹ve discussed the way when
your plugin modifies account/domain/user objects instead, and then reads
from them. Then you said it wouldn¹t work and you would read from the
CallContext (memory). You want me to pull out this thread? There was no
notion about modifying/overloading the event object in the DB itself. If
you can find it and put it here, I would appreciate that.




 You said the parameter would be saved and read to/from CallContext only?
 Without touching anything else in the CS code like
 account/domain/user/event objects. Please remove it from the event. Or
come
 up with a different solution that doesn't touch the event.

 WHAT DO YOU MEAN??



 - Alena Prokharchyk


 On June 15, 2014, 9:40 p.m., Alex Ough wrote:
 
  ---
  This is an automatically generated e-mail. To reply, visit:
  https://reviews.apache.org/r/20099/
  ---
 
  (Updated June 15, 2014, 9:40 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 39ef710
api/src/com/cloud/user/AccountService.java 7e37b38
api/src/com/cloud/user/DomainService.java 4c1f93d
api/src/org/apache/cloudstack/api/ApiConstants.java fdb4558
api/src/org/apache/cloudstack/api/BaseCmd.java f6f21ae
 
 
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.ja
va
 3c185e4
 
 
api/src/org/apache/cloudstack/api/command/admin/account/UpdateAccountCmd.
java
 a7ce74a
 
 
api/src/org/apache/cloudstack/api/command/admin/domain/CreateDomainCmd.ja
va
 312c9ee
 
 
api/src/org/apache/cloudstack/api/command/admin/domain/DeleteDomainCmd.ja
va
 a6d2b0b
 
 
api/src/org/apache/cloudstack/api/command/admin/domain/UpdateDomainCmd.ja
va
 409a84d
 
 api/src/org/apache/cloudstack/api/command/admin/region/AddRegionCmd.java
 f6743ba
 
 
api/src/org/apache/cloudstack/api/command/admin/region/UpdateRegionCmd.ja
va
 b08cbbb
 
 api/src/org/apache/cloudstack/api/command/admin/user/CreateUserCmd.java
 51e218d
 
 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
 cf5d355
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

Re: Review Request 20099: Domain-Account-User Sync Up Among Multiple Regions (Core Changes)

2014-06-15 Thread Alex Ough

---
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/20099/
---

(Updated June 15, 2014, 9:40 p.m.)


Review request for cloudstack.


Changes
---

Please review


Repository: cloudstack-git


Description
---

This is the review request for the core changes related with #17790 that has 
only the new plugin codes.


Diffs (updated)
-

  api/src/com/cloud/event/EventTypes.java 39ef710 
  api/src/com/cloud/user/AccountService.java 7e37b38 
  api/src/com/cloud/user/DomainService.java 4c1f93d 
  api/src/org/apache/cloudstack/api/ApiConstants.java fdb4558 
  api/src/org/apache/cloudstack/api/BaseCmd.java f6f21ae 
  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 
51e218d 
  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 
cf5d355 
  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 d8dbde7 
  client/tomcatconf/commands.properties.in 45debe4 
  
engine/schema/resources/META-INF/cloudstack/core/spring-engine-schema-core-daos-context.xml
 489b37d 
  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
 957f708 
  plugins/pom.xml 9b391b8 
  
plugins/user-authenticators/ldap/src/org/apache/cloudstack/api/command/LdapCreateAccountCmd.java
 626bb8f 
  
plugins/user-authenticators/ldap/src/org/apache/cloudstack/api/command/LdapImportUsersCmd.java
 887ad00 
  
server/resources/META-INF/cloudstack/core/spring-server-core-managers-context.xml
 fc1c7e2 
  server/src/com/cloud/api/ApiResponseHelper.java 38f2f0b 
  server/src/com/cloud/api/dispatch/ParamProcessWorker.java e9bdd8b 
  server/src/com/cloud/event/ActionEventUtils.java 28e5680 
  server/src/com/cloud/projects/ProjectManagerImpl.java d10c059 
  server/src/com/cloud/user/AccountManager.java 03bf842 
  server/src/com/cloud/user/AccountManagerImpl.java 2070ee6 
  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/MockAccountManagerImpl.java f373cba 
  server/test/com/cloud/user/MockDomainManagerImpl.java 7dddefb 
  server/test/org/apache/cloudstack/region/RegionManagerTest.java d7bc537 
  setup/db/db/schema-440to450.sql 2bd5386 
  ui/scripts/regions.js 66dae8c 

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



Re: Review Request 20099: Domain-Account-User Sync Up Among Multiple Regions (Core Changes)

2014-05-11 Thread Alex Ough

---
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/20099/
---

(Updated May 7, 2014, 10:47 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 (updated)
-

  api/src/com/cloud/event/EventTypes.java 39ef710 
  api/src/com/cloud/user/AccountService.java 7e37b38 
  api/src/org/apache/cloudstack/api/ApiConstants.java fdb4558 
  api/src/org/apache/cloudstack/api/BaseCmd.java f6f21ae 
  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/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 d8dbde7 
  client/tomcatconf/commands.properties.in 45debe4 
  
engine/schema/resources/META-INF/cloudstack/core/spring-engine-schema-core-daos-context.xml
 489b37d 
  engine/schema/src/org/apache/cloudstack/region/RegionVO.java 608bd2b 
  
plugins/network-elements/juniper-contrail/test/org/apache/cloudstack/network/contrail/management/MockAccountManager.java
 957f708 
  plugins/pom.xml 9b391b8 
  
server/resources/META-INF/cloudstack/core/spring-server-core-managers-context.xml
 fc1c7e2 
  server/src/com/cloud/api/ApiResponseHelper.java 38f2f0b 
  server/src/com/cloud/api/dispatch/ParamProcessWorker.java e9bdd8b 
  server/src/com/cloud/event/ActionEventUtils.java 28e5680 
  server/src/com/cloud/user/AccountManager.java 03bf842 
  server/src/com/cloud/user/AccountManagerImpl.java 2070ee6 
  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/api/dispatch/ParamProcessWorkerTest.java 12051a6 
  server/test/com/cloud/user/MockAccountManagerImpl.java f373cba 
  server/test/com/cloud/user/MockDomainManagerImpl.java 7dddefb 
  server/test/org/apache/cloudstack/region/RegionManagerTest.java d7bc537 
  setup/db/db/schema-440to450.sql 2bd5386 
  ui/scripts/regions.js 66dae8c 

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



Re: Review Request 20099: Domain-Account-User Sync Up Among Multiple Regions (Core Changes)

2014-05-05 Thread Alex Ough


 On May 5, 2014, 6:27 p.m., Alena Prokharchyk wrote:
  Alex, generic logic looks good to me. But still some things need to be 
  fixed.
  
  1) RegionVO
  
  @Column(name = active)
  private boolean active;
  
  Explicitly set it to be active by default. Just setting it in the DB might 
  not be enough because DAO would always default boolean to false if not set 
  in the constructor/intance variable declaration. It should look like:
  
  @Column(name = active)
  
  private boolean active = true;
  
  2) Please make the description for the new parameters in the addRegion API 
  , more descriptive
  
  @Parameter(name = ApiConstants.MODE, type = CommandType.STRING, required = 
  true, description = Region service active)
  55  
  private String mode;
  
  
  3) AccountManager
  
  * boolean updateUser(final Long id, String userName, String firstName, 
  String lastName, String password, String email, String apiKey, String 
  secretKey, String timeZone, Account.State state);
  
  Why do we pass account state to the call? there should be only user info 
  passed in. If the account needs to be updated, do it in the separate 
  command; if you need to retrive the account state - get the account object 
  from the user object. Please remove this parameter
  
  * Why did you change the method signature for the
  
  UserAccount disableUser(long userId) to disableUser(User user)? The only 
  one info that you have to pass to the manager - is the userId. Please 
  change it back.
  
  The same for  boolean enableUser(User user), boolean lockAccount(Account 
  account);
  
  These changes don't seem to be critical or used for/by your plugin, so 
  please change them back to the original way of doing things. Its not a good 
  practice to change methods defined in the interfaces - 
  AccountManager/AccountService - unless there is a real need for it.
  
  
  * boolean updateAccount(AccountVO account, String newAccountName, String 
  newNetworkDomain, final MapString, String details, Account.State state);
  
  As updateAccount doesn't allow account state update, please remove 
  Account.State from the method signature
  
  
  4) ApiResponseHelper.java
  
  Why did you change createDomainResponse method? 
  
  public DomainResponse createDomainResponse(Domain domain)?
  
  
  To summarize it all, I would suggest to eliminate (revert) all the changes 
  done to account/domain managers that your code doesn't actually need. It 
  would make the changes list much shorter and easier for review.

for 3) AccountManager

* updateUser in 'state' : it is necessary during the Full Sync when an object's 
information is not same with one in other regions.
* new signatures : they are necessary during the Full Sync not to generate 
events while changing them. They are just another methods to manage objects, so 
can you show me why they are not permitted?


- Alex


---
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/20099/#review42175
---


On May 4, 2014, 9:12 p.m., Alex Ough wrote:
 
 ---
 This is an automatically generated e-mail. To reply, visit:
 https://reviews.apache.org/r/20099/
 ---
 
 (Updated May 4, 2014, 9:12 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 39ef710 
   api/src/com/cloud/user/AccountService.java 7e37b38 
   api/src/org/apache/cloudstack/api/ApiConstants.java fdb4558 
   api/src/org/apache/cloudstack/api/BaseCmd.java f6f21ae 
   api/src/org/apache/cloudstack/api/ResponseGenerator.java 10fb6df 
   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/response/RegionResponse.java 6c74fa6 
   api/src/org/apache/cloudstack/query/QueryService.java 01af631 
   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 d8dbde7 
   client/tomcatconf/commands.properties.in 45debe4 
   
 engine/schema/resources/META-INF/cloudstack/core/spring-engine-schema-core-daos-context.xml
  489b37d 
   engine/schema/src/org/apache/cloudstack/region/RegionVO.java 608bd2b 
   
 plugins/network-elements/juniper-contrail/test/org/apache/cloudstack/network/contrail/management/MockAccountManager.java
  957f708 
   plugins/pom.xml 9b391b8 
   
 server/resources/META-INF/cloudstack/core/spring-server-core-managers-context.xml
  

Re: Review Request 20099: Domain-Account-User Sync Up Among Multiple Regions (Core Changes)

2014-05-05 Thread Alena Prokharchyk


 On May 5, 2014, 6:27 p.m., Alena Prokharchyk wrote:
  Alex, generic logic looks good to me. But still some things need to be 
  fixed.
  
  1) RegionVO
  
  @Column(name = active)
  private boolean active;
  
  Explicitly set it to be active by default. Just setting it in the DB might 
  not be enough because DAO would always default boolean to false if not set 
  in the constructor/intance variable declaration. It should look like:
  
  @Column(name = active)
  
  private boolean active = true;
  
  2) Please make the description for the new parameters in the addRegion API 
  , more descriptive
  
  @Parameter(name = ApiConstants.MODE, type = CommandType.STRING, required = 
  true, description = Region service active)
  55  
  private String mode;
  
  
  3) AccountManager
  
  * boolean updateUser(final Long id, String userName, String firstName, 
  String lastName, String password, String email, String apiKey, String 
  secretKey, String timeZone, Account.State state);
  
  Why do we pass account state to the call? there should be only user info 
  passed in. If the account needs to be updated, do it in the separate 
  command; if you need to retrive the account state - get the account object 
  from the user object. Please remove this parameter
  
  * Why did you change the method signature for the
  
  UserAccount disableUser(long userId) to disableUser(User user)? The only 
  one info that you have to pass to the manager - is the userId. Please 
  change it back.
  
  The same for  boolean enableUser(User user), boolean lockAccount(Account 
  account);
  
  These changes don't seem to be critical or used for/by your plugin, so 
  please change them back to the original way of doing things. Its not a good 
  practice to change methods defined in the interfaces - 
  AccountManager/AccountService - unless there is a real need for it.
  
  
  * boolean updateAccount(AccountVO account, String newAccountName, String 
  newNetworkDomain, final MapString, String details, Account.State state);
  
  As updateAccount doesn't allow account state update, please remove 
  Account.State from the method signature
  
  
  4) ApiResponseHelper.java
  
  Why did you change createDomainResponse method? 
  
  public DomainResponse createDomainResponse(Domain domain)?
  
  
  To summarize it all, I would suggest to eliminate (revert) all the changes 
  done to account/domain managers that your code doesn't actually need. It 
  would make the changes list much shorter and easier for review.
 
 Alex Ough wrote:
 for 3) AccountManager
 
 * updateUser in 'state' : it is necessary during the Full Sync when an 
 object's information is not same with one in other regions.
 * new signatures : they are necessary during the Full Sync not to 
 generate events while changing them. They are just another methods to manage 
 objects, so can you show me why they are not permitted?


Alex, correct me if I'm wrong. In most of your code you use CS APIs to 
retrieve/update/delete/disable(disable changes the state) the CS objects 
(user/domain/account - updateAccount/updateDomain/deleteAccount etc). And you 
do it in each reason, and that generates the events for all the regions when 
these APIs are processed. Like for example, I see these calls:

  public JSONObject updateAccount(String accountId, String currentName, String 
newName, String details, String domainId, String networkDomain) throws 
APIFailureException {
139 
140 
StringBuilder param = buildCmd(updateAccount);
141 
param.append(append(ApiConstants.ID, accountId));
142 
if (currentName != null) param.append(append(ApiConstants.ACCOUNT, 
currentName));
143 
if (newName != null) param.append(append(ApiConstants.NEW_NAME, 
newName));
144 
if (details != null) param.append(append(ApiConstants.ACCOUNT_DETAILS, 
details));
145 
if (domainId != null) param.append(append(ApiConstants.DOMAIN_ID, 
domainId));
146 
if (networkDomain != null) 
param.append(append(ApiConstants.NETWORK_DOMAIN, networkDomain));
147 
param.append(appendResType(json));
148 
param.append(appendSessionKey(encodeSessionKey()));
149 
150 
return sendApacheGet(param.toString());
151 
}
152 
153 
public JSONObject disableAccount(String accountId) throws 
APIFailureException {
164 
165 
StringBuilder param = buildCmd(disableAccount);
166 
param.append(append(ApiConstants.ID, accountId));
167 
param.append(append(ApiConstants.LOCK, false));
168 
param.append(appendResType(json));
169 
param.append(appendSessionKey(encodeSessionKey()));
170 
171 
return sendApacheGet(param.toString());
172 
}


But in some parts of your code  you call to the AccountManager/domainManager 
interfaces directly, omitting APIs, to eliminate the events generation - like 
for the state 

Re: Review Request 20099: Domain-Account-User Sync Up Among Multiple Regions (Core Changes)

2014-05-05 Thread Alena Prokharchyk


 On May 5, 2014, 6:27 p.m., Alena Prokharchyk wrote:
  Alex, generic logic looks good to me. But still some things need to be 
  fixed.
  
  1) RegionVO
  
  @Column(name = active)
  private boolean active;
  
  Explicitly set it to be active by default. Just setting it in the DB might 
  not be enough because DAO would always default boolean to false if not set 
  in the constructor/intance variable declaration. It should look like:
  
  @Column(name = active)
  
  private boolean active = true;
  
  2) Please make the description for the new parameters in the addRegion API 
  , more descriptive
  
  @Parameter(name = ApiConstants.MODE, type = CommandType.STRING, required = 
  true, description = Region service active)
  55  
  private String mode;
  
  
  3) AccountManager
  
  * boolean updateUser(final Long id, String userName, String firstName, 
  String lastName, String password, String email, String apiKey, String 
  secretKey, String timeZone, Account.State state);
  
  Why do we pass account state to the call? there should be only user info 
  passed in. If the account needs to be updated, do it in the separate 
  command; if you need to retrive the account state - get the account object 
  from the user object. Please remove this parameter
  
  * Why did you change the method signature for the
  
  UserAccount disableUser(long userId) to disableUser(User user)? The only 
  one info that you have to pass to the manager - is the userId. Please 
  change it back.
  
  The same for  boolean enableUser(User user), boolean lockAccount(Account 
  account);
  
  These changes don't seem to be critical or used for/by your plugin, so 
  please change them back to the original way of doing things. Its not a good 
  practice to change methods defined in the interfaces - 
  AccountManager/AccountService - unless there is a real need for it.
  
  
  * boolean updateAccount(AccountVO account, String newAccountName, String 
  newNetworkDomain, final MapString, String details, Account.State state);
  
  As updateAccount doesn't allow account state update, please remove 
  Account.State from the method signature
  
  
  4) ApiResponseHelper.java
  
  Why did you change createDomainResponse method? 
  
  public DomainResponse createDomainResponse(Domain domain)?
  
  
  To summarize it all, I would suggest to eliminate (revert) all the changes 
  done to account/domain managers that your code doesn't actually need. It 
  would make the changes list much shorter and easier for review.
 
 Alex Ough wrote:
 for 3) AccountManager
 
 * updateUser in 'state' : it is necessary during the Full Sync when an 
 object's information is not same with one in other regions.
 * new signatures : they are necessary during the Full Sync not to 
 generate events while changing them. They are just another methods to manage 
 objects, so can you show me why they are not permitted?

 
 Alena Prokharchyk wrote:
 Alex, correct me if I'm wrong. In most of your code you use CS APIs to 
 retrieve/update/delete/disable(disable changes the state) the CS objects 
 (user/domain/account - updateAccount/updateDomain/deleteAccount etc). And you 
 do it in each reason, and that generates the events for all the regions when 
 these APIs are processed. Like for example, I see these calls:
 
   public JSONObject updateAccount(String accountId, String currentName, 
 String newName, String details, String domainId, String networkDomain) throws 
 APIFailureException {
 139   
 140   
 StringBuilder param = buildCmd(updateAccount);
 141   
 param.append(append(ApiConstants.ID, accountId));
 142   
 if (currentName != null) 
 param.append(append(ApiConstants.ACCOUNT, currentName));
 143   
 if (newName != null) param.append(append(ApiConstants.NEW_NAME, 
 newName));
 144   
 if (details != null) 
 param.append(append(ApiConstants.ACCOUNT_DETAILS, details));
 145   
 if (domainId != null) param.append(append(ApiConstants.DOMAIN_ID, 
 domainId));
 146   
 if (networkDomain != null) 
 param.append(append(ApiConstants.NETWORK_DOMAIN, networkDomain));
 147   
 param.append(appendResType(json));
 148   
 param.append(appendSessionKey(encodeSessionKey()));
 149   
 150   
 return sendApacheGet(param.toString());
 151   
 }
 152   
 153   
 public JSONObject disableAccount(String accountId) throws 
 APIFailureException {
 164   
 165   
 StringBuilder param = buildCmd(disableAccount);
 166   
 param.append(append(ApiConstants.ID, accountId));
 167   
 param.append(append(ApiConstants.LOCK, false));
 168   
 param.append(appendResType(json));
 169   
 

Re: Review Request 20099: Domain-Account-User Sync Up Among Multiple Regions (Core Changes)

2014-05-05 Thread Alena Prokharchyk


 On May 5, 2014, 6:27 p.m., Alena Prokharchyk wrote:
  Alex, generic logic looks good to me. But still some things need to be 
  fixed.
  
  1) RegionVO
  
  @Column(name = active)
  private boolean active;
  
  Explicitly set it to be active by default. Just setting it in the DB might 
  not be enough because DAO would always default boolean to false if not set 
  in the constructor/intance variable declaration. It should look like:
  
  @Column(name = active)
  
  private boolean active = true;
  
  2) Please make the description for the new parameters in the addRegion API 
  , more descriptive
  
  @Parameter(name = ApiConstants.MODE, type = CommandType.STRING, required = 
  true, description = Region service active)
  55  
  private String mode;
  
  
  3) AccountManager
  
  * boolean updateUser(final Long id, String userName, String firstName, 
  String lastName, String password, String email, String apiKey, String 
  secretKey, String timeZone, Account.State state);
  
  Why do we pass account state to the call? there should be only user info 
  passed in. If the account needs to be updated, do it in the separate 
  command; if you need to retrive the account state - get the account object 
  from the user object. Please remove this parameter
  
  * Why did you change the method signature for the
  
  UserAccount disableUser(long userId) to disableUser(User user)? The only 
  one info that you have to pass to the manager - is the userId. Please 
  change it back.
  
  The same for  boolean enableUser(User user), boolean lockAccount(Account 
  account);
  
  These changes don't seem to be critical or used for/by your plugin, so 
  please change them back to the original way of doing things. Its not a good 
  practice to change methods defined in the interfaces - 
  AccountManager/AccountService - unless there is a real need for it.
  
  
  * boolean updateAccount(AccountVO account, String newAccountName, String 
  newNetworkDomain, final MapString, String details, Account.State state);
  
  As updateAccount doesn't allow account state update, please remove 
  Account.State from the method signature
  
  
  4) ApiResponseHelper.java
  
  Why did you change createDomainResponse method? 
  
  public DomainResponse createDomainResponse(Domain domain)?
  
  
  To summarize it all, I would suggest to eliminate (revert) all the changes 
  done to account/domain managers that your code doesn't actually need. It 
  would make the changes list much shorter and easier for review.
 
 Alex Ough wrote:
 for 3) AccountManager
 
 * updateUser in 'state' : it is necessary during the Full Sync when an 
 object's information is not same with one in other regions.
 * new signatures : they are necessary during the Full Sync not to 
 generate events while changing them. They are just another methods to manage 
 objects, so can you show me why they are not permitted?

 
 Alena Prokharchyk wrote:
 Alex, correct me if I'm wrong. In most of your code you use CS APIs to 
 retrieve/update/delete/disable(disable changes the state) the CS objects 
 (user/domain/account - updateAccount/updateDomain/deleteAccount etc). And you 
 do it in each reason, and that generates the events for all the regions when 
 these APIs are processed. Like for example, I see these calls:
 
   public JSONObject updateAccount(String accountId, String currentName, 
 String newName, String details, String domainId, String networkDomain) throws 
 APIFailureException {
 139   
 140   
 StringBuilder param = buildCmd(updateAccount);
 141   
 param.append(append(ApiConstants.ID, accountId));
 142   
 if (currentName != null) 
 param.append(append(ApiConstants.ACCOUNT, currentName));
 143   
 if (newName != null) param.append(append(ApiConstants.NEW_NAME, 
 newName));
 144   
 if (details != null) 
 param.append(append(ApiConstants.ACCOUNT_DETAILS, details));
 145   
 if (domainId != null) param.append(append(ApiConstants.DOMAIN_ID, 
 domainId));
 146   
 if (networkDomain != null) 
 param.append(append(ApiConstants.NETWORK_DOMAIN, networkDomain));
 147   
 param.append(appendResType(json));
 148   
 param.append(appendSessionKey(encodeSessionKey()));
 149   
 150   
 return sendApacheGet(param.toString());
 151   
 }
 152   
 153   
 public JSONObject disableAccount(String accountId) throws 
 APIFailureException {
 164   
 165   
 StringBuilder param = buildCmd(disableAccount);
 166   
 param.append(append(ApiConstants.ID, accountId));
 167   
 param.append(append(ApiConstants.LOCK, false));
 168   
 param.append(appendResType(json));
 169   
 

Re: Review Request 20099: Domain-Account-User Sync Up Among Multiple Regions (Core Changes)

2014-05-04 Thread Alex Ough

---
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/20099/
---

(Updated May 4, 2014, 9:12 p.m.)


Review request for cloudstack.


Changes
---

core changes


Repository: cloudstack-git


Description
---

This is the review request for the core changes related with #17790 that has 
only the new plugin codes.


Diffs (updated)
-

  api/src/com/cloud/event/EventTypes.java 39ef710 
  api/src/com/cloud/user/AccountService.java 7e37b38 
  api/src/org/apache/cloudstack/api/ApiConstants.java fdb4558 
  api/src/org/apache/cloudstack/api/BaseCmd.java f6f21ae 
  api/src/org/apache/cloudstack/api/ResponseGenerator.java 10fb6df 
  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/response/RegionResponse.java 6c74fa6 
  api/src/org/apache/cloudstack/query/QueryService.java 01af631 
  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 d8dbde7 
  client/tomcatconf/commands.properties.in 45debe4 
  
engine/schema/resources/META-INF/cloudstack/core/spring-engine-schema-core-daos-context.xml
 489b37d 
  engine/schema/src/org/apache/cloudstack/region/RegionVO.java 608bd2b 
  
plugins/network-elements/juniper-contrail/test/org/apache/cloudstack/network/contrail/management/MockAccountManager.java
 957f708 
  plugins/pom.xml 9b391b8 
  
server/resources/META-INF/cloudstack/core/spring-server-core-managers-context.xml
 fc1c7e2 
  server/src/com/cloud/api/ApiDBUtils.java 67e47f7 
  server/src/com/cloud/api/ApiResponseHelper.java 38f2f0b 
  server/src/com/cloud/api/dispatch/ParamProcessWorker.java e9bdd8b 
  server/src/com/cloud/api/query/QueryManagerImpl.java 3abb944 
  server/src/com/cloud/api/query/ViewResponseHelper.java d06e1d1 
  server/src/com/cloud/event/ActionEventUtils.java 28e5680 
  server/src/com/cloud/server/ManagementServerImpl.java bce2930 
  server/src/com/cloud/user/AccountManager.java 03bf842 
  server/src/com/cloud/user/AccountManagerImpl.java 2070ee6 
  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/api/dispatch/ParamProcessWorkerTest.java 12051a6 
  server/test/com/cloud/user/MockAccountManagerImpl.java f373cba 
  server/test/com/cloud/user/MockDomainManagerImpl.java 7dddefb 
  server/test/org/apache/cloudstack/region/RegionManagerTest.java d7bc537 
  setup/db/db/schema-440to450.sql 2bd5386 
  ui/scripts/regions.js 66dae8c 

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



Re: Review Request 20099: Domain-Account-User Sync Up Among Multiple Regions (Core Changes)

2014-04-28 Thread Alena Prokharchyk
Alex, please see the answers inline. May be it would be a good idea if we
discuss the high level architecture - what DB changes you are going to
make, how CS apis would or wouldn¹t get affected - before you do the
coding? It would definitely save us time, and won¹t lead to further
frustration. I¹m more than willing to help.

On 4/28/14, 6:59 AM, Alex Ough alex.o...@sungard.com wrote:



 On April 17, 2014, 8:10 p.m., Alena Prokharchyk wrote:
  1) Alex, I don't quite approve the fact that the responses were
modified just to support your feature. User/account of region1 has
absolutely no idea of syncing that your plugin is doing as well as he
has 0 idea that it exists in multiple databases. I would suggest to keep
these parameters in the DB of your component, and reflect all the sync
updates there.
  And in the API responses account should only see actual
created/removed/modified parameters reflecting the time when the account
was created/modified/removed from the very first DB of your region.
  
  Just think about your component as of a plugin running on top of CS
(and that plugin can be enabled/disabled at any time), and do the
syncing w/o CS code knowing about it. CS just has to return you all the
information that originally was set through the CS (w/o the help of your
component). All extra work your component does, should be stored in your
component DB. You can add a helper table/API where you reflect the sync
time between the accounts/domains/users, I'm fine with that.
  
  2) #2 is lined with #1. Please remove all the occurances of
_rsyncMgr.update from AccountManagerImpl. As I said, your component
should act as a plugin, and you shouldn't inject it to the CS core
managers. Make all updates directly from RSyncManager after
account/domain/user is created/modified/removed in the AccountManager;
code without interfering with AccountManager.
  
  3)RegionResponse.java
  
  * Please add more details to the new parameter description, its not
clear what it returns now:
  
  the active of the region
  
  * add since annotation
 

1)  2) I'm a little frustrated because I think you confirmed that the
updates can be inside the Account/Domain managers to guarantee the
atomicity of the transaction when we spoke during the conference.


Perhaps we misunderstood each other. When you/me/Alex Huang talked about
it at the collab, we concluded that all the changes related to synced
entries, should be done in Account/domain managers of YOUR component that
does account/domain sync, not the CS itself. While the current fix just
does the trick of not updating the initial created/updated/modified
fields, but by introducing the fields that do duplicated functionality -
sync_created/sync_updated/synced_removed - but across the regions.




And the reason why the API responses need the synced datetime is because
the synchronization needs to compare which changes are later.

As I said multiple times before, your component should act as any third
party component doing CS DB sync, and run all the comparisons on the layer
above Account/Domain layer of the CS. No modifications should be done to
AccountVO/DomainVO as well as the CS account/domain managers. The synced
data should be stored in the helper VO objects of your components, and the
manager of your components should perform the comparison w/o impacting the
CS code. When user looks at the API response, he should see no difference
whether the CS runs with multi region setup, or not.


You can also utilize *DetailsVO tables of the CS (user_details for user,
account_details for account, domain_details for domain) to store the
Synced time, instead of creating your helper VO object. These tables are
meant for storing CS object details, that can be used by third party
components/services. Refer to the following FS:

https://cwiki.apache.org/confluence/display/CLOUDSTACK/Ability+to+have+bett
er+control+over+first+class+objects+in+CS


Account/Domain API responses shouldn¹t get affected either. If you utilize
resourceDetails tables, the sync time will be returned when call
listResourceDetails API for user/account/domain. Or your component can
access those tables directly.




- Alex


---
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/20099/#review40690
---


On April 16, 2014, 7:06 p.m., Alex Ough wrote:
 
 ---
 This is an automatically generated e-mail. To reply, visit:
 https://reviews.apache.org/r/20099/
 ---
 
 (Updated April 16, 2014, 7:06 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 39ef710
   

Re: Review Request 20099: Domain-Account-User Sync Up Among Multiple Regions (Core Changes)

2014-04-28 Thread Alex Ough
when  how do you want to have it?


On Mon, Apr 28, 2014 at 1:18 PM, Alena Prokharchyk 
alena.prokharc...@citrix.com wrote:

 Alex, please see the answers inline. May be it would be a good idea if we
 discuss the high level architecture - what DB changes you are going to
 make, how CS apis would or wouldn¹t get affected - before you do the
 coding? It would definitely save us time, and won¹t lead to further
 frustration. I¹m more than willing to help.

 On 4/28/14, 6:59 AM, Alex Ough alex.o...@sungard.com wrote:

 
 
  On April 17, 2014, 8:10 p.m., Alena Prokharchyk wrote:
   1) Alex, I don't quite approve the fact that the responses were
 modified just to support your feature. User/account of region1 has
 absolutely no idea of syncing that your plugin is doing as well as he
 has 0 idea that it exists in multiple databases. I would suggest to keep
 these parameters in the DB of your component, and reflect all the sync
 updates there.
   And in the API responses account should only see actual
 created/removed/modified parameters reflecting the time when the account
 was created/modified/removed from the very first DB of your region.
  
   Just think about your component as of a plugin running on top of CS
 (and that plugin can be enabled/disabled at any time), and do the
 syncing w/o CS code knowing about it. CS just has to return you all the
 information that originally was set through the CS (w/o the help of your
 component). All extra work your component does, should be stored in your
 component DB. You can add a helper table/API where you reflect the sync
 time between the accounts/domains/users, I'm fine with that.
  
   2) #2 is lined with #1. Please remove all the occurances of
 _rsyncMgr.update from AccountManagerImpl. As I said, your component
 should act as a plugin, and you shouldn't inject it to the CS core
 managers. Make all updates directly from RSyncManager after
 account/domain/user is created/modified/removed in the AccountManager;
 code without interfering with AccountManager.
  
   3)RegionResponse.java
  
   * Please add more details to the new parameter description, its not
 clear what it returns now:
  
   the active of the region
  
   * add since annotation
  
 
 1)  2) I'm a little frustrated because I think you confirmed that the
 updates can be inside the Account/Domain managers to guarantee the
 atomicity of the transaction when we spoke during the conference.


 Perhaps we misunderstood each other. When you/me/Alex Huang talked about
 it at the collab, we concluded that all the changes related to synced
 entries, should be done in Account/domain managers of YOUR component that
 does account/domain sync, not the CS itself. While the current fix just
 does the trick of not updating the initial created/updated/modified
 fields, but by introducing the fields that do duplicated functionality -
 sync_created/sync_updated/synced_removed - but across the regions.



 
 And the reason why the API responses need the synced datetime is because
 the synchronization needs to compare which changes are later.

 As I said multiple times before, your component should act as any third
 party component doing CS DB sync, and run all the comparisons on the layer
 above Account/Domain layer of the CS. No modifications should be done to
 AccountVO/DomainVO as well as the CS account/domain managers. The synced
 data should be stored in the helper VO objects of your components, and the
 manager of your components should perform the comparison w/o impacting the
 CS code. When user looks at the API response, he should see no difference
 whether the CS runs with multi region setup, or not.


 You can also utilize *DetailsVO tables of the CS (user_details for user,
 account_details for account, domain_details for domain) to store the
 Synced time, instead of creating your helper VO object. These tables are
 meant for storing CS object details, that can be used by third party
 components/services. Refer to the following FS:

 https://cwiki.apache.org/confluence/display/CLOUDSTACK/Ability+to+have+bett
 er+control+over+first+class+objects+in+CS


 Account/Domain API responses shouldn¹t get affected either. If you utilize
 resourceDetails tables, the sync time will be returned when call
 listResourceDetails API for user/account/domain. Or your component can
 access those tables directly.


 
 
 - Alex
 
 
 ---
 This is an automatically generated e-mail. To reply, visit:
 https://reviews.apache.org/r/20099/#review40690
 ---
 
 
 On April 16, 2014, 7:06 p.m., Alex Ough wrote:
 
  ---
  This is an automatically generated e-mail. To reply, visit:
  https://reviews.apache.org/r/20099/
  ---
 
  (Updated April 16, 2014, 7:06 p.m.)
 
 
  Review request for cloudstack.
 
 
  Repository: 

Re: Review Request 20099: Domain-Account-User Sync Up Among Multiple Regions (Core Changes)

2014-04-28 Thread Alena Prokharchyk
Alex, that is totally up to you. I’m ready to review/talk any time.

-alena.

On 4/28/14, 10:35 AM, Alex Ough alex.o...@sungardas.com wrote:

when  how do you want to have it?


On Mon, Apr 28, 2014 at 1:18 PM, Alena Prokharchyk 
alena.prokharc...@citrix.com wrote:

 Alex, please see the answers inline. May be it would be a good idea if
we
 discuss the high level architecture - what DB changes you are going to
 make, how CS apis would or wouldn¹t get affected - before you do the
 coding? It would definitely save us time, and won¹t lead to further
 frustration. I¹m more than willing to help.

 On 4/28/14, 6:59 AM, Alex Ough alex.o...@sungard.com wrote:

 
 
  On April 17, 2014, 8:10 p.m., Alena Prokharchyk wrote:
   1) Alex, I don't quite approve the fact that the responses were
 modified just to support your feature. User/account of region1 has
 absolutely no idea of syncing that your plugin is doing as well as he
 has 0 idea that it exists in multiple databases. I would suggest to
keep
 these parameters in the DB of your component, and reflect all the sync
 updates there.
   And in the API responses account should only see actual
 created/removed/modified parameters reflecting the time when the
account
 was created/modified/removed from the very first DB of your region.
  
   Just think about your component as of a plugin running on top of CS
 (and that plugin can be enabled/disabled at any time), and do the
 syncing w/o CS code knowing about it. CS just has to return you all
the
 information that originally was set through the CS (w/o the help of
your
 component). All extra work your component does, should be stored in
your
 component DB. You can add a helper table/API where you reflect the
sync
 time between the accounts/domains/users, I'm fine with that.
  
   2) #2 is lined with #1. Please remove all the occurances of
 _rsyncMgr.update from AccountManagerImpl. As I said, your component
 should act as a plugin, and you shouldn't inject it to the CS core
 managers. Make all updates directly from RSyncManager after
 account/domain/user is created/modified/removed in the AccountManager;
 code without interfering with AccountManager.
  
   3)RegionResponse.java
  
   * Please add more details to the new parameter description, its not
 clear what it returns now:
  
   the active of the region
  
   * add since annotation
  
 
 1)  2) I'm a little frustrated because I think you confirmed that the
 updates can be inside the Account/Domain managers to guarantee the
 atomicity of the transaction when we spoke during the conference.


 Perhaps we misunderstood each other. When you/me/Alex Huang talked about
 it at the collab, we concluded that all the changes related to synced
 entries, should be done in Account/domain managers of YOUR component
that
 does account/domain sync, not the CS itself. While the current fix just
 does the trick of not updating the initial created/updated/modified
 fields, but by introducing the fields that do duplicated functionality -
 sync_created/sync_updated/synced_removed - but across the regions.



 
 And the reason why the API responses need the synced datetime is
because
 the synchronization needs to compare which changes are later.

 As I said multiple times before, your component should act as any third
 party component doing CS DB sync, and run all the comparisons on the
layer
 above Account/Domain layer of the CS. No modifications should be done to
 AccountVO/DomainVO as well as the CS account/domain managers. The synced
 data should be stored in the helper VO objects of your components, and
the
 manager of your components should perform the comparison w/o impacting
the
 CS code. When user looks at the API response, he should see no
difference
 whether the CS runs with multi region setup, or not.


 You can also utilize *DetailsVO tables of the CS (user_details for user,
 account_details for account, domain_details for domain) to store the
 Synced time, instead of creating your helper VO object. These tables are
 meant for storing CS object details, that can be used by third party
 components/services. Refer to the following FS:

 
https://cwiki.apache.org/confluence/display/CLOUDSTACK/Ability+to+have+be
tt
 er+control+over+first+class+objects+in+CS


 Account/Domain API responses shouldn¹t get affected either. If you
utilize
 resourceDetails tables, the sync time will be returned when call
 listResourceDetails API for user/account/domain. Or your component can
 access those tables directly.


 
 
 - Alex
 
 
 ---
 This is an automatically generated e-mail. To reply, visit:
 https://reviews.apache.org/r/20099/#review40690
 ---
 
 
 On April 16, 2014, 7:06 p.m., Alex Ough wrote:
 
  ---
  This is an automatically generated e-mail. To reply, visit:
  https://reviews.apache.org/r/20099/
  

Re: Review Request 20099: Domain-Account-User Sync Up Among Multiple Regions (Core Changes)

2014-04-28 Thread Alex Ough
what do have any web conferencing app?
If not, we can use the webex.
Let me know what time is convenient for you.


On Mon, Apr 28, 2014 at 1:46 PM, Alena Prokharchyk 
alena.prokharc...@citrix.com wrote:

 Alex, that is totally up to you. I'm ready to review/talk any time.

 -alena.

 On 4/28/14, 10:35 AM, Alex Ough alex.o...@sungardas.com wrote:

 when  how do you want to have it?
 
 
 On Mon, Apr 28, 2014 at 1:18 PM, Alena Prokharchyk 
 alena.prokharc...@citrix.com wrote:
 
  Alex, please see the answers inline. May be it would be a good idea if
 we
  discuss the high level architecture - what DB changes you are going to
  make, how CS apis would or wouldn¹t get affected - before you do the
  coding? It would definitely save us time, and won¹t lead to further
  frustration. I¹m more than willing to help.
 
  On 4/28/14, 6:59 AM, Alex Ough alex.o...@sungard.com wrote:
 
  
  
   On April 17, 2014, 8:10 p.m., Alena Prokharchyk wrote:
1) Alex, I don't quite approve the fact that the responses were
  modified just to support your feature. User/account of region1 has
  absolutely no idea of syncing that your plugin is doing as well as he
  has 0 idea that it exists in multiple databases. I would suggest to
 keep
  these parameters in the DB of your component, and reflect all the sync
  updates there.
And in the API responses account should only see actual
  created/removed/modified parameters reflecting the time when the
 account
  was created/modified/removed from the very first DB of your region.
   
Just think about your component as of a plugin running on top of CS
  (and that plugin can be enabled/disabled at any time), and do the
  syncing w/o CS code knowing about it. CS just has to return you all
 the
  information that originally was set through the CS (w/o the help of
 your
  component). All extra work your component does, should be stored in
 your
  component DB. You can add a helper table/API where you reflect the
 sync
  time between the accounts/domains/users, I'm fine with that.
   
2) #2 is lined with #1. Please remove all the occurances of
  _rsyncMgr.update from AccountManagerImpl. As I said, your component
  should act as a plugin, and you shouldn't inject it to the CS core
  managers. Make all updates directly from RSyncManager after
  account/domain/user is created/modified/removed in the AccountManager;
  code without interfering with AccountManager.
   
3)RegionResponse.java
   
* Please add more details to the new parameter description, its not
  clear what it returns now:
   
the active of the region
   
* add since annotation
   
  
  1)  2) I'm a little frustrated because I think you confirmed that the
  updates can be inside the Account/Domain managers to guarantee the
  atomicity of the transaction when we spoke during the conference.
 
 
  Perhaps we misunderstood each other. When you/me/Alex Huang talked about
  it at the collab, we concluded that all the changes related to synced
  entries, should be done in Account/domain managers of YOUR component
 that
  does account/domain sync, not the CS itself. While the current fix just
  does the trick of not updating the initial created/updated/modified
  fields, but by introducing the fields that do duplicated functionality -
  sync_created/sync_updated/synced_removed - but across the regions.
 
 
 
  
  And the reason why the API responses need the synced datetime is
 because
  the synchronization needs to compare which changes are later.
 
  As I said multiple times before, your component should act as any third
  party component doing CS DB sync, and run all the comparisons on the
 layer
  above Account/Domain layer of the CS. No modifications should be done to
  AccountVO/DomainVO as well as the CS account/domain managers. The synced
  data should be stored in the helper VO objects of your components, and
 the
  manager of your components should perform the comparison w/o impacting
 the
  CS code. When user looks at the API response, he should see no
 difference
  whether the CS runs with multi region setup, or not.
 
 
  You can also utilize *DetailsVO tables of the CS (user_details for user,
  account_details for account, domain_details for domain) to store the
  Synced time, instead of creating your helper VO object. These tables are
  meant for storing CS object details, that can be used by third party
  components/services. Refer to the following FS:
 
 
 
 https://cwiki.apache.org/confluence/display/CLOUDSTACK/Ability+to+have+be
 tt
  er+control+over+first+class+objects+in+CS
 
 
  Account/Domain API responses shouldn¹t get affected either. If you
 utilize
  resourceDetails tables, the sync time will be returned when call
  listResourceDetails API for user/account/domain. Or your component can
  access those tables directly.
 
 
  
  
  - Alex
  
  
  ---
  This is an automatically generated e-mail. To reply, visit:
  

Re: Review Request 20099: Domain-Account-User Sync Up Among Multiple Regions (Core Changes)

2014-04-28 Thread Alena Prokharchyk
We can discuss it today at 3pm, Alex, if the time works for you. WebEx is
fine, but we should make sure to record the session + share follow up
notes with the community. The best approach would be - to update the FS
with the design changes for this particular part of the code.

Will be waiting for the webex invitation from you.

-Alena.

On 4/28/14, 11:23 AM, Alex Ough alex.o...@sungardas.com wrote:

what do have any web conferencing app?
If not, we can use the webex.
Let me know what time is convenient for you.


On Mon, Apr 28, 2014 at 1:46 PM, Alena Prokharchyk 
alena.prokharc...@citrix.com wrote:

 Alex, that is totally up to you. I'm ready to review/talk any time.

 -alena.

 On 4/28/14, 10:35 AM, Alex Ough alex.o...@sungardas.com wrote:

 when  how do you want to have it?
 
 
 On Mon, Apr 28, 2014 at 1:18 PM, Alena Prokharchyk 
 alena.prokharc...@citrix.com wrote:
 
  Alex, please see the answers inline. May be it would be a good idea
if
 we
  discuss the high level architecture - what DB changes you are going
to
  make, how CS apis would or wouldn¹t get affected - before you do the
  coding? It would definitely save us time, and won¹t lead to further
  frustration. I¹m more than willing to help.
 
  On 4/28/14, 6:59 AM, Alex Ough alex.o...@sungard.com wrote:
 
  
  
   On April 17, 2014, 8:10 p.m., Alena Prokharchyk wrote:
1) Alex, I don't quite approve the fact that the responses were
  modified just to support your feature. User/account of region1 has
  absolutely no idea of syncing that your plugin is doing as well as
he
  has 0 idea that it exists in multiple databases. I would suggest to
 keep
  these parameters in the DB of your component, and reflect all the
sync
  updates there.
And in the API responses account should only see actual
  created/removed/modified parameters reflecting the time when the
 account
  was created/modified/removed from the very first DB of your region.
   
Just think about your component as of a plugin running on top
of CS
  (and that plugin can be enabled/disabled at any time), and do the
  syncing w/o CS code knowing about it. CS just has to return you all
 the
  information that originally was set through the CS (w/o the help of
 your
  component). All extra work your component does, should be stored in
 your
  component DB. You can add a helper table/API where you reflect the
 sync
  time between the accounts/domains/users, I'm fine with that.
   
2) #2 is lined with #1. Please remove all the occurances of
  _rsyncMgr.update from AccountManagerImpl. As I said, your component
  should act as a plugin, and you shouldn't inject it to the CS core
  managers. Make all updates directly from RSyncManager after
  account/domain/user is created/modified/removed in the
AccountManager;
  code without interfering with AccountManager.
   
3)RegionResponse.java
   
* Please add more details to the new parameter description, its
not
  clear what it returns now:
   
the active of the region
   
* add since annotation
   
  
  1)  2) I'm a little frustrated because I think you confirmed that
the
  updates can be inside the Account/Domain managers to guarantee the
  atomicity of the transaction when we spoke during the conference.
 
 
  Perhaps we misunderstood each other. When you/me/Alex Huang talked
about
  it at the collab, we concluded that all the changes related to synced
  entries, should be done in Account/domain managers of YOUR component
 that
  does account/domain sync, not the CS itself. While the current fix
just
  does the trick of not updating the initial created/updated/modified
  fields, but by introducing the fields that do duplicated
functionality -
  sync_created/sync_updated/synced_removed - but across the regions.
 
 
 
  
  And the reason why the API responses need the synced datetime is
 because
  the synchronization needs to compare which changes are later.
 
  As I said multiple times before, your component should act as any
third
  party component doing CS DB sync, and run all the comparisons on the
 layer
  above Account/Domain layer of the CS. No modifications should be
done to
  AccountVO/DomainVO as well as the CS account/domain managers. The
synced
  data should be stored in the helper VO objects of your components,
and
 the
  manager of your components should perform the comparison w/o
impacting
 the
  CS code. When user looks at the API response, he should see no
 difference
  whether the CS runs with multi region setup, or not.
 
 
  You can also utilize *DetailsVO tables of the CS (user_details for
user,
  account_details for account, domain_details for domain) to store the
  Synced time, instead of creating your helper VO object. These tables
are
  meant for storing CS object details, that can be used by third party
  components/services. Refer to the following FS:
 
 
 
 
https://cwiki.apache.org/confluence/display/CLOUDSTACK/Ability+to+have+be
 tt
  er+control+over+first+class+objects+in+CS
 
 
  

Re: Review Request 20099: Domain-Account-User Sync Up Among Multiple Regions (Core Changes)

2014-04-28 Thread Alex Ough
What is your timezone?
Can we have it tomorrow morning?


On Mon, Apr 28, 2014 at 3:19 PM, Alena Prokharchyk 
alena.prokharc...@citrix.com wrote:

 We can discuss it today at 3pm, Alex, if the time works for you. WebEx is
 fine, but we should make sure to record the session + share follow up
 notes with the community. The best approach would be - to update the FS
 with the design changes for this particular part of the code.

 Will be waiting for the webex invitation from you.

 -Alena.

 On 4/28/14, 11:23 AM, Alex Ough alex.o...@sungardas.com wrote:

 what do have any web conferencing app?
 If not, we can use the webex.
 Let me know what time is convenient for you.
 
 
 On Mon, Apr 28, 2014 at 1:46 PM, Alena Prokharchyk 
 alena.prokharc...@citrix.com wrote:
 
  Alex, that is totally up to you. I'm ready to review/talk any time.
 
  -alena.
 
  On 4/28/14, 10:35 AM, Alex Ough alex.o...@sungardas.com wrote:
 
  when  how do you want to have it?
  
  
  On Mon, Apr 28, 2014 at 1:18 PM, Alena Prokharchyk 
  alena.prokharc...@citrix.com wrote:
  
   Alex, please see the answers inline. May be it would be a good idea
 if
  we
   discuss the high level architecture - what DB changes you are going
 to
   make, how CS apis would or wouldn¹t get affected - before you do the
   coding? It would definitely save us time, and won¹t lead to further
   frustration. I¹m more than willing to help.
  
   On 4/28/14, 6:59 AM, Alex Ough alex.o...@sungard.com wrote:
  
   
   
On April 17, 2014, 8:10 p.m., Alena Prokharchyk wrote:
 1) Alex, I don't quite approve the fact that the responses were
   modified just to support your feature. User/account of region1 has
   absolutely no idea of syncing that your plugin is doing as well as
 he
   has 0 idea that it exists in multiple databases. I would suggest to
  keep
   these parameters in the DB of your component, and reflect all the
 sync
   updates there.
 And in the API responses account should only see actual
   created/removed/modified parameters reflecting the time when the
  account
   was created/modified/removed from the very first DB of your region.

 Just think about your component as of a plugin running on top
 of CS
   (and that plugin can be enabled/disabled at any time), and do the
   syncing w/o CS code knowing about it. CS just has to return you all
  the
   information that originally was set through the CS (w/o the help of
  your
   component). All extra work your component does, should be stored in
  your
   component DB. You can add a helper table/API where you reflect the
  sync
   time between the accounts/domains/users, I'm fine with that.

 2) #2 is lined with #1. Please remove all the occurances of
   _rsyncMgr.update from AccountManagerImpl. As I said, your component
   should act as a plugin, and you shouldn't inject it to the CS core
   managers. Make all updates directly from RSyncManager after
   account/domain/user is created/modified/removed in the
 AccountManager;
   code without interfering with AccountManager.

 3)RegionResponse.java

 * Please add more details to the new parameter description, its
 not
   clear what it returns now:

 the active of the region

 * add since annotation

   
   1)  2) I'm a little frustrated because I think you confirmed that
 the
   updates can be inside the Account/Domain managers to guarantee the
   atomicity of the transaction when we spoke during the conference.
  
  
   Perhaps we misunderstood each other. When you/me/Alex Huang talked
 about
   it at the collab, we concluded that all the changes related to synced
   entries, should be done in Account/domain managers of YOUR component
  that
   does account/domain sync, not the CS itself. While the current fix
 just
   does the trick of not updating the initial created/updated/modified
   fields, but by introducing the fields that do duplicated
 functionality -
   sync_created/sync_updated/synced_removed - but across the regions.
  
  
  
   
   And the reason why the API responses need the synced datetime is
  because
   the synchronization needs to compare which changes are later.
  
   As I said multiple times before, your component should act as any
 third
   party component doing CS DB sync, and run all the comparisons on the
  layer
   above Account/Domain layer of the CS. No modifications should be
 done to
   AccountVO/DomainVO as well as the CS account/domain managers. The
 synced
   data should be stored in the helper VO objects of your components,
 and
  the
   manager of your components should perform the comparison w/o
 impacting
  the
   CS code. When user looks at the API response, he should see no
  difference
   whether the CS runs with multi region setup, or not.
  
  
   You can also utilize *DetailsVO tables of the CS (user_details for
 user,
   account_details for account, domain_details for domain) to store the
   Synced time, instead of creating your helper VO object. 

Re: Review Request 20099: Domain-Account-User Sync Up Among Multiple Regions (Core Changes)

2014-04-16 Thread Alex Ough

---
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/20099/
---

(Updated April 16, 2014, 7:06 p.m.)


Review request for cloudstack.


Changes
---

This is another update for core.


Repository: cloudstack-git


Description
---

This is the review request for the core changes related with #17790 that has 
only the new plugin codes.


Diffs (updated)
-

  api/src/com/cloud/event/EventTypes.java 39ef710 
  api/src/com/cloud/user/AccountService.java 7e37b38 
  api/src/org/apache/cloudstack/api/ApiConstants.java fdb4558 
  api/src/org/apache/cloudstack/api/BaseCmd.java f6f21ae 
  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/response/AccountResponse.java 2e50c51 
  api/src/org/apache/cloudstack/api/response/DomainResponse.java 0c0281e 
  api/src/org/apache/cloudstack/api/response/RegionResponse.java 6c74fa6 
  api/src/org/apache/cloudstack/api/response/UserResponse.java 40e1561 
  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 d8dbde7 
  
engine/schema/resources/META-INF/cloudstack/core/spring-engine-schema-core-daos-context.xml
 489b37d 
  engine/schema/src/org/apache/cloudstack/multiregion/RmapVO.java PRE-CREATION 
  engine/schema/src/org/apache/cloudstack/multiregion/RsyncVO.java PRE-CREATION 
  engine/schema/src/org/apache/cloudstack/multiregion/dao/RmapDao.java 
PRE-CREATION 
  engine/schema/src/org/apache/cloudstack/multiregion/dao/RmapDaoImpl.java 
PRE-CREATION 
  engine/schema/src/org/apache/cloudstack/multiregion/dao/RsyncDao.java 
PRE-CREATION 
  engine/schema/src/org/apache/cloudstack/multiregion/dao/RsyncDaoImpl.java 
PRE-CREATION 
  engine/schema/src/org/apache/cloudstack/region/RegionVO.java 608bd2b 
  
plugins/network-elements/juniper-contrail/test/org/apache/cloudstack/network/contrail/management/MockAccountManager.java
 957f708 
  plugins/pom.xml 9b391b8 
  
server/resources/META-INF/cloudstack/core/spring-server-core-managers-context.xml
 fc1c7e2 
  server/src/com/cloud/api/ApiDispatcher.java 95074e2 
  server/src/com/cloud/api/ApiResponseHelper.java 38f2f0b 
  server/src/com/cloud/api/dispatch/ParamProcessWorker.java e9bdd8b 
  server/src/com/cloud/api/query/dao/AccountJoinDaoImpl.java ecd97c7 
  server/src/com/cloud/api/query/dao/UserAccountJoinDaoImpl.java 923a238 
  server/src/com/cloud/event/ActionEventUtils.java 28e5680 
  server/src/com/cloud/multiregion/RsyncManager.java PRE-CREATION 
  server/src/com/cloud/multiregion/RsyncManagerImpl.java PRE-CREATION 
  server/src/com/cloud/projects/ProjectManagerImpl.java d10c059 
  server/src/com/cloud/user/AccountManager.java 03bf842 
  server/src/com/cloud/user/AccountManagerImpl.java 2070ee6 
  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/api/dispatch/ParamProcessWorkerTest.java 12051a6 
  server/test/com/cloud/user/MockAccountManagerImpl.java f373cba 
  server/test/com/cloud/user/MockDomainManagerImpl.java 7dddefb 
  server/test/org/apache/cloudstack/networkoffering/ChildTestConfiguration.java 
22516c0 
  server/test/org/apache/cloudstack/region/RegionManagerTest.java d7bc537 
  setup/db/db/schema-440to450.sql 2bd5386 
  ui/scripts/regions.js 66dae8c 

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



Re: Review Request 20099: Domain-Account-User Sync Up Among Multiple Regions (Core Changes)

2014-04-08 Thread Alex Ough
Yes, I really hope so from now on :-)

For #2, the current setting is NOT syncing the resources and these are the
steps to enable this feature
- Set the mode value of the remote regions to sync into 'sync on'
- Set the value of global parameter, region.full.scan.interval (the
default value is '0), into value of milliseconds to enable the Full Scan
Let me know if you want a different way.

For #1, after another thought, I'm not still clear why those datetime
values can't be added to their attributes. As you recommended, we can use
another table to track them, but there can be an issue of partial commits
when only the resource are successfully created/updated/removed and their
datetime values fail to be stored because they are NOT in the same
transaction.

And we also need to track the 'removed' datetime because when a resource
exists in only either the local or the remote region, we don't know whether
it was created but it failed to be created in another region or it was
removed but it failed to be removed in another region. That's why I track
the removed datetime and preserve the original datetime.

Let me think about the #1 more closely and let you know what I find.
So please let me know if you have any other suggestion related with this.
Thanks
Alex Ough


On Tue, Apr 8, 2014 at 2:09 PM, Alena Prokharchyk 
alena.prokharc...@citrix.com wrote:

  Sorry, Alex, for not providing the input earlier, I understand that
 requests like this shouldn't come the last minute. But unfortunately your
 FS didn't have enough information to caught these design problems - the
 fact that the GenericDaoFields modified/removed get modified directly -
 from the very start, and only by reviewing the review board ticket you
 could see it.  Hopefully the next time the experience will be more smooth
 for both parties. Meanwhile I'm ready to help with whatever questions you
 have.

  Yes, only 2 things need to be fixed. #2 should be pretty
 straightforward. Make sure your component injects the global config
 variable if you decide to make a switch via global config. For that, your
 class has to implement Configurable interface. You can find examples of how
 this interface is utilized by existing CS components.  Here is the FS:

  https://cwiki.apache.org/confluence/display/CLOUDSTACK/Configuration

  For #1 - I don't think you need to keep track of Removed date times.
 Once the removed field is set in Region1, its safe to just go ahead and
 remove the entry in all the rest of the regions. You can't (and don't need
 to) perform any other operation on the resource if its removed in one of
 the regions.
 You just have to fix it in created/updated(modified) fields.

  -Alena.

   From: Alex Ough alex.o...@sungardas.com
 Date: Tuesday, April 8, 2014 at 10:39 AM
 To: Alena Prokharchyk alena.prokharc...@citrix.com
 Cc: dev@cloudstack.apache.org dev@cloudstack.apache.org, Alex Huang 
 alex.hu...@citrix.com

 Subject: Re: Review Request 20099: Domain-Account-User Sync Up Among
 Multiple Regions (Core Changes)

   Alena,

  It would be really nice if I had this feedback when I presented this at
 the beginning.
 Anyway, so are only these 2 things necessary to be merged into the master?

  1. find another way to store the created/updated/removed datetimes of
 the resources
 2. provide a way to disable this feature.

  Let me try to resolve those 2 and let you know once done,
 so please let me know now if there is anything else needed.

  Thanks
 Alex Ough


 On Tue, Apr 8, 2014 at 1:02 PM, Alena Prokharchyk 
 alena.prokharc...@citrix.com wrote:

  Alex, thank you for the explanation.  But I think there should be
 another way of saving all the updated/created info rather than updating
 the UserVO/AccountVO/DomainVO fields directly.

  The one way I can think of - you  can create a helper table where you
 store the ref UUID-Region-UpdatedTime stamps for all Local/Remote
 regions, and you update/compare those fields. Your component is a business
 logic component, and it shouldn't modify the fields originally set by
 GenericDao (Removed/Created/Modified). You should operate only with
 parameters that are exposed to changes coming through the APIs.

  -Alena.

   From: Alex Ough alex.o...@sungardas.com
 Date: Monday, April 7, 2014 at 9:16 PM
 To: dev@cloudstack.apache.org dev@cloudstack.apache.org, Alena
 Prokharchyk alena.prokharc...@citrix.com, Alex Huang 
 alex.hu...@citrix.com
 Subject: Re: Review Request 20099: Domain-Account-User Sync Up Among
 Multiple Regions (Core Changes)

   And all 4 of the recommendations Alex Hwang gave were already
 implemented to support the real time synchronization (#1),
 but like I said in the previous email, we need to support the full scan
 (#2) to cover any failures during the synchronization.

  Thanks
 Alex Ough



 On Tue, Apr 8, 2014 at 12:10 AM, Alex Ough alex.o...@sungardas.comwrote:

 Alena/Alex,

  I think I need to give some explanation how this works.

  There are 2 ways of sync.

  1

Re: Review Request 20099: Domain-Account-User Sync Up Among Multiple Regions (Core Changes)

2014-04-08 Thread Alena Prokharchyk


On 4/8/14, 11:26 AM, Alex Ough alex.o...@sungardas.com wrote:

Yes, I really hope so from now on :-)


For #2, the current setting is NOT syncing the resources and these are
the steps to enable this feature
- Set the mode value of the remote regions to sync into 'sync on'
- Set the value of global parameter, region.full.scan.interval (the
default value is '0), into value of milliseconds to enable the Full Scan
Let me know if you want a different way.


Sounds good to me. We have to document it though very clearly under ³how
to disable the feature² section. When you set the mode, you have to set it
for all the regions to completely disable the feature, right?



For #1, after another thought, I'm not still clear why those datetime
values can't be added to their attributes. As you recommended, we can use
another table to track them, but there can be an issue of partial commits
when only the resource are successfully
 created/updated/removed and their datetime values fail to be stored
because they are NOT in the same transaction.


And we also need to track the 'removed' datetime because when a resource
exists in only either the local or the remote region, we don't know
whether it was created but it failed to be created in another region or
it was removed but it failed to be removed
 in another region. That's why I track the removed datetime and
preserve the original datetime.

I¹m fine with keeping the removed field, as long as you don¹t update this
field in CS DB.




Let me think about the #1 more closely and let you know what I find.
So please let me know if you have any other suggestion related with this.
Thanks
Alex Ough



On Tue, Apr 8, 2014 at 2:09 PM, Alena Prokharchyk
alena.prokharc...@citrix.com wrote:

Sorry, Alex, for not providing the input earlier, I understand that
requests like this shouldn¹t come the last minute. But unfortunately your
FS didn¹t have enough information to caught these design problems ­ the
fact that the GenericDaoFields modified/removed
 get modified directly - from the very start, and only by reviewing the
review board ticket you could see it.  Hopefully the next time the
experience will be more smooth for both parties. Meanwhile I¹m ready to
help with whatever questions you have.


Yes, only 2 things need to be fixed. #2 should be pretty straightforward.
Make sure your component injects the global config variable if you decide
to make a switch via global config. For that, your class has to implement
Configurable interface. You can
 find examples of how this interface is utilized by existing CS
components.  Here is the FS:


https://cwiki.apache.org/confluence/display/CLOUDSTACK/Configuration


For #1 ­ I don¹t think you need to keep track of Removed date times. Once
the removed field is set in Region1, its safe to just go ahead and remove
the entry in all the rest of the regions. You can¹t (and don¹t need to)
perform any other operation on the
 resource if its removed in one of the regions.
You just have to fix it in created/updated(modified) fields.


-Alena.


From: Alex Ough alex.o...@sungardas.com
Date: Tuesday, April 8, 2014 at 10:39 AM
To: Alena Prokharchyk alena.prokharc...@citrix.com
Cc: dev@cloudstack.apache.org dev@cloudstack.apache.org, Alex Huang
alex.hu...@citrix.com

Subject: Re: Review Request 20099: Domain-Account-User Sync Up Among
Multiple Regions (Core Changes)





Alena,


It would be really nice if I had this feedback when I presented this at
the beginning.
Anyway, so are only these 2 things necessary to be merged into the master?


1. find another way to store the created/updated/removed datetimes of the
resources
2. provide a way to disable this feature.


Let me try to resolve those 2 and let you know once done,
so please let me know now if there is anything else needed.


Thanks
Alex Ough



On Tue, Apr 8, 2014 at 1:02 PM, Alena Prokharchyk
alena.prokharc...@citrix.com wrote:

Alex, thank you for the explanation.  But I think there should be another
way of saving all the ³updated²/³created² info rather than updating the
UserVO/AccountVO/DomainVO fields directly.


The one way I can think of ­ you  can create a helper table where you
store the ref UUID-Region-UpdatedTime stamps for all Local/Remote
regions, and you update/compare those fields. Your component is a
business logic component, and it shouldn¹t modify
 the fields originally set by GenericDao (Removed/Created/Modified). You
should operate only with parameters that are exposed to changes coming
through the APIs.


-Alena.


From: Alex Ough alex.o...@sungardas.com
Date: Monday, April 7, 2014 at 9:16 PM
To: dev@cloudstack.apache.org dev@cloudstack.apache.org, Alena
Prokharchyk alena.prokharc...@citrix.com,
 Alex Huang alex.hu...@citrix.com
Subject: Re: Review Request 20099: Domain-Account-User Sync Up Among
Multiple Regions (Core Changes)



And all 4 of the recommendations Alex Hwang gave were already implemented
to support the real time synchronization (#1),
but like I said

Re: Review Request 20099: Domain-Account-User Sync Up Among Multiple Regions (Core Changes)

2014-04-08 Thread Alex Ough
#2 : I will, and YES, you need to change the modes of all regions, which
also means that you can sync the resources only in the regions you select.

#1: Well... it looks like I still need more information why they can't be
added to their attributes. They are also managed through the their dao
interfaces, and the values are assigned only during the full scan to
preserve the original value when they are missed.

Thanks
Alex Ough


On Tue, Apr 8, 2014 at 2:29 PM, Alena Prokharchyk 
alena.prokharc...@citrix.com wrote:



 On 4/8/14, 11:26 AM, Alex Ough alex.o...@sungardas.com wrote:

 Yes, I really hope so from now on :-)
 
 
 For #2, the current setting is NOT syncing the resources and these are
 the steps to enable this feature
 - Set the mode value of the remote regions to sync into 'sync on'
 - Set the value of global parameter, region.full.scan.interval (the
 default value is '0), into value of milliseconds to enable the Full Scan
 Let me know if you want a different way.


 Sounds good to me. We have to document it though very clearly under ³how
 to disable the feature² section. When you set the mode, you have to set it
 for all the regions to completely disable the feature, right?

 
 
 For #1, after another thought, I'm not still clear why those datetime
 values can't be added to their attributes. As you recommended, we can use
 another table to track them, but there can be an issue of partial commits
 when only the resource are successfully
  created/updated/removed and their datetime values fail to be stored
 because they are NOT in the same transaction.
 
 
 And we also need to track the 'removed' datetime because when a resource
 exists in only either the local or the remote region, we don't know
 whether it was created but it failed to be created in another region or
 it was removed but it failed to be removed
  in another region. That's why I track the removed datetime and
 preserve the original datetime.

 I¹m fine with keeping the removed field, as long as you don¹t update this
 field in CS DB.


 
 
 Let me think about the #1 more closely and let you know what I find.
 So please let me know if you have any other suggestion related with this.
 Thanks
 Alex Ough
 
 
 
 On Tue, Apr 8, 2014 at 2:09 PM, Alena Prokharchyk
 alena.prokharc...@citrix.com wrote:
 
 Sorry, Alex, for not providing the input earlier, I understand that
 requests like this shouldn¹t come the last minute. But unfortunately your
 FS didn¹t have enough information to caught these design problems ­ the
 fact that the GenericDaoFields modified/removed
  get modified directly - from the very start, and only by reviewing the
 review board ticket you could see it.  Hopefully the next time the
 experience will be more smooth for both parties. Meanwhile I¹m ready to
 help with whatever questions you have.
 
 
 Yes, only 2 things need to be fixed. #2 should be pretty straightforward.
 Make sure your component injects the global config variable if you decide
 to make a switch via global config. For that, your class has to implement
 Configurable interface. You can
  find examples of how this interface is utilized by existing CS
 components.  Here is the FS:
 
 
 https://cwiki.apache.org/confluence/display/CLOUDSTACK/Configuration
 
 
 For #1 ­ I don¹t think you need to keep track of Removed date times. Once
 the removed field is set in Region1, its safe to just go ahead and remove
 the entry in all the rest of the regions. You can¹t (and don¹t need to)
 perform any other operation on the
  resource if its removed in one of the regions.
 You just have to fix it in created/updated(modified) fields.
 
 
 -Alena.
 
 
 From: Alex Ough alex.o...@sungardas.com
 Date: Tuesday, April 8, 2014 at 10:39 AM
 To: Alena Prokharchyk alena.prokharc...@citrix.com
 Cc: dev@cloudstack.apache.org dev@cloudstack.apache.org, Alex Huang
 alex.hu...@citrix.com
 
 Subject: Re: Review Request 20099: Domain-Account-User Sync Up Among
 Multiple Regions (Core Changes)
 
 
 
 
 
 Alena,
 
 
 It would be really nice if I had this feedback when I presented this at
 the beginning.
 Anyway, so are only these 2 things necessary to be merged into the master?
 
 
 1. find another way to store the created/updated/removed datetimes of the
 resources
 2. provide a way to disable this feature.
 
 
 Let me try to resolve those 2 and let you know once done,
 so please let me know now if there is anything else needed.
 
 
 Thanks
 Alex Ough
 
 
 
 On Tue, Apr 8, 2014 at 1:02 PM, Alena Prokharchyk
 alena.prokharc...@citrix.com wrote:
 
 Alex, thank you for the explanation.  But I think there should be another
 way of saving all the ³updated²/³created² info rather than updating the
 UserVO/AccountVO/DomainVO fields directly.
 
 
 The one way I can think of ­ you  can create a helper table where you
 store the ref UUID-Region-UpdatedTime stamps for all Local/Remote
 regions, and you update/compare those fields. Your component is a
 business logic component

Re: Review Request 20099: Domain-Account-User Sync Up Among Multiple Regions (Core Changes)

2014-04-08 Thread Alena Prokharchyk
Alex,

Take for example the Removed field. Its not being managed through none of
the CS interfaces, and you can’t set this value neither from the API, nor
from the Orchestration layer. Its being set automatically in GenericDao
once the object is set for removal by the very same Dao.

The same applies to the Created/Updated fields.


-Alena. 

On 4/8/14, 11:41 AM, Alex Ough alex.o...@sungardas.com wrote:

#2 : I will, and YES, you need to change the modes of all regions, which
also means that you can sync the resources only in the regions you select.


#1: Well... it looks like I still need more information why they can't be
added to their attributes. They are also managed through the their dao
interfaces, and the values are assigned only during the full scan to
preserve the original value when they
 are missed.


Thanks
Alex Ough


On Tue, Apr 8, 2014 at 2:29 PM, Alena Prokharchyk
alena.prokharc...@citrix.com wrote:



On 4/8/14, 11:26 AM, Alex Ough alex.o...@sungardas.com wrote:

Yes, I really hope so from now on :-)


For #2, the current setting is NOT syncing the resources and these are
the steps to enable this feature
- Set the mode value of the remote regions to sync into 'sync on'
- Set the value of global parameter, region.full.scan.interval (the
default value is '0), into value of milliseconds to enable the Full Scan
Let me know if you want a different way.



Sounds good to me. We have to document it though very clearly under ³how
to disable the feature² section. When you set the mode, you have to set it
for all the regions to completely disable the feature, right?



For #1, after another thought, I'm not still clear why those datetime
values can't be added to their attributes. As you recommended, we can use
another table to track them, but there can be an issue of partial commits
when only the resource are successfully
 created/updated/removed and their datetime values fail to be stored
because they are NOT in the same transaction.


And we also need to track the 'removed' datetime because when a resource
exists in only either the local or the remote region, we don't know
whether it was created but it failed to be created in another region or
it was removed but it failed to be removed
 in another region. That's why I track the removed datetime and
preserve the original datetime.


I¹m fine with keeping the removed field, as long as you don¹t update this
field in CS DB.




Let me think about the #1 more closely and let you know what I find.
So please let me know if you have any other suggestion related with this.
Thanks
Alex Ough



On Tue, Apr 8, 2014 at 2:09 PM, Alena Prokharchyk
alena.prokharc...@citrix.com wrote:

Sorry, Alex, for not providing the input earlier, I understand that
requests like this shouldn¹t come the last minute. But unfortunately your
FS didn¹t have enough information to caught these design problems ­ the
fact that the GenericDaoFields modified/removed
 get modified directly - from the very start, and only by reviewing the
review board ticket you could see it.  Hopefully the next time the
experience will be more smooth for both parties. Meanwhile I¹m ready to
help with whatever questions you have.


Yes, only 2 things need to be fixed. #2 should be pretty straightforward.
Make sure your component injects the global config variable if you decide
to make a switch via global config. For that, your class has to implement
Configurable interface. You can
 find examples of how this interface is utilized by existing CS
components.  Here is the FS:


https://cwiki.apache.org/confluence/display/CLOUDSTACK/Configuration


For #1 ­ I don¹t think you need to keep track of Removed date times. Once
the removed field is set in Region1, its safe to just go ahead and remove
the entry in all the rest of the regions. You can¹t (and don¹t need to)
perform any other operation on the
 resource if its removed in one of the regions.
You just have to fix it in created/updated(modified) fields.


-Alena.


From: Alex Ough alex.o...@sungardas.com
Date: Tuesday, April 8, 2014 at 10:39 AM
To: Alena Prokharchyk alena.prokharc...@citrix.com
Cc: dev@cloudstack.apache.org dev@cloudstack.apache.org, Alex Huang
alex.hu...@citrix.com

Subject: Re: Review Request 20099: Domain-Account-User Sync Up Among
Multiple Regions (Core Changes)





Alena,


It would be really nice if I had this feedback when I presented this at
the beginning.
Anyway, so are only these 2 things necessary to be merged into the
master?


1. find another way to store the created/updated/removed datetimes of the
resources
2. provide a way to disable this feature.


Let me try to resolve those 2 and let you know once done,
so please let me know now if there is anything else needed.


Thanks
Alex Ough



On Tue, Apr 8, 2014 at 1:02 PM, Alena Prokharchyk
alena.prokharc...@citrix.com wrote:

Alex, thank you for the explanation.  But I think there should be another
way of saving all the ³updated²/³created² info rather than updating

Re: Review Request 20099: Domain-Account-User Sync Up Among Multiple Regions (Core Changes)

2014-04-07 Thread Alex Ough

---
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/20099/
---

(Updated April 7, 2014, 7:13 p.m.)


Review request for cloudstack.


Changes
---

The is the patch for the core changes.


Repository: cloudstack-git


Description
---

This is the review request for the core changes related with #17790 that has 
only the new plugin codes.


Diffs (updated)
-

  api/src/com/cloud/domain/Domain.java 365a705 
  api/src/com/cloud/event/EventTypes.java 39ef710 
  api/src/com/cloud/user/Account.java b912e51 
  api/src/com/cloud/user/AccountService.java 7e37b38 
  api/src/com/cloud/user/User.java 36e9028 
  api/src/com/cloud/user/UserAccount.java c5a0637 
  api/src/org/apache/cloudstack/api/ApiConstants.java fdb4558 
  api/src/org/apache/cloudstack/api/BaseCmd.java f6f21ae 
  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/response/AccountResponse.java 2e50c51 
  api/src/org/apache/cloudstack/api/response/DomainResponse.java 0c0281e 
  api/src/org/apache/cloudstack/api/response/RegionResponse.java 6c74fa6 
  api/src/org/apache/cloudstack/api/response/UserResponse.java 40e1561 
  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 d8dbde7 
  
engine/schema/resources/META-INF/cloudstack/core/spring-engine-schema-core-daos-context.xml
 489b37d 
  engine/schema/src/com/cloud/domain/DomainVO.java f6494b3 
  engine/schema/src/com/cloud/user/AccountVO.java 0f5a044 
  engine/schema/src/com/cloud/user/UserAccountVO.java cef9239 
  engine/schema/src/com/cloud/user/UserVO.java 68879f6 
  engine/schema/src/org/apache/cloudstack/region/RegionVO.java 608bd2b 
  framework/db/src/com/cloud/utils/db/Attribute.java 82c2bdb 
  framework/db/src/com/cloud/utils/db/GenericDao.java cb401cd 
  framework/db/src/com/cloud/utils/db/GenericDaoBase.java 2052aad 
  framework/db/src/com/cloud/utils/db/SqlGenerator.java befe34b 
  framework/db/test/com/cloud/utils/db/GenericDaoBaseTest.java aef0c69 
  framework/db/test/com/cloud/utils/db/SqlGeneratorTest.java PRE-CREATION 
  
plugins/network-elements/juniper-contrail/test/org/apache/cloudstack/network/contrail/management/MockAccountManager.java
 957f708 
  plugins/pom.xml 9b391b8 
  
server/resources/META-INF/cloudstack/core/spring-server-core-managers-context.xml
 fc1c7e2 
  server/src/com/cloud/api/ApiDispatcher.java 95074e2 
  server/src/com/cloud/api/ApiResponseHelper.java 38f2f0b 
  server/src/com/cloud/api/dispatch/ParamProcessWorker.java e9bdd8b 
  server/src/com/cloud/api/query/dao/AccountJoinDaoImpl.java ecd97c7 
  server/src/com/cloud/api/query/dao/UserAccountJoinDaoImpl.java 923a238 
  server/src/com/cloud/api/query/vo/AccountJoinVO.java 8d642ed 
  server/src/com/cloud/api/query/vo/UserAccountJoinVO.java ed29284 
  server/src/com/cloud/event/ActionEventUtils.java 28e5680 
  server/src/com/cloud/projects/ProjectManagerImpl.java d10c059 
  server/src/com/cloud/user/AccountManager.java 03bf842 
  server/src/com/cloud/user/AccountManagerImpl.java 2070ee6 
  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/api/dispatch/ParamProcessWorkerTest.java 12051a6 
  server/test/com/cloud/user/MockAccountManagerImpl.java f373cba 
  server/test/com/cloud/user/MockDomainManagerImpl.java 7dddefb 
  server/test/org/apache/cloudstack/region/RegionManagerTest.java d7bc537 
  setup/db/db/schema-440to450.sql 2bd5386 
  ui/scripts/regions.js 66dae8c 

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



Re: Review Request 20099: Domain-Account-User Sync Up Among Multiple Regions (Core Changes)

2014-04-07 Thread Alena Prokharchyk
Alex, one more question. Is this patch meant to be a part of master branch
only (4.5)? I guess so as your changes affect 4.4-4.5 db upgrade path.

Please confirm,
Alena.

On 4/7/14, 12:13 PM, Alex Ough alex.o...@sungard.com wrote:


---
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/20099/
---

(Updated April 7, 2014, 7:13 p.m.)


Review request for cloudstack.


Changes
---

The is the patch for the core changes.


Repository: cloudstack-git


Description
---

This is the review request for the core changes related with #17790 that
has only the new plugin codes.


Diffs (updated)
-

  api/src/com/cloud/domain/Domain.java 365a705
  api/src/com/cloud/event/EventTypes.java 39ef710
  api/src/com/cloud/user/Account.java b912e51
  api/src/com/cloud/user/AccountService.java 7e37b38
  api/src/com/cloud/user/User.java 36e9028
  api/src/com/cloud/user/UserAccount.java c5a0637
  api/src/org/apache/cloudstack/api/ApiConstants.java fdb4558
  api/src/org/apache/cloudstack/api/BaseCmd.java f6f21ae
  
api/src/org/apache/cloudstack/api/command/admin/region/AddRegionCmd.java
f6743ba 
  
api/src/org/apache/cloudstack/api/command/admin/region/UpdateRegionCmd.jav
a b08cbbb 
  api/src/org/apache/cloudstack/api/response/AccountResponse.java 2e50c51
  api/src/org/apache/cloudstack/api/response/DomainResponse.java 0c0281e
  api/src/org/apache/cloudstack/api/response/RegionResponse.java 6c74fa6
  api/src/org/apache/cloudstack/api/response/UserResponse.java 40e1561
  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 d8dbde7
  
engine/schema/resources/META-INF/cloudstack/core/spring-engine-schema-core
-daos-context.xml 489b37d
  engine/schema/src/com/cloud/domain/DomainVO.java f6494b3
  engine/schema/src/com/cloud/user/AccountVO.java 0f5a044
  engine/schema/src/com/cloud/user/UserAccountVO.java cef9239
  engine/schema/src/com/cloud/user/UserVO.java 68879f6
  engine/schema/src/org/apache/cloudstack/region/RegionVO.java 608bd2b
  framework/db/src/com/cloud/utils/db/Attribute.java 82c2bdb
  framework/db/src/com/cloud/utils/db/GenericDao.java cb401cd
  framework/db/src/com/cloud/utils/db/GenericDaoBase.java 2052aad
  framework/db/src/com/cloud/utils/db/SqlGenerator.java befe34b
  framework/db/test/com/cloud/utils/db/GenericDaoBaseTest.java aef0c69
  framework/db/test/com/cloud/utils/db/SqlGeneratorTest.java PRE-CREATION
  
plugins/network-elements/juniper-contrail/test/org/apache/cloudstack/netwo
rk/contrail/management/MockAccountManager.java 957f708
  plugins/pom.xml 9b391b8
  
server/resources/META-INF/cloudstack/core/spring-server-core-managers-cont
ext.xml fc1c7e2 
  server/src/com/cloud/api/ApiDispatcher.java 95074e2
  server/src/com/cloud/api/ApiResponseHelper.java 38f2f0b
  server/src/com/cloud/api/dispatch/ParamProcessWorker.java e9bdd8b
  server/src/com/cloud/api/query/dao/AccountJoinDaoImpl.java ecd97c7
  server/src/com/cloud/api/query/dao/UserAccountJoinDaoImpl.java 923a238
  server/src/com/cloud/api/query/vo/AccountJoinVO.java 8d642ed
  server/src/com/cloud/api/query/vo/UserAccountJoinVO.java ed29284
  server/src/com/cloud/event/ActionEventUtils.java 28e5680
  server/src/com/cloud/projects/ProjectManagerImpl.java d10c059
  server/src/com/cloud/user/AccountManager.java 03bf842
  server/src/com/cloud/user/AccountManagerImpl.java 2070ee6
  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/api/dispatch/ParamProcessWorkerTest.java 12051a6
  server/test/com/cloud/user/MockAccountManagerImpl.java f373cba
  server/test/com/cloud/user/MockDomainManagerImpl.java 7dddefb
  server/test/org/apache/cloudstack/region/RegionManagerTest.java d7bc537
  setup/db/db/schema-440to450.sql 2bd5386
  ui/scripts/regions.js 66dae8c

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




Re: Review Request 20099: Domain-Account-User Sync Up Among Multiple Regions (Core Changes)

2014-04-07 Thread Alex Ough
yes, that is correct.


On Mon, Apr 7, 2014 at 3:27 PM, Alena Prokharchyk 
alena.prokharc...@citrix.com wrote:

 Alex, one more question. Is this patch meant to be a part of master branch
 only (4.5)? I guess so as your changes affect 4.4-4.5 db upgrade path.

 Please confirm,
 Alena.

 On 4/7/14, 12:13 PM, Alex Ough alex.o...@sungard.com wrote:

 
 ---
 This is an automatically generated e-mail. To reply, visit:
 https://reviews.apache.org/r/20099/
 ---
 
 (Updated April 7, 2014, 7:13 p.m.)
 
 
 Review request for cloudstack.
 
 
 Changes
 ---
 
 The is the patch for the core changes.
 
 
 Repository: cloudstack-git
 
 
 Description
 ---
 
 This is the review request for the core changes related with #17790 that
 has only the new plugin codes.
 
 
 Diffs (updated)
 -
 
   api/src/com/cloud/domain/Domain.java 365a705
   api/src/com/cloud/event/EventTypes.java 39ef710
   api/src/com/cloud/user/Account.java b912e51
   api/src/com/cloud/user/AccountService.java 7e37b38
   api/src/com/cloud/user/User.java 36e9028
   api/src/com/cloud/user/UserAccount.java c5a0637
   api/src/org/apache/cloudstack/api/ApiConstants.java fdb4558
   api/src/org/apache/cloudstack/api/BaseCmd.java f6f21ae
 
 api/src/org/apache/cloudstack/api/command/admin/region/AddRegionCmd.java
 f6743ba
 
 api/src/org/apache/cloudstack/api/command/admin/region/UpdateRegionCmd.jav
 a b08cbbb
   api/src/org/apache/cloudstack/api/response/AccountResponse.java 2e50c51
   api/src/org/apache/cloudstack/api/response/DomainResponse.java 0c0281e
   api/src/org/apache/cloudstack/api/response/RegionResponse.java 6c74fa6
   api/src/org/apache/cloudstack/api/response/UserResponse.java 40e1561
   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 d8dbde7
 
 engine/schema/resources/META-INF/cloudstack/core/spring-engine-schema-core
 -daos-context.xml 489b37d
   engine/schema/src/com/cloud/domain/DomainVO.java f6494b3
   engine/schema/src/com/cloud/user/AccountVO.java 0f5a044
   engine/schema/src/com/cloud/user/UserAccountVO.java cef9239
   engine/schema/src/com/cloud/user/UserVO.java 68879f6
   engine/schema/src/org/apache/cloudstack/region/RegionVO.java 608bd2b
   framework/db/src/com/cloud/utils/db/Attribute.java 82c2bdb
   framework/db/src/com/cloud/utils/db/GenericDao.java cb401cd
   framework/db/src/com/cloud/utils/db/GenericDaoBase.java 2052aad
   framework/db/src/com/cloud/utils/db/SqlGenerator.java befe34b
   framework/db/test/com/cloud/utils/db/GenericDaoBaseTest.java aef0c69
   framework/db/test/com/cloud/utils/db/SqlGeneratorTest.java PRE-CREATION
 
 plugins/network-elements/juniper-contrail/test/org/apache/cloudstack/netwo
 rk/contrail/management/MockAccountManager.java 957f708
   plugins/pom.xml 9b391b8
 
 server/resources/META-INF/cloudstack/core/spring-server-core-managers-cont
 ext.xml fc1c7e2
   server/src/com/cloud/api/ApiDispatcher.java 95074e2
   server/src/com/cloud/api/ApiResponseHelper.java 38f2f0b
   server/src/com/cloud/api/dispatch/ParamProcessWorker.java e9bdd8b
   server/src/com/cloud/api/query/dao/AccountJoinDaoImpl.java ecd97c7
   server/src/com/cloud/api/query/dao/UserAccountJoinDaoImpl.java 923a238
   server/src/com/cloud/api/query/vo/AccountJoinVO.java 8d642ed
   server/src/com/cloud/api/query/vo/UserAccountJoinVO.java ed29284
   server/src/com/cloud/event/ActionEventUtils.java 28e5680
   server/src/com/cloud/projects/ProjectManagerImpl.java d10c059
   server/src/com/cloud/user/AccountManager.java 03bf842
   server/src/com/cloud/user/AccountManagerImpl.java 2070ee6
   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/api/dispatch/ParamProcessWorkerTest.java 12051a6
   server/test/com/cloud/user/MockAccountManagerImpl.java f373cba
   server/test/com/cloud/user/MockDomainManagerImpl.java 7dddefb
   server/test/org/apache/cloudstack/region/RegionManagerTest.java d7bc537
   setup/db/db/schema-440to450.sql 2bd5386
   ui/scripts/regions.js 66dae8c
 
 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
 





Re: Review Request 20099: Domain-Account-User Sync Up Among Multiple Regions (Core Changes)

2014-04-07 Thread Alena Prokharchyk

---
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/20099/#review39753
---



Alex, just discussed your changes to existing CS code 
(Account/Domain/UserManager, VOs, Daos, GenericDaoBase), with Alex Huang. Here 
are the concerns:


1) there is no need to update the Removed field. Once the entry is removed, you 
should purely rely on the removed not to be null, in order to update it in the 
second region database.

2) The big issue - you can't trigger generic dao fields modification - 
Modified/Removed - through the Management/Services layer. Once the field is 
defined in Generic Dao Attributes, it should be populated by generic dao only. 
It should never be populated by the business logic component what your service 
is. 

You should remove the field updates from all the methods I've mentioned in my 
previous review (for example,

 AccountManager

  public boolean disableAccount(long accountId, Date modified) throws 
ConcurrentOperationException, ResourceUnavailableException;)

and find another way of keeping track of modified attribute update for the CS 
objects.

Alex suggested a following solution:
=
* Every time user/domain/account is created/updated/removed in CS, certain 
Action event is generated. There is a way to pubish this event to the event 
bus, either rabbitMQ or in-memory bus.
* Instead of scanning user/domain/account tables, your plugin should listen to 
the create/update/remove user/domain/account events published to the event bus, 
and update the user/domain/account in all regions in the system accordingly
* Of course, you have to skip the event processing for the event generated by 
your plugin - this part can be tricky
* The events processing should be synchronized on the resource type 
(user/account/domain) + event timestamp in your plugin, so all the events for 
the same resource are processed in the order based on the timeStamp they were 
generated

When to use in-memory bus vs RabbitMQ? It depends on how your service runs. If 
it runs on each management server, then it would be responsible only for events 
generated by this management server, and should use events published to 
in-memory bus.
If your server runs only on one of the Management servers, and there are 
multiple servers in the cluster, you should listen to all the events from all 
the management servers in cluster. In this case, you should use RabbitMQ bus.

Here is the link to the in-memory bus FS:
https://cwiki.apache.org/confluence/display/CLOUDSTACK/In-memory+event+bus
But I'm sure you are familiar how this stuff works as you utilize the event bus 
in your code already.

Or you can find another solution; but this solution should never involve direct 
modification for Modified field by your plugin.

3) You should add a way to disable your plugin through Global Config/API. This 
should be done to support the case when user/domain/account entries are 
generated by some app running on top of CS, for all the regions in the system. 
In this case admin controls the user/domain/account entries outside of the CS, 
and synchronize them outside as well - so might need to disable your plugin.

- Alena Prokharchyk


On April 7, 2014, 7:13 p.m., Alex Ough wrote:
 
 ---
 This is an automatically generated e-mail. To reply, visit:
 https://reviews.apache.org/r/20099/
 ---
 
 (Updated April 7, 2014, 7:13 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/domain/Domain.java 365a705 
   api/src/com/cloud/event/EventTypes.java 39ef710 
   api/src/com/cloud/user/Account.java b912e51 
   api/src/com/cloud/user/AccountService.java 7e37b38 
   api/src/com/cloud/user/User.java 36e9028 
   api/src/com/cloud/user/UserAccount.java c5a0637 
   api/src/org/apache/cloudstack/api/ApiConstants.java fdb4558 
   api/src/org/apache/cloudstack/api/BaseCmd.java f6f21ae 
   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/response/AccountResponse.java 2e50c51 
   api/src/org/apache/cloudstack/api/response/DomainResponse.java 0c0281e 
   api/src/org/apache/cloudstack/api/response/RegionResponse.java 6c74fa6 
   api/src/org/apache/cloudstack/api/response/UserResponse.java 40e1561 
   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 
 

Re: Review Request 20099: Domain-Account-User Sync Up Among Multiple Regions (Core Changes)

2014-04-07 Thread Alex Ough
Alena/Alex,

I think I need to give some explanation how this works.

There are 2 ways of sync.

1. The real time sync : Whenever a resource is create/updated/removed, each
region gets the event of that and requests the same job to all remote
regions using API interfaces, which will create/update/remove the same
resource in each remote region in the real time.

2. Full scan : There can be some interruption (whatever the reason is) that
makes fail the real time sync, so each region scans its own resources with
an interval and compares them with those of remote regions. This is a
little tricky because we need to find out whose change is later when there
is any discrepancy between resources in the local  remote regions and this
is why we need maintain the created/updated/removed times.

1) When a resource exists in both local (L) and remote regions (R1)
- compare the 'updated' times of both
- Update the local's resource using remote resource attributes only
if the updated time of the remote region is later
- Store the updated time of the remote resource (not the current
time) as the local's updated time
- If we store the current time as the updated time, it will cause
an mis-sync
  because if the resource was updated in another remote region (R2)
a little after it was updated in the remote region(R1),
  update in R2 region will be overwritten by the update in R1
because the current time is later than the updated time of R2

2) When a resource exists only in the local region
   - Find if there was a removal event of this resource in the remote
region
   - and if so, compare the time when the event occurred with the
created time in the local region
   - Remove the resource from the local only if the event time is later
   - Like #1, store the time the event was occurred as the 'removed'
time of the removed resource in the local region

3) When a resource exists only in the remote region
  - Find if the resource in the local has been removed
  - If so, compare the removal time in the local and the created time
in the remote
  - Create the resource in the local only if either the local was not
removed or the created time of the remote is later than the removal in local
  - LIke #1  #2, store the time of the created of the remote region as
the 'created' time of the newly created in the local region.

I hope this will help you understand how the create/updated/removed times
are managed.
If there is no failure in the real time sync (#1), we'll not need the full
scan (#2) and we don't need to worry about the times,
but there is no way to guarantee #1 not to be failed, so #2 is very
important to be supported.

Please let me know what you think and we can have a conference call if you
want.
Thanks
Alex Ough


On Mon, Apr 7, 2014 at 8:39 PM, Alena Prokharchyk 
alena.prokharc...@citrix.com wrote:


 ---
 This is an automatically generated e-mail. To reply, visit:
 https://reviews.apache.org/r/20099/#review39753
 ---



 Alex, just discussed your changes to existing CS code
 (Account/Domain/UserManager, VOs, Daos, GenericDaoBase), with Alex Huang.
 Here are the concerns:


 1) there is no need to update the Removed field. Once the entry is
 removed, you should purely rely on the removed not to be null, in order to
 update it in the second region database.

 2) The big issue - you can't trigger generic dao fields modification -
 Modified/Removed - through the Management/Services layer. Once the field is
 defined in Generic Dao Attributes, it should be populated by generic dao
 only. It should never be populated by the business logic component what
 your service is.

 You should remove the field updates from all the methods I've mentioned in
 my previous review (for example,

  AccountManager

   public boolean disableAccount(long accountId, Date modified) throws
 ConcurrentOperationException, ResourceUnavailableException;)

 and find another way of keeping track of modified attribute update for the
 CS objects.

 Alex suggested a following solution:
 =
 * Every time user/domain/account is created/updated/removed in CS, certain
 Action event is generated. There is a way to pubish this event to the event
 bus, either rabbitMQ or in-memory bus.
 * Instead of scanning user/domain/account tables, your plugin should
 listen to the create/update/remove user/domain/account events published to
 the event bus, and update the user/domain/account in all regions in the
 system accordingly
 * Of course, you have to skip the event processing for the event generated
 by your plugin - this part can be tricky
 * The events processing should be synchronized on the resource type
 (user/account/domain) + event timestamp in your plugin, so all the events
 for the same resource are 

Re: Review Request 20099: Domain-Account-User Sync Up Among Multiple Regions (Core Changes)

2014-04-07 Thread Alex Ough
And all 4 of the recommendations Alex Hwang gave were already implemented
to support the real time synchronization (#1),
but like I said in the previous email, we need to support the full scan
(#2) to cover any failures during the synchronization.

Thanks
Alex Ough



On Tue, Apr 8, 2014 at 12:10 AM, Alex Ough alex.o...@sungardas.com wrote:

 Alena/Alex,

 I think I need to give some explanation how this works.

 There are 2 ways of sync.

 1. The real time sync : Whenever a resource is create/updated/removed,
 each region gets the event of that and requests the same job to all remote
 regions using API interfaces, which will create/update/remove the same
 resource in each remote region in the real time.

 2. Full scan : There can be some interruption (whatever the reason is)
 that makes fail the real time sync, so each region scans its own resources
 with an interval and compares them with those of remote regions. This is a
 little tricky because we need to find out whose change is later when there
 is any discrepancy between resources in the local  remote regions and this
 is why we need maintain the created/updated/removed times.

 1) When a resource exists in both local (L) and remote regions (R1)
 - compare the 'updated' times of both
 - Update the local's resource using remote resource attributes
 only if the updated time of the remote region is later
 - Store the updated time of the remote resource (not the current
 time) as the local's updated time
 - If we store the current time as the updated time, it will cause
 an mis-sync
   because if the resource was updated in another remote region
 (R2) a little after it was updated in the remote region(R1),
   update in R2 region will be overwritten by the update in R1
 because the current time is later than the updated time of R2

 2) When a resource exists only in the local region
- Find if there was a removal event of this resource in the remote
 region
- and if so, compare the time when the event occurred with the
 created time in the local region
- Remove the resource from the local only if the event time is later
- Like #1, store the time the event was occurred as the 'removed'
 time of the removed resource in the local region

 3) When a resource exists only in the remote region
   - Find if the resource in the local has been removed
   - If so, compare the removal time in the local and the created time
 in the remote
   - Create the resource in the local only if either the local was not
 removed or the created time of the remote is later than the removal in local
   - LIke #1  #2, store the time of the created of the remote region
 as the 'created' time of the newly created in the local region.

 I hope this will help you understand how the create/updated/removed times
 are managed.
 If there is no failure in the real time sync (#1), we'll not need the full
 scan (#2) and we don't need to worry about the times,
 but there is no way to guarantee #1 not to be failed, so #2 is very
 important to be supported.

 Please let me know what you think and we can have a conference call if you
 want.
 Thanks
 Alex Ough


 On Mon, Apr 7, 2014 at 8:39 PM, Alena Prokharchyk 
 alena.prokharc...@citrix.com wrote:


 ---
 This is an automatically generated e-mail. To reply, visit:
 https://reviews.apache.org/r/20099/#review39753
 ---



 Alex, just discussed your changes to existing CS code
 (Account/Domain/UserManager, VOs, Daos, GenericDaoBase), with Alex Huang.
 Here are the concerns:


 1) there is no need to update the Removed field. Once the entry is
 removed, you should purely rely on the removed not to be null, in order to
 update it in the second region database.

 2) The big issue - you can't trigger generic dao fields modification -
 Modified/Removed - through the Management/Services layer. Once the field is
 defined in Generic Dao Attributes, it should be populated by generic dao
 only. It should never be populated by the business logic component what
 your service is.

 You should remove the field updates from all the methods I've mentioned
 in my previous review (for example,

  AccountManager

   public boolean disableAccount(long accountId, Date modified) throws
 ConcurrentOperationException, ResourceUnavailableException;)

 and find another way of keeping track of modified attribute update for
 the CS objects.

 Alex suggested a following solution:
 =
 * Every time user/domain/account is created/updated/removed in CS,
 certain Action event is generated. There is a way to pubish this event to
 the event bus, either rabbitMQ or in-memory bus.
 * Instead of scanning user/domain/account tables, your plugin should
 listen to the create/update/remove user/domain/account events