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]>
wrote:

>
>
>
> On Sat, Aug 23, 2014 at 3:12 AM, Dimuthu Leelarathne <[email protected]>
> wrote:
>
>>
>>
>>
>> On Fri, Aug 22, 2014 at 10:01 PM, Godwin Amila Shrimal <[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]>
>>> 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]>
>>>> 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]> 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]> 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]> wrote:
>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> On Fri, Aug 22, 2014 at 5:48 AM, Danushka Fernando <
>>>>>>>> [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]> wrote:
>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> On Thu, Aug 21, 2014 at 8:24 PM, Mahesh Chinthaka <
>>>>>>>>>> [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]
>>>>>>>>>>>
>>>>>>>>>>> _______________________________________________
>>>>>>>>>>> Architecture mailing list
>>>>>>>>>>> [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]
>>>>>>>>>> https://mail.wso2.org/cgi-bin/mailman/listinfo/architecture
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>> _______________________________________________
>>>>>>>>> Architecture mailing list
>>>>>>>>> [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]
>>>>>>>> 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]
>>>>>>> Mobile : 0773661935
>>>>>>>
>>>>>>> Lean . Enterprise . Middleware
>>>>>>>
>>>>>>> _______________________________________________
>>>>>>> Architecture mailing list
>>>>>>> [email protected]
>>>>>>> https://mail.wso2.org/cgi-bin/mailman/listinfo/architecture
>>>>>>>
>>>>>>>
>>>>>>
>>>>>> _______________________________________________
>>>>>> Architecture mailing list
>>>>>> [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]
>>>>>
>>>>> _______________________________________________
>>>>> Architecture mailing list
>>>>> [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]
>>>> 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]
>> 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
_______________________________________________
Architecture mailing list
[email protected]
https://mail.wso2.org/cgi-bin/mailman/listinfo/architecture

Reply via email to