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*

Reply via email to