<?xml version="1.0" encoding="UTF-8" ?>

<bugzilla version="5.2"
          urlbase="https://bugzilla.altlinux.org/"
          
          maintainer="jenya@basealt.ru"
>

    <bug>
          <bug_id>49543</bug_id>
          
          <creation_ts>2024-02-28 11:45:39 +0300</creation_ts>
          <short_desc>Ошибка при выполнении swift-ring-builder rebalance</short_desc>
          <delta_ts>2024-02-28 11:45:39 +0300</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>Branch p10</product>
          <component>openstack-swift</component>
          <version>не указана</version>
          <rep_platform>x86_64</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>NEW</bug_status>
          <resolution></resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P5</priority>
          <bug_severity>normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Nikolai Zurabishvili">zurabishvilinn</reporter>
          <assigned_to name="Grigory Ustinov">grenka</assigned_to>
          <cc>aminov</cc>
          
          <qa_contact name="qa-p10@altlinux.org">qa-p10</qa_contact>

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>242275</commentid>
    <comment_count>0</comment_count>
      <attachid>15616</attachid>
    <who name="Nikolai Zurabishvili">zurabishvilinn</who>
    <bug_when>2024-02-28 11:45:39 +0300</bug_when>
    <thetext>Created attachment 15616
openstack-keystone-deploy.sh

openstack-swift-2.25.0-alt1

Стенды (обновлен до p10):

Server 10.1 x86-64

Предусловия:

Добавить дополнительно 3 диска к виртуалке размером например 5 GB 

Установлены пакеты: # apt-get install openstack-swift-* rsync-server

Настроить openstack-keystone используя скрипт (см openstack-keystone-deploy.sh)

Шаги:

1. Настроить swift-proxy:

# openstack user create --domain default --password-prompt swift
# openstack service create --name swift   --description &quot;OpenStack Object Storage&quot; object-store

# openstack endpoint create --region RegionOne object-store public http://$(hostname -i):8080/v1/AUTH_%\(project_id\)s
# openstack endpoint create --region RegionOne object-store internal http://$(hostname -i):8080/v1/AUTH_%\(project_id\)s
# openstack endpoint create --region RegionOne object-store admin http://$(hostname -i):8080/v1/AUTH_%\(project_id\)s
 
1.1 Отредактировать файл /etc/swift/proxy-server.conf 

[DEFAULT]
...
bind_port = 8080
user = swift
swift_dir = /etc/swift
...

[filter:authtoken]
paste.filter_factory = keystonemiddleware.auth_token:filter_factory
...
www_authenticate_uri = http://127.0.0.1:5000
auth_url = http://127.0.0.1:5000
memcached_servers = 127.0.0.1:11211
auth_type = password
project_domain_id = default
user_domain_id = default
project_name = service
username = swift
password = 1
delay_auth_decision = True

2. Настроить Object Storage service

# mkfs.xfs /dev/sdb
# mkfs.xfs /dev/sdc
# mkfs.xfs /dev/sdd

# mkdir -p /srv/node/sdb
# mkdir -p /srv/node/sdc
# mkdir -p /srv/node/sdd

# blkid

2.1 Добавить в /etc/fstab строки используя UUID из предыдущей команды:
UUID=&quot;&lt;UUID-from-output-above&gt;&quot; /srv/node/sdb xfs noatime 0 2
UUID=&quot;&lt;UUID-from-output-above&gt;&quot; /srv/node/sdc xfs noatime 0 2
UUID=&quot;&lt;UUID-from-output-above&gt;&quot; /srv/node/sdd xfs noatime 0 2

# mount /srv/node/sdb
# mount /srv/node/sdc
# mount /srv/node/sdd

3. Настроить rsync

Добавить в /etc/rsyncd.conf строки:
 
uid = swift
gid = swift
log file = /var/log/rsyncd/rsyncd.log
pid file = /var/run/rsyncd.pid
address = 127.0.0.1

[account]
max connections = 2
path = /srv/node/
read only = False
lock file = /var/lock/account.lock

[container]
max connections = 2
path = /srv/node/
read only = False
lock file = /var/lock/container.lock

[object]
max connections = 2
path = /srv/node/
read only = False
lock file = /var/lock/object.lock

# echo &gt;&gt; /etc/sysconfig/rsyncd
# systemctl enable --now rsyncd.socket

4. Настроить остальные компоненты swift

/etc/swift/account-server.conf

[DEFAULT]
...
user = swift
swift_dir = /etc/swift
devices = /srv/node
...

/etc/swift/container-server.conf

[DEFAULT]
...
user = swift
swift_dir = /etc/swift
devices = /srv/node
...

/etc/swift/object-server.conf

[DEFAULT]
...
user = swift
swift_dir = /etc/swift
devices = /srv/node
...

5. Назначить права 

# chown -R swift:swift /srv/node

6. В /etc/swift/swift.conf добавить строки:

[swift-hash]
...
swift_hash_path_suffix = HASH_PATH_SUFFIX
swift_hash_path_prefix = HASH_PATH_PREFIX

7. Настроить initial rings:

# swift-ring-builder account.builder create 10 3 1
# swift-ring-builder container.builder create 10 3 1
# swift-ring-builder object.builder create 10 3 1

# swift-ring-builder account.builder add --region 1 --zone 1 --ip &lt;VM-IP&gt; --port 6202 --device sdb --weight 100
# swift-ring-builder account.builder add --region 1 --zone 1 --ip &lt;VM-IP&gt; --port 6202 --device sdc --weight 100
# swift-ring-builder account.builder add --region 1 --zone 1 --ip &lt;VM-IP&gt; --port 6202 --device sdd --weight 100

где &lt;VM-IP&gt; - ip тестируемой машины

# swift-ring-builder account.builder

# swift-ring-builder account.builder rebalance


Ожидаемый результат: Успешное выполнение команды
 
Фактический результат: Reassigned 3072 (300.00%) partitions. Balance is now 0.00.  Dispersion is now 0.00
Traceback (most recent call last):
  File &quot;/usr/bin/swift-ring-builder&quot;, line 24, in &lt;module&gt;
    sys.exit(main())
  File &quot;/usr/lib/python3/site-packages/swift/cli/ringbuilder.py&quot;, line 1688, in main
    getattr(Commands, command, Commands.unknown)()
  File &quot;/usr/lib/python3/site-packages/swift/cli/ringbuilder.py&quot;, line 1158, in rebalance
    builder.get_ring().save(
  File &quot;/usr/lib/python3/site-packages/swift/common/ring/ring.py&quot;, line 239, in save
    self.serialize_v1(gz_file)
  File &quot;/usr/lib/python3/site-packages/swift/common/ring/ring.py&quot;, line 224, in serialize_v1
    file_obj.write(part2dev_id.tostring())
AttributeError: &apos;array.array&apos; object has no attribute &apos;tostring&apos;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>15616</attachid>
            <date>2024-02-28 11:45:39 +0300</date>
            <delta_ts>2024-02-28 11:45:39 +0300</delta_ts>
            <desc>openstack-keystone-deploy.sh</desc>
            <filename>openstack-keystone-deploy.sh</filename>
            <type>application/x-shellscript</type>
            <size>2880</size>
            <attacher name="Nikolai Zurabishvili">zurabishvilinn</attacher>
            
              <data encoding="base64">IyEvYmluL2Jhc2gKCiMgVXBkYXRlIHN5c3RlbSBhbmQgaW5zdGFsbCBuZWNlc3NhcnkgcGFja2Fn
ZXMKYXB0LWdldCB1cGRhdGUgJiYgYXB0LWdldCBkaXN0LXVwZ3JhZGUgLXkKYXB0LWdldCBpbnN0
YWxsIG9wZW5zdGFjay1rZXlzdG9uZSBweXRob24zLW1vZHVsZS1vcGVuc3RhY2tjbGllbnQgbWFy
aWFkYi1zZXJ2ZXIgbWVtY2FjaGVkIHJhYmJpdG1xLXNlcnZlciAteQoKIyBTdGFydCBuZWNlc3Nh
cnkgc2VydmljZXMKc3lzdGVtY3RsIGVuYWJsZSAtLW5vdyBtYXJpYWRiCnN5c3RlbWN0bCBlbmFi
bGUgLS1ub3cgbWVtY2FjaGVkCnN5c3RlbWN0bCBlbmFibGUgLS1ub3cgcmFiYml0bXEKCiMgQWRk
aW5nIGEgZGVsYXkgdG8gZW5zdXJlIE1hcmlhREIgc2VydmljZSBpcyBmdWxseSB1cCBhbmQgcnVu
bmluZwplY2hvICJXYWl0aW5nIGZvciBNYXJpYURCIHRvIGZ1bGx5IHN0YXJ0Li4uIgpzbGVlcCAx
MAoKIyBDb25maWd1cmUgTXlTUUwgZGF0YWJhc2UgZm9yIEtleXN0b25lCm15c3FsIC11IHJvb3Qg
LWUgIkNSRUFURSBEQVRBQkFTRSBrZXlzdG9uZTsiCm15c3FsIC11IHJvb3QgLWUgIkdSQU5UIEFM
TCBQUklWSUxFR0VTIE9OIGtleXN0b25lLiogVE8gJ2tleXN0b25lJ0AnbG9jYWxob3N0JyBJREVO
VElGSUVEIEJZICcxJzsiCm15c3FsIC11IHJvb3QgLWUgIkdSQU5UIEFMTCBQUklWSUxFR0VTIE9O
IGtleXN0b25lLiogVE8gJ2tleXN0b25lJ0AnJScgSURFTlRJRklFRCBCWSAnMSc7IgoKIyBDb25m
aWd1cmUgS2V5c3RvbmUKYXdrICcvXlxbZGF0YWJhc2VcXS97cD0xfSBwICYmIC9eJC8gJiYgIWEg
e3ByaW50ICJjb25uZWN0aW9uID0gbXlzcWwrcHlteXNxbDovL2tleXN0b25lOjFAMTI3LjAuMC4x
L2tleXN0b25lIjsgYT0xfSAxJyAvZXRjL2tleXN0b25lL2tleXN0b25lLmNvbmYgPiAvZXRjL2tl
eXN0b25lL2tleXN0b25lLmNvbmYudG1wICYmIG12IC9ldGMva2V5c3RvbmUva2V5c3RvbmUuY29u
Zi50bXAgL2V0Yy9rZXlzdG9uZS9rZXlzdG9uZS5jb25mCgojIEFzc3VtaW5nIGNhY2hlIGlzIGVu
YWJsZWQgYW5kIGJhY2tlbmQgY29uZmlndXJhdGlvbiBpcyBuZWVkZWQgb25jZQphd2sgJy9eXFtj
YWNoZVxdL3twPTF9IHAgJiYgL14kLyAmJiAhYSB7cHJpbnQgImVuYWJsZWQgPSB0cnVlXG5iYWNr
ZW5kID0gZG9ncGlsZS5jYWNoZS5tZW1jYWNoZWQiOyBhPTF9IDEnIC9ldGMva2V5c3RvbmUva2V5
c3RvbmUuY29uZiA+IC9ldGMva2V5c3RvbmUva2V5c3RvbmUuY29uZi50bXAgJiYgbXYgL2V0Yy9r
ZXlzdG9uZS9rZXlzdG9uZS5jb25mLnRtcCAvZXRjL2tleXN0b25lL2tleXN0b25lLmNvbmYKCiMg
Q29uZmlndXJlIE15U1FMIGZvciBPcGVuU3RhY2sKY2F0ID4gL2V0Yy9teS5jbmYuZC9vcGVuc3Rh
Y2suY25mIDw8T0VPRgpbbXlzcWxkXQpiaW5kLWFkZHJlc3MgPSAxMjcuMC4wLjEKZGVmYXVsdC1z
dG9yYWdlLWVuZ2luZSA9IGlubm9kYgppbm5vZGJfZmlsZV9wZXJfdGFibGUKbWF4X2Nvbm5lY3Rp
b25zID0gNDA5Ngpjb2xsYXRpb24tc2VydmVyID0gdXRmOF9nZW5lcmFsX2NpCmNoYXJhY3Rlci1z
ZXQtc2VydmVyID0gdXRmOApPRU9GCgpzZWQgLWkgIi9za2lwLW5ldHdvcmtpbmcvZCIgL2V0Yy9t
eS5jbmYuZC9zZXJ2ZXIuY25mCnN5c3RlbWN0bCByZXN0YXJ0IG1hcmlhZGIKCiMgS2V5c3RvbmUg
aW5pdGlhbCBzZXR1cAprZXlzdG9uZS1tYW5hZ2UgZGJfc3luYwprZXlzdG9uZS1tYW5hZ2UgZmVy
bmV0X3NldHVwIC0ta2V5c3RvbmUtdXNlciBrZXlzdG9uZSAtLWtleXN0b25lLWdyb3VwIGtleXN0
b25lCmtleXN0b25lLW1hbmFnZSBjcmVkZW50aWFsX3NldHVwIC0ta2V5c3RvbmUtdXNlciBrZXlz
dG9uZSAtLWtleXN0b25lLWdyb3VwIGtleXN0b25lCmtleXN0b25lLW1hbmFnZSBib290c3RyYXAg
LS1ib290c3RyYXAtcGFzc3dvcmQgMSAtLWJvb3RzdHJhcC1hZG1pbi11cmwgaHR0cDovLyQoaG9z
dG5hbWUgLWkpOjUwMDAvdjMvIC0tYm9vdHN0cmFwLWludGVybmFsLXVybCBodHRwOi8vJChob3N0
bmFtZSAtaSk6NTAwMC92My8gLS1ib290c3RyYXAtcHVibGljLXVybCBodHRwOi8vJChob3N0bmFt
ZSAtaSk6NTAwMC92My8gLS1ib290c3RyYXAtcmVnaW9uLWlkIFJlZ2lvbk9uZQoKY2hvd24gLVIg
a2V5c3RvbmU6a2V5c3RvbmUgL2V0Yy9rZXlzdG9uZQoKIyBBc3N1bWluZyBBcGFjaGUyIGlzIHVz
ZWQgZm9yIEtleXN0b25lCnN5c3RlbWN0bCBlbmFibGUgLS1ub3cgaHR0cGQyLnNlcnZpY2UKCiMg
U2V0IGVudmlyb25tZW50IHZhcmlhYmxlcyBmb3IgT3BlblN0YWNrIGNvbW1hbmRzCmNhdCA+IGF1
dGhfZGF0YSA8PEFFT0YKZXhwb3J0IE9TX0FVVEhfVVJMPWh0dHA6Ly8kKGhvc3RuYW1lIC1pKTo1
MDAwL3YzCmV4cG9ydCBPU19JREVOVElUWV9BUElfVkVSU0lPTj0zCmV4cG9ydCBPU19VU0VSTkFN
RT1hZG1pbgpleHBvcnQgT1NfUEFTU1dPUkQ9MQpleHBvcnQgT1NfUFJPSkVDVF9OQU1FPWFkbWlu
CmV4cG9ydCBPU19VU0VSX0RPTUFJTl9OQU1FPURlZmF1bHQKZXhwb3J0IE9TX1BST0pFQ1RfRE9N
QUlOX05BTUU9RGVmYXVsdApleHBvcnQgT1NfUkVHSU9OX05BTUU9UmVnaW9uT25lCkFFT0YKCnNv
dXJjZSBhdXRoX2RhdGEKCiMgQ3JlYXRlIGRvbWFpbiwgcHJvamVjdCwgYW5kIHNlcnZpY2UgZW50
aXRpZXMKb3BlbnN0YWNrIGRvbWFpbiBjcmVhdGUgLS1kZXNjcmlwdGlvbiAiQW4gRXhhbXBsZSBE
b21haW4iIGV4YW1wbGUKb3BlbnN0YWNrIHByb2plY3QgY3JlYXRlIC0tZG9tYWluIGRlZmF1bHQg
LS1kZXNjcmlwdGlvbiAiU2VydmljZSBQcm9qZWN0IiBzZXJ2aWNlCgojIHJhYmJpdG1xIHNldHVw
CnJhYmJpdG1xY3RsIGFkZF91c2VyIG9wZW5zdGFjayAxCnJhYmJpdG1xY3RsIHNldF9wZXJtaXNz
aW9ucyBvcGVuc3RhY2sgIi4qIiAiLioiICIuKiIK
</data>

          </attachment>
      

    </bug>

</bugzilla>