Neutron/FWaaS/FWaaS-ServiceGroup

In FWaaS, administrator can use port range and protocol inside firewall rules to define traffic type. But we don't have a flexible way to allow user to specify more than one type of traffic in the same rule.To support different traffic type, with the same source, destination address and action, different rules need to be created. This makes the process of defining firewall rules un-scalable so a new FWaaS extension with two resources service_group and service_object are added. multiple service group and service objects can be configured to allow flexibility and grouping of traffic. Service objects are grouped into service group that can be referenced from other openstack modules (eg. firewall rule, securitygroup etc). currently firewall rule has multiple service groups to allow the user flexibilty to define their own groups and use them without impacting the other users. Each service object can be defined with a timeout value that can be used to overwrite default session idle timeout value.

FWaaS SVG Blueprint

FWaaS SVG Patch

SVG python-neutronclient Patch

SVG Tempest

FWaaS SVG Testing
To set up firewalls and detailed info please follow firewall testing page  List of commands to facilitate data path configurations in line with current reference model (neutron) service-group-create sgc Created a new service_group: +-+--+ +-+--+ +-+--+ (neutron) service-object-create --protocol tcp --source-port-range 10000:20000 soc sgc Created a new service_object: +--+--+ +--+--+ +--+--+ (neutron) firewall-rule-create --service-group sgc --service-group sgc1 --action allow Created a new firewall_rule: ++--+ ++--+ ++--+
 * Field          | Value                                |
 * description    |                                      |
 * id             | 7bac1b2b-3c22-48da-b133-e295c8901de0 |
 * name           | sgc                                  |
 * service_objects |                                     |
 * tenant_id      | 3e7d8af46b474c239852105b2091259e     |
 * Field           | Value                                |
 * destination_port |                                     |
 * icmp_code       |                                      |
 * icmp_type       |                                      |
 * id              | 5a747451-7896-4d2b-90b3-d667b5306c5f |
 * name            | soc                                  |
 * protocol        | tcp                                  |
 * source_port     | 10000:20000                          |
 * tenant_id       | 3e7d8af46b474c239852105b2091259e     |
 * timeout         | 0                                    |
 * Field                 | Value                                |
 * action                | allow                                |
 * description           |                                      |
 * destination_ip_address |                                     |
 * destination_port      |                                      |
 * enabled               | True                                 |
 * firewall_policy_id    |                                      |
 * id                    | 7a8423bc-dcfc-4460-b423-2420437b89bf |
 * ip_version            | 4                                    |
 * name                  |                                      |
 * position              |                                      |
 * protocol              |                                      |
 * shared                | False                                |
 * source_ip_address     |                                      |
 * source_port           |                                      |
 * tenant_id             | 3e7d8af46b474c239852105b2091259e     |

Neutron API tests
Started with individual runs of the different API tests present for Neutron

Just used nosetests to run the tests individually as below:

/opt/stack/tempest$ nosetests tempest.api.network.test_service_groups.py