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 <[email protected]> wrote: > Hi Dimuthu, > > On Thu, Dec 4, 2014 at 10:42 AM, Dimuthu Leelarathne <[email protected]> > 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 <[email protected]> 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 <[email protected]> >>> 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 <[email protected] >>>> > 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: [email protected] | Mobile : +94776411636 >>>>> >>>>> On Wed, Dec 3, 2014 at 11:03 AM, Dimuthu Leelarathne < >>>>> [email protected]> 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 < >>>>>> [email protected]> 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: [email protected] | Mobile : +94776411636 >>>>>>> >>>>>>> On Tue, Dec 2, 2014 at 12:27 PM, Dimuthu Leelarathne < >>>>>>> [email protected]> wrote: >>>>>>> >>>>>>>> Hi Danushka, >>>>>>>> >>>>>>>> Please see my comments below. >>>>>>>> >>>>>>>> On Tue, Dec 2, 2014 at 12:01 PM, Danushka Fernando < >>>>>>>> [email protected]> wrote: >>>>>>>> >>>>>>>>> HI Dimuthu >>>>>>>>> Please find my comments inline >>>>>>>>> >>>>>>>>> >>>>>>>>> On Tue, Dec 2, 2014 at 8:45 AM, Dimuthu Leelarathne < >>>>>>>>> [email protected]> wrote: >>>>>>>>> >>>>>>>>>> Hi Rajeevan, >>>>>>>>>> >>>>>>>>>> Please see my comments below. >>>>>>>>>> >>>>>>>>>> On Mon, Dec 1, 2014 at 10:46 PM, Aiyadurai Rajeevan < >>>>>>>>>> [email protected]> 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: [email protected] | Mobile : +94776411636 >>>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> -- >>>>>>>>>> Dimuthu Leelarathne >>>>>>>>>> Architect & Product Lead of App Factory >>>>>>>>>> >>>>>>>>>> WSO2, Inc. (http://wso2.com) >>>>>>>>>> email: [email protected] >>>>>>>>>> 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: [email protected] >>>>>>>> Mobile : 0773661935 >>>>>>>> >>>>>>>> Lean . Enterprise . Middleware >>>>>>>> >>>>>>> >>>>>>> >>>>>> >>>>>> >>>>>> -- >>>>>> Dimuthu Leelarathne >>>>>> Architect & Product Lead of App Factory >>>>>> >>>>>> WSO2, Inc. (http://wso2.com) >>>>>> email: [email protected] >>>>>> Mobile : 0773661935 >>>>>> >>>>>> Lean . Enterprise . Middleware >>>>>> >>>>> >>>>> >>>> >>> >>> >>> -- >>> *Janaka Ranabahu* >>> Senior Software Engineer; WSO2 Inc.; http://wso2.com >>> >>> >>> *E-mail: [email protected] <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: [email protected] >> Mobile : 0773661935 >> >> Lean . Enterprise . Middleware >> > > > > -- > *Janaka Ranabahu* > Senior Software Engineer; WSO2 Inc.; http://wso2.com > > > *E-mail: [email protected] <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: [email protected] Mobile : 0773661935 Lean . Enterprise . Middleware
_______________________________________________ Architecture mailing list [email protected] https://mail.wso2.org/cgi-bin/mailman/listinfo/architecture
