python3: overcloud deployment with network isolation fails
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
tripleo |
Fix Released
|
High
|
Emilien Macchi |
Bug Description
Deploying an overcloud on a host with Python 3 only fails if network isolation is enabled:
Creating Swift container to store the plan
Creating plan from template files in: /tmp/tripleocli
Exception occured while running the command
Traceback (most recent call last):
File "/usr/lib64/
self.
TypeError: a bytes-like object is required, not 'str'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/usr/lib/
super(Command, self).run(
File "/usr/lib/
return super(Command, self).run(
File "/usr/lib/
return_code = self.take_
File "/usr/lib/
self.
File "/usr/lib/
new_tht_root, tht_root)
File "/usr/lib/
parsed_
File "/usr/lib/
plan_env_file, networks_file)
File "/usr/lib/
utils.
File "/usr/lib/
swift_
File "/usr/lib/
response_
File "/usr/lib/
service_
File "/usr/lib/
conn.
File "/usr/lib/
return self.request('PUT', full_path, data, headers, files)
File "/usr/lib/
files=files, **self.
File "/usr/lib/
return self.request_
File "/usr/lib/
resp = self.send(prep, **send_kwargs)
File "/usr/lib/
r = adapter.
File "/usr/lib/
low_
File "/usr/lib64/
self.
TypeError: a bytes-like object is required, not 'str'
a bytes-like object is required, not 'str'
Changed in tripleo: | |
milestone: | none → stein-3 |
importance: | Undecided → High |
status: | New → Triaged |
assignee: | nobody → Emilien Macchi (emilienm) |
Here is a smaller reproducer (aka one that uses the newly-introduced wrappers for swift) python3. 6/http/ client. py", line 986, in send sock.sendall( data)
(undercloud) [stack@undercloud-0 ~]$ echo 'test' > /tmp/foo
(undercloud) [stack@undercloud-0 ~]$ python3 prova.py
Traceback (most recent call last):
File "/usr/lib64/
self.
TypeError: a bytes-like object is required, not 'str'
During handling of the above exception, another exception occurred:
Traceback (most recent call last): put_object_ string( conn, 'overcloud', 'foo', file_content) python3. 6/site- packages/ tripleo_ common/ utils/swift. py", line 192, in put_object_string object( container, object_name, contents) python3. 6/site- packages/ swiftclient/ client. py", line 1895, in put_object dict=response_ dict) python3. 6/site- packages/ swiftclient/ client. py", line 1737, in _retry token=self. service_ token, **kwargs) python3. 6/site- packages/ swiftclient/ client. py", line 1364, in put_object putrequest( path, headers=headers, data=data) python3. 6/site- packages/ swiftclient/ client. py", line 468, in putrequest python3. 6/site- packages/ swiftclient/ client. py", line 458, in request requests_ args) python3. 6/site- packages/ swiftclient/ client. py", line 441, in _request session. request( *arg, **kwarg) python3. 6/site- packages/ requests/ sessions. py", line 524, in request python3. 6/site- packages/ requests/ sessions. py", line 637, in send send(request, **kwargs) python3. 6/site- packages/ requests/ adapters. py", line 472, in send conn.send( i) python3. 6/http/ client. py", line 990, in send sock.sendall( d) identity import v3 common. utils import swift as swiftutils
File "prova.py", line 26, in <module>
swiftutils.
File "/usr/lib/
return swift.put_
File "/usr/lib/
response_
File "/usr/lib/
service_
File "/usr/lib/
conn.
File "/usr/lib/
return self.request('PUT', full_path, data, headers, files)
File "/usr/lib/
files=files, **self.
File "/usr/lib/
return self.request_
File "/usr/lib/
resp = self.send(prep, **send_kwargs)
File "/usr/lib/
r = adapter.
File "/usr/lib/
low_
File "/usr/lib64/
self.
TypeError: a bytes-like object is required, not 'str'
(undercloud) [stack@undercloud-0 ~]$ cat prova.py
from keystoneauth1 import session
from keystoneauth1.
from swiftclient.client import Connection
from tripleo_
_authurl = 'http:// 192.168. 24.1:5000/ v3/' hiera.yaml keystone: :admin_ password) vwJefUgMGAA' domain_ name': 'Default', domain_ name': 'Default',
_auth_version = '3'
_user = 'admin'
# (sudo hiera -c /etc/puppet/
_key = '6aMpWobr5ySX47
_os_options = {
'user_
'project_
'project_name': 'admin'
}
conn = Connection( _authurl, options= _os_options, version= _auth_version
authurl=
user=_user,
key=_key,
os_
auth_
)
with open('/tmp/foo') as file_content: put_object_ string( conn, 'overcloud', 'foo', file_content)
swiftutils.