...
Code Block | ||||
---|---|---|---|---|
| ||||
"stack_features": [
{
"name": "snappy",
"description": "Snappy compressor/decompressor support",
"min_version": "2.0.0.0",
"max_version": "2.2.0.0"
},
{
"name": "lzo",
"description": "LZO libraries support",
"min_version": "2.2.1.0"
},
{
"name": "express_upgrade",
"description": "Express upgrade support",
"min_version": "2.1.0.0"
},
{
"name": "rolling_upgrade",
"description": "Rolling upgrade support",
"min_version": "2.2.0.0"
}
]
} |
where min_version/max_version are optional constraints.
Feature constants, matching features names, such has ROLLING_UPGRADE = "rolling_upgrade" has been added to a new StackFeature class in resource_management/libraries/functions/constants.py
Code Block | ||||
---|---|---|---|---|
| ||||
class StackFeature:
"""
Stack Feature supported
"""
SNAPPY = "snappy"
LZO = "lzo"
EXPRESS_UPGRADE = "express_upgrade"
ROLLING_UPGRADE = "rolling_upgrade" |
Additionally, corresponding helper functions has been introduced in resource_management/libraries/functions/stack_fetaures.py to parse the .json file content and called from service code to check if the stack supports the specific feature.
This is an example where the new stack featurization design is used in service code:
Code Block | ||||
---|---|---|---|---|
| ||||
if params.version and check_stack_feature(StackFeature.ROLLING_UPGRADE, params.version):
conf_select.select(params.stack_name, "hive", params.version)
stack_select.select("hive-server2", params.version) |