Ошибка импорта имиджа в glance

image_data.py images broken pipe

Пример сообщения об ошибке в логе:

Error finding address for http://10.20.30.2:9292/v2/images/321f4aff-2f2e-476b-97a5-ba9f13426ccc/file: Unable to establish connection to http://10.20.30.2:9292/v2/images/321f4aff-2f2e-476b-97a5 9f13426ccc/file: [Errno 32] Broken pipe

Вот что выдает с списке:

d6082ec18cba4114f48fb3c68f865c93.png

Сообщение “Broken pipe” говорит о том, что происходит попытка записи образа в файл, для которого ОС уже закрыла сокет.

Надо проверить права на директорию /var/lib/glance/images - должно быть glance:glance

Обычно эта ошибка возникает, т.к. права на этот каталог: root:root

После смены прав надо перестартовать службы glance-api, glance-registry на всех контейнерах CMPT.

Сервис начнет работать.

“Застрявшие” в очереди образы надо удалить штатной API-командой:

openstack image delete <image-id>

И повторно их импортировать:

glance --os-image-api-version 2 image-create --name <image-name> --protected false --progress --visibility public --disk-format qcow2 --container-format bare --file <image-qcow2-file-full-path-name>

Cлужба glance-sync отвечает за синхронизацию образов на всех контейнерах CMPT в каталогах /var/lib/glance/images

Юнит сервиса glance-sync.service

cat /etc/systemd/system/glance-sync.service

[Unit]
Description=glance-sync

[Service]
WorkingDirectory=/usr/local/bin
User=glance
Group=glance
ExecStart=/bin/bash glance-image-sync
Restart=always
RestartSec=10
StandardOutput=syslog
StandardError=syslog

[Install]
WantedBy=multi-user.target

После создания нового service-файла необходимо перезапустить systemd:

$ sudo systemctl daemon-reload

glance-image-sync

Вот скрипт, который выполняется: /usr/local/bin/glance-image-sync

#!/bin/bash
inotifywait -m /var/lib/glance/images/  -e close_write -e delete |
while read path action file; do
        rsync -uvrht --progress --delete-after /var/lib/glance/images/ glance@10.0.11.203::images >> /var/log/glance/glance-sync.log
done

ВАЖНО!! Исходный код обработки файлов образов хранится в каталоге:

/usr/local/lib/python2.7/dist-packages/glance/api/v2

- image_data.py
- /usr/local/lib/python2.7/dist-packages/eventlet/wsgi.py
- /usr/local/lib/python2.7/dist-packages/eventlet/greenio/base.py