Hi Janaka,

Understood the question. :)

+1. We need 3 runtimes defined - one per each lifecycle.

thanks,
dimuthu


On Thu, Dec 4, 2014 at 11:14 AM, Janaka Ranabahu <jan...@wso2.com> wrote:

> 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
>



-- 
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