Allow to specify floating IP address

Launchpad blueprint:

https://blueprints.launchpad.net/neutron/+spec/allow-specific-floating-ip-address

Problem Description

IP Address of floating ip is automatically allocated from IP pool.

In some cases, user want to specify a IP Address of floating ip.

Proposed Change

Adding the floating ip address as an attribute to the API for creating floating ip. An attribute name is floating_ip_address.

Attributes of API are limited by “policy.json”. By default, Non-admin user cannot use floating_ip_address. Admin can use it. (“rule:admin_only”)

Alternatives

None

Data Model Impact

None

REST API Impact

  • floating_ip_address will be allowed to POST /v2.0/floatingips
  • It is not updatable. i.e. cannot use for PUT /v2.0/floatingips

The attribute map will be changed as the following.

RESOURCE_ATTRIBUTE_MAP = {
    ...
    'floatingips': {
        ...
        'floating_ip_address': {'allow_post': True, 'allow_put': False,
                                'validate': {'type:ip_address_or_none': None},
                                'is_visible': True, 'default': None,
                                'enforce_policy': True},
        ...
    },
    ...
}

Security Impact

An administrator of OpenStack should consider whether this feature is exposed to tenant user.

If users have a permission to use this feature, Users can control public ip addresses.

Notifications Impact

None

Other End User Impact

None

Performance Impact

None

IPv6 Impact

None

Other Deployer Impact

None

Developer Impact

None

Community Impact

None

Implementation

Assignee(s)

Primary assignee:
fujioka-yuuichi-d

Work Items

  1. Add attribute to API
  2. Create test case on tempest

Dependencies

None

Testing

Tempest Tests

The following tests will be added.

  • API Testing
    • Allowed users can use the new parameter
  • Scenario Testing
    • A created floating ip address is reachable

Functional Tests

The following tests will be added.

  • Allowed users can use the new parameter

API Tests

The following tests will be added.

  • All patterns that parameter is passed/not passed.

Documentation Impact

User Documentation

New attributes will be added to API documentation.

Developer Documentation

None