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

image_data.py images broken pipe

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

Copy
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-командой:

Copy
openstack image delete <image-id>

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

Copy
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

Copy
[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:

Copy
$ sudo systemctl daemon-reload

glance-image-sync

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

Copy
#!/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

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