Remove all of the os_ prefixes

The 2.10 transition has a routing.yml file that points each
individual module from ansible/ansible to a new location. That means
we can put:

    os_server:
      redirect: openstack.cloud.server

into lib/ansible/config/routing.yml in ansible/ansible and have
the result be the end user's playbooks still working with the
old names while providing new names that are less ugly.

This adds a routing file to our collection repo, as well as the
script used to generate the new mapping.

Change-Id: Ia5d18282b14ad0d86a347343be8bb477ae47130a
This commit is contained in:
Monty Taylor 2020-04-09 14:36:12 -05:00
parent 238387f2f8
commit 52905480b8
5 changed files with 443 additions and 10 deletions

View File

@ -3,10 +3,8 @@
OpenStack Ansible Modules
=========================
These are a set of modules for interacting with OpenStack as either an admin
or an end user. If the module does not begin with ``os_``, it's either deprecated
or soon to be. This document serves as developer coding guidelines for
modules intended to be here.
These are a set of modules for interacting with the OpenStack API as either an admin
or an end user.
.. contents::
:local:
@ -14,15 +12,11 @@ modules intended to be here.
Naming
------
* All module names should start with ``os_``
* This is a collection named ``openstack.cloud``. There is no need for further namespace prefixing.
* Name any module that a cloud consumer would expect to use after the logical resource it manages:
``os_server`` not ``os_nova``. This naming convention acknowledges that the end user does not care
``server`` not ``nova``. This naming convention acknowledges that the end user does not care
which service manages the resource - that is a deployment detail. For example cloud consumers may
not know whether their floating IPs are managed by Nova or Neutron.
* Name any module that a cloud admin would expect to use with the service and the resource:
``os_keystone_domain``.
* If the module is one that a cloud admin and a cloud consumer could both use,
the cloud consumer rules apply.
Interface
---------

307
meta/routing.yml Normal file
View File

@ -0,0 +1,307 @@
plugin_routing:
modules:
os_auth:
deprecation:
removal_date: TBD
warning_text: os_ prefixed module names are deprecated, use openstack.cloud.auth
redirect: openstack.cloud.auth
os_client_config:
deprecation:
removal_date: TBD
warning_text: os_ prefixed module names are deprecated, use openstack.cloud.config
redirect: openstack.cloud.config
os_coe_cluster:
deprecation:
removal_date: TBD
warning_text: os_ prefixed module names are deprecated, use openstack.cloud.coe_cluster
redirect: openstack.cloud.coe_cluster
os_coe_cluster_template:
deprecation:
removal_date: TBD
warning_text: os_ prefixed module names are deprecated, use openstack.cloud.coe_cluster_template
redirect: openstack.cloud.coe_cluster_template
os_flavor_info:
deprecation:
removal_date: TBD
warning_text: os_ prefixed module names are deprecated, use openstack.cloud.compute_flavor_info
redirect: openstack.cloud.compute_flavor_info
os_floating_ip:
deprecation:
removal_date: TBD
warning_text: os_ prefixed module names are deprecated, use openstack.cloud.floating_ip
redirect: openstack.cloud.floating_ip
os_group:
deprecation:
removal_date: TBD
warning_text: os_ prefixed module names are deprecated, use openstack.cloud.identity_group
redirect: openstack.cloud.identity_group
os_group_info:
deprecation:
removal_date: TBD
warning_text: os_ prefixed module names are deprecated, use openstack.cloud.identity_group_info
redirect: openstack.cloud.identity_group_info
os_image:
deprecation:
removal_date: TBD
warning_text: os_ prefixed module names are deprecated, use openstack.cloud.image
redirect: openstack.cloud.image
os_image_info:
deprecation:
removal_date: TBD
warning_text: os_ prefixed module names are deprecated, use openstack.cloud.image_info
redirect: openstack.cloud.image_info
os_ironic:
deprecation:
removal_date: TBD
warning_text: os_ prefixed module names are deprecated, use openstack.cloud.baremetal_node
redirect: openstack.cloud.baremetal_node
os_ironic_inspect:
deprecation:
removal_date: TBD
warning_text: os_ prefixed module names are deprecated, use openstack.cloud.baremetal_inspect
redirect: openstack.cloud.baremetal_inspect
os_ironic_node:
deprecation:
removal_date: TBD
warning_text: os_ prefixed module names are deprecated, use openstack.cloud.baremetal_node_action
redirect: openstack.cloud.baremetal_node_action
os_keypair:
deprecation:
removal_date: TBD
warning_text: os_ prefixed module names are deprecated, use openstack.cloud.keypair
redirect: openstack.cloud.keypair
os_keystone_domain:
deprecation:
removal_date: TBD
warning_text: os_ prefixed module names are deprecated, use openstack.cloud.identity_domain
redirect: openstack.cloud.identity_domain
os_keystone_domain_info:
deprecation:
removal_date: TBD
warning_text: os_ prefixed module names are deprecated, use openstack.cloud.identity_domain_info
redirect: openstack.cloud.identity_domain_info
os_keystone_endpoint:
deprecation:
removal_date: TBD
warning_text: os_ prefixed module names are deprecated, use openstack.cloud.endpoint
redirect: openstack.cloud.endpoint
os_keystone_federation_protocol:
deprecation:
removal_date: TBD
warning_text: os_ prefixed module names are deprecated, use openstack.cloud.keystone_federation_protocol
redirect: openstack.cloud.keystone_federation_protocol
os_keystone_federation_protocol_info:
deprecation:
removal_date: TBD
warning_text: os_ prefixed module names are deprecated, use openstack.cloud.keystone_federation_protocol_info
redirect: openstack.cloud.keystone_federation_protocol_info
os_keystone_identity_provider:
deprecation:
removal_date: TBD
warning_text: os_ prefixed module names are deprecated, use openstack.cloud.federation_idp
redirect: openstack.cloud.federation_idp
os_keystone_identity_provider_info:
deprecation:
removal_date: TBD
warning_text: os_ prefixed module names are deprecated, use openstack.cloud.federation_idp_info
redirect: openstack.cloud.federation_idp_info
os_keystone_mapping:
deprecation:
removal_date: TBD
warning_text: os_ prefixed module names are deprecated, use openstack.cloud.federation_mapping
redirect: openstack.cloud.federation_mapping
os_keystone_mapping_info:
deprecation:
removal_date: TBD
warning_text: os_ prefixed module names are deprecated, use openstack.cloud.federation_mapping_info
redirect: openstack.cloud.federation_mapping_info
os_keystone_role:
deprecation:
removal_date: TBD
warning_text: os_ prefixed module names are deprecated, use openstack.cloud.identity_role
redirect: openstack.cloud.identity_role
os_keystone_service:
deprecation:
removal_date: TBD
warning_text: os_ prefixed module names are deprecated, use openstack.cloud.catalog_service
redirect: openstack.cloud.catalog_service
os_listener:
deprecation:
removal_date: TBD
warning_text: os_ prefixed module names are deprecated, use openstack.cloud.lb_listener
redirect: openstack.cloud.lb_listener
os_loadbalancer:
deprecation:
removal_date: TBD
warning_text: os_ prefixed module names are deprecated, use openstack.cloud.loadbalancer
redirect: openstack.cloud.loadbalancer
os_member:
deprecation:
removal_date: TBD
warning_text: os_ prefixed module names are deprecated, use openstack.cloud.lb_member
redirect: openstack.cloud.lb_member
os_network:
deprecation:
removal_date: TBD
warning_text: os_ prefixed module names are deprecated, use openstack.cloud.network
redirect: openstack.cloud.network
os_networks_info:
deprecation:
removal_date: TBD
warning_text: os_ prefixed module names are deprecated, use openstack.cloud.networks_info
redirect: openstack.cloud.networks_info
os_nova_flavor:
deprecation:
removal_date: TBD
warning_text: os_ prefixed module names are deprecated, use openstack.cloud.compute_flavor
redirect: openstack.cloud.compute_flavor
os_nova_host_aggregate:
deprecation:
removal_date: TBD
warning_text: os_ prefixed module names are deprecated, use openstack.cloud.host_aggregate
redirect: openstack.cloud.host_aggregate
os_object:
deprecation:
removal_date: TBD
warning_text: os_ prefixed module names are deprecated, use openstack.cloud.object
redirect: openstack.cloud.object
os_pool:
deprecation:
removal_date: TBD
warning_text: os_ prefixed module names are deprecated, use openstack.cloud.lb_pool
redirect: openstack.cloud.lb_pool
os_port:
deprecation:
removal_date: TBD
warning_text: os_ prefixed module names are deprecated, use openstack.cloud.port
redirect: openstack.cloud.port
os_port_info:
deprecation:
removal_date: TBD
warning_text: os_ prefixed module names are deprecated, use openstack.cloud.port_info
redirect: openstack.cloud.port_info
os_project:
deprecation:
removal_date: TBD
warning_text: os_ prefixed module names are deprecated, use openstack.cloud.project
redirect: openstack.cloud.project
os_project_access:
deprecation:
removal_date: TBD
warning_text: os_ prefixed module names are deprecated, use openstack.cloud.project_access
redirect: openstack.cloud.project_access
os_project_info:
deprecation:
removal_date: TBD
warning_text: os_ prefixed module names are deprecated, use openstack.cloud.project_info
redirect: openstack.cloud.project_info
os_quota:
deprecation:
removal_date: TBD
warning_text: os_ prefixed module names are deprecated, use openstack.cloud.quota
redirect: openstack.cloud.quota
os_recordset:
deprecation:
removal_date: TBD
warning_text: os_ prefixed module names are deprecated, use openstack.cloud.recordset
redirect: openstack.cloud.recordset
os_router:
deprecation:
removal_date: TBD
warning_text: os_ prefixed module names are deprecated, use openstack.cloud.router
redirect: openstack.cloud.router
os_routers_info:
deprecation:
removal_date: TBD
warning_text: os_ prefixed module names are deprecated, use openstack.cloud.routers_info
redirect: openstack.cloud.routers_info
os_security_group:
deprecation:
removal_date: TBD
warning_text: os_ prefixed module names are deprecated, use openstack.cloud.security_group
redirect: openstack.cloud.security_group
os_security_group_rule:
deprecation:
removal_date: TBD
warning_text: os_ prefixed module names are deprecated, use openstack.cloud.security_group_rule
redirect: openstack.cloud.security_group_rule
os_server:
deprecation:
removal_date: TBD
warning_text: os_ prefixed module names are deprecated, use openstack.cloud.server
redirect: openstack.cloud.server
os_server_action:
deprecation:
removal_date: TBD
warning_text: os_ prefixed module names are deprecated, use openstack.cloud.server_action
redirect: openstack.cloud.server_action
os_server_group:
deprecation:
removal_date: TBD
warning_text: os_ prefixed module names are deprecated, use openstack.cloud.server_group
redirect: openstack.cloud.server_group
os_server_info:
deprecation:
removal_date: TBD
warning_text: os_ prefixed module names are deprecated, use openstack.cloud.server_info
redirect: openstack.cloud.server_info
os_server_metadata:
deprecation:
removal_date: TBD
warning_text: os_ prefixed module names are deprecated, use openstack.cloud.server_metadata
redirect: openstack.cloud.server_metadata
os_server_volume:
deprecation:
removal_date: TBD
warning_text: os_ prefixed module names are deprecated, use openstack.cloud.server_volume
redirect: openstack.cloud.server_volume
os_stack:
deprecation:
removal_date: TBD
warning_text: os_ prefixed module names are deprecated, use openstack.cloud.stack
redirect: openstack.cloud.stack
os_subnet:
deprecation:
removal_date: TBD
warning_text: os_ prefixed module names are deprecated, use openstack.cloud.subnet
redirect: openstack.cloud.subnet
os_subnets_info:
deprecation:
removal_date: TBD
warning_text: os_ prefixed module names are deprecated, use openstack.cloud.subnets_info
redirect: openstack.cloud.subnets_info
os_user:
deprecation:
removal_date: TBD
warning_text: os_ prefixed module names are deprecated, use openstack.cloud.identity_user
redirect: openstack.cloud.identity_user
os_user_group:
deprecation:
removal_date: TBD
warning_text: os_ prefixed module names are deprecated, use openstack.cloud.group_assignment
redirect: openstack.cloud.group_assignment
os_user_info:
deprecation:
removal_date: TBD
warning_text: os_ prefixed module names are deprecated, use openstack.cloud.identity_user_info
redirect: openstack.cloud.identity_user_info
os_user_role:
deprecation:
removal_date: TBD
warning_text: os_ prefixed module names are deprecated, use openstack.cloud.role_assignment
redirect: openstack.cloud.role_assignment
os_volume:
deprecation:
removal_date: TBD
warning_text: os_ prefixed module names are deprecated, use openstack.cloud.volume
redirect: openstack.cloud.volume
os_volume_snapshot:
deprecation:
removal_date: TBD
warning_text: os_ prefixed module names are deprecated, use openstack.cloud.volume_snapshot
redirect: openstack.cloud.volume_snapshot
os_zone:
deprecation:
removal_date: TBD
warning_text: os_ prefixed module names are deprecated, use openstack.cloud.dns_zone
redirect: openstack.cloud.dns_zone

View File

@ -14,3 +14,5 @@ tests/unit/modules/conftest.py future-import-boilerplate
tests/unit/modules/conftest.py metaclass-boilerplate
tests/unit/modules/utils.py future-import-boilerplate
tests/unit/modules/utils.py metaclass-boilerplate
tools/groups-to-routing.py compile-2.7!skip
tools/groups-to-routing.py compile-3.5!skip

View File

@ -14,3 +14,5 @@ tests/unit/modules/conftest.py future-import-boilerplate
tests/unit/modules/conftest.py metaclass-boilerplate
tests/unit/modules/utils.py future-import-boilerplate
tests/unit/modules/utils.py metaclass-boilerplate
tools/groups-to-routing.py compile-2.7!skip
tools/groups-to-routing.py compile-3.5!skip

128
tools/groups-to-routing.py Normal file
View File

@ -0,0 +1,128 @@
import os
import yaml
overrides = dict(
os_client_config='config',
os_endpoint='catalog_endpoint',
os_flavor_info='compute_flavor_info',
os_flavor='compute_flavor',
os_group_info='identity_group_info',
os_group='identity_group',
os_ironic_node='baremetal_node_action',
os_ironic_inspect='baremetal_inspect',
os_ironic='baremetal_node',
os_keystone_domain_info='identity_domain_info',
os_keystone_domain='identity_domain',
os_keystone_endpoint='endpoint',
os_keystone_identity_provider_info='federation_idp_info',
os_keystone_identity_provider='federation_idp',
os_keystone_mapping_info='federation_mapping_info',
os_keystone_mapping='federation_mapping',
os_keystone_role='identity_role',
os_keystone_service='catalog_service',
os_listener='lb_listener',
os_member='lb_member',
os_nova_flavor='compute_flavor',
os_nova_host_aggregate='host_aggregate',
os_pool='lb_pool',
os_user_group='group_assignment',
os_user_info='identity_user_info',
os_user_role='role_assignment',
os_user='identity_user',
os_zone='dns_zone',
)
old_list = []
new_list = []
module_routing = dict()
mapping = dict()
os.system('git checkout HEAD^1 meta/action_groups.yml plugins ci')
groups = yaml.safe_load(open('meta/action_groups.yml', 'r'))
# Do override keys first so that they're done in sequence
for module in list(overrides.keys()) + groups['os']:
old_list.append(module)
new_name = overrides.get(module, module.replace('os_', ''))
new_list.append(new_name)
mapping[module] = new_name
module_routing[module] = dict(
deprecation=dict(
removal_date='TBD',
warning_text=(
'os_ prefixed module names are deprecated, use'
f' openstack.cloud.{new_name}'
),
),
redirect=f'openstack.cloud.{new_name}',
)
groups['os'] = sorted(new_list) + sorted(old_list)
groups['openstack'] = sorted(new_list)
yaml.dump(groups, open('meta/action_groups.yml', 'w'))
routing = dict(plugin_routing=dict(modules=module_routing))
yaml.dump(routing, open('meta/routing.yml', 'w'))
def replace_content(content):
for old, new in mapping.items():
content = content.replace(
f'modules import {old}',
f'modules import {new}',
)
content = content.replace(
f'modules.{old}',
f'modules.{new}',
)
content = content.replace(
f'self.module = {old}',
f'self.module = {new}',
)
content = content.replace(
f'test_{old}',
f'test_{new}',
)
content = content.replace(
f'openstack.cloud.{old}',
f'openstack.cloud.{new}',
)
content = content.replace(
old,
f'openstack.cloud.{new}',
)
content = content.replace(
'module: openstack.cloud.',
'module: ',
)
return content
for todo_path in ('ci', 'plugins', 'tests'):
for (dirpath, dirnames, filenames) in os.walk(todo_path):
for filename in filenames:
contents = None
oldfile = os.path.join(dirpath, filename)
with open(oldfile, 'r') as infile:
contents = replace_content(infile.read())
with open(oldfile, 'w') as outfile:
outfile.write(contents)
if filename.endswith('.py'):
old_file_base = os.path.splitext(filename)[0]
if old_file_base in mapping:
new_file_base = mapping[old_file_base]
newfile = os.path.join(dirpath, f'{new_file_base}.py')
os.system(f'git mv {oldfile} {newfile}')
os.system(f'ln -s {new_file_base}.py {oldfile}')
os.system(f'git add {oldfile}')
continue
if not filename.startswith('test_'):
continue
old_file_module_base = old_file_base[5:]
new_file_base = mapping.get(old_file_module_base)
if not new_file_base:
continue
newfile = os.path.join(dirpath, f'test_{new_file_base}.py')
os.system(f'git mv {oldfile} {newfile}')
print("Edit tests/unit/modules/cloud/openstack/test_server.py by hand")