octavia 12.0.0.0rc2__py3-none-any.whl → 13.0.0.0rc1__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- octavia/amphorae/backends/agent/api_server/osutils.py +1 -0
- octavia/amphorae/backends/agent/api_server/plug.py +21 -7
- octavia/amphorae/backends/agent/api_server/templates/amphora-netns.systemd.j2 +2 -2
- octavia/amphorae/backends/agent/api_server/util.py +21 -0
- octavia/amphorae/backends/health_daemon/health_daemon.py +9 -3
- octavia/amphorae/backends/health_daemon/health_sender.py +2 -0
- octavia/amphorae/backends/utils/interface.py +14 -6
- octavia/amphorae/backends/utils/interface_file.py +6 -3
- octavia/amphorae/backends/utils/keepalivedlvs_query.py +8 -9
- octavia/amphorae/drivers/driver_base.py +1 -2
- octavia/amphorae/drivers/haproxy/rest_api_driver.py +11 -25
- octavia/amphorae/drivers/health/heartbeat_udp.py +34 -24
- octavia/amphorae/drivers/keepalived/jinja/jinja_cfg.py +3 -12
- octavia/amphorae/drivers/noop_driver/driver.py +3 -5
- octavia/api/common/pagination.py +4 -4
- octavia/api/drivers/amphora_driver/v2/driver.py +11 -5
- octavia/api/drivers/driver_agent/driver_get.py +22 -14
- octavia/api/drivers/driver_agent/driver_updater.py +8 -4
- octavia/api/drivers/utils.py +4 -2
- octavia/api/healthcheck/healthcheck_plugins.py +4 -2
- octavia/api/root_controller.py +4 -1
- octavia/api/v2/controllers/amphora.py +35 -38
- octavia/api/v2/controllers/availability_zone_profiles.py +43 -33
- octavia/api/v2/controllers/availability_zones.py +22 -18
- octavia/api/v2/controllers/flavor_profiles.py +37 -28
- octavia/api/v2/controllers/flavors.py +19 -15
- octavia/api/v2/controllers/health_monitor.py +44 -33
- octavia/api/v2/controllers/l7policy.py +52 -40
- octavia/api/v2/controllers/l7rule.py +68 -55
- octavia/api/v2/controllers/listener.py +88 -61
- octavia/api/v2/controllers/load_balancer.py +52 -34
- octavia/api/v2/controllers/member.py +63 -52
- octavia/api/v2/controllers/pool.py +55 -42
- octavia/api/v2/controllers/quotas.py +5 -3
- octavia/api/v2/types/listener.py +15 -0
- octavia/cmd/octavia_worker.py +0 -3
- octavia/cmd/status.py +1 -4
- octavia/common/clients.py +25 -45
- octavia/common/config.py +64 -22
- octavia/common/constants.py +3 -2
- octavia/common/data_models.py +7 -1
- octavia/common/jinja/haproxy/combined_listeners/jinja_cfg.py +12 -1
- octavia/common/jinja/haproxy/combined_listeners/templates/macros.j2 +5 -2
- octavia/common/jinja/lvs/jinja_cfg.py +4 -2
- octavia/common/keystone.py +58 -5
- octavia/common/validate.py +35 -0
- octavia/compute/drivers/noop_driver/driver.py +6 -0
- octavia/controller/healthmanager/health_manager.py +3 -6
- octavia/controller/housekeeping/house_keeping.py +36 -37
- octavia/controller/worker/amphora_rate_limit.py +5 -4
- octavia/controller/worker/task_utils.py +57 -41
- octavia/controller/worker/v2/controller_worker.py +160 -103
- octavia/controller/worker/v2/flows/listener_flows.py +3 -0
- octavia/controller/worker/v2/flows/load_balancer_flows.py +9 -14
- octavia/controller/worker/v2/tasks/amphora_driver_tasks.py +152 -91
- octavia/controller/worker/v2/tasks/compute_tasks.py +4 -2
- octavia/controller/worker/v2/tasks/database_tasks.py +542 -400
- octavia/controller/worker/v2/tasks/network_tasks.py +119 -79
- octavia/db/api.py +26 -23
- octavia/db/base_models.py +2 -2
- octavia/db/healthcheck.py +2 -1
- octavia/db/migration/alembic_migrations/versions/632152d2d32e_add_http_strict_transport_security_.py +42 -0
- octavia/db/models.py +12 -2
- octavia/db/prepare.py +2 -0
- octavia/db/repositories.py +462 -482
- octavia/hacking/checks.py +1 -1
- octavia/network/base.py +0 -14
- octavia/network/drivers/neutron/allowed_address_pairs.py +92 -135
- octavia/network/drivers/neutron/base.py +65 -77
- octavia/network/drivers/neutron/utils.py +69 -85
- octavia/network/drivers/noop_driver/driver.py +0 -7
- octavia/statistics/drivers/update_db.py +10 -10
- octavia/tests/common/constants.py +91 -84
- octavia/tests/common/sample_data_models.py +13 -1
- octavia/tests/fixtures.py +32 -0
- octavia/tests/functional/amphorae/backend/agent/api_server/test_server.py +9 -10
- octavia/tests/functional/api/drivers/driver_agent/test_driver_agent.py +260 -15
- octavia/tests/functional/api/test_root_controller.py +3 -28
- octavia/tests/functional/api/v2/base.py +5 -3
- octavia/tests/functional/api/v2/test_amphora.py +18 -5
- octavia/tests/functional/api/v2/test_availability_zone_profiles.py +1 -0
- octavia/tests/functional/api/v2/test_listener.py +51 -19
- octavia/tests/functional/api/v2/test_load_balancer.py +10 -1
- octavia/tests/functional/db/base.py +31 -16
- octavia/tests/functional/db/test_models.py +27 -28
- octavia/tests/functional/db/test_repositories.py +407 -50
- octavia/tests/unit/amphorae/backends/agent/api_server/test_amphora_info.py +2 -0
- octavia/tests/unit/amphorae/backends/agent/api_server/test_osutils.py +1 -1
- octavia/tests/unit/amphorae/backends/agent/api_server/test_plug.py +54 -6
- octavia/tests/unit/amphorae/backends/agent/api_server/test_util.py +35 -0
- octavia/tests/unit/amphorae/backends/health_daemon/test_health_daemon.py +8 -0
- octavia/tests/unit/amphorae/backends/health_daemon/test_health_sender.py +18 -0
- octavia/tests/unit/amphorae/backends/utils/test_interface.py +81 -0
- octavia/tests/unit/amphorae/backends/utils/test_interface_file.py +2 -0
- octavia/tests/unit/amphorae/backends/utils/test_keepalivedlvs_query.py +129 -5
- octavia/tests/unit/amphorae/drivers/haproxy/test_rest_api_driver_1_0.py +42 -20
- octavia/tests/unit/amphorae/drivers/health/test_heartbeat_udp.py +18 -20
- octavia/tests/unit/amphorae/drivers/keepalived/jinja/test_jinja_cfg.py +4 -4
- octavia/tests/unit/amphorae/drivers/noop_driver/test_driver.py +4 -1
- octavia/tests/unit/api/drivers/driver_agent/test_driver_get.py +3 -3
- octavia/tests/unit/api/drivers/driver_agent/test_driver_updater.py +11 -13
- octavia/tests/unit/base.py +6 -0
- octavia/tests/unit/cmd/test_interface.py +2 -2
- octavia/tests/unit/cmd/test_status.py +2 -2
- octavia/tests/unit/common/jinja/haproxy/combined_listeners/test_jinja_cfg.py +152 -1
- octavia/tests/unit/common/sample_configs/sample_configs_combined.py +10 -3
- octavia/tests/unit/common/test_clients.py +0 -39
- octavia/tests/unit/common/test_keystone.py +54 -0
- octavia/tests/unit/common/test_validate.py +67 -0
- octavia/tests/unit/controller/healthmanager/test_health_manager.py +8 -22
- octavia/tests/unit/controller/housekeeping/test_house_keeping.py +3 -64
- octavia/tests/unit/controller/worker/test_amphora_rate_limit.py +1 -1
- octavia/tests/unit/controller/worker/test_task_utils.py +44 -24
- octavia/tests/unit/controller/worker/v2/flows/test_load_balancer_flows.py +0 -1
- octavia/tests/unit/controller/worker/v2/tasks/test_amphora_driver_tasks.py +49 -26
- octavia/tests/unit/controller/worker/v2/tasks/test_database_tasks.py +399 -196
- octavia/tests/unit/controller/worker/v2/tasks/test_database_tasks_quota.py +37 -64
- octavia/tests/unit/controller/worker/v2/tasks/test_network_tasks.py +3 -14
- octavia/tests/unit/controller/worker/v2/test_controller_worker.py +2 -2
- octavia/tests/unit/network/drivers/neutron/test_allowed_address_pairs.py +456 -561
- octavia/tests/unit/network/drivers/neutron/test_base.py +181 -194
- octavia/tests/unit/network/drivers/neutron/test_utils.py +14 -30
- octavia/tests/unit/statistics/drivers/test_update_db.py +7 -5
- {octavia-12.0.0.0rc2.data → octavia-13.0.0.0rc1.data}/data/share/octavia/README.rst +1 -1
- {octavia-12.0.0.0rc2.dist-info → octavia-13.0.0.0rc1.dist-info}/AUTHORS +4 -0
- {octavia-12.0.0.0rc2.dist-info → octavia-13.0.0.0rc1.dist-info}/METADATA +4 -4
- {octavia-12.0.0.0rc2.dist-info → octavia-13.0.0.0rc1.dist-info}/RECORD +141 -189
- {octavia-12.0.0.0rc2.dist-info → octavia-13.0.0.0rc1.dist-info}/entry_points.txt +1 -2
- octavia-13.0.0.0rc1.dist-info/pbr.json +1 -0
- octavia/api/drivers/amphora_driver/v1/__init__.py +0 -11
- octavia/api/drivers/amphora_driver/v1/driver.py +0 -547
- octavia/controller/queue/v1/__init__.py +0 -11
- octavia/controller/queue/v1/consumer.py +0 -64
- octavia/controller/queue/v1/endpoints.py +0 -160
- octavia/controller/worker/v1/__init__.py +0 -11
- octavia/controller/worker/v1/controller_worker.py +0 -1157
- octavia/controller/worker/v1/flows/__init__.py +0 -11
- octavia/controller/worker/v1/flows/amphora_flows.py +0 -610
- octavia/controller/worker/v1/flows/health_monitor_flows.py +0 -105
- octavia/controller/worker/v1/flows/l7policy_flows.py +0 -94
- octavia/controller/worker/v1/flows/l7rule_flows.py +0 -100
- octavia/controller/worker/v1/flows/listener_flows.py +0 -128
- octavia/controller/worker/v1/flows/load_balancer_flows.py +0 -692
- octavia/controller/worker/v1/flows/member_flows.py +0 -230
- octavia/controller/worker/v1/flows/pool_flows.py +0 -127
- octavia/controller/worker/v1/tasks/__init__.py +0 -11
- octavia/controller/worker/v1/tasks/amphora_driver_tasks.py +0 -453
- octavia/controller/worker/v1/tasks/cert_task.py +0 -51
- octavia/controller/worker/v1/tasks/compute_tasks.py +0 -335
- octavia/controller/worker/v1/tasks/database_tasks.py +0 -2756
- octavia/controller/worker/v1/tasks/lifecycle_tasks.py +0 -173
- octavia/controller/worker/v1/tasks/model_tasks.py +0 -41
- octavia/controller/worker/v1/tasks/network_tasks.py +0 -970
- octavia/controller/worker/v1/tasks/retry_tasks.py +0 -74
- octavia/tests/unit/api/drivers/amphora_driver/v1/__init__.py +0 -11
- octavia/tests/unit/api/drivers/amphora_driver/v1/test_driver.py +0 -824
- octavia/tests/unit/controller/queue/v1/__init__.py +0 -11
- octavia/tests/unit/controller/queue/v1/test_consumer.py +0 -61
- octavia/tests/unit/controller/queue/v1/test_endpoints.py +0 -189
- octavia/tests/unit/controller/worker/v1/__init__.py +0 -11
- octavia/tests/unit/controller/worker/v1/flows/__init__.py +0 -11
- octavia/tests/unit/controller/worker/v1/flows/test_amphora_flows.py +0 -474
- octavia/tests/unit/controller/worker/v1/flows/test_health_monitor_flows.py +0 -72
- octavia/tests/unit/controller/worker/v1/flows/test_l7policy_flows.py +0 -67
- octavia/tests/unit/controller/worker/v1/flows/test_l7rule_flows.py +0 -67
- octavia/tests/unit/controller/worker/v1/flows/test_listener_flows.py +0 -91
- octavia/tests/unit/controller/worker/v1/flows/test_load_balancer_flows.py +0 -431
- octavia/tests/unit/controller/worker/v1/flows/test_member_flows.py +0 -106
- octavia/tests/unit/controller/worker/v1/flows/test_pool_flows.py +0 -77
- octavia/tests/unit/controller/worker/v1/tasks/__init__.py +0 -11
- octavia/tests/unit/controller/worker/v1/tasks/test_amphora_driver_tasks.py +0 -792
- octavia/tests/unit/controller/worker/v1/tasks/test_cert_task.py +0 -46
- octavia/tests/unit/controller/worker/v1/tasks/test_compute_tasks.py +0 -634
- octavia/tests/unit/controller/worker/v1/tasks/test_database_tasks.py +0 -2615
- octavia/tests/unit/controller/worker/v1/tasks/test_database_tasks_quota.py +0 -415
- octavia/tests/unit/controller/worker/v1/tasks/test_lifecycle_tasks.py +0 -401
- octavia/tests/unit/controller/worker/v1/tasks/test_model_tasks.py +0 -44
- octavia/tests/unit/controller/worker/v1/tasks/test_network_tasks.py +0 -1788
- octavia/tests/unit/controller/worker/v1/tasks/test_retry_tasks.py +0 -47
- octavia/tests/unit/controller/worker/v1/test_controller_worker.py +0 -2096
- octavia-12.0.0.0rc2.dist-info/pbr.json +0 -1
- {octavia-12.0.0.0rc2.data → octavia-13.0.0.0rc1.data}/data/share/octavia/LICENSE +0 -0
- {octavia-12.0.0.0rc2.data → octavia-13.0.0.0rc1.data}/data/share/octavia/diskimage-create/README.rst +0 -0
- {octavia-12.0.0.0rc2.data → octavia-13.0.0.0rc1.data}/data/share/octavia/diskimage-create/diskimage-create.sh +0 -0
- {octavia-12.0.0.0rc2.data → octavia-13.0.0.0rc1.data}/data/share/octavia/diskimage-create/image-tests.sh +0 -0
- {octavia-12.0.0.0rc2.data → octavia-13.0.0.0rc1.data}/data/share/octavia/diskimage-create/requirements.txt +0 -0
- {octavia-12.0.0.0rc2.data → octavia-13.0.0.0rc1.data}/data/share/octavia/diskimage-create/test-requirements.txt +0 -0
- {octavia-12.0.0.0rc2.data → octavia-13.0.0.0rc1.data}/data/share/octavia/diskimage-create/tox.ini +0 -0
- {octavia-12.0.0.0rc2.data → octavia-13.0.0.0rc1.data}/data/share/octavia/diskimage-create/version.txt +0 -0
- {octavia-12.0.0.0rc2.data → octavia-13.0.0.0rc1.data}/scripts/octavia-wsgi +0 -0
- {octavia-12.0.0.0rc2.dist-info → octavia-13.0.0.0rc1.dist-info}/LICENSE +0 -0
- {octavia-12.0.0.0rc2.dist-info → octavia-13.0.0.0rc1.dist-info}/WHEEL +0 -0
- {octavia-12.0.0.0rc2.dist-info → octavia-13.0.0.0rc1.dist-info}/top_level.txt +0 -0
@@ -12,6 +12,12 @@
|
|
12
12
|
# License for the specific language governing permissions and limitations
|
13
13
|
# under the License.
|
14
14
|
from octavia_lib.common import constants as lib_constants
|
15
|
+
from openstack.network.v2.floating_ip import FloatingIP
|
16
|
+
from openstack.network.v2.network import Network
|
17
|
+
from openstack.network.v2.network_ip_availability import NetworkIPAvailability
|
18
|
+
from openstack.network.v2.port import Port
|
19
|
+
from openstack.network.v2.security_group import SecurityGroup
|
20
|
+
from openstack.network.v2.subnet import Subnet
|
15
21
|
|
16
22
|
from octavia.common import constants
|
17
23
|
|
@@ -43,16 +49,16 @@ MOCK_MAC_ADDR = 'fe:16:3e:00:95:5c'
|
|
43
49
|
MOCK_MAC_ADDR2 = 'fe:16:3e:00:95:5d'
|
44
50
|
MOCK_PROJECT_ID = 'mock-project-1'
|
45
51
|
MOCK_HOST_ROUTES = []
|
46
|
-
MOCK_SUBNET = {'
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
MOCK_SUBNET2 = {'
|
55
|
-
|
52
|
+
MOCK_SUBNET = Subnet(**{'id': MOCK_SUBNET_ID,
|
53
|
+
'network_id': MOCK_NETWORK_ID,
|
54
|
+
'name': MOCK_SUBNET_NAME,
|
55
|
+
'tenant_id': MOCK_PROJECT_ID,
|
56
|
+
'gateway_ip': MOCK_GATEWAY_IP,
|
57
|
+
'cidr': MOCK_CIDR,
|
58
|
+
'ip_version': MOCK_IP_VERSION,
|
59
|
+
'host_routes': MOCK_HOST_ROUTES})
|
60
|
+
MOCK_SUBNET2 = Subnet(**{'id': MOCK_SUBNET_ID2,
|
61
|
+
'network_id': MOCK_NETWORK_ID2})
|
56
62
|
MOCK_HOST_ROUTES = []
|
57
63
|
|
58
64
|
MOCK_NOVA_INTERFACE = MockNovaInterface()
|
@@ -69,7 +75,7 @@ MOCK_DEVICE_ID2 = 'Moctavia124'
|
|
69
75
|
MOCK_SECURITY_GROUP_ID = 'security-group-1'
|
70
76
|
MOCK_SECURITY_GROUP_NAME = 'SecurityGroup1'
|
71
77
|
|
72
|
-
MOCK_SECURITY_GROUP = {
|
78
|
+
MOCK_SECURITY_GROUP = SecurityGroup(**{
|
73
79
|
"id": MOCK_SECURITY_GROUP_ID,
|
74
80
|
"name": MOCK_SECURITY_GROUP_NAME,
|
75
81
|
"tenant_id": MOCK_PROJECT_ID,
|
@@ -113,7 +119,7 @@ MOCK_SECURITY_GROUP = {
|
|
113
119
|
"created_at": "2020-03-12T20:43:31Z",
|
114
120
|
"updated_at": "2020-03-12T20:44:48Z",
|
115
121
|
"revision_number": 3,
|
116
|
-
"project_id": MOCK_PROJECT_ID}
|
122
|
+
"project_id": MOCK_PROJECT_ID})
|
117
123
|
|
118
124
|
MOCK_ADMIN_STATE_UP = True
|
119
125
|
MOCK_STATUS = 'ACTIVE'
|
@@ -122,59 +128,60 @@ MOCK_NETWORK_TYPE = 'flat'
|
|
122
128
|
MOCK_SEGMENTATION_ID = 1
|
123
129
|
MOCK_ROUTER_EXTERNAL = False
|
124
130
|
|
125
|
-
MOCK_NEUTRON_PORT = {'
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
131
|
+
MOCK_NEUTRON_PORT = Port(**{'network_id': MOCK_NETWORK_ID,
|
132
|
+
'device_id': MOCK_DEVICE_ID,
|
133
|
+
'device_owner': MOCK_DEVICE_OWNER,
|
134
|
+
'id': MOCK_PORT_ID,
|
135
|
+
'name': MOCK_PORT_NAME,
|
136
|
+
'tenant_id': MOCK_PROJECT_ID,
|
137
|
+
'admin_state_up': MOCK_ADMIN_STATE_UP,
|
138
|
+
'status': MOCK_STATUS,
|
139
|
+
'mac_address': MOCK_MAC_ADDR,
|
140
|
+
'fixed_ips': [{'ip_address': MOCK_IP_ADDRESS,
|
141
|
+
'subnet_id': MOCK_SUBNET_ID}],
|
142
|
+
'security_groups': [MOCK_SECURITY_GROUP_ID]})
|
137
143
|
MOCK_NEUTRON_QOS_POLICY_ID = 'mock-qos-id'
|
138
144
|
MOCK_QOS_POLICY_ID1 = 'qos1-id'
|
139
145
|
MOCK_QOS_POLICY_ID2 = 'qos2-id'
|
140
146
|
|
141
|
-
MOCK_NEUTRON_PORT2 = {'
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
147
|
+
MOCK_NEUTRON_PORT2 = Port(**{'network_id': MOCK_NETWORK_ID2,
|
148
|
+
'device_id': MOCK_DEVICE_ID2,
|
149
|
+
'device_owner': MOCK_DEVICE_OWNER,
|
150
|
+
'id': MOCK_PORT_ID2,
|
151
|
+
'name': MOCK_PORT_NAME2,
|
152
|
+
'tenant_id': MOCK_PROJECT_ID,
|
153
|
+
'admin_state_up': MOCK_ADMIN_STATE_UP,
|
154
|
+
'status': MOCK_STATUS,
|
155
|
+
'mac_address': MOCK_MAC_ADDR2,
|
156
|
+
'fixed_ips': [{'ip_address': MOCK_IP_ADDRESS2,
|
157
|
+
'subnet_id': MOCK_SUBNET_ID2}]})
|
152
158
|
|
153
|
-
MOCK_NETWORK = {'
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
|
159
|
+
MOCK_NETWORK = Network(**{'id': MOCK_NETWORK_ID,
|
160
|
+
'name': MOCK_NETWORK_NAME,
|
161
|
+
'project_id': MOCK_PROJECT_ID,
|
162
|
+
'admin_state_up': MOCK_ADMIN_STATE_UP,
|
163
|
+
'subnet_ids': [MOCK_SUBNET_ID],
|
164
|
+
'mtu': MOCK_MTU,
|
165
|
+
'provider_network_type': 'flat',
|
166
|
+
'provider_physical_network': MOCK_NETWORK_NAME,
|
167
|
+
'provider_segmentation_id': MOCK_SEGMENTATION_ID,
|
168
|
+
'router_external': MOCK_ROUTER_EXTERNAL,
|
169
|
+
'port_security_enabled': False})
|
170
|
+
MOCK_FIXED_IP = {'subnet_id': MOCK_SUBNET_ID,
|
171
|
+
'ip_address': MOCK_IP_ADDRESS}
|
165
172
|
MOCK_FLOATING_IP_ID = 'floating-ip-1'
|
166
173
|
MOCK_FLOATING_IP_DESC = 'TestFloatingIP1'
|
167
174
|
MOCK_ROUTER_ID = 'mock-router-1'
|
168
|
-
MOCK_FLOATING_IP = {'
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
|
173
|
-
|
174
|
-
|
175
|
-
|
176
|
-
|
177
|
-
|
175
|
+
MOCK_FLOATING_IP = FloatingIP(**{'id': MOCK_FLOATING_IP_ID,
|
176
|
+
'description': MOCK_FLOATING_IP_DESC,
|
177
|
+
'tenant_id': MOCK_PROJECT_ID,
|
178
|
+
'status': MOCK_STATUS,
|
179
|
+
'port_id': MOCK_PORT_ID,
|
180
|
+
'router_id': MOCK_ROUTER_ID,
|
181
|
+
'floating_network_id': MOCK_NETWORK_ID,
|
182
|
+
'floating_ip_address': MOCK_IP_ADDRESS,
|
183
|
+
'fixed_ip_address': MOCK_IP_ADDRESS2,
|
184
|
+
'fixed_port_id': MOCK_PORT_ID2})
|
178
185
|
|
179
186
|
MOCK_AMP_ID1 = 'amp1-id'
|
180
187
|
MOCK_AMP_ID2 = 'amp2-id'
|
@@ -205,17 +212,17 @@ MOCK_MANAGEMENT_INTERFACE2.net_id = MOCK_MANAGEMENT_NET_ID
|
|
205
212
|
MOCK_MANAGEMENT_INTERFACE2.port_id = MOCK_MANAGEMENT_PORT_ID2
|
206
213
|
MOCK_MANAGEMENT_INTERFACE2.fixed_ips = MOCK_MANAGEMENT_FIXED_IPS2
|
207
214
|
|
208
|
-
MOCK_MANAGEMENT_PORT1 = {'
|
209
|
-
|
210
|
-
|
211
|
-
|
212
|
-
|
215
|
+
MOCK_MANAGEMENT_PORT1 = Port(**{'network_id': MOCK_MANAGEMENT_NET_ID,
|
216
|
+
'device_id': MOCK_AMP_COMPUTE_ID1,
|
217
|
+
'device_owner': MOCK_DEVICE_OWNER,
|
218
|
+
'id': MOCK_MANAGEMENT_PORT_ID1,
|
219
|
+
'fixed_ips': MOCK_MANAGEMENT_FIXED_IPS1})
|
213
220
|
|
214
|
-
MOCK_MANAGEMENT_PORT2 = {'
|
215
|
-
|
216
|
-
|
217
|
-
|
218
|
-
|
221
|
+
MOCK_MANAGEMENT_PORT2 = Port(**{'network_id': MOCK_MANAGEMENT_NET_ID,
|
222
|
+
'device_id': MOCK_AMP_COMPUTE_ID2,
|
223
|
+
'device_owner': MOCK_DEVICE_OWNER,
|
224
|
+
'id': MOCK_MANAGEMENT_PORT_ID2,
|
225
|
+
'fixed_ips': MOCK_MANAGEMENT_FIXED_IPS2})
|
219
226
|
|
220
227
|
MOCK_VIP_SUBNET_ID = 'vip-subnet-1'
|
221
228
|
MOCK_VIP_SUBNET_ID2 = 'vip-subnet-2'
|
@@ -242,17 +249,17 @@ MOCK_VRRP_INTERFACE2.net_id = MOCK_VIP_NET_ID
|
|
242
249
|
MOCK_VRRP_INTERFACE2.port_id = MOCK_VRRP_PORT_ID2
|
243
250
|
MOCK_VRRP_INTERFACE2.fixed_ips = MOCK_VRRP_FIXED_IPS2
|
244
251
|
|
245
|
-
MOCK_VRRP_PORT1 = {'
|
246
|
-
|
247
|
-
|
248
|
-
|
249
|
-
|
252
|
+
MOCK_VRRP_PORT1 = Port(**{'network_id': MOCK_VIP_NET_ID,
|
253
|
+
'device_id': MOCK_AMP_COMPUTE_ID1,
|
254
|
+
'device_owner': MOCK_DEVICE_OWNER,
|
255
|
+
'id': MOCK_VRRP_PORT_ID1,
|
256
|
+
'fixed_ips': MOCK_VRRP_FIXED_IPS1})
|
250
257
|
|
251
|
-
MOCK_VRRP_PORT2 = {'
|
252
|
-
|
253
|
-
|
254
|
-
|
255
|
-
|
258
|
+
MOCK_VRRP_PORT2 = Port(**{'network_id': MOCK_VIP_NET_ID,
|
259
|
+
'device_id': MOCK_AMP_COMPUTE_ID2,
|
260
|
+
'device_owner': MOCK_DEVICE_OWNER,
|
261
|
+
'id': MOCK_VRRP_PORT_ID2,
|
262
|
+
'fixed_ips': MOCK_VRRP_FIXED_IPS2})
|
256
263
|
|
257
264
|
MOCK_NETWORK_TOTAL_IPS = 254
|
258
265
|
MOCK_NETWORK_USED_IPS = 0
|
@@ -262,13 +269,13 @@ MOCK_SUBNET_IP_AVAILABILITY = [{'used_ips': MOCK_SUBNET_USED_IPS,
|
|
262
269
|
'subnet_id': MOCK_SUBNET_ID,
|
263
270
|
'total_ips': MOCK_SUBNET_TOTAL_IPS}]
|
264
271
|
|
265
|
-
MOCK_NETWORK_IP_AVAILABILITY =
|
266
|
-
{'network_id': MOCK_NETWORK_ID,
|
267
|
-
|
268
|
-
|
269
|
-
|
270
|
-
|
271
|
-
|
272
|
+
MOCK_NETWORK_IP_AVAILABILITY = NetworkIPAvailability(
|
273
|
+
**{'network_id': MOCK_NETWORK_ID,
|
274
|
+
'tenant_id': MOCK_PROJECT_ID,
|
275
|
+
'network_name': MOCK_NETWORK_NAME,
|
276
|
+
'total_ips': MOCK_NETWORK_TOTAL_IPS,
|
277
|
+
'used_ips': MOCK_NETWORK_USED_IPS,
|
278
|
+
'subnet_ip_availability': MOCK_SUBNET_IP_AVAILABILITY})
|
272
279
|
|
273
280
|
INVALID_LISTENER_POOL_PROTOCOL_MAP = {
|
274
281
|
constants.PROTOCOL_HTTP: [constants.PROTOCOL_HTTPS,
|
@@ -476,7 +476,10 @@ class SampleDriverDataModels(object):
|
|
476
476
|
lib_consts.TLS_CIPHERS: constants.CIPHERS_OWASP_SUITE_B,
|
477
477
|
lib_consts.TLS_VERSIONS: constants.TLS_VERSIONS_OWASP_SUITE_B,
|
478
478
|
lib_consts.ALPN_PROTOCOLS:
|
479
|
-
constants.AMPHORA_SUPPORTED_ALPN_PROTOCOLS
|
479
|
+
constants.AMPHORA_SUPPORTED_ALPN_PROTOCOLS,
|
480
|
+
lib_consts.HSTS_INCLUDE_SUBDOMAINS: False,
|
481
|
+
lib_consts.HSTS_MAX_AGE: None,
|
482
|
+
lib_consts.HSTS_PRELOAD: False,
|
480
483
|
}
|
481
484
|
|
482
485
|
self.test_listener1_dict.update(self._common_test_dict)
|
@@ -488,6 +491,9 @@ class SampleDriverDataModels(object):
|
|
488
491
|
self.test_listener2_dict[lib_consts.DEFAULT_POOL_ID] = self.pool2_id
|
489
492
|
self.test_listener2_dict[
|
490
493
|
lib_consts.DEFAULT_POOL] = self.test_pool2_dict
|
494
|
+
self.test_listener2_dict[lib_consts.HSTS_INCLUDE_SUBDOMAINS] = True
|
495
|
+
self.test_listener2_dict[lib_consts.HSTS_MAX_AGE] = 10
|
496
|
+
self.test_listener2_dict[lib_consts.HSTS_PRELOAD] = False
|
491
497
|
del self.test_listener2_dict[lib_consts.L7POLICIES]
|
492
498
|
del self.test_listener2_dict[constants.SNI_CONTAINERS]
|
493
499
|
del self.test_listener2_dict[constants.CLIENT_CA_TLS_CERTIFICATE_ID]
|
@@ -524,6 +530,9 @@ class SampleDriverDataModels(object):
|
|
524
530
|
lib_consts.DEFAULT_TLS_CONTAINER_REF:
|
525
531
|
self.default_tls_container_ref,
|
526
532
|
lib_consts.DESCRIPTION: 'Listener 1',
|
533
|
+
lib_consts.HSTS_INCLUDE_SUBDOMAINS: False,
|
534
|
+
lib_consts.HSTS_MAX_AGE: None,
|
535
|
+
lib_consts.HSTS_PRELOAD: False,
|
527
536
|
lib_consts.INSERT_HEADERS: {},
|
528
537
|
lib_consts.L7POLICIES: self.provider_l7policies_dict,
|
529
538
|
lib_consts.LISTENER_ID: self.listener1_id,
|
@@ -571,6 +580,9 @@ class SampleDriverDataModels(object):
|
|
571
580
|
self.provider_listener2_dict[
|
572
581
|
lib_consts.CLIENT_CRL_CONTAINER_REF] = None
|
573
582
|
del self.provider_listener2_dict[lib_consts.CLIENT_CRL_CONTAINER_DATA]
|
583
|
+
self.provider_listener2_dict[lib_consts.HSTS_INCLUDE_SUBDOMAINS] = True
|
584
|
+
self.provider_listener2_dict[lib_consts.HSTS_MAX_AGE] = 10
|
585
|
+
self.provider_listener2_dict[lib_consts.HSTS_PRELOAD] = False
|
574
586
|
|
575
587
|
self.provider_listener1 = driver_dm.Listener(
|
576
588
|
**self.provider_listener1_dict)
|
@@ -0,0 +1,32 @@
|
|
1
|
+
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
2
|
+
# not use this file except in compliance with the License. You may obtain
|
3
|
+
# a copy of the License at
|
4
|
+
#
|
5
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
6
|
+
#
|
7
|
+
# Unless required by applicable law or agreed to in writing, software
|
8
|
+
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
9
|
+
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
10
|
+
# License for the specific language governing permissions and limitations
|
11
|
+
# under the License.
|
12
|
+
|
13
|
+
import warnings
|
14
|
+
|
15
|
+
import fixtures
|
16
|
+
from sqlalchemy import exc as sqla_exc
|
17
|
+
|
18
|
+
|
19
|
+
class WarningsFixture(fixtures.Fixture):
|
20
|
+
"""Filters out warnings during test runs."""
|
21
|
+
|
22
|
+
def setUp(self):
|
23
|
+
super().setUp()
|
24
|
+
# Make deprecation warnings only happen once to avoid spamming
|
25
|
+
warnings.simplefilter('once', DeprecationWarning)
|
26
|
+
|
27
|
+
# Enable deprecation warnings to capture upcoming SQLAlchemy changes
|
28
|
+
warnings.filterwarnings(
|
29
|
+
'error',
|
30
|
+
category=sqla_exc.SADeprecationWarning)
|
31
|
+
|
32
|
+
self.addCleanup(warnings.resetwarnings)
|
@@ -1008,7 +1008,9 @@ class TestServerTestCase(base.TestCase):
|
|
1008
1008
|
|
1009
1009
|
mock_int_exists.return_value = False
|
1010
1010
|
netns_handle = mock_netns.return_value.__enter__.return_value
|
1011
|
-
netns_handle.get_links.return_value = [
|
1011
|
+
netns_handle.get_links.return_value = [
|
1012
|
+
{'attrs': [['IFLA_IFNAME', f'eth{idx}']]}
|
1013
|
+
for idx in range(test_int_num)]
|
1012
1014
|
mock_isfile.return_value = True
|
1013
1015
|
|
1014
1016
|
mock_check_output.return_value = b"1\n2\n3\n"
|
@@ -1396,7 +1398,7 @@ class TestServerTestCase(base.TestCase):
|
|
1396
1398
|
|
1397
1399
|
netns_handle = mock_netns.return_value.__enter__.return_value
|
1398
1400
|
netns_handle.get_links.return_value = [{
|
1399
|
-
'attrs': [['IFLA_IFNAME',
|
1401
|
+
'attrs': [['IFLA_IFNAME', 'eth2']]}]
|
1400
1402
|
|
1401
1403
|
port_info = {'mac_address': MAC, 'mtu': 1450, 'fixed_ips': [
|
1402
1404
|
{'ip_address': IP, 'subnet_cidr': SUBNET_CIDR,
|
@@ -1405,8 +1407,7 @@ class TestServerTestCase(base.TestCase):
|
|
1405
1407
|
|
1406
1408
|
flags = os.O_WRONLY | os.O_CREAT | os.O_TRUNC
|
1407
1409
|
mode = stat.S_IRUSR | stat.S_IWUSR | stat.S_IRGRP | stat.S_IROTH
|
1408
|
-
file_name = '/etc/octavia/interfaces/
|
1409
|
-
consts.NETNS_PRIMARY_INTERFACE)
|
1410
|
+
file_name = '/etc/octavia/interfaces/eth3.json'
|
1410
1411
|
|
1411
1412
|
m = self.useFixture(test_utils.OpenFixture(file_name)).mock_open
|
1412
1413
|
with mock.patch('os.open') as mock_open, mock.patch.object(
|
@@ -1436,7 +1437,7 @@ class TestServerTestCase(base.TestCase):
|
|
1436
1437
|
mock_fdopen.assert_any_call(123, 'r+')
|
1437
1438
|
|
1438
1439
|
expected_dict = {
|
1439
|
-
consts.NAME:
|
1440
|
+
consts.NAME: 'eth3',
|
1440
1441
|
consts.MTU: 1450,
|
1441
1442
|
consts.ADDRESSES: [
|
1442
1443
|
{
|
@@ -1458,13 +1459,12 @@ class TestServerTestCase(base.TestCase):
|
|
1458
1459
|
consts.SCRIPTS: {
|
1459
1460
|
consts.IFACE_UP: [{
|
1460
1461
|
consts.COMMAND: (
|
1461
|
-
"/usr/local/bin/lvs-masquerade.sh add ipv4 "
|
1462
|
-
"{}".format(consts.NETNS_PRIMARY_INTERFACE))
|
1462
|
+
"/usr/local/bin/lvs-masquerade.sh add ipv4 eth3")
|
1463
1463
|
}],
|
1464
1464
|
consts.IFACE_DOWN: [{
|
1465
1465
|
consts.COMMAND: (
|
1466
1466
|
"/usr/local/bin/lvs-masquerade.sh delete ipv4 "
|
1467
|
-
"
|
1467
|
+
"eth3")
|
1468
1468
|
}]
|
1469
1469
|
}
|
1470
1470
|
}
|
@@ -1476,8 +1476,7 @@ class TestServerTestCase(base.TestCase):
|
|
1476
1476
|
|
1477
1477
|
mock_check_output.assert_called_with(
|
1478
1478
|
['ip', 'netns', 'exec', consts.AMPHORA_NAMESPACE,
|
1479
|
-
'amphora-interface', 'up',
|
1480
|
-
consts.NETNS_PRIMARY_INTERFACE], stderr=-2)
|
1479
|
+
'amphora-interface', 'up', 'eth3'], stderr=-2)
|
1481
1480
|
|
1482
1481
|
def test_ubuntu_plug_VIP4(self):
|
1483
1482
|
self._test_plug_VIP4(consts.UBUNTU)
|