cloudstack-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Mice Xia" <mice_...@tcloudcomputing.com>
Subject RE: [DISCUSS] Granular Global Parameters
Date Tue, 16 Apr 2013 09:28:51 GMT
Not meant to stray from the topic, I raised this question because I think this is a good opportunity
to refactor global configs.

Yes, they are two separate issues, but need think it through before work in parallel otherwise
there will be many code conflicts..

+1 for Nitin's proposal:
Firstly introduce an interface and encapsulate the logic of fetching configs depends on context
(zone/pod/cluster/account/..)
Then task like implementation of the interface, replacing class _variables and rewrite some
daemon threads can work in parallel (hopefully)

Regards
Mice

-----Original Message-----
From: Abhinandan Prateek [mailto:cloudstack@aprateek.com] 
Sent: Tuesday, April 16, 2013 3:17 PM
To: dev@cloudstack.apache.org
Subject: Re: [DISCUSS] Granular Global Parameters

On 16/04/13 12:14 PM, "Nitin Mehta" <Nitin.Mehta@citrix.com> wrote:

>Also as Mice asked do we plan to restart MS to update say config 
>changes we make at zone/cluster level ?

That is how things are currently handled in MS. You need to restart MS after any config change.

>For now I would suggest to stop using the class variables (which get 
>loaded during the class initiation time) and introduce a generic 
>interface with methods (input as name and scope id) to retrieve the 
>appropriate value for the config. The implementation of the method 
>should ideally use an in memory cache which gets dynamically updated or 
>is refreshed every so often(clustered MS can be an issue). But we can 
>also use DB for now though it would be highly non performant. In future 
>all the configs should start using this.


Here we are talking about dynamically updating the config and performance.

Dynamically updating the config requires a huge volume of change though they are not complex
in nature.

Performance I will not worry about that much as config updates do not happen frequently and
config is not read often.
As of now most of the config is read when the MS starts.

The granularity of parameter that the current spec covers is addressing a different issue.
So my hunch will be that we will be Better off putting a separate spec to address the two
other issues of performance and dynamic update. Probably work can also go in Parallel.

-abhi


> 
>
>Some food for thought ?
>
>If we have enough consensus here and the discussion below please go 
>ahead and update the FS for the same.
>
>Thanks,
>-Nitin
>
>On 15/04/13 6:23 PM, "Harikrishna Patnala"
><harikrishna.patnala@citrix.com> wrote:
>
>>Yes Abhi I agree with you, this approach will eliminate the usage of 
>>multiple APIs.
>>
>>We can specify scope for each configuration parameter both in 
>>config.java file and configuration table.
>
>
>
>DonĀ¹t think you need to store scope in the configuration table. You can 
>just keep it in Config.java.
>
>
>
>>We will not set the default values during the creation of resource 
>>(Zone/cluster/pool/account).
>>
>>Whenever we need to update an entity we call updateConfig API with 
>>name, value, scope and resource ID. This does following,
>>- validates the scope of the parameter
>>- checks the resource details table and updates there, if not present 
>>then will fetch from the global configuration parameters and create 
>>entry in the details table.
>>
>>API:  updateConfiguration
>>Parameters: name, value, scope, entityId
>>
>>listConfiguration also fetches based on the scope.
>>API: listConfiguration
>>Parameters: category, name, scope, entityId
>>
>>
>>
>>-Harikrishna
>>
>>
>>
>>On 15-Apr-2013, at 4:36 PM, Abhinandan Prateek 
>><cloudstack@aprateek.com<mailto:cloudstack@aprateek.com>>
>> wrote:
>>
>>For Granular params, I am proposing that we use updateConfiguration 
>>command with two additional parameters i.e. scope_type and scope_id.
>>Where scope_type can be zone, account, cluster or pool  and scope_id 
>>will be the corresponding id of that scope.
>>
>>We also similarly overload listConfiguration API with these two new 
>>params.
>>
>>-abhi
>>
>>On 11/04/13 9:06 AM, "Abhinandan Prateek"
>><Abhinandan.Prateek@citrix.com<mailto:Abhinandan.Prateek@citrix.com>>
>>wrote:
>>
>>
>>
>>On 10/04/13 6:30 PM, "David Nalley" 
>><david@gnsa.us<mailto:david@gnsa.us>>
>>wrote:
>>
>>On Wed, Apr 10, 2013 at 7:08 AM, Harikrishna Patnala 
>><harikrishna.patnala@citrix.com<mailto:harikrishna.patnala@citrix.com>
>>>
>>wrote:
>>Hi all,
>>
>>There are many global parameters which are used to set 
>>values/limits/boolean for various operations, but these parameters 
>>effects all zones/clusters/accounts/storage based on the parameter.
>>Here I would like to discuss on granulising these parameters so that 
>>these parameters can be customised at different levels 
>>(zone/cluster/account/storage).
>>New APIs are introduced to update these parameters based on the level 
>>listed in the FS below.
>>During the creation of zone/cluster/account/storage default values for 
>>the granular parameters are set from the normal global parameters and 
>>later these can be updated using the corresponding API.
>>
>>
>>This proposal for Global granular parameters is detailed in the FS
>>here:
>>https://cwiki.apache.org/confluence/display/CLOUDSTACK/FS+for+Granular
>>+G
>>l
>>obal+Configuration+Parameters
>>The JIRA ticket for tracking is
>>https://issues.apache.org/jira/browse/CLOUDSTACK-741
>>
>>Please review this and provide me comments/suggestions.
>>
>>Thanks
>>Harikrishna
>>
>>
>>Hi Harikrisha:
>>
>>First - the title is a bit confusing; granular and global seems 
>>contradictory. Regardless - this is a great move forward.
>>
>>I don't understand why we would inject a new API command
>>(update{storage,cluster,zone,account}levelparamater) instead of just 
>>using updateZone, updateAccount, updateStoragePool, etc. For instance, 
>>I would expect that listZone would tell me the status of the 
>>zone-level options. So why wouldn't updateZone be capable of setting 
>>the options
>>
>>
>>Good question. Whether to overload an existing API or create a new one 
>>is always debatable.
>>In this case one of the reason is that the existing update APIs were 
>>returning a {Zone, Account,..}Response that is not required when you 
>>change a granular config param. Moreover, all the existing update APIs 
>>are already heavily overloaded, not a strong reason to avoid further 
>>overloading though apart from that the response grows in size more you 
>>overload.
>>
>>We will also need an API to query the config params at these various 
>>granularities, that is not mentioned in the FS.
>>
>>-abhi
>>
>>
>>
>>
>>
>


Mime
View raw message