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. 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/ > >> >> >> ----------------------------------------------------------- > >> >> >> > >> >> >> (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 > >> >> >> 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.j > >>>>>>av > >> >>>>a > >> >> >>f6743ba > >> >> >> > >> >> > >> > >>>>>>api/src/org/apache/cloudstack/api/command/admin/region/UpdateRegionCm > >>>>>>d. > >> >>>>ja > >> >> >>va 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 > >>>>>>-c > >> >>>>or > >> >> >>e-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.j > >>>>>>av > >> >>>>a > >> >> >>PRE-CREATION > >> >> >> > >> >>engine/schema/src/org/apache/cloudstack/multiregion/dao/RsyncDao.java > >> >> >>PRE-CREATION > >> >> >> > >> >> > >> > >>>>>>engine/schema/src/org/apache/cloudstack/multiregion/dao/RsyncDaoImpl. > >>>>>>ja > >> >>>>va > >> >> >> PRE-CREATION > >> >> >> engine/schema/src/org/apache/cloudstack/region/RegionVO.java > >> >>608bd2b > >> >> >> > >> >> > >> > >>>>>>plugins/network-elements/juniper-contrail/test/org/apache/cloudstack/ > >>>>>>ne > >> >>>>tw > >> >> >>ork/contrail/management/MockAccountManager.java 957f708 > >> >> >> plugins/pom.xml 9b391b8 > >> >> >> > >> >> > >> > >>>>>>server/resources/META-INF/cloudstack/core/spring-server-core-managers > >>>>>>-c > >> >>>>on > >> >> >>text.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/ChildTestConfigurat > >>>>>>io > >> >>>>n. > >> >> >>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 > >> >> >> > >> >> >> > >> >> > > >> >> > >> >> > >> >> > >> > >> > >