- tox: [ client.0 ]
- keystone:
client.0:
- sha1: 12.0.0.0b2
+ sha1: 17.0.0.0rc2
force-branch: master
- tenants:
+ domains:
+ - name: default
+ description: Default Domain
+ projects:
- name: admin
description: Admin Tenant
+ domain: default
users:
- name: admin
password: ADMIN
project: admin
+ domain: default
roles: [ name: admin, name: Member ]
role-mappings:
- name: admin
identity:
uri: http://{keystone_public_host}:{keystone_public_port}/v2.0/
uri_v3: http://{keystone_public_host}:{keystone_public_port}/v3/
+ auth_version: v3
admin_role: admin
+ default_domain_name: default
object-storage:
reseller_admin_role: admin
object-storage-feature-enabled:
osd_min_pg_log_entries: 10
osd_max_pg_log_entries: 10
client:
+ rgw keystone api version: 3
rgw keystone admin token: ADMIN
rgw keystone accepted roles: admin,Member
rgw keystone implicit tenants: true
keyrepo_dir = '{kdir}/etc/fernet-keys'.format(kdir=get_keystone_dir(ctx))
for (client, _) in config.items():
# prepare the config file
+ run_in_keystone_dir(ctx, client,
+ [
+ 'source',
+ f'{get_toxvenv_dir(ctx)}/bin/activate',
+ run.Raw('&&'),
+ 'tox', '-e', 'genconfig'
+ ])
run_in_keystone_dir(ctx, client,
[
'cp', '-f',
auth_section = [
( 'os-token', 'ADMIN' ),
- ( 'os-identity-api-version', '2.0' ),
- ( 'os-url', 'http://{host}:{port}/v2.0'.format(host=admin_host,
+ ( 'os-identity-api-version', '3' ),
+ ( 'os-url', 'http://{host}:{port}/v3'.format(host=admin_host,
port=admin_port) ),
]
[ '--debug' ])
def create_endpoint(ctx, cclient, service, url, adminurl=None):
- endpoint_section = {
- 'service': service,
- 'publicurl': url,
- }
+ endpoint_sections = [
+ {'service': service, 'interface': 'public', 'url': url},
+ ]
if adminurl:
- endpoint_section.update( {
- 'adminurl': adminurl,
- } )
- return run_section_cmds(ctx, cclient, 'endpoint create', 'service',
- [ endpoint_section ])
+ endpoint_sections.append(
+ {'service': service, 'interface': 'admin', 'url': adminurl}
+ )
+ run_section_cmds(ctx, cclient, 'endpoint create',
+ 'service,interface,url',
+ endpoint_sections)
@contextlib.contextmanager
def fill_keystone(ctx, config):
for (cclient, cconfig) in config.items():
# configure tenants/projects
+ run_section_cmds(ctx, cclient, 'domain create', 'name',
+ cconfig['domains'])
run_section_cmds(ctx, cclient, 'project create', 'name',
- cconfig['tenants'])
+ cconfig['projects'])
run_section_cmds(ctx, cclient, 'user create', 'name',
cconfig['users'])
run_section_cmds(ctx, cclient, 'role create', 'name',
cconfig['roles'])
run_section_cmds(ctx, cclient, 'role add', 'name',
cconfig['role-mappings'])
- run_section_cmds(ctx, cclient, 'service create', 'name',
+ run_section_cmds(ctx, cclient, 'service create', 'type',
cconfig['services'])
public_host, public_port = ctx.keystone.public_endpoints[cclient]
- url = 'http://{host}:{port}/v2.0'.format(host=public_host,
+ url = 'http://{host}:{port}/v3'.format(host=public_host,
port=public_port)
admin_host, admin_port = ctx.keystone.admin_endpoints[cclient]
- admin_url = 'http://{host}:{port}/v2.0'.format(host=admin_host,
+ admin_url = 'http://{host}:{port}/v3'.format(host=admin_host,
port=admin_port)
create_endpoint(ctx, cclient, 'keystone', url, admin_url)
# for the deferred endpoint creation; currently it's used in rgw.py
- keystone:
client.0:
force-branch: master
- tenants:
+ domains:
+ - name: default
+ description: Default Domain
+ projects:
- name: admin
description: Admin Tenant
users: