Browse Source

add "stateful-security-group" api extension

commit adds "stateful-security-group" API extension to
neutron-lib for implementing stateless security groups.

Needed-By: https://review.opendev.org/572767

Partial-Bug: #1753466

Change-Id: I72addb21b7515d7120768c91e02660258959373e
changes/70/696070/13
Aditya Reddy Nagaram 3 years ago
parent
commit
f470973446
  1. 6
      api-ref/source/v2/parameters.yaml
  2. 3
      api-ref/source/v2/samples/security-groups/security-group-create-request.json
  3. 3
      api-ref/source/v2/samples/security-groups/security-group-create-response.json
  4. 3
      api-ref/source/v2/samples/security-groups/security-group-show-response.json
  5. 3
      api-ref/source/v2/samples/security-groups/security-group-update-request.json
  6. 3
      api-ref/source/v2/samples/security-groups/security-group-update-response.json
  7. 3
      api-ref/source/v2/samples/security-groups/security-groups-list-response.json
  8. 13
      api-ref/source/v2/security-groups.inc
  9. 2
      neutron_lib/api/definitions/__init__.py
  10. 3
      neutron_lib/api/definitions/base.py
  11. 61
      neutron_lib/api/definitions/stateful_security_group.py
  12. 23
      neutron_lib/tests/unit/api/definitions/test_stateful_security_group.py
  13. 5
      releasenotes/notes/stateful-security-group-a1ece5472f029dc1.yaml

6
api-ref/source/v2/parameters.yaml

@ -5500,6 +5500,12 @@ state:
in: body
required: true
type: string
stateful_enabled:
description: |
Indicates if the security group is stateful or stateless.
in: body
required: false
type: boolean
status_description:
description: |
Human-readable description of the status.

3
api-ref/source/v2/samples/security-groups/security-group-create-request.json

@ -1,6 +1,7 @@
{
"security_group": {
"name": "new-webservers",
"description": "security group for webservers"
"description": "security group for webservers",
"stateful": true
}
}

3
api-ref/source/v2/samples/security-groups/security-group-create-response.json

@ -47,6 +47,7 @@
"updated_at": "2018-03-19T19:16:56Z",
"revision_number": 1,
"tags": ["tag1,tag2"],
"tenant_id": "e4f50856753b4dc6afee5fa6b9b6c550"
"tenant_id": "e4f50856753b4dc6afee5fa6b9b6c550",
"stateful": true
}
}

3
api-ref/source/v2/samples/security-groups/security-group-show-response.json

@ -82,6 +82,7 @@
"updated_at": "2018-03-19T19:16:56Z",
"revision_number": 4,
"tags": ["tag1,tag2"],
"tenant_id": "e4f50856753b4dc6afee5fa6b9b6c550"
"tenant_id": "e4f50856753b4dc6afee5fa6b9b6c550",
"stateful": true
}
}

3
api-ref/source/v2/samples/security-groups/security-group-update-request.json

@ -1,6 +1,7 @@
{
"security_group": {
"name": "mysecgroup",
"description": "my security group"
"description": "my security group",
"stateful": true
}
}

3
api-ref/source/v2/samples/security-groups/security-group-update-response.json

@ -9,6 +9,7 @@
"id": "01fbade5-b664-42f6-83ae-4e214f4263fa",
"name": "mysecgroup",
"description": "my security group",
"tags": ["tag1,tag2"]
"tags": ["tag1,tag2"],
"stateful": true
}
}

3
api-ref/source/v2/samples/security-groups/security-groups-list-response.json

@ -83,7 +83,8 @@
"created_at": "2018-03-19T19:16:56Z",
"updated_at": "2018-03-19T19:16:56Z",
"tags": ["tag1,tag2"],
"tenant_id": "e4f50856753b4dc6afee5fa6b9b6c550"
"tenant_id": "e4f50856753b4dc6afee5fa6b9b6c550",
"stateful": true
}
]
}

13
api-ref/source/v2/security-groups.inc

@ -20,6 +20,14 @@ The ``standard-attr-tag`` adds Tag support for resources with
standard attributes by adding the ``tags`` attribute
allowing consumers to associate tags with resources.
Stateful security groups extension (``stateful-security-group``)
================================================================
The stateful security group extension (``stateful-security-group``) adds the
``stateful`` field to security groups, allowing users to configure stateful
or stateless security groups for ``ports``. The existing security groups
will all be considered as stateful. Update of the ``stateful`` attribute is
allowed when there is no port associated with the security group.
List security groups
====================
@ -76,6 +84,7 @@ Response Parameters
- description: description
- security_group_rules: security_group_rules
- tags: tags
- stateful: stateful_enabled
Response Example
----------------
@ -107,6 +116,7 @@ Request
- project_id: project_id
- description: description-request
- name: name
- stateful: stateful_enabled
Request Example
---------------
@ -130,6 +140,7 @@ Response Parameters
- description: description
- security_group_rules: security_group_rules
- tags: tags
- stateful: stateful_enabled
Response Example
----------------
@ -181,6 +192,7 @@ Response Parameters
- description: description
- security_group_rules: security_group_rules
- tags: tags
- stateful: stateful_enabled
Response Example
----------------
@ -231,6 +243,7 @@ Response Parameters
- description: description
- security_group_rules: security_group_rules
- tags: tags
- stateful: stateful_enabled
Response Example
----------------

2
neutron_lib/api/definitions/__init__.py

@ -96,6 +96,7 @@ from neutron_lib.api.definitions import sfc
from neutron_lib.api.definitions import sort_key_validation
from neutron_lib.api.definitions import sorting
from neutron_lib.api.definitions import standard_attr_segment
from neutron_lib.api.definitions import stateful_security_group
from neutron_lib.api.definitions import subnet
from neutron_lib.api.definitions import subnet_dns_publish_fixed_ip
from neutron_lib.api.definitions import subnet_onboard
@ -200,6 +201,7 @@ _ALL_API_DEFINITIONS = {
sort_key_validation,
sorting,
standard_attr_segment,
stateful_security_group,
subnet,
subnet_dns_publish_fixed_ip,
subnet_onboard,

3
neutron_lib/api/definitions/base.py

@ -55,7 +55,8 @@ KNOWN_RESOURCES = (
'ports',
'routers',
'subnets',
'subnetpools'
'subnetpools',
'security_groups'
)
KNOWN_HTTP_ACTIONS = (

61
neutron_lib/api/definitions/stateful_security_group.py

@ -0,0 +1,61 @@
# Copyright 2018 NOKIA
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
from neutron_lib.api import converters
# The alias of the extension.
ALIAS = 'stateful-security-group'
IS_SHIM_EXTENSION = False
IS_STANDARD_ATTR_EXTENSION = False
# The name of the extension.
NAME = 'Stateful security group'
# The description of the extension.
DESCRIPTION = "Indicates if the security group is stateful or not"
# A timestamp of when the extension was introduced.
UPDATED_TIMESTAMP = "2019-11-26T09:00:00-00:00"
# The resource attribute map for the extension.
RESOURCE_ATTRIBUTE_MAP = {
'security_groups': {
'stateful': {'allow_post': True, 'allow_put': True,
'is_visible': True, 'default': True,
'convert_to': converters.convert_to_boolean}
}
}
# The subresource attribute map for the extension.
SUB_RESOURCE_ATTRIBUTE_MAP = {
}
# The action map.
ACTION_MAP = {
}
# The action status.
ACTION_STATUS = {
}
# The list of required extensions.
REQUIRED_EXTENSIONS = ['security-group']
# The list of optional extensions.
OPTIONAL_EXTENSIONS = [
]

23
neutron_lib/tests/unit/api/definitions/test_stateful_security_group.py

@ -0,0 +1,23 @@
# Copyright 2018 NOKIA
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
from neutron_lib.api.definitions import stateful_security_group
from neutron_lib.tests.unit.api.definitions import base
class StatefulSecurityGroupDefinitionTestCase(base.DefinitionBaseTestCase):
extension_module = stateful_security_group
extension_attributes = ('stateful',)

5
releasenotes/notes/stateful-security-group-a1ece5472f029dc1.yaml

@ -0,0 +1,5 @@
---
features:
- |
The API defintion for the ``stateful-security-group`` extension is
now available in ``neutron_lib.api.definitions.stateful_security_group``.
Loading…
Cancel
Save