Hi Amila,

It is not a standalone product. Please read my mail carefully, it says what
each product should do. In the offline chat I even said what should
AFTenantMgtListner should contain.

thanks,
dimuthu



On Mon, Aug 25, 2014 at 9:20 PM, Amila Maha Arachchi <ami...@wso2.com>
wrote:

>
>
> On Monday, August 25, 2014, Dimuthu Leelarathne <dimut...@wso2.com> 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 <ami...@wso2.com>
>> 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 <ami...@wso2.com>
>>> wrote:
>>>
>>>>
>>>>
>>>>
>>>> On Sat, Aug 23, 2014 at 3:12 AM, Dimuthu Leelarathne <dimut...@wso2.com
>>>> > wrote:
>>>>
>>>>>
>>>>>
>>>>>
>>>>> On Fri, Aug 22, 2014 at 10:01 PM, Godwin Amila Shrimal <
>>>>> god...@wso2.com> 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 <ami...@wso2.com
>>>>>> > 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 <mahe...@wso2.com>
>>>>>>> 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 <
>>>>>>>> danush...@wso2.com> 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 <
>>>>>>>>> dimut...@wso2.com> 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 <
>>>>>>>>>> ajant...@wso2.com> wrote:
>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> On Fri, Aug 22, 2014 at 5:48 AM, Danushka Fernando <
>>>>>>>>>>> danush...@wso2.com> 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 <
>>>>>>>>>>>> ajant...@wso2.com> wrote:
>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>> On Thu, Aug 21, 2014 at 8:24 PM, Mahesh Chinthaka <
>>>>>>>>>>>>> mahe...@wso2.com> 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 : mahe...@wso2.com
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> _______________________________________________
>>>>>>>>>>>>>> Architecture mailing list
>>>>>>>>>>>>>> Architecture@wso2.org
>>>>>>>>>>>>>> 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
>>>>>>>>>>>>> Architecture@wso2.org
>>>>>>>>>>>>> https://mail.wso2.org/cgi-bin/mailman/listinfo/architecture
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> _______________________________________________
>>>>>>>>>>>> Architecture mailing list
>>>>>>>>>>>> Architecture@wso2.org
>>>>>>>>>>>> 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
>>>>>>>>>>> Architecture@wso2.org
>>>>>>>>>>> https://mail.wso2.org/cgi-bin/mailman/listinfo/architecture
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> --
>>>>>>>>>> Dimuthu Leelarathne
>>>>>>>>>> Architect & Product Lead of App Factory
>>>>>>>>>>
>>>>>>>>>> WSO2, Inc. (http://wso2.com)
>>>>>>>>>> email: dimut...@wso2.com
>>>>>>>>>> Mobile : 0773661935
>>>>>>>>>>
>>>>>>>>>> Lean . Enterprise . Middleware
>>>>>>>>>>
>>>>>>>>>> _______________________________________________
>>>>>>>>>> Architecture mailing list
>>>>>>>>>> Architecture@wso2.org
>>>>>>>>>> https://mail.wso2.org/cgi-bin/mailman/listinfo/architecture
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>> _______________________________________________
>>>>>>>>> Architecture mailing list
>>>>>>>>> Architecture@wso2.org
>>>>>>>>> https://mail.wso2.org/cgi-bin/mailman/listinfo/architecture
>>>>>>>>>
>>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> --
>>>>>>>> Mahesh Chinthaka
>>>>>>>> Software Engineer , WSO2.
>>>>>>>>
>>>>>>>> Phone : (+94) 71 63 63 083
>>>>>>>> Email : mahe...@wso2.com
>>>>>>>>
>>>>>>>> _______________________________________________
>>>>>>>> Architecture mailing list
>>>>>>>> Architecture@wso2.org
>>>>>>>> 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
>>>>>>> Architecture@wso2.org
>>>>>>> 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: dimut...@wso2.com
>>>>> 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: dimut...@wso2.com
>> Mobile : 0773661935
>>
>> Lean . Enterprise . Middleware
>>
>
>
> --
> *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: dimut...@wso2.com
Mobile : 0773661935

Lean . Enterprise . Middleware
_______________________________________________
Architecture mailing list
Architecture@wso2.org
https://mail.wso2.org/cgi-bin/mailman/listinfo/architecture

Reply via email to