On Monday, August 25, 2014, Dimuthu Leelarathne <[email protected]> wrote:
> Hi Amila, > > You are only repeating what I have said in my previous mail. > Well... That only contained a solution for a standalone product. To make this working for both standalone product and a distributed deployment we had to discuss for two hours and the missing pieces in your mail can be found in my one. Intention of my mail was to provide the final summary for others information. > > thanks, > dimuthu > > > On Mon, Aug 25, 2014 at 7:22 PM, Amila Maha Arachchi <[email protected] > <javascript:_e(%7B%7D,'cvml','[email protected]');>> wrote: > >> Following is the finally agreed approach. >> >> 1. TenantMgtListener will have a preDelete() method. >> 2. deleteTenant() of TenantMgtAdminService will notify the listeners at >> the beginning. >> 3. We need to set a flag whether to completely remove the tenant or not >> (i.e. delete from registry and LDAP). If this flag is set to true, >> deleteTenant() remove the tenant completely. If not, it will just invoke >> the listeners and return. >> >> With 1,2,3, any standalone product will be able to support tenant >> deletion properly and it will be product teams' responsibility to cleanup >> everything properly by implementing the preDelete() method. >> >> But, for a distributed deployment such as WSO2 Cloud, we need to >> coordinate with multiple clouds and, iff all the clouds has done the >> cleanup only, we can delete the tenant permanently. For this, we will be >> writing a BPEL which will invoke the deleteTenant() of the available clouds >> (i.e. AF and APIM). Both above products will have the previously mentioned >> flag set to false. For the cloud deployment, we'll have a separate carbon >> server with the flag set to true and once its deleteTenant() is invoked, >> tenant will be deleted completely. >> >> Azeez, we would like to know your feedback too on this. >> >> Regards, >> Amila. >> >> >> On Sat, Aug 23, 2014 at 8:40 PM, Amila Maha Arachchi <[email protected] >> <javascript:_e(%7B%7D,'cvml','[email protected]');>> wrote: >> >>> >>> >>> >>> On Sat, Aug 23, 2014 at 3:12 AM, Dimuthu Leelarathne <[email protected] >>> <javascript:_e(%7B%7D,'cvml','[email protected]');>> wrote: >>> >>>> >>>> >>>> >>>> On Fri, Aug 22, 2014 at 10:01 PM, Godwin Amila Shrimal <[email protected] >>>> <javascript:_e(%7B%7D,'cvml','[email protected]');>> wrote: >>>> >>>>> >>>>> Hi Amila, >>>>> >>>>> >>>>> As per the discussion we had with Dimuthu and AF team. Listed below >>>>> the decision made to implement this. >>>>> >>>>> >>>>> 1. Add onDelete() and onPreDelete() methods to TenantMgtListener >>>>> interface >>>>> >>>> >>>> Add the onPreDelete() method to TenantMgtListener interface and call >>>> that method from the deleteTenant of the TenantMgtService. I don't see the >>>> point of adding onDelete method to TenantMgtListenter interface currently. >>>> >>> >>> I see couple of problems with this approach. >>> >>> 1. Since this involved an interface change, we are going to get trouble >>> when using this with existing products in our setup. We'll have to patch >>> their tenant.mgt code and all implementations of the listener. >>> 2. Even if we add the onPreDelete method, it will only execute the >>> implementation classes in that jvm only. So, if I call the deleteTenant >>> method in AF, it won't affect other products such as SS, Jenkins AS, >>> Stratos Manager. This will end of tenants' bits and pieces remaining in >>> other products even after we delete the tenant. >>> >>> Do we have a solution for this? >>> >>>> >>>> >>>> >>>>> >>>>> >>>> 2. Implement those methods in AppFactoryTenantMgtListener as we >>>>> discussed. >>>>> >>>>> 3. We don’t use any BPEL implementation and use the existing listeners >>>>> to implement this >>>>> >>>>> 4. Future Cloud products can implement the onDelete() and >>>>> onPreDelete() methods in TenantMgtListener interface >>>>> >>>>> >>>>> >>>> thanks, >>>> dimuthu >>>> >>>> >>>> >>>>> Please share your feedback on this. >>>>> >>>>> Thanks >>>>> Godwin >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> On Fri, Aug 22, 2014 at 6:09 PM, Amila Maha Arachchi <[email protected] >>>>> <javascript:_e(%7B%7D,'cvml','[email protected]');>> wrote: >>>>> >>>>>> +1 for preOnDelete method. Actually there is a place which has this >>>>>> kind of an implementation. Thats the user.core. So, we can learn from it >>>>>> and do this implementation. >>>>>> >>>>>> BTW, >>>>>> >>>>>> Mahesh, can you post what did you agreed online+offline? >>>>>> >>>>>> >>>>>> On Fri, Aug 22, 2014 at 4:51 PM, Mahesh Chinthaka <[email protected] >>>>>> <javascript:_e(%7B%7D,'cvml','[email protected]');>> wrote: >>>>>> >>>>>>> Thanks Dimuthu, Danushka & Ajanthan for your feedback. >>>>>>> We will do this with the approach discussed online+offline. >>>>>>> >>>>>>> >>>>>>> On Fri, Aug 22, 2014 at 10:59 AM, Danushka Fernando < >>>>>>> [email protected] >>>>>>> <javascript:_e(%7B%7D,'cvml','[email protected]');>> wrote: >>>>>>> >>>>>>>> Hi >>>>>>>> +1 for the OnPreDelete concept. But the thing is we don't have this >>>>>>>> Pre and Post events anywhere in platform. I think that's something we >>>>>>>> should consider about. WDYT? >>>>>>>> >>>>>>>> Thanks & Regards >>>>>>>> Danushka Fernando >>>>>>>> Software Engineer >>>>>>>> WSO2 inc. http://wso2.com/ >>>>>>>> Mobile : +94716332729 >>>>>>>> >>>>>>>> >>>>>>>> On Fri, Aug 22, 2014 at 9:14 AM, Dimuthu Leelarathne < >>>>>>>> [email protected] >>>>>>>> <javascript:_e(%7B%7D,'cvml','[email protected]');>> wrote: >>>>>>>> >>>>>>>>> Hi Mahesh all, >>>>>>>>> >>>>>>>>> Lets consider Carbon Platform aspect first. >>>>>>>>> >>>>>>>>> Before we remove tenant from user core and registry, we have to >>>>>>>>> delete it from all other places. So +1 for the interface that would >>>>>>>>> allow >>>>>>>>> different product teams to clean up their cleanup process, but here >>>>>>>>> is what >>>>>>>>> I recommend, >>>>>>>>> >>>>>>>>> We need a method call "onPreDelete()" on TenantMgtListener. This >>>>>>>>> is to allow all product teams to implement it. So the first rule of >>>>>>>>> thumb >>>>>>>>> is, if any product is moving to cloud they must implement this method >>>>>>>>> and >>>>>>>>> prove that they clean up the tenant before they move to WSO2Cloud. >>>>>>>>> >>>>>>>>> So basically, in tenant.core what you have to do is call all OSGi >>>>>>>>> registered TenantMgtListener's onPreDelete(), and after that delete >>>>>>>>> from >>>>>>>>> registry and finally user.core. >>>>>>>>> >>>>>>>>> That would be the most elegant and extensible fix for platform. >>>>>>>>> >>>>>>>>> Now we come to AF as a product/solution. We have to implement >>>>>>>>> onPreDelete() method. So we as a product team should decide whether >>>>>>>>> we are >>>>>>>>> going to implement it from BPEL or not. So as a product in order to be >>>>>>>>> WSO2Cloud friendly we have to implement onPreDelete() method. From >>>>>>>>> what I >>>>>>>>> feel, I believe the way to do is code + BPEL. >>>>>>>>> >>>>>>>>> thanks, >>>>>>>>> dimuthu >>>>>>>>> >>>>>>>>> >>>>>>>>> On Fri, Aug 22, 2014 at 7:26 AM, Ajanthan Balachandran < >>>>>>>>> [email protected] >>>>>>>>> <javascript:_e(%7B%7D,'cvml','[email protected]');>> wrote: >>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> On Fri, Aug 22, 2014 at 5:48 AM, Danushka Fernando < >>>>>>>>>> [email protected] >>>>>>>>>> <javascript:_e(%7B%7D,'cvml','[email protected]');>> wrote: >>>>>>>>>> >>>>>>>>>>> Hi Ajanthan >>>>>>>>>>> Problem with OnDelete is it is called after tenant deleted >>>>>>>>>>> (After deleting userstore and registry). But we need to cleanup >>>>>>>>>>> before that >>>>>>>>>>> otherwise we cannot call admin services since tenant is not there. >>>>>>>>>>> As per I >>>>>>>>>>> mentioned in the previous thread we need to call this at a >>>>>>>>>>> OnPreDelete. >>>>>>>>>>> >>>>>>>>>> IMO OnDelete method should be called as first step. >>>>>>>>>> >>>>>>>>>>> @Mahesh : I think you have missed delete applications step. And >>>>>>>>>>> delete applications step would Issue tracker details as well I >>>>>>>>>>> guess. @ >>>>>>>>>>> Ajanthan : Correct me if I am wrong. >>>>>>>>>>> >>>>>>>>>> Looping through each applications and deleting will not be a >>>>>>>>>> salable solution. >>>>>>>>>> >>>>>>>>>>> Thanks & Regards >>>>>>>>>>> Danushka Fernando >>>>>>>>>>> Software Engineer >>>>>>>>>>> WSO2 inc. http://wso2.com/ >>>>>>>>>>> Mobile : +94716332729 >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> On Thu, Aug 21, 2014 at 8:46 PM, Ajanthan Balachandran < >>>>>>>>>>> [email protected] >>>>>>>>>>> <javascript:_e(%7B%7D,'cvml','[email protected]');>> wrote: >>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> On Thu, Aug 21, 2014 at 8:24 PM, Mahesh Chinthaka < >>>>>>>>>>>> [email protected] >>>>>>>>>>>> <javascript:_e(%7B%7D,'cvml','[email protected]');>> wrote: >>>>>>>>>>>> >>>>>>>>>>>>> Hi Everyone, >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> We are working on the Training Project -[Cloud] Tenant >>>>>>>>>>>>> deletion code/script for cloud - >>>>>>>>>>>>> https://redmine.wso2.com/issues/3121. Listed below the >>>>>>>>>>>>> workflow of the tenant deletion process in the App Cloud as we >>>>>>>>>>>>> identified. >>>>>>>>>>>>> >>>>>>>>>>>>> 1. Undeploy Jenkins web app from application server >>>>>>>>>>>>> >>>>>>>>>>>>> 2. Delete Git repository (use gitblit api to delete repo in >>>>>>>>>>>>> Git) >>>>>>>>>>>>> >>>>>>>>>>>>> 3. Unsubscribe Stratos using Stratos Rest Services >>>>>>>>>>>>> >>>>>>>>>>>>> 4. Check database created by RSSAdmin and delete them >>>>>>>>>>>>> >>>>>>>>>>>>> 5. Perform TenantMgtAdminService deleteTenant operation >>>>>>>>>>>>> >>>>>>>>>>>>> - >>>>>>>>>>>>> >>>>>>>>>>>>> i. Delete Billing data >>>>>>>>>>>>> ii. Delete Tenant Registration Data (Ex. REG_CLUSTER_LOCK, >>>>>>>>>>>>> REG_LOG) >>>>>>>>>>>>> iii. Delete Tenant User management data (Ex. >>>>>>>>>>>>> UM_USER_PERMISSION, UM_USER) >>>>>>>>>>>>> iv. Remove Tenant information from cache >>>>>>>>>>>>> v. Delete UM_TENANT table >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> Don't you need to cleanup issue tracker? >>>>>>>>>>>> >>>>>>>>>>>>> As per the analysis there are two solutions we have identified >>>>>>>>>>>>> to implement this , such as BPEL and Carbon Component. We thought >>>>>>>>>>>>> of going >>>>>>>>>>>>> for a *carbon component* implementation rather than using a* >>>>>>>>>>>>> BPEL* due to following reasons. >>>>>>>>>>>>> >>>>>>>>>>>>> 1. Plugging a Carbon Component will give more extensibility to >>>>>>>>>>>>> implement Tenant Deletion operation in future Cloud base products >>>>>>>>>>>>> >>>>>>>>>>>>> 2. If we used a BPEL we will have to reconstruct at each time >>>>>>>>>>>>> when we meet a new requirement (ex: esb cloud integration). >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> Proposed Solution >>>>>>>>>>>>> >>>>>>>>>>>> Why can't you use existing TenantMgtListener and add onDelete >>>>>>>>>>>> method.It also has ListenerOrder and every implementation >>>>>>>>>>>> should be registered as OSGI service. >>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> 1. Create an abstraction for delete operation >>>>>>>>>>>>> >>>>>>>>>>>>> public interface TenantDeletion{ >>>>>>>>>>>>> >>>>>>>>>>>>> public void onDeletion(); >>>>>>>>>>>>> >>>>>>>>>>>>> } >>>>>>>>>>>>> >>>>>>>>>>>>> 2. Implement TenantDeletion for each operations >>>>>>>>>>>>> >>>>>>>>>>>>> public class JenkinsAppUndeployer implements TenantDeletion{ >>>>>>>>>>>>> >>>>>>>>>>>>> public void onDeletion(){ >>>>>>>>>>>>> >>>>>>>>>>>>> //Implementation of the JenkinsApp undeploy process >>>>>>>>>>>>> >>>>>>>>>>>>> } >>>>>>>>>>>>> >>>>>>>>>>>>> } >>>>>>>>>>>>> >>>>>>>>>>>>> 3. Use a configuration file to maintain the execution order >>>>>>>>>>>>> which help to dynamically add new requirement >>>>>>>>>>>>> >>>>>>>>>>>>> <ExecutionOrder> >>>>>>>>>>>>> >>>>>>>>>>>>> <class >>>>>>>>>>>>> name=”org.wso2.cloud.tenant.JenkinsAppUndeployer”></class> >>>>>>>>>>>>> >>>>>>>>>>>>> <class name=”org.wso2.cloud.tenant.GitRepoRemover”></class> >>>>>>>>>>>>> >>>>>>>>>>>>> <class name=”org.wso2.cloud.tenant.XXXXXX”></class> >>>>>>>>>>>>> >>>>>>>>>>>>> </ExecutionOrder> >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> We are looking for a feedback on this to move forward with >>>>>>>>>>>>> selected design. >>>>>>>>>>>>> >>>>>>>>>>>>> -- >>>>>>>>>>>>> Mahesh Chinthaka >>>>>>>>>>>>> Software Engineer , WSO2. >>>>>>>>>>>>> >>>>>>>>>>>>> Phone : (+94) 71 63 63 083 >>>>>>>>>>>>> Email : [email protected] >>>>>>>>>>>>> <javascript:_e(%7B%7D,'cvml','[email protected]');> >>>>>>>>>>>>> >>>>>>>>>>>>> _______________________________________________ >>>>>>>>>>>>> Architecture mailing list >>>>>>>>>>>>> [email protected] >>>>>>>>>>>>> <javascript:_e(%7B%7D,'cvml','[email protected]');> >>>>>>>>>>>>> https://mail.wso2.org/cgi-bin/mailman/listinfo/architecture >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> -- >>>>>>>>>>>> ajanthan >>>>>>>>>>>> -- >>>>>>>>>>>> Ajanthan Balachandiran >>>>>>>>>>>> Senior Software Engineer; >>>>>>>>>>>> Solutions Technologies Team ;WSO2, Inc.; http://wso2.com/ >>>>>>>>>>>> >>>>>>>>>>>> email: ajanthan <http://goog_595075977>@wso2.com; cell: >>>>>>>>>>>> +94775581497 >>>>>>>>>>>> blog: http://bkayts.blogspot.com/ >>>>>>>>>>>> >>>>>>>>>>>> Lean . Enterprise . Middleware >>>>>>>>>>>> >>>>>>>>>>>> _______________________________________________ >>>>>>>>>>>> Architecture mailing list >>>>>>>>>>>> [email protected] >>>>>>>>>>>> <javascript:_e(%7B%7D,'cvml','[email protected]');> >>>>>>>>>>>> https://mail.wso2.org/cgi-bin/mailman/listinfo/architecture >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> _______________________________________________ >>>>>>>>>>> Architecture mailing list >>>>>>>>>>> [email protected] >>>>>>>>>>> <javascript:_e(%7B%7D,'cvml','[email protected]');> >>>>>>>>>>> https://mail.wso2.org/cgi-bin/mailman/listinfo/architecture >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> -- >>>>>>>>>> ajanthan >>>>>>>>>> -- >>>>>>>>>> Ajanthan Balachandiran >>>>>>>>>> Senior Software Engineer; >>>>>>>>>> Solutions Technologies Team ;WSO2, Inc.; http://wso2.com/ >>>>>>>>>> >>>>>>>>>> email: ajanthan <http://goog_595075977>@wso2.com; cell: >>>>>>>>>> +94775581497 >>>>>>>>>> blog: http://bkayts.blogspot.com/ >>>>>>>>>> >>>>>>>>>> Lean . Enterprise . Middleware >>>>>>>>>> >>>>>>>>>> _______________________________________________ >>>>>>>>>> Architecture mailing list >>>>>>>>>> [email protected] >>>>>>>>>> <javascript:_e(%7B%7D,'cvml','[email protected]');> >>>>>>>>>> https://mail.wso2.org/cgi-bin/mailman/listinfo/architecture >>>>>>>>>> >>>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> -- >>>>>>>>> Dimuthu Leelarathne >>>>>>>>> Architect & Product Lead of App Factory >>>>>>>>> >>>>>>>>> WSO2, Inc. (http://wso2.com) >>>>>>>>> email: [email protected] >>>>>>>>> <javascript:_e(%7B%7D,'cvml','[email protected]');> >>>>>>>>> Mobile : 0773661935 >>>>>>>>> >>>>>>>>> Lean . Enterprise . Middleware >>>>>>>>> >>>>>>>>> _______________________________________________ >>>>>>>>> Architecture mailing list >>>>>>>>> [email protected] >>>>>>>>> <javascript:_e(%7B%7D,'cvml','[email protected]');> >>>>>>>>> https://mail.wso2.org/cgi-bin/mailman/listinfo/architecture >>>>>>>>> >>>>>>>>> >>>>>>>> >>>>>>>> _______________________________________________ >>>>>>>> Architecture mailing list >>>>>>>> [email protected] >>>>>>>> <javascript:_e(%7B%7D,'cvml','[email protected]');> >>>>>>>> https://mail.wso2.org/cgi-bin/mailman/listinfo/architecture >>>>>>>> >>>>>>>> >>>>>>> >>>>>>> >>>>>>> -- >>>>>>> Mahesh Chinthaka >>>>>>> Software Engineer , WSO2. >>>>>>> >>>>>>> Phone : (+94) 71 63 63 083 >>>>>>> Email : [email protected] >>>>>>> <javascript:_e(%7B%7D,'cvml','[email protected]');> >>>>>>> >>>>>>> _______________________________________________ >>>>>>> Architecture mailing list >>>>>>> [email protected] >>>>>>> <javascript:_e(%7B%7D,'cvml','[email protected]');> >>>>>>> https://mail.wso2.org/cgi-bin/mailman/listinfo/architecture >>>>>>> >>>>>>> >>>>>> >>>>>> >>>>>> -- >>>>>> *Amila Maharachchi* >>>>>> Senior Technical Lead >>>>>> WSO2, Inc.; http://wso2.com >>>>>> >>>>>> Blog: http://maharachchi.blogspot.com >>>>>> Mobile: +94719371446 >>>>>> >>>>>> >>>>>> _______________________________________________ >>>>>> Architecture mailing list >>>>>> [email protected] >>>>>> <javascript:_e(%7B%7D,'cvml','[email protected]');> >>>>>> https://mail.wso2.org/cgi-bin/mailman/listinfo/architecture >>>>>> >>>>>> >>>>> >>>>> >>>>> -- >>>>> *Godwin Amila Shrimal* >>>>> Senior Software Engineer >>>>> WSO2 Inc.; http://wso2.com >>>>> lean.enterprise.middleware >>>>> >>>>> mobile: *+94772264165* >>>>> linkedin: *http://lnkd.in/KUum6D <http://lnkd.in/KUum6D>* >>>>> twitter: https://twitter.com/godwinamila >>>>> >>>> >>>> >>>> >>>> -- >>>> Dimuthu Leelarathne >>>> Architect & Product Lead of App Factory >>>> >>>> WSO2, Inc. (http://wso2.com) >>>> email: [email protected] >>>> <javascript:_e(%7B%7D,'cvml','[email protected]');> >>>> Mobile : 0773661935 >>>> >>>> Lean . Enterprise . Middleware >>>> >>> >>> >>> >>> -- >>> *Amila Maharachchi* >>> Senior Technical Lead >>> WSO2, Inc.; http://wso2.com >>> >>> Blog: http://maharachchi.blogspot.com >>> Mobile: +94719371446 >>> >>> >> >> >> -- >> *Amila Maharachchi* >> Senior Technical Lead >> WSO2, Inc.; http://wso2.com >> >> Blog: http://maharachchi.blogspot.com >> Mobile: +94719371446 >> >> > > > -- > Dimuthu Leelarathne > Architect & Product Lead of App Factory > > WSO2, Inc. (http://wso2.com) > email: [email protected] > <javascript:_e(%7B%7D,'cvml','[email protected]');> > Mobile : 0773661935 > > Lean . Enterprise . Middleware > -- *Amila Maharachchi* Senior Technical Lead WSO2, Inc.; http://wso2.com Blog: http://maharachchi.blogspot.com Mobile: +94719371446
_______________________________________________ Architecture mailing list [email protected] https://mail.wso2.org/cgi-bin/mailman/listinfo/architecture
