Akila, +1.

@All, What do you think about the following structure for
stratos-manager.xml? It is similar to autoscaler.xml.

<configuration>
    <stratosManager>
        <cloudController>
            <hostname>localhost</hostname>
            <port>9443</port>
        <serviceSuffix>services/CloudControllerService</serviceSuffix>
            <!-- cloud controller client timout in ms -->
            <clientTimeout>300000</clientTimeout>
        </cloudController>
        <Metering>
            <hostname>localhost</hostname>
            <port>9443</port>
        <serviceSuffix>portal/dashboards/metering-dashboard</serviceSuffix>
        <!-- metering client timout in ms -->
            <clientTimeout>300000</clientTimeout>
        </Metering>
        <Monitoring>
            <hostname>localhost</hostname>
            <port>9443</port>

<serviceSuffix>portal/dashboards/monitoring-dashboard</serviceSuffix>
        <!-- monitoring client timout in ms -->
            <clientTimeout>300000</clientTimeout>
        </Monitoring>
        <threadpool>
            <identifier>stratosManager</identifier>
            <threadPoolSize>10</threadPoolSize>
        </threadpool>
    </stratosManager>
</configuration>

Thanks,
Raj.

On Fri, Nov 13, 2015 at 3:49 PM, Akila Ravihansa Perera <raviha...@wso2.com>
wrote:

> Hi,
>
> I'd prefer not to use System variables to pass service URLs. Any component
> which needs those can read from the file right?
>
> Thanks.
>
> On Fri, Nov 13, 2015 at 3:15 PM, Rajkumar Rajaratnam <rajkum...@wso2.com>
> wrote:
>
>> Hi All,
>>
>> Thanks for your thoughts.
>>
>> Will do the following.
>>
>> 1) Lets remove service URLs (AS, SM, CC & DAS) from
>> cartridge-config.properties file
>> 2) Lets included these service URLs in stratos-manager.xml (new) and
>> autoscaler.xml. CC doesn't need these URLs.
>> 3) Configuration file (stratos-manager.xml & autoscaler.xml)
>> readers/parsers will set these URLs as system variables.
>> 4) No other code changes required, because we are reading these
>> properties from system variables in our code base (expect DAS URLs)
>> 5) Lets update the console app [1] to read the DAS metering & monitoring
>> URLs from stratos-manager.xml
>>
>> If you think this is too much work for this release, we can read the same
>> cartridge-config.properties file from both SM & AS.
>>
>> Please do let me know if you have any concerns.
>>
>> [1]
>> https://github.com/apache/stratos/blob/stratos-4.1.x/components/org.apache.stratos.manager.console/console/app.js#L48
>>
>> Thanks,
>> Raj.
>>
>> On Fri, Nov 13, 2015 at 2:19 PM, Sajith Kariyawasam <saj...@wso2.com>
>> wrote:
>>
>>> What if we keep stratos-manger.xml, cloud-controller.xml (already have)
>>> and autoscaler.xml (already have) file and move only the relevant configs
>>> to each of those files?
>>> For eg, the values need to be read by SM should only be in
>>> stratos-manager.xml.
>>> I think cartridge-config.properties file was meant to be read by SM only
>>> and if other components are using the values defined in that file, IMO its
>>> not good.
>>>
>>>
>>> On Fri, Nov 13, 2015 at 1:55 PM, Thanuja Uruththirakodeeswaran <
>>> thanu...@wso2.com> wrote:
>>>
>>>>
>>>>
>>>> On Fri, Nov 13, 2015 at 12:53 PM, Gayan Gunarathne <gay...@wso2.com>
>>>> wrote:
>>>>
>>>>> Hi,
>>>>>
>>>>> On Fri, Nov 13, 2015 at 12:42 PM, Rajkumar Rajaratnam <
>>>>> rajkum...@wso2.com> wrote:
>>>>>
>>>>>> Hi Devs,
>>>>>>
>>>>>> This file content is as below.
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>> *autoscaler.service.url=https://localhost:9443/services/AutoscalerService/
>>>>>> <https://localhost:9443/services/AutoscalerService/>cloud.controller.service.url=https://localhost:9443/services/CloudControllerService/
>>>>>> <https://localhost:9443/services/CloudControllerService/>stratos.manager.service.url=https://localhost:9443/services/StratosManagerService/
>>>>>> <https://localhost:9443/services/StratosManagerService/>das.metering.dashboard.url=https://localhost:9444/portal/dashboards/metering-dashboard
>>>>>> <https://localhost:9444/portal/dashboards/metering-dashboard>das.monitoring.dashboard.url=https://localhost:9444/portal/dashboards/monitoring-dashboard
>>>>>> <https://localhost:9444/portal/dashboards/monitoring-dashboard>puppet.ip=127.0.0.1puppet.hostname=puppet.stratos.apache.org
>>>>>> <http://puppet.stratos.apache.org>puppet.dns.available=falsepuppet.environment=stratos*
>>>>>>
>>>>>> CartridgeConfigFileReader class (part of SM component) reads this
>>>>>> file and set these properties as system variables and these system
>>>>>> variables are used by other components like AS (to communicate with CC).
>>>>>>
>>>>>> This approach have several issues.
>>>>>>
>>>>>> a) Since the component's start up order is CC > AS > SM, there is no
>>>>>> guarantee that these properties will be set before other components 
>>>>>> start.
>>>>>> b) In distributed deployment, these properties will not be set in AS
>>>>>> JVM.
>>>>>> c) This file contains information which are used by other components,
>>>>>> not only cartridges. So this file name is misleading.
>>>>>>
>>>>>> IMO, we need to fix it for 4.1.5 release. Without fixing this, I
>>>>>> can't fix the issue discussed in [1]. I am getting error [2].
>>>>>>
>>>>>> There can be several way to fix this; some of them are.
>>>>>>
>>>>>> A) We can remove following properties from
>>>>>> cartridge-config.properties file and set them as system properties in
>>>>>> stratos.sh scripts.
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>> *autoscaler.service.url=https://localhost:9443/services/AutoscalerService/
>>>>>> <https://localhost:9443/services/AutoscalerService/>cloud.controller.service.url=https://localhost:9443/services/CloudControllerService/
>>>>>> <https://localhost:9443/services/CloudControllerService/>stratos.manager.service.url=https://localhost:9443/services/StratosManagerService/
>>>>>> <https://localhost:9443/services/StratosManagerService/>das.metering.dashboard.url=https://localhost:9444/portal/dashboards/metering-dashboard
>>>>>> <https://localhost:9444/portal/dashboards/metering-dashboard>das.monitoring.dashboard.url=https://localhost:9444/portal/dashboards/monitoring-dashboard
>>>>>> <https://localhost:9444/portal/dashboards/monitoring-dashboard>*
>>>>>>
>>>>>
>>>> +1 to move *das.metering.dashboard.url and *
>>>> *das.monitoring.dashboard.url *properties to stratos.sh.
>>>> Because I also had an issue in reading this properties at webapp
>>>> initialization as webapp initialized before SM gets activated and at the
>>>> time of webapp initialization these properties are not exported as system
>>>> properties and can't read them using jaggery 'process' module.
>>>> So I loaded cartridge-config.properties file using jaggery 'carbon'
>>>> module and read these two param at webapp initialization as in here[1].
>>>>
>>>> [1].
>>>> https://github.com/apache/stratos/blob/stratos-4.1.x/components/org.apache.stratos.manager.console/console/app.js#L48
>>>>
>>>>
>>>>>>
>>>>>> B) This file should be read by all other components (e.g SM, AS)
>>>>>> which need these properties.
>>>>>>
>>>>>> WDYT?
>>>>>>
>>>>>
>>>>> IMO we can read this file and maintain the information in the in
>>>>> memory  so every component can pick from there. We can have a common 
>>>>> method
>>>>> to read this file as those properties are used among all the components.
>>>>> Also we can change the configuration name also as that configuration
>>>>> name seems to be confuse. May be we can have like 
>>>>> stratos-config.properties
>>>>>
>>>>>
>>>>>> [1] [Stratos 4.1.5] [Blocker] Monitors are not created on Stratos
>>>>>> restart
>>>>>> [2]
>>>>>>
>>>>>> [2015-11-13 11:37:36,468] ERROR
>>>>>> {org.apache.stratos.autoscaler.monitor.MonitorFactory} -  Error while
>>>>>> validating deployment policy from cloud controller [network-partition-id]
>>>>>> network-partition-1
>>>>>> java.lang.RuntimeException: System property not found:
>>>>>> cloud.controller.service.url
>>>>>>     at
>>>>>> org.apache.stratos.common.client.CloudControllerServiceClient.getInstance(CloudControllerServiceClient.java:75)
>>>>>>     at
>>>>>> org.apache.stratos.autoscaler.monitor.MonitorFactory.getClusterMonitor(MonitorFactory.java:270)
>>>>>>     at
>>>>>> org.apache.stratos.autoscaler.monitor.MonitorFactory.getMonitor(MonitorFactory.java:83)
>>>>>>     at
>>>>>> org.apache.stratos.autoscaler.monitor.component.ParentComponentMonitor$MonitorAdder.run(ParentComponentMonitor.java:1001)
>>>>>>     at
>>>>>> java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
>>>>>>     at java.util.concurrent.FutureTask.run(FutureTask.java:262)
>>>>>>     at
>>>>>> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
>>>>>>     at
>>>>>> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
>>>>>>     at java.lang.Thread.run(Thread.java:745)
>>>>>> [2015-11-13 11:37:36,469] ERROR
>>>>>> {org.apache.stratos.autoscaler.monitor.component.ParentComponentMonitor} 
>>>>>> -
>>>>>> An error occurred while starting monitor: [type] cluster [component]
>>>>>> single-cartridge-app.my-php.php.domain
>>>>>> java.lang.RuntimeException: Error while validating deployment policy
>>>>>> from cloud controller [network-partition-id] network-partition-1
>>>>>>     at
>>>>>> org.apache.stratos.autoscaler.monitor.MonitorFactory.getClusterMonitor(MonitorFactory.java:278)
>>>>>>     at
>>>>>> org.apache.stratos.autoscaler.monitor.MonitorFactory.getMonitor(MonitorFactory.java:83)
>>>>>>     at
>>>>>> org.apache.stratos.autoscaler.monitor.component.ParentComponentMonitor$MonitorAdder.run(ParentComponentMonitor.java:1001)
>>>>>>     at
>>>>>> java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
>>>>>>     at java.util.concurrent.FutureTask.run(FutureTask.java:262)
>>>>>>     at
>>>>>> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
>>>>>>     at
>>>>>> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
>>>>>>     at java.lang.Thread.run(Thread.java:745)
>>>>>> Caused by: java.lang.RuntimeException: System property not found:
>>>>>> cloud.controller.service.url
>>>>>>     at
>>>>>> org.apache.stratos.common.client.CloudControllerServiceClient.getInstance(CloudControllerServiceClient.java:75)
>>>>>>     at
>>>>>> org.apache.stratos.autoscaler.monitor.MonitorFactory.getClusterMonitor(MonitorFactory.java:270)
>>>>>>     ... 7 more
>>>>>>
>>>>>
>>>>>
>>>>>>
>>>>>> Thanks,
>>>>>> Raj.
>>>>>>
>>>>>> --
>>>>>> Rajkumar Rajaratnam
>>>>>> Committer & PMC Member, Apache Stratos
>>>>>> Software Engineer, WSO2
>>>>>>
>>>>>> Mobile : +94777568639
>>>>>> Blog : rajkumarr.com
>>>>>>
>>>>>
>>>>>
>>>>>
>>>>> --
>>>>>
>>>>> Gayan Gunarathne
>>>>> Technical Lead, WSO2 Inc. (http://wso2.com)
>>>>> Committer & PMC Member, Apache Stratos
>>>>> email : gay...@wso2.com  | mobile : +94 775030545 <%2B94%20766819985>
>>>>>
>>>>>
>>>>>
>>>>
>>>>
>>>>
>>>> --
>>>> Thanuja Uruththirakodeeswaran
>>>> Software Engineer
>>>> WSO2 Inc.;http://wso2.com
>>>> lean.enterprise.middleware
>>>>
>>>> mobile: +94 774363167
>>>>
>>>
>>>
>>>
>>> --
>>> Sajith Kariyawasam
>>> *Committer and PMC member, Apache Stratos, *
>>> *WSO2 Inc.; http://wso2.com <http://wso2.com>*
>>> *Mobile: 0772269575*
>>>
>>
>>
>>
>> --
>> Rajkumar Rajaratnam
>> Committer & PMC Member, Apache Stratos
>> Software Engineer, WSO2
>>
>> Mobile : +94777568639
>> Blog : rajkumarr.com
>>
>
>
>
> --
> Akila Ravihansa Perera
> WSO2 Inc.;  http://wso2.com/
>
> Blog: http://ravihansa3000.blogspot.com
>



-- 
Rajkumar Rajaratnam
Committer & PMC Member, Apache Stratos
Software Engineer, WSO2

Mobile : +94777568639
Blog : rajkumarr.com

Reply via email to