Hi Dimuthu,

On Thu, Dec 4, 2014 at 10:42 AM, Dimuthu Leelarathne <dimut...@wso2.com>
wrote:

> Hi Guys,
>
> Please start with "why". Lets do minimal to achieve "why" with most
> healthiest way. Why we need to do this is to external parties to add
> interpreter based languages and their cartridges. We do not need a new
> deployer type right now. I proposed a new "Runtime" object only because we
> need to minimise the refactoring in the future. I don't think we need a
> deployer IMO.
>
​Maybe I raised my question in a wrong manner.​

​I'm not talking about introducing a new deployer. Please see my comments
below.​
Also  please let me know whether I'm raising a invalid question.

>
> thanks,
> dimuthu
>
> On Thu, Dec 4, 2014 at 10:06 AM, Janaka Ranabahu <jan...@wso2.com> wrote:
>
>> Hi Rajeevan,
>>
>> Could you explain a bit more on how we are going to relate the lifecycle
>> stage with the runtime? If you look at the appfactory.xml, you might have
>> noticed that the Deployer information is defined for each lifecycle stage.
>> So with this new runtime.xml, how are we going to address that? Does the
>> runtime.xml contains all configurations or are we going to have different
>> sub directories and have a runtime.xml in each of them for each lifecycle
>> environment?
>>
>> Thanks,
>> Janaka
>>
>> On Wed, Dec 3, 2014 at 2:17 PM, Danushka Fernando <danush...@wso2.com>
>> wrote:
>>
>>> Hi Dimuthu and All
>>>
>>> We decided to go with a separate file for this runtime configs. So we
>>> will deploy this file to a different location with a different axis2
>>> deployer. And we will mention in the apptype.xml which runtime to be used.
>>>
>>> WDYT?
>>>
>>> Thanks & Regards
>>> Danushka Fernando
>>> Software Engineer
>>> WSO2 inc. http://wso2.com/
>>> Mobile : +94716332729
>>>
>>> On Wed, Dec 3, 2014 at 11:49 AM, Aiyadurai Rajeevan <rajeev...@wso2.com>
>>> wrote:
>>>
>>>> Hi Dimuthu,
>>>>
>>>> Thanks for the suggestion. So, As a conclusion I will go ahead with the
>>>> implementation as having a runtime.xml for the whole below peroperties and
>>>> populate a map from there.
>>>>
>>>> ​The following section maps directly with the existing <Deployer>
section in the appfactory.xml​ which we already defines for each stage.

> <Runtime>
>>>>
>>>>     <Runtime>appserver</Runtime>
>>>>
>>>>
>>>> <ClassName>org.wso2.carbon.appfactory.jenkins.deploy.JenkinsArtifactDeployer</ClassName>
>>>>
>>>>      <Endpoint>https://sc.s2.AF_HOST:9463/services/</Endpoint>
>>>>
>>> ​This endpoint​

​is different from one environment to another even for a single runtime.​

>     <RepositoryProvider>
>>>>
>>>>
>>>> <ProviderClass>org.wso2.carbon.appfactory.s4.integration.GITBlitBasedGITRepositoryProvider</ProviderClass>
>>>>
>>>>         <BaseURL>https://gitblit.s2.wso2.com:8444/</BaseURL>
>>>>
>>>>         <URLPattern>{@stage}/as</URLPattern>
>>>>
>>> ​This URL pattern also different from one environment to another even
for a single runtime.

​Previously we had 3 such configurations which defines these changing
properties of a runtime environment. My question is, if we are defining a
runtime of a new apptype​ how are we going to map the lifecycle stages of
that apptype with the runtime?

Thanks,
Janaka

        <AdminUserName>admin</AdminUserName>
>>>>
>>>>         <AdminPassword>admin</AdminPassword>
>>>>
>>>>     </RepositoryProvider>
>>>>
>>>>     <AliasPrefix>as</AliasPrefix>
>>>>
>>>>     <CartridgeTypePrefix>as</CartridgeTypePrefix>
>>>>
>>>>     <DeploymentPolicy>af-deployment</DeploymentPolicy>
>>>>
>>>>     <AutoscalePolicy>economy</AutoscalePolicy>
>>>>
>>>>     <RepoURL></RepoURL>
>>>>
>>>>     <DataCartridgeType></DataCartridgeType>
>>>>
>>>>     <DataCartridgeAlias></DataCartridgeAlias>
>>>>
>>>>     <SubscribeOnDeployment>false</SubscribeOnDeployment>
>>>>
>>>> </Runtime>
>>>>
>>>>
>>>>
>>>> Thanks & Regards,
>>>> S.A.Rajeevan
>>>> Software Engineer WSO2 Inc
>>>> E-Mail: rajeev...@wso2.com | Mobile : +94776411636
>>>>
>>>> On Wed, Dec 3, 2014 at 11:03 AM, Dimuthu Leelarathne <dimut...@wso2.com
>>>> > wrote:
>>>>
>>>>> HI Rajeevan,
>>>>>
>>>>> No GUI please. We are changing the whole user story here.
>>>>>
>>>>> thanks,
>>>>> dimuthu
>>>>>
>>>>>
>>>>> On Wed, Dec 3, 2014 at 10:54 AM, Aiyadurai Rajeevan <
>>>>> rajeev...@wso2.com> wrote:
>>>>>
>>>>>> Hi Dimuthu/All,
>>>>>>
>>>>>> In addition to this mail conversation we had discussed this in an
>>>>>> internal forum, Here is the update of thatdiscussion....
>>>>>>
>>>>>> As of today We are using appfactory.xml file for the runtime
>>>>>> configurations the below fraction is the the configuration properties.
>>>>>>
>>>>>> <ApplicationType name="*">
>>>>>>
>>>>>>  <ClassName>
>>>>>> org.wso2.carbon.appfactory.jenkins.deploy.JenkinsArtifactDeployer
>>>>>> </ClassName>
>>>>>>
>>>>>>         <Endpoint>https://sc.s2.AF_HOST:9463/services/</Endpoint>
>>>>>>
>>>>>>         <RepositoryProvider>
>>>>>>
>>>>>>          <Property name="Class">
>>>>>>
>>>>>>
>>>>>> org.wso2.carbon.appfactory.s4.integration.GITBlitBasedGITRepositoryProvider\
>>>>>>
>>>>>>          </Property>
>>>>>>
>>>>>>          <Property name="BaseURL">https://gitblit.s2.wso2.com:8444/
>>>>>> </Property>
>>>>>>
>>>>>>           <Property name="URLPattern">{@stage}/as</Property>
>>>>>>
>>>>>>         <Property name="AdminUserName">admin</Property>
>>>>>>
>>>>>>          <Property name="AdminPassword">admin</Property>
>>>>>>
>>>>>>         </RepositoryProvider>
>>>>>>
>>>>>>         <Properties>
>>>>>>
>>>>>>             <Property name="alias">asdev</Property>
>>>>>>
>>>>>>             <Property name="cartridgeType">asdev</Property>
>>>>>>
>>>>>>             <Property name="deploymentPolicy">af-deployment
>>>>>> </Property>
>>>>>>
>>>>>>             <Property name="autoscalePolicy">economy</Property>
>>>>>>
>>>>>>             <Property name="repoURL"></Property>
>>>>>>
>>>>>>             <Property name="dataCartridgeType"></Property>
>>>>>>
>>>>>>             <Property name="dataCartridgeAlias"></Property>
>>>>>>
>>>>>>             <Property name="subscribeOnDeployment">false</Property>
>>>>>>
>>>>>>         </Properties>
>>>>>>
>>>>>> </ApplicationType>
>>>>>>
>>>>>>
>>>>>> *Proposed solution*
>>>>>>
>>>>>> *Part 1: -* In the above xml, Content which enclosed within the
>>>>>> *RepositoryProvider* are used to do the Pass artifact storage
>>>>>> configuration. Hence, As suggested we can keep this in the
>>>>>> *org.wso2.carbon.appfactory.jenkins.AppfactoryPluginManager.xml*
>>>>>>  file.
>>>>>>
>>>>>> *Part 2:- *Content which are enclosed within *Properties* tag are
>>>>>> used for the subscription. Hence, Below is the solution which we are
>>>>>> proposing. So, it would be more user friendly.
>>>>>>
>>>>>> There can be multi tenant subscriber and single tenant subscriber,
>>>>>> Lets focus on the multi tenant scenario here.
>>>>>>
>>>>>>        *Step 1*: Create Tenant
>>>>>>
>>>>>>       *Step 2*:Tenant Admin Login
>>>>>>
>>>>>>       *Step 3*: Go to subscriber manager, This would be a GUI which
>>>>>> let the user to subscribe the needed Cartridge type, Environment(Dev,Test
>>>>>> &Prod), deploymentPolicy and autoscalePolicy. The GUI shall look
>>>>>> like below.
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>> Here We can populate cartridge type, deploymentPolicy and
>>>>>> autoscalePolicy details from Stratos service.
>>>>>>
>>>>>> So user can select the needed details in the above GUI and click
>>>>>> subscribe, That will invoke a call to Stratos service for the cartridge
>>>>>> allocation and create Repo URL which will used to commit the code in 
>>>>>> s2Git.
>>>>>> Altogether there would be three URL for the 3 environments.
>>>>>>
>>>>>>
>>>>>> Appreciate your views in this approach please.
>>>>>>
>>>>>> Thanks & Regards,
>>>>>> S.A.Rajeevan
>>>>>> Software Engineer WSO2 Inc
>>>>>> E-Mail: rajeev...@wso2.com | Mobile : +94776411636
>>>>>>
>>>>>> On Tue, Dec 2, 2014 at 12:27 PM, Dimuthu Leelarathne <
>>>>>> dimut...@wso2.com> wrote:
>>>>>>
>>>>>>> Hi Danushka,
>>>>>>>
>>>>>>> Please see my comments below.
>>>>>>>
>>>>>>> On Tue, Dec 2, 2014 at 12:01 PM, Danushka Fernando <
>>>>>>> danush...@wso2.com> wrote:
>>>>>>>
>>>>>>>> HI Dimuthu
>>>>>>>> Please find my comments inline
>>>>>>>>
>>>>>>>>
>>>>>>>> On Tue, Dec 2, 2014 at 8:45 AM, Dimuthu Leelarathne <
>>>>>>>> dimut...@wso2.com> wrote:
>>>>>>>>
>>>>>>>>> Hi Rajeevan,
>>>>>>>>>
>>>>>>>>> Please see my comments below.
>>>>>>>>>
>>>>>>>>> On Mon, Dec 1, 2014 at 10:46 PM, Aiyadurai Rajeevan <
>>>>>>>>> rajeev...@wso2.com> wrote:
>>>>>>>>>
>>>>>>>>>> Hi All,
>>>>>>>>>>
>>>>>>>>>> We are trying to implement a feature on AF which enables the user
>>>>>>>>>> to deploy their customized app types, Currently this configuration is
>>>>>>>>>> available in *appfactory.xml *under *<Deployer>* tag the content
>>>>>>>>>> would be as [1], likewise we have for each app types. Hence this 
>>>>>>>>>> wouldn't
>>>>>>>>>> be editable by the users and may not deploy their own app types. If 
>>>>>>>>>> we move
>>>>>>>>>> out this [1] from *appfactory.xml* and put this in a
>>>>>>>>>> configurable file would enable the users to customize their need.
>>>>>>>>>>
>>>>>>>>>> When we analyzing the [1] we found out , The below content
>>>>>>>>>> related to Pass artifact storage configuration and common to all app 
>>>>>>>>>> types.
>>>>>>>>>>
>>>>>>>>>> <RepositoryProvider>
>>>>>>>>>>
>>>>>>>>>>                        <Property name="Class">
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> org.wso2.carbon.appfactory.s4.integration.GITBlitBasedGITRepositoryProvider
>>>>>>>>>>
>>>>>>>>>>                         </Property>
>>>>>>>>>>
>>>>>>>>>>                        <Property name="BaseURL">
>>>>>>>>>> https://gitblit.s2.wso2.com:8444/</Property>
>>>>>>>>>>
>>>>>>>>>>                         <Property name="URLPattern">{@stage}/as
>>>>>>>>>> </Property>
>>>>>>>>>>
>>>>>>>>>>                        <Property name="AdminUserName">admin
>>>>>>>>>> </Property>
>>>>>>>>>>
>>>>>>>>>>                          <Property name="AdminPassword">admin
>>>>>>>>>> </Property>
>>>>>>>>>>
>>>>>>>>>> </RepositoryProvider>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>> What is the other xml file are you talking about? Lets call it
>>>>>>>>> foo.xml. The only other place that require these information other 
>>>>>>>>> than App
>>>>>>>>> Factory is Jenkins. So rather than putting these in separate xml 
>>>>>>>>> file, I
>>>>>>>>> will put it in the appfactory-plugin.xml file. This is because Jenkins
>>>>>>>>> provide and inherent way to read appfactory-plugin.xml file and it 
>>>>>>>>> doesn't
>>>>>>>>> give an inherent way to read foo.xml file.
>>>>>>>>>
>>>>>>>>> So at this stage the foo.xml file is only used in App Factory. You
>>>>>>>>> may merge it with appfactory.xml. The next question you may ask
>>>>>>>>> configuration duplication. I say puppet is the answer.
>>>>>>>>>
>>>>>>>>> If we have code to read foo.xml we have to put the code in both
>>>>>>>>> Jenkins side and AF side. I would rather use Jenkins inherent way of 
>>>>>>>>> config
>>>>>>>>> files as oppose to duplicating code in both places and having a 
>>>>>>>>> special
>>>>>>>>> file.
>>>>>>>>>
>>>>>>>>
>>>>>>>> I was thinking about moving outside the tag but keep it inside the
>>>>>>>> same appfactory.xml. We can pass these to jenkins through property bag 
>>>>>>>> when
>>>>>>>> deployment.
>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> So we are planning to move this to a common configuration file and
>>>>>>>>>> all the application types can access that.
>>>>>>>>>>
>>>>>>>>>> In [1] below properties are not used. Hence, We shall get rid of
>>>>>>>>>> that from AF
>>>>>>>>>>
>>>>>>>>>>                         <Property name="minInstances">1
>>>>>>>>>> </Property>
>>>>>>>>>>
>>>>>>>>>>                         <Property name="maxInstances">1
>>>>>>>>>> </Property>
>>>>>>>>>>
>>>>>>>>>>                         <Property name="shouldActivate"
>>>>>>>>>> ></Property>
>>>>>>>>>>                         <Property name="subscribeOnDeployment">
>>>>>>>>>> false</Property>
>>>>>>>>>>
>>>>>>>>>> And the below properties are used. So, We can keep them in the
>>>>>>>>>> *apptype.xml* as we already have separate apptype.xml for each
>>>>>>>>>> app types..
>>>>>>>>>>
>>>>>>>>>                         <Property name="alias">162dev</Property>
>>>>>>>>>>
>>>>>>>>>>                         <Property name="cartridgeType">162dev
>>>>>>>>>> </Property>
>>>>>>>>>>
>>>>>>>>>>                        <Property name="deploymentPolicy">
>>>>>>>>>> af-deployment</Property>
>>>>>>>>>>
>>>>>>>>>>                         <Property name="autoscalePolicy">economy
>>>>>>>>>> </Property>
>>>>>>>>>>
>>>>>>>>>>                         <Property name="repoURL"></Property>
>>>>>>>>>>
>>>>>>>>>>                        <Property name="dataCartridgeType"
>>>>>>>>>> ></Property>
>>>>>>>>>>
>>>>>>>>>>                        <Property name="dataCartridgeAlias"
>>>>>>>>>> ></Property>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> What is the propose of having the below in apptype.xml itself?
>>>>>>>>> What if we move this to a different runtime.xml file? I am proposing
>>>>>>>>> because Runtime is a different concept that is required by App 
>>>>>>>>> Factory.Let
>>>>>>>>> me prove it by example. If we use a different xml file for
>>>>>>>>> deployment(runtime), in future we can implement "multiple deployment
>>>>>>>>> environments very easily. For example consider the below relationship.
>>>>>>>>>
>>>>>>>>
>>>>>>>> What I thought the cartidgeType only being used. But seems all of
>>>>>>>> them used just for cartridge subscription. So we need a separate place 
>>>>>>>> to
>>>>>>>> these indeed. And IMO we should add support to add the cartridge
>>>>>>>> configuration file to the apptype as well.
>>>>>>>>
>>>>>>>
>>>>>>>>> AppType (1) ----------------- has ------------------>
>>>>>>>>>  (n)Deployment Envs
>>>>>>>>>
>>>>>>>>> Question about this. Is it one to many or many to many. If it is
>>>>>>>> many to many its going to be complex I guess. In that case we cannot 
>>>>>>>> deploy
>>>>>>>> the deploy / runtime configs with apptype it self. And there should be 
>>>>>>>> a
>>>>>>>> way to map which runtimes are available to which apptype. If it is one 
>>>>>>>> to
>>>>>>>> many there will be same deployer mentioned in several app types.
>>>>>>>>
>>>>>>>> Should we focus on that feature here. If it is to implement many to
>>>>>>>> many relationship then we are doing that feature now.
>>>>>>>>
>>>>>>>
>>>>>>> You are correct in saying we need to concentrate on this current
>>>>>>> feature only. But since we are going to be doing refactoring anyway I
>>>>>>> propose to separate out Runtime concept gradually. There is no harm in
>>>>>>> adding a new meta data object saying Runtime. It can only do us good. 
>>>>>>> Less
>>>>>>> refactoring in the future.
>>>>>>>
>>>>>>> Could you tell me why we need to add cartridge.xml to *.apptype
>>>>>>> archive itself? I prefer to keep it separate as a part of PaaS. And use
>>>>>>> Runtime object to refer to it. I don't want CartridgeInfo objects being
>>>>>>> used all over in our code. Rather I prefer to see Runtime being used
>>>>>>> because AppFactory and Stratos can evolve fairly independently.
>>>>>>>
>>>>>>> thanks,
>>>>>>> dimuthu
>>>>>>>
>>>>>>>
>>>>>>>>
>>>>>>>>> Right now it is 1 to 1 relationship. In future it is 1 to n
>>>>>>>>> relationship. So if we keep it in a separate XML the work we have to 
>>>>>>>>> do is
>>>>>>>>> simply externalise the deployment xmls to support the below scenario.
>>>>>>>>>
>>>>>>>>> For example consider app creation page.
>>>>>>>>>
>>>>>>>>> There is a "Application Type" drop down. In future we are going to
>>>>>>>>> have "Runtimes" drop down. So if we have deployment as a separate 
>>>>>>>>> concept
>>>>>>>>> in the architecture it is going to be much better.
>>>>>>>>>
>>>>>>>>> thanks,
>>>>>>>>> dimuthu
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>> Look forward your views in this.
>>>>>>>>>>
>>>>>>>>>> Thanks & Regards,
>>>>>>>>>> S.A.Rajeevan
>>>>>>>>>> Software Engineer WSO2 Inc
>>>>>>>>>> E-Mail: rajeev...@wso2.com | Mobile : +94776411636
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> --
>>>>>>>>> Dimuthu Leelarathne
>>>>>>>>> Architect & Product Lead of App Factory
>>>>>>>>>
>>>>>>>>> WSO2, Inc. (http://wso2.com)
>>>>>>>>> email: dimut...@wso2.com
>>>>>>>>> Mobile : 0773661935
>>>>>>>>>
>>>>>>>>> Lean . Enterprise . Middleware
>>>>>>>>>
>>>>>>>>
>>>>>>>> Thanks & Regards
>>>>>>>> Danushka Fernando
>>>>>>>> Software Engineer
>>>>>>>> WSO2 inc. http://wso2.com/
>>>>>>>> Mobile : +94716332729
>>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> --
>>>>>>> Dimuthu Leelarathne
>>>>>>> Architect & Product Lead of App Factory
>>>>>>>
>>>>>>> WSO2, Inc. (http://wso2.com)
>>>>>>> email: dimut...@wso2.com
>>>>>>> Mobile : 0773661935
>>>>>>>
>>>>>>> Lean . Enterprise . Middleware
>>>>>>>
>>>>>>
>>>>>>
>>>>>
>>>>>
>>>>> --
>>>>> Dimuthu Leelarathne
>>>>> Architect & Product Lead of App Factory
>>>>>
>>>>> WSO2, Inc. (http://wso2.com)
>>>>> email: dimut...@wso2.com
>>>>> Mobile : 0773661935
>>>>>
>>>>> Lean . Enterprise . Middleware
>>>>>
>>>>
>>>>
>>>
>>
>>
>> --
>> *Janaka Ranabahu*
>> Senior Software Engineer; WSO2 Inc.; http://wso2.com
>>
>>
>> *E-mail: jan...@wso2.com <http://wso2.com>**M: **+94 718370861
>> <%2B94%20718370861>*
>>
>> Lean . Enterprise . Middleware
>>
>
>
>
> --
> Dimuthu Leelarathne
> Architect & Product Lead of App Factory
>
> WSO2, Inc. (http://wso2.com)
> email: dimut...@wso2.com
> Mobile : 0773661935
>
> Lean . Enterprise . Middleware
>



-- 
*Janaka Ranabahu*
Senior Software Engineer; WSO2 Inc.; http://wso2.com


*E-mail: jan...@wso2.com <http://wso2.com>**M: **+94 718370861
<%2B94%20718370861>*

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

Reply via email to