I suspect the reason you don’t have this problem is that you don’t have any 
storage pool details whose value is ‘true’. That is the only case where this 
problem arises.

I think we do have a problem differentiating, though. If you list all of the 
storage tags for a storage pool, then any storage pool details whose value is 
‘true’ will be assumed to be a storage tag. The only way around this problem I 
see is to cross reference the results there with all of the storage tags from 
disk offerings, and if you find a storage pool detail that doesn’t match a disk 
offering storage tag, then assume it isn’t a storage tag.

Unfortunately it sounds like this is way out of scope for 4.3. I think we need 
to start thinking about how we can fix this issue moving forward now that there 
will be plugins out there impacted by this.

-Chris
-- 
Chris Suich
chris.su...@netapp.com
NetApp Software Engineer
Data Center Platforms – Cloud Solutions
Citrix, Cisco & Red Hat

On Jan 27, 2014, at 2:21 PM, Marcus Sorensen <shadow...@gmail.com> wrote:

> I'm ok with whatever. It does seem like we have the ability to
> differentiate real storage tags from details, since we can list/edit
> those storage tags (I don't see all of my details showing up in the UI
> when I look at the tags for my primary storage), though I'm not
> immediately sure why or how at the moment. I think this affects Mike
> the most, since he's shipping a plugin to customers. I can just look
> at whatever changes are made and update my pools manually, if need be.
> 
> On Mon, Jan 27, 2014 at 11:43 AM, Mike Tutkowski
> <mike.tutkow...@solidfire.com> wrote:
>> I agree...it certainly is not an ideal situation.
>> 
>> Have you assessed the risk involved with changing storage tags from using
>> true as a value to using something like storage_tag as a value?
>> 
>> If so, do you feel it is an acceptable amount of risk for 4.3 now that we
>> have already begun spinning up RC builds?
>> 
>> Thanks
>> 
>> 
>> On Mon, Jan 27, 2014 at 8:40 AM, SuichII, Christopher <
>> chris.su...@netapp.com> wrote:
>> 
>>> I think my only real concern with working around it in this manner is that
>>> once a fix is applied, we now have a bunch of settings that do not conform
>>> to the true/false pattern. In order to migrate them from using t/f, yes/no
>>> or enabled/disabled back to using true/false, we would have to write some
>>> kind of DB upgrade/migration in our plugin to update these values. In
>>> addition, I would have to change the ConfigKey from being a boolean to a
>>> string and then back to a boolean once a solution is implemented. It is
>>> just some technical debt that would pile up for plugins with a pretty nasty
>>> fix down the road.
>>> 
>>> -Chris
>>> --
>>> Chris Suich
>>> chris.su...@netapp.com
>>> NetApp Software Engineer
>>> Data Center Platforms – Cloud Solutions
>>> Citrix, Cisco & Red Hat
>>> 
>>> On Jan 27, 2014, at 10:33 AM, Mike Tutkowski <mike.tutkow...@solidfire.com>
>>> wrote:
>>> 
>>>> It is a problem, but I think - at the moment - only NetApp, SolidFire,
>>> and
>>>> Marcus have storage plug-ins.
>>>> 
>>>> We could document this issue and the easy workaround of not using true
>>> and
>>>> false as a value and try to address it in 4.4.
>>>> 
>>>> 
>>>> On Mon, Jan 27, 2014 at 7:53 AM, SuichII, Christopher <
>>>> chris.su...@netapp.com> wrote:
>>>> 
>>>>> Any final thoughts on this? Letting this go into 4.3 could potentially
>>>>> cause issues with anyone using the configuration system for plugins in
>>> 4.3.
>>>>> 
>>>>> -Chris
>>>>> --
>>>>> Chris Suich
>>>>> chris.su...@netapp.com
>>>>> NetApp Software Engineer
>>>>> Data Center Platforms – Cloud Solutions
>>>>> Citrix, Cisco & Red Hat
>>>>> 
>>>>> On Jan 24, 2014, at 3:34 PM, SuichII, Christopher <
>>> chris.su...@netapp.com>
>>>>> wrote:
>>>>> 
>>>>>> This is the approach we’ll have to take if we can’t fix this in 4.3. It
>>>>> certainly works, but it isn’t ideal.
>>>>>> 
>>>>>> Does anyone else have any thoughts on the impact this might have to
>>> 4.3?
>>>>>> 
>>>>>> -Chris
>>>>>> --
>>>>>> Chris Suich
>>>>>> chris.su...@netapp.com
>>>>>> NetApp Software Engineer
>>>>>> Data Center Platforms – Cloud Solutions
>>>>>> Citrix, Cisco & Red Hat
>>>>>> 
>>>>>> On Jan 24, 2014, at 10:11 AM, Mike Tutkowski <
>>>>> mike.tutkow...@solidfire.com> wrote:
>>>>>> 
>>>>>>> This isn't a great solution, but you could also change the value for
>>>>> your
>>>>>>> plug-in from true or false to something like t or f.
>>>>>>> 
>>>>>>> 
>>>>>>> On Fri, Jan 24, 2014 at 8:08 AM, Mike Tutkowski <
>>>>>>> mike.tutkow...@solidfire.com> wrote:
>>>>>>> 
>>>>>>>> Edison could confirm this perhaps, but I doubt any current
>>> installation
>>>>>>>> would have true for the value unless it was for a storage tag (the
>>>>> plug-in
>>>>>>>> framework just came out in 4.2).
>>>>>>>> 
>>>>>>>> 
>>>>>>>> On Fri, Jan 24, 2014 at 8:05 AM, Mike Tutkowski <
>>>>>>>> mike.tutkow...@solidfire.com> wrote:
>>>>>>>> 
>>>>>>>>> I think your idea would be acceptable risk for 4.3. The upgrade
>>> logic
>>>>>>>>> would have to perform this true-to-storage_tag conversion, too,
>>>>> though.
>>>>>>>>> 
>>>>>>>>> 
>>>>>>>>> On Fri, Jan 24, 2014 at 8:00 AM, SuichII, Christopher <
>>>>>>>>> chris.su...@netapp.com> wrote:
>>>>>>>>> 
>>>>>>>>>> I think the quickest, easiest change would be to keep using the tag
>>>>> name
>>>>>>>>>> as the key in the details table, but use a unique value like
>>>>> ‘storage_tag’
>>>>>>>>>> instead of ‘true’. This wouldn’t require any major logic changes,
>>>>> just the
>>>>>>>>>> value used to check whether something is a storage tag.
>>>>>>>>>> 
>>>>>>>>>> It is quite risky for 4.3. However my concern is that if we let
>>> this
>>>>>>>>>> ship with 4.3, then any plugin that wants to use a storage pool
>>>>> detail with
>>>>>>>>>> the value ‘true’ will make updating the storage tag system MUCH
>>> more
>>>>>>>>>> difficult. As far as I can tell, there is no other way to determine
>>>>> if
>>>>>>>>>> something is a storage tag than checking if the details table value
>>>>> is
>>>>>>>>>> ‘true’. If there are other details with the value ‘true’, then we
>>>>> wouldn’t
>>>>>>>>>> be able to differentiate between them for a DB upgrade between
>>>>> versions.
>>>>>>>>>> 
>>>>>>>>>> -Chris
>>>>>>>>>> --
>>>>>>>>>> Chris Suich
>>>>>>>>>> chris.su...@netapp.com
>>>>>>>>>> NetApp Software Engineer
>>>>>>>>>> Data Center Platforms – Cloud Solutions
>>>>>>>>>> Citrix, Cisco & Red Hat
>>>>>>>>>> 
>>>>>>>>>> On Jan 24, 2014, at 9:53 AM, Mike Tutkowski <
>>>>>>>>>> mike.tutkow...@solidfire.com> wrote:
>>>>>>>>>> 
>>>>>>>>>>> I think at some point we need to use a key/value for storage tags
>>>>> such
>>>>>>>>>> as
>>>>>>>>>>> the following:
>>>>>>>>>>> 
>>>>>>>>>>> storageTags=value1,value2,value3
>>>>>>>>>>> 
>>>>>>>>>>> The problem with that is you have to parse the value cell each
>>> time
>>>>> you
>>>>>>>>>>> pull it out of the DB.
>>>>>>>>>>> 
>>>>>>>>>>> That might be too risky of a change, though, for 4.3 at this
>>> point.
>>>>>>>>>>> 
>>>>>>>>>>> 
>>>>>>>>>>> On Fri, Jan 24, 2014 at 5:24 AM, SuichII, Christopher <
>>>>>>>>>>> chris.su...@netapp.com> wrote:
>>>>>>>>>>> 
>>>>>>>>>>>> I have found an additional issue related to this. The allocators
>>> do
>>>>>>>>>>>> properly ignore any storage pool details whose value is true that
>>>>> is
>>>>>>>>>> not
>>>>>>>>>>>> actually a storage pool. However, the list storage pools API does
>>>>>>>>>> NOT. When
>>>>>>>>>>>> creating the StoragePoolResponse, it is still assumed that any
>>>>>>>>>> storage pool
>>>>>>>>>>>> detail with the value ‘true’ is a storage tag.
>>>>>>>>>>>> 
>>>>>>>>>>>> For my plugin targeting 4.3, we create a storage pool detail
>>> with a
>>>>>>>>>>>> true/false value, so this causes a problem with the storage pool
>>>>> UI.
>>>>>>>>>>>> 
>>>>>>>>>>>> Any thoughts on how to fix this?
>>>>>>>>>>>> 
>>>>>>>>>>>> -Chris
>>>>>>>>>>>> --
>>>>>>>>>>>> Chris Suich
>>>>>>>>>>>> chris.su...@netapp.com
>>>>>>>>>>>> NetApp Software Engineer
>>>>>>>>>>>> Data Center Platforms – Cloud Solutions
>>>>>>>>>>>> Citrix, Cisco & Red Hat
>>>>>>>>>>>> 
>>>>>>>>>>>> On Oct 23, 2013, at 6:43 PM, Alena Prokharchyk <
>>>>>>>>>>>> alena.prokharc...@citrix.com> wrote:
>>>>>>>>>>>> 
>>>>>>>>>>>>> Filed
>>>>>>>>>>>>> 
>>>>>>>>>>>>> https://issues.apache.org/jira/browse/CLOUDSTACK-4942
>>>>>>>>>>>>> 
>>>>>>>>>>>>> -Alena.
>>>>>>>>>>>>> 
>>>>>>>>>>>>> From: Prachi Damle <prachi.da...@citrix.com<mailto:
>>>>>>>>>>>> prachi.da...@citrix.com>>
>>>>>>>>>>>>> Date: Wednesday, October 23, 2013 2:04 PM
>>>>>>>>>>>>> To: Alena Prokharchyk <alena.prokharc...@citrix.com<mailto:
>>>>>>>>>>>> alena.prokharc...@citrix.com>>, "dev@cloudstack.apache.org
>>> <mailto:
>>>>>>>>>>>> dev@cloudstack.apache.org>" <dev@cloudstack.apache.org<mailto:
>>>>>>>>>>>> dev@cloudstack.apache.org>>
>>>>>>>>>>>>> Subject: RE: Tags on storagePool
>>>>>>>>>>>>> 
>>>>>>>>>>>>> Alena,
>>>>>>>>>>>>> 
>>>>>>>>>>>>> I don’t know why it was designed this way in first place – a
>>>>> design
>>>>>>>>>> like
>>>>>>>>>>>> host_tags where we have separate table to store tags is much
>>> better
>>>>>>>>>> for
>>>>>>>>>>>> Allocators to work on.
>>>>>>>>>>>>> 
>>>>>>>>>>>>> It is a bug, but will cause problem only if we land up with
>>>>> situation
>>>>>>>>>>>> explained below:
>>>>>>>>>>>>> 
>>>>>>>>>>>>> Given the existing design of storage tags, the Allocators search
>>>>> the
>>>>>>>>>>>> details table using the name = <tag-provided-in-disk-offering>
>>> and
>>>>>>>>>> value
>>>>>>>>>>>> =true
>>>>>>>>>>>>> Thus this will cause a problem in placement only if some other
>>>>>>>>>> storage
>>>>>>>>>>>> pool detail happen to have the same ‘name’ as a storage-tag and
>>>>> also a
>>>>>>>>>>>> value = true.
>>>>>>>>>>>>> 
>>>>>>>>>>>>> -Prachi
>>>>>>>>>>>>> 
>>>>>>>>>>>>> From: Alena Prokharchyk
>>>>>>>>>>>>> Sent: Wednesday, October 23, 2013 1:36 PM
>>>>>>>>>>>>> To: Prachi Damle; dev@cloudstack.apache.org<mailto:
>>>>>>>>>>>> dev@cloudstack.apache.org>
>>>>>>>>>>>>> Subject: Tags on storagePool
>>>>>>>>>>>>> 
>>>>>>>>>>>>> I came across a potential bug in the way allocators do volumes
>>>>>>>>>> placement
>>>>>>>>>>>> on storage, based on storage tags. Prachi, can you please confirm
>>>>> if
>>>>>>>>>> the
>>>>>>>>>>>> bug is real.
>>>>>>>>>>>>> 
>>>>>>>>>>>>> 
>>>>>>>>>>>>> The tags are passed to the createStoragePool API in form of
>>>>>>>>>>>> tags='tag1,tag2,..':
>>>>>>>>>>>>> 
>>>>>>>>>>>>> ?command=createStoragePool&...&tags=alena
>>>>>>>>>>>>> 
>>>>>>>>>>>>> and stored in the storage_pool_details db table as:
>>>>>>>>>>>>> 
>>>>>>>>>>>>> mysql> select *from storage_pool_details where pool_id=2;
>>>>>>>>>>>>> +----+---------+-----------+-------+
>>>>>>>>>>>>> | id | pool_id | name      | value |
>>>>>>>>>>>>> +----+---------+-----------+-------+
>>>>>>>>>>>>> |  2 |       2 | alenatags | true  |
>>>>>>>>>>>>> +----+---------+-----------+-------+
>>>>>>>>>>>>> 1 row in set (0.00 sec)
>>>>>>>>>>>>> 
>>>>>>>>>>>>> 
>>>>>>>>>>>>> Allocator code assumes that everything stored in
>>>>> storage_pool_details
>>>>>>>>>>>> table, having value=true - is a storage pool tag. And this is
>>>>>>>>>> incorrect, as
>>>>>>>>>>>> the storage_pool_details table is used for storing diff kinds of
>>>>>>>>>> storage
>>>>>>>>>>>> pool details - not just tags - that can be later used by various
>>>>>>>>>> cloudStack
>>>>>>>>>>>> managers. Like for example we save Storage level config
>>> parameters
>>>>> in
>>>>>>>>>> this
>>>>>>>>>>>> table (
>>>>>>>>>>>> 
>>>>>>>>>> 
>>>>> 
>>> https://cwiki.apache.org/confluence/display/CLOUDSTACK/FS+for+Granular+Global+Configuration+Parameters
>>>>>>>>>>>> ).
>>>>>>>>>>>>> 
>>>>>>>>>>>>> 
>>>>>>>>>>>>> The correct way to fix it would be - store tags as:
>>>>>>>>>>>>> 
>>>>>>>>>>>>> +----+---------+-----------+-------+
>>>>>>>>>>>>> | id | pool_id | name      | value |
>>>>>>>>>>>>> +----+---------+-----------+-------+
>>>>>>>>>>>>> |  2 |       2 | tag       | alena  |
>>>>>>>>>>>>> +----+---------+-----------+-------+
>>>>>>>>>>>>> 
>>>>>>>>>>>>> 
>>>>>>>>>>>>> and fix StorageManager to retrive all the tags by the "tag" key.
>>>>> We
>>>>>>>>>> also
>>>>>>>>>>>> have to fix the DB upgrade, which can be tricky as we will have
>>> to
>>>>>>>>>> figure
>>>>>>>>>>>> out which detail is a tag.
>>>>>>>>>>>>> 
>>>>>>>>>>>>> 
>>>>>>>>>>>>> -Alena.
>>>>>>>>>>>>> 
>>>>>>>>>>>> 
>>>>>>>>>>>> 
>>>>>>>>>>> 
>>>>>>>>>>> 
>>>>>>>>>>> --
>>>>>>>>>>> *Mike Tutkowski*
>>>>>>>>>>> *Senior CloudStack Developer, SolidFire Inc.*
>>>>>>>>>>> e: mike.tutkow...@solidfire.com
>>>>>>>>>>> o: 303.746.7302
>>>>>>>>>>> Advancing the way the world uses the
>>>>>>>>>>> cloud<http://solidfire.com/solution/overview/?video=play>
>>>>>>>>>>> *™*
>>>>>>>>>> 
>>>>>>>>>> 
>>>>>>>>> 
>>>>>>>>> 
>>>>>>>>> --
>>>>>>>>> *Mike Tutkowski*
>>>>>>>>> *Senior CloudStack Developer, SolidFire Inc.*
>>>>>>>>> e: mike.tutkow...@solidfire.com
>>>>>>>>> o: 303.746.7302
>>>>>>>>> Advancing the way the world uses the cloud<
>>>>> http://solidfire.com/solution/overview/?video=play>
>>>>>>>>> *™*
>>>>>>>>> 
>>>>>>>> 
>>>>>>>> 
>>>>>>>> 
>>>>>>>> --
>>>>>>>> *Mike Tutkowski*
>>>>>>>> *Senior CloudStack Developer, SolidFire Inc.*
>>>>>>>> e: mike.tutkow...@solidfire.com
>>>>>>>> o: 303.746.7302
>>>>>>>> Advancing the way the world uses the cloud<
>>>>> http://solidfire.com/solution/overview/?video=play>
>>>>>>>> *™*
>>>>>>>> 
>>>>>>> 
>>>>>>> 
>>>>>>> 
>>>>>>> --
>>>>>>> *Mike Tutkowski*
>>>>>>> *Senior CloudStack Developer, SolidFire Inc.*
>>>>>>> e: mike.tutkow...@solidfire.com
>>>>>>> o: 303.746.7302
>>>>>>> Advancing the way the world uses the
>>>>>>> cloud<http://solidfire.com/solution/overview/?video=play>
>>>>>>> *™*
>>>>>> 
>>>>> 
>>>>> 
>>>> 
>>>> 
>>>> --
>>>> *Mike Tutkowski*
>>>> *Senior CloudStack Developer, SolidFire Inc.*
>>>> e: mike.tutkow...@solidfire.com
>>>> o: 303.746.7302
>>>> Advancing the way the world uses the
>>>> cloud<http://solidfire.com/solution/overview/?video=play>
>>>> *™*
>>> 
>>> 
>> 
>> 
>> --
>> *Mike Tutkowski*
>> *Senior CloudStack Developer, SolidFire Inc.*
>> e: mike.tutkow...@solidfire.com
>> o: 303.746.7302
>> Advancing the way the world uses the
>> cloud<http://solidfire.com/solution/overview/?video=play>
>> *™*

Reply via email to