diff options
author | Jason DeTiberus <jdetiber@redhat.com> | 2015-04-16 01:49:29 -0400 |
---|---|---|
committer | Jason DeTiberus <jdetiber@redhat.com> | 2015-04-23 12:11:53 -0400 |
commit | 378e8a8c9d7e7be7f52691e957f07096ee0b2c82 (patch) | |
tree | 8bf69963a6e9af8c930d142c5077fa88e1dfc5b9 /filter_plugins | |
parent | 4d77f6ee94b67a8db57e040c899fb464fbf13290 (diff) | |
download | openshift-378e8a8c9d7e7be7f52691e957f07096ee0b2c82.tar.gz openshift-378e8a8c9d7e7be7f52691e957f07096ee0b2c82.tar.bz2 openshift-378e8a8c9d7e7be7f52691e957f07096ee0b2c82.tar.xz openshift-378e8a8c9d7e7be7f52691e957f07096ee0b2c82.zip |
lvm-direct support for aws
- Create a separate docker volume in aws openshift-cluster playbooks
- default to using ephemeral storage, but allow to be overriden
- allow root volume settingsto be overriden as well
- add user-data cloud-config to bootstrap the installation/configuration of
docker-storage-setup
- pylint cleanup for oo_filters.py
- remove left over traces to the deployment_type tags which were previously
removed
- oo_get_deployment_type_from_groups filter in oo_filters.py
- cluster list playbooks references to oo_get_deployment_type_from_groups
filter
Diffstat (limited to 'filter_plugins')
-rw-r--r-- | filter_plugins/oo_filters.py | 50 |
1 files changed, 49 insertions, 1 deletions
diff --git a/filter_plugins/oo_filters.py b/filter_plugins/oo_filters.py index d22b6d188..097038450 100644 --- a/filter_plugins/oo_filters.py +++ b/filter_plugins/oo_filters.py @@ -129,6 +129,53 @@ def oo_ami_selector(data, image_name): ami = sorted(ami_info, key=itemgetter(1), reverse=True)[0][0] return ami['ami_id'] +def oo_ec2_volume_definition(data, host_type, docker_ephemeral=False): + ''' This takes a dictionary of volume definitions and returns a valid ec2 + volume definition based on the host_type and the values in the + dictionary. + The dictionary should look similar to this: + { 'master': + { 'root': + { 'volume_size': 10, 'device_type': 'gp2', + 'iops': 500 + } + }, + 'node': + { 'root': + { 'volume_size': 10, 'device_type': 'io1', + 'iops': 1000 + }, + 'docker': + { 'volume_size': 40, 'device_type': 'gp2', + 'iops': 500, 'ephemeral': 'true' + } + } + } + ''' + if not issubclass(type(data), dict): + raise errors.AnsibleFilterError("|failed expects first param is a dict") + if host_type not in ['master', 'node']: + raise errors.AnsibleFilterError("|failed expects either master or node" + " host type") + + root_vol = data[host_type]['root'] + root_vol['device_name'] = '/dev/sda1' + root_vol['delete_on_termination'] = True + if root_vol['device_type'] != 'io1': + root_vol.pop('iops', None) + if host_type == 'node': + docker_vol = data[host_type]['docker'] + docker_vol['device_name'] = '/dev/xvdb' + docker_vol['delete_on_termination'] = True + if docker_vol['device_type'] != 'io1': + docker_vol.pop('iops', None) + if docker_ephemeral: + docker_vol.pop('device_type', None) + docker_vol.pop('delete_on_termination', None) + docker_vol['ephemeral'] = 'ephemeral0' + return [root_vol, docker_vol] + return [root_vol] + # disabling pylint checks for too-few-public-methods and no-self-use since we # need to expose a FilterModule object that has a filters method that returns # a mapping of filter names to methods. @@ -144,5 +191,6 @@ class FilterModule(object): "oo_len": oo_len, "oo_pdb": oo_pdb, "oo_prepend_strings_in_list": oo_prepend_strings_in_list, - "oo_ami_selector": oo_ami_selector + "oo_ami_selector": oo_ami_selector, + "oo_ec2_volume_definition": oo_ec2_volume_definition } |