diff options
| author | Jenkins <jenkins@review.openstack.org> | 2016-07-08 15:22:24 +0000 |
|---|---|---|
| committer | Gerrit Code Review <review@openstack.org> | 2016-07-08 15:22:24 +0000 |
| commit | 0f9534bc2339b20544abff33da87ec809e66e1a1 (patch) | |
| tree | 95f7a0bcdce9c74a955c196b1cf1f2d774d8092b /docker | |
| parent | 56178a58dc1ea3f9117f4c03893ebafcf0e1f57c (diff) | |
| parent | cadf8afdcf4c1d56892b6d708003066e11711c5f (diff) | |
| download | kolla-0f9534bc2339b20544abff33da87ec809e66e1a1.tar.gz kolla-0f9534bc2339b20544abff33da87ec809e66e1a1.zip | |
Merge "Read GPT label using sgdisk rather than udev"
Diffstat (limited to 'docker')
| -rw-r--r-- | docker/kolla-toolbox/Dockerfile.j2 | 5 | ||||
| -rw-r--r-- | docker/kolla-toolbox/ansible_sudoers | 1 | ||||
| -rw-r--r-- | docker/kolla-toolbox/find_disks.py | 29 |
3 files changed, 33 insertions, 2 deletions
diff --git a/docker/kolla-toolbox/Dockerfile.j2 b/docker/kolla-toolbox/Dockerfile.j2 index 351ba07f7..cdaf95050 100644 --- a/docker/kolla-toolbox/Dockerfile.j2 +++ b/docker/kolla-toolbox/Dockerfile.j2 @@ -7,6 +7,7 @@ MAINTAINER {{ maintainer }} RUN yum -y install \ gcc \ + gdisk \ git \ libffi-devel \ libxml2-devel \ @@ -23,6 +24,7 @@ RUN yum -y install \ RUN apt-get -y --no-install-recommends install \ build-essential \ ca-certificates \ + gdisk \ git \ libffi-dev \ libmariadbclient-dev \ @@ -56,6 +58,9 @@ RUN useradd -m --user-group ansible --groups kolla \ COPY find_disks.py kolla_keystone_service.py kolla_keystone_user.py kolla_sanity.py kolla_zookeeper.py /usr/share/ansible/ COPY ansible.cfg /home/ansible/.ansible.cfg +COPY ansible_sudoers /etc/sudoers.d/ansible_sudoers +RUN chmod 440 /etc/sudoers.d/ansible_sudoers + CMD ["/bin/sleep", "infinity"] {{ include_footer }} diff --git a/docker/kolla-toolbox/ansible_sudoers b/docker/kolla-toolbox/ansible_sudoers new file mode 100644 index 000000000..2f486cef9 --- /dev/null +++ b/docker/kolla-toolbox/ansible_sudoers @@ -0,0 +1 @@ +ansible ALL=(root) NOPASSWD: /usr/bin/ansible localhost -m find_disks -a * diff --git a/docker/kolla-toolbox/find_disks.py b/docker/kolla-toolbox/find_disks.py index dcb6e812b..d1a6055f0 100644 --- a/docker/kolla-toolbox/find_disks.py +++ b/docker/kolla-toolbox/find_disks.py @@ -67,11 +67,36 @@ EXAMPLES = ''' import json import pyudev import re +import subprocess + + +def get_id_part_entry_name(dev): + # NOTE(pbourke): Old versions of udev have trouble retrieving GPT partition + # labels. In this case shell out to sgdisk. + try: + udev_version = pyudev.udev_version() + except (ValueError, EnvironmentError, subprocess.CalledProcessError): + udev_version = -1 + + if udev_version >= 180: + dev_name = dev.get('ID_PART_ENTRY_NAME', '') + else: + part = re.sub(r'.*[^\d]', '', dev.device_node) + parent = dev.find_parent('block').device_node + # NOTE(Mech422): Need to use -i as -p truncates the partition name + out = subprocess.Popen(['/usr/sbin/sgdisk', '-i', part, parent], + stdout=subprocess.PIPE).communicate() + match = re.search(r'Partition name: \'(\w+)\'', out[0]) + if match: + dev_name = match.group(1) + else: + dev_name = '' + return dev_name def is_dev_matched_by_name(dev, name, mode): if dev.get('DEVTYPE', '') == 'partition': - dev_name = dev.get('ID_PART_ENTRY_NAME', '') + dev_name = get_id_part_entry_name(dev) else: dev_name = dev.get('ID_FS_LABEL', '') @@ -107,7 +132,7 @@ def extract_disk_info(ct, dev, name): kwargs['journal_num'] = 2 else: kwargs['external_journal'] = True - journal_name = dev.get('ID_PART_ENTRY_NAME', '') + '_J' + journal_name = get_id_part_entry_name(dev) + '_J' for journal in find_disk(ct, journal_name, 'strict'): kwargs['journal'] = journal.device_node kwargs['journal_device'] = \ |
