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.
Files changed (193) hide show
  1. octavia/amphorae/backends/agent/api_server/osutils.py +1 -0
  2. octavia/amphorae/backends/agent/api_server/plug.py +21 -7
  3. octavia/amphorae/backends/agent/api_server/templates/amphora-netns.systemd.j2 +2 -2
  4. octavia/amphorae/backends/agent/api_server/util.py +21 -0
  5. octavia/amphorae/backends/health_daemon/health_daemon.py +9 -3
  6. octavia/amphorae/backends/health_daemon/health_sender.py +2 -0
  7. octavia/amphorae/backends/utils/interface.py +14 -6
  8. octavia/amphorae/backends/utils/interface_file.py +6 -3
  9. octavia/amphorae/backends/utils/keepalivedlvs_query.py +8 -9
  10. octavia/amphorae/drivers/driver_base.py +1 -2
  11. octavia/amphorae/drivers/haproxy/rest_api_driver.py +11 -25
  12. octavia/amphorae/drivers/health/heartbeat_udp.py +34 -24
  13. octavia/amphorae/drivers/keepalived/jinja/jinja_cfg.py +3 -12
  14. octavia/amphorae/drivers/noop_driver/driver.py +3 -5
  15. octavia/api/common/pagination.py +4 -4
  16. octavia/api/drivers/amphora_driver/v2/driver.py +11 -5
  17. octavia/api/drivers/driver_agent/driver_get.py +22 -14
  18. octavia/api/drivers/driver_agent/driver_updater.py +8 -4
  19. octavia/api/drivers/utils.py +4 -2
  20. octavia/api/healthcheck/healthcheck_plugins.py +4 -2
  21. octavia/api/root_controller.py +4 -1
  22. octavia/api/v2/controllers/amphora.py +35 -38
  23. octavia/api/v2/controllers/availability_zone_profiles.py +43 -33
  24. octavia/api/v2/controllers/availability_zones.py +22 -18
  25. octavia/api/v2/controllers/flavor_profiles.py +37 -28
  26. octavia/api/v2/controllers/flavors.py +19 -15
  27. octavia/api/v2/controllers/health_monitor.py +44 -33
  28. octavia/api/v2/controllers/l7policy.py +52 -40
  29. octavia/api/v2/controllers/l7rule.py +68 -55
  30. octavia/api/v2/controllers/listener.py +88 -61
  31. octavia/api/v2/controllers/load_balancer.py +52 -34
  32. octavia/api/v2/controllers/member.py +63 -52
  33. octavia/api/v2/controllers/pool.py +55 -42
  34. octavia/api/v2/controllers/quotas.py +5 -3
  35. octavia/api/v2/types/listener.py +15 -0
  36. octavia/cmd/octavia_worker.py +0 -3
  37. octavia/cmd/status.py +1 -4
  38. octavia/common/clients.py +25 -45
  39. octavia/common/config.py +64 -22
  40. octavia/common/constants.py +3 -2
  41. octavia/common/data_models.py +7 -1
  42. octavia/common/jinja/haproxy/combined_listeners/jinja_cfg.py +12 -1
  43. octavia/common/jinja/haproxy/combined_listeners/templates/macros.j2 +5 -2
  44. octavia/common/jinja/lvs/jinja_cfg.py +4 -2
  45. octavia/common/keystone.py +58 -5
  46. octavia/common/validate.py +35 -0
  47. octavia/compute/drivers/noop_driver/driver.py +6 -0
  48. octavia/controller/healthmanager/health_manager.py +3 -6
  49. octavia/controller/housekeeping/house_keeping.py +36 -37
  50. octavia/controller/worker/amphora_rate_limit.py +5 -4
  51. octavia/controller/worker/task_utils.py +57 -41
  52. octavia/controller/worker/v2/controller_worker.py +160 -103
  53. octavia/controller/worker/v2/flows/listener_flows.py +3 -0
  54. octavia/controller/worker/v2/flows/load_balancer_flows.py +9 -14
  55. octavia/controller/worker/v2/tasks/amphora_driver_tasks.py +152 -91
  56. octavia/controller/worker/v2/tasks/compute_tasks.py +4 -2
  57. octavia/controller/worker/v2/tasks/database_tasks.py +542 -400
  58. octavia/controller/worker/v2/tasks/network_tasks.py +119 -79
  59. octavia/db/api.py +26 -23
  60. octavia/db/base_models.py +2 -2
  61. octavia/db/healthcheck.py +2 -1
  62. octavia/db/migration/alembic_migrations/versions/632152d2d32e_add_http_strict_transport_security_.py +42 -0
  63. octavia/db/models.py +12 -2
  64. octavia/db/prepare.py +2 -0
  65. octavia/db/repositories.py +462 -482
  66. octavia/hacking/checks.py +1 -1
  67. octavia/network/base.py +0 -14
  68. octavia/network/drivers/neutron/allowed_address_pairs.py +92 -135
  69. octavia/network/drivers/neutron/base.py +65 -77
  70. octavia/network/drivers/neutron/utils.py +69 -85
  71. octavia/network/drivers/noop_driver/driver.py +0 -7
  72. octavia/statistics/drivers/update_db.py +10 -10
  73. octavia/tests/common/constants.py +91 -84
  74. octavia/tests/common/sample_data_models.py +13 -1
  75. octavia/tests/fixtures.py +32 -0
  76. octavia/tests/functional/amphorae/backend/agent/api_server/test_server.py +9 -10
  77. octavia/tests/functional/api/drivers/driver_agent/test_driver_agent.py +260 -15
  78. octavia/tests/functional/api/test_root_controller.py +3 -28
  79. octavia/tests/functional/api/v2/base.py +5 -3
  80. octavia/tests/functional/api/v2/test_amphora.py +18 -5
  81. octavia/tests/functional/api/v2/test_availability_zone_profiles.py +1 -0
  82. octavia/tests/functional/api/v2/test_listener.py +51 -19
  83. octavia/tests/functional/api/v2/test_load_balancer.py +10 -1
  84. octavia/tests/functional/db/base.py +31 -16
  85. octavia/tests/functional/db/test_models.py +27 -28
  86. octavia/tests/functional/db/test_repositories.py +407 -50
  87. octavia/tests/unit/amphorae/backends/agent/api_server/test_amphora_info.py +2 -0
  88. octavia/tests/unit/amphorae/backends/agent/api_server/test_osutils.py +1 -1
  89. octavia/tests/unit/amphorae/backends/agent/api_server/test_plug.py +54 -6
  90. octavia/tests/unit/amphorae/backends/agent/api_server/test_util.py +35 -0
  91. octavia/tests/unit/amphorae/backends/health_daemon/test_health_daemon.py +8 -0
  92. octavia/tests/unit/amphorae/backends/health_daemon/test_health_sender.py +18 -0
  93. octavia/tests/unit/amphorae/backends/utils/test_interface.py +81 -0
  94. octavia/tests/unit/amphorae/backends/utils/test_interface_file.py +2 -0
  95. octavia/tests/unit/amphorae/backends/utils/test_keepalivedlvs_query.py +129 -5
  96. octavia/tests/unit/amphorae/drivers/haproxy/test_rest_api_driver_1_0.py +42 -20
  97. octavia/tests/unit/amphorae/drivers/health/test_heartbeat_udp.py +18 -20
  98. octavia/tests/unit/amphorae/drivers/keepalived/jinja/test_jinja_cfg.py +4 -4
  99. octavia/tests/unit/amphorae/drivers/noop_driver/test_driver.py +4 -1
  100. octavia/tests/unit/api/drivers/driver_agent/test_driver_get.py +3 -3
  101. octavia/tests/unit/api/drivers/driver_agent/test_driver_updater.py +11 -13
  102. octavia/tests/unit/base.py +6 -0
  103. octavia/tests/unit/cmd/test_interface.py +2 -2
  104. octavia/tests/unit/cmd/test_status.py +2 -2
  105. octavia/tests/unit/common/jinja/haproxy/combined_listeners/test_jinja_cfg.py +152 -1
  106. octavia/tests/unit/common/sample_configs/sample_configs_combined.py +10 -3
  107. octavia/tests/unit/common/test_clients.py +0 -39
  108. octavia/tests/unit/common/test_keystone.py +54 -0
  109. octavia/tests/unit/common/test_validate.py +67 -0
  110. octavia/tests/unit/controller/healthmanager/test_health_manager.py +8 -22
  111. octavia/tests/unit/controller/housekeeping/test_house_keeping.py +3 -64
  112. octavia/tests/unit/controller/worker/test_amphora_rate_limit.py +1 -1
  113. octavia/tests/unit/controller/worker/test_task_utils.py +44 -24
  114. octavia/tests/unit/controller/worker/v2/flows/test_load_balancer_flows.py +0 -1
  115. octavia/tests/unit/controller/worker/v2/tasks/test_amphora_driver_tasks.py +49 -26
  116. octavia/tests/unit/controller/worker/v2/tasks/test_database_tasks.py +399 -196
  117. octavia/tests/unit/controller/worker/v2/tasks/test_database_tasks_quota.py +37 -64
  118. octavia/tests/unit/controller/worker/v2/tasks/test_network_tasks.py +3 -14
  119. octavia/tests/unit/controller/worker/v2/test_controller_worker.py +2 -2
  120. octavia/tests/unit/network/drivers/neutron/test_allowed_address_pairs.py +456 -561
  121. octavia/tests/unit/network/drivers/neutron/test_base.py +181 -194
  122. octavia/tests/unit/network/drivers/neutron/test_utils.py +14 -30
  123. octavia/tests/unit/statistics/drivers/test_update_db.py +7 -5
  124. {octavia-12.0.0.0rc2.data → octavia-13.0.0.0rc1.data}/data/share/octavia/README.rst +1 -1
  125. {octavia-12.0.0.0rc2.dist-info → octavia-13.0.0.0rc1.dist-info}/AUTHORS +4 -0
  126. {octavia-12.0.0.0rc2.dist-info → octavia-13.0.0.0rc1.dist-info}/METADATA +4 -4
  127. {octavia-12.0.0.0rc2.dist-info → octavia-13.0.0.0rc1.dist-info}/RECORD +141 -189
  128. {octavia-12.0.0.0rc2.dist-info → octavia-13.0.0.0rc1.dist-info}/entry_points.txt +1 -2
  129. octavia-13.0.0.0rc1.dist-info/pbr.json +1 -0
  130. octavia/api/drivers/amphora_driver/v1/__init__.py +0 -11
  131. octavia/api/drivers/amphora_driver/v1/driver.py +0 -547
  132. octavia/controller/queue/v1/__init__.py +0 -11
  133. octavia/controller/queue/v1/consumer.py +0 -64
  134. octavia/controller/queue/v1/endpoints.py +0 -160
  135. octavia/controller/worker/v1/__init__.py +0 -11
  136. octavia/controller/worker/v1/controller_worker.py +0 -1157
  137. octavia/controller/worker/v1/flows/__init__.py +0 -11
  138. octavia/controller/worker/v1/flows/amphora_flows.py +0 -610
  139. octavia/controller/worker/v1/flows/health_monitor_flows.py +0 -105
  140. octavia/controller/worker/v1/flows/l7policy_flows.py +0 -94
  141. octavia/controller/worker/v1/flows/l7rule_flows.py +0 -100
  142. octavia/controller/worker/v1/flows/listener_flows.py +0 -128
  143. octavia/controller/worker/v1/flows/load_balancer_flows.py +0 -692
  144. octavia/controller/worker/v1/flows/member_flows.py +0 -230
  145. octavia/controller/worker/v1/flows/pool_flows.py +0 -127
  146. octavia/controller/worker/v1/tasks/__init__.py +0 -11
  147. octavia/controller/worker/v1/tasks/amphora_driver_tasks.py +0 -453
  148. octavia/controller/worker/v1/tasks/cert_task.py +0 -51
  149. octavia/controller/worker/v1/tasks/compute_tasks.py +0 -335
  150. octavia/controller/worker/v1/tasks/database_tasks.py +0 -2756
  151. octavia/controller/worker/v1/tasks/lifecycle_tasks.py +0 -173
  152. octavia/controller/worker/v1/tasks/model_tasks.py +0 -41
  153. octavia/controller/worker/v1/tasks/network_tasks.py +0 -970
  154. octavia/controller/worker/v1/tasks/retry_tasks.py +0 -74
  155. octavia/tests/unit/api/drivers/amphora_driver/v1/__init__.py +0 -11
  156. octavia/tests/unit/api/drivers/amphora_driver/v1/test_driver.py +0 -824
  157. octavia/tests/unit/controller/queue/v1/__init__.py +0 -11
  158. octavia/tests/unit/controller/queue/v1/test_consumer.py +0 -61
  159. octavia/tests/unit/controller/queue/v1/test_endpoints.py +0 -189
  160. octavia/tests/unit/controller/worker/v1/__init__.py +0 -11
  161. octavia/tests/unit/controller/worker/v1/flows/__init__.py +0 -11
  162. octavia/tests/unit/controller/worker/v1/flows/test_amphora_flows.py +0 -474
  163. octavia/tests/unit/controller/worker/v1/flows/test_health_monitor_flows.py +0 -72
  164. octavia/tests/unit/controller/worker/v1/flows/test_l7policy_flows.py +0 -67
  165. octavia/tests/unit/controller/worker/v1/flows/test_l7rule_flows.py +0 -67
  166. octavia/tests/unit/controller/worker/v1/flows/test_listener_flows.py +0 -91
  167. octavia/tests/unit/controller/worker/v1/flows/test_load_balancer_flows.py +0 -431
  168. octavia/tests/unit/controller/worker/v1/flows/test_member_flows.py +0 -106
  169. octavia/tests/unit/controller/worker/v1/flows/test_pool_flows.py +0 -77
  170. octavia/tests/unit/controller/worker/v1/tasks/__init__.py +0 -11
  171. octavia/tests/unit/controller/worker/v1/tasks/test_amphora_driver_tasks.py +0 -792
  172. octavia/tests/unit/controller/worker/v1/tasks/test_cert_task.py +0 -46
  173. octavia/tests/unit/controller/worker/v1/tasks/test_compute_tasks.py +0 -634
  174. octavia/tests/unit/controller/worker/v1/tasks/test_database_tasks.py +0 -2615
  175. octavia/tests/unit/controller/worker/v1/tasks/test_database_tasks_quota.py +0 -415
  176. octavia/tests/unit/controller/worker/v1/tasks/test_lifecycle_tasks.py +0 -401
  177. octavia/tests/unit/controller/worker/v1/tasks/test_model_tasks.py +0 -44
  178. octavia/tests/unit/controller/worker/v1/tasks/test_network_tasks.py +0 -1788
  179. octavia/tests/unit/controller/worker/v1/tasks/test_retry_tasks.py +0 -47
  180. octavia/tests/unit/controller/worker/v1/test_controller_worker.py +0 -2096
  181. octavia-12.0.0.0rc2.dist-info/pbr.json +0 -1
  182. {octavia-12.0.0.0rc2.data → octavia-13.0.0.0rc1.data}/data/share/octavia/LICENSE +0 -0
  183. {octavia-12.0.0.0rc2.data → octavia-13.0.0.0rc1.data}/data/share/octavia/diskimage-create/README.rst +0 -0
  184. {octavia-12.0.0.0rc2.data → octavia-13.0.0.0rc1.data}/data/share/octavia/diskimage-create/diskimage-create.sh +0 -0
  185. {octavia-12.0.0.0rc2.data → octavia-13.0.0.0rc1.data}/data/share/octavia/diskimage-create/image-tests.sh +0 -0
  186. {octavia-12.0.0.0rc2.data → octavia-13.0.0.0rc1.data}/data/share/octavia/diskimage-create/requirements.txt +0 -0
  187. {octavia-12.0.0.0rc2.data → octavia-13.0.0.0rc1.data}/data/share/octavia/diskimage-create/test-requirements.txt +0 -0
  188. {octavia-12.0.0.0rc2.data → octavia-13.0.0.0rc1.data}/data/share/octavia/diskimage-create/tox.ini +0 -0
  189. {octavia-12.0.0.0rc2.data → octavia-13.0.0.0rc1.data}/data/share/octavia/diskimage-create/version.txt +0 -0
  190. {octavia-12.0.0.0rc2.data → octavia-13.0.0.0rc1.data}/scripts/octavia-wsgi +0 -0
  191. {octavia-12.0.0.0rc2.dist-info → octavia-13.0.0.0rc1.dist-info}/LICENSE +0 -0
  192. {octavia-12.0.0.0rc2.dist-info → octavia-13.0.0.0rc1.dist-info}/WHEEL +0 -0
  193. {octavia-12.0.0.0rc2.dist-info → octavia-13.0.0.0rc1.dist-info}/top_level.txt +0 -0
@@ -1,230 +0,0 @@
1
- # Copyright 2015 Hewlett-Packard Development Company, L.P.
2
- #
3
- # Licensed under the Apache License, Version 2.0 (the "License"); you may
4
- # not use this file except in compliance with the License. You may obtain
5
- # a copy of the License at
6
- #
7
- # http://www.apache.org/licenses/LICENSE-2.0
8
- #
9
- # Unless required by applicable law or agreed to in writing, software
10
- # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
11
- # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
12
- # License for the specific language governing permissions and limitations
13
- # under the License.
14
- #
15
-
16
- from taskflow.patterns import linear_flow
17
- from taskflow.patterns import unordered_flow
18
-
19
- from octavia.common import constants
20
- from octavia.controller.worker.v1.tasks import amphora_driver_tasks
21
- from octavia.controller.worker.v1.tasks import database_tasks
22
- from octavia.controller.worker.v1.tasks import lifecycle_tasks
23
- from octavia.controller.worker.v1.tasks import model_tasks
24
- from octavia.controller.worker.v1.tasks import network_tasks
25
-
26
-
27
- class MemberFlows(object):
28
-
29
- def get_create_member_flow(self):
30
- """Create a flow to create a member
31
-
32
- :returns: The flow for creating a member
33
- """
34
- create_member_flow = linear_flow.Flow(constants.CREATE_MEMBER_FLOW)
35
- create_member_flow.add(lifecycle_tasks.MemberToErrorOnRevertTask(
36
- requires=[constants.MEMBER,
37
- constants.LISTENERS,
38
- constants.LOADBALANCER,
39
- constants.POOL]))
40
- create_member_flow.add(database_tasks.MarkMemberPendingCreateInDB(
41
- requires=constants.MEMBER))
42
- create_member_flow.add(network_tasks.CalculateDelta(
43
- requires=(constants.LOADBALANCER, constants.AVAILABILITY_ZONE),
44
- provides=constants.DELTAS))
45
- create_member_flow.add(network_tasks.HandleNetworkDeltas(
46
- requires=(constants.DELTAS, constants.LOADBALANCER),
47
- provides=constants.UPDATED_PORTS))
48
- create_member_flow.add(network_tasks.GetAmphoraeNetworkConfigs(
49
- requires=constants.LOADBALANCER_ID,
50
- provides=constants.AMPHORAE_NETWORK_CONFIG))
51
- create_member_flow.add(amphora_driver_tasks.AmphoraePostNetworkPlug(
52
- requires=(constants.LOADBALANCER, constants.UPDATED_PORTS,
53
- constants.AMPHORAE_NETWORK_CONFIG)))
54
- create_member_flow.add(amphora_driver_tasks.ListenersUpdate(
55
- requires=constants.LOADBALANCER))
56
- create_member_flow.add(database_tasks.MarkMemberActiveInDB(
57
- requires=constants.MEMBER))
58
- create_member_flow.add(database_tasks.MarkPoolActiveInDB(
59
- requires=constants.POOL))
60
- create_member_flow.add(database_tasks.
61
- MarkLBAndListenersActiveInDB(
62
- requires=(constants.LOADBALANCER,
63
- constants.LISTENERS)))
64
-
65
- return create_member_flow
66
-
67
- def get_delete_member_flow(self):
68
- """Create a flow to delete a member
69
-
70
- :returns: The flow for deleting a member
71
- """
72
- delete_member_flow = linear_flow.Flow(constants.DELETE_MEMBER_FLOW)
73
- delete_member_flow.add(lifecycle_tasks.MemberToErrorOnRevertTask(
74
- requires=[constants.MEMBER,
75
- constants.LISTENERS,
76
- constants.LOADBALANCER,
77
- constants.POOL]))
78
- delete_member_flow.add(database_tasks.MarkMemberPendingDeleteInDB(
79
- requires=constants.MEMBER))
80
- delete_member_flow.add(network_tasks.CalculateDelta(
81
- requires=(constants.LOADBALANCER, constants.AVAILABILITY_ZONE),
82
- provides=constants.DELTAS))
83
- delete_member_flow.add(network_tasks.HandleNetworkDeltas(
84
- requires=(constants.DELTAS, constants.LOADBALANCER),
85
- provides=constants.UPDATED_PORTS))
86
- delete_member_flow.add(network_tasks.GetAmphoraeNetworkConfigs(
87
- requires=constants.LOADBALANCER_ID,
88
- provides=constants.AMPHORAE_NETWORK_CONFIG))
89
- delete_member_flow.add(amphora_driver_tasks.AmphoraePostNetworkPlug(
90
- requires=(constants.LOADBALANCER, constants.UPDATED_PORTS,
91
- constants.AMPHORAE_NETWORK_CONFIG)))
92
- delete_member_flow.add(model_tasks.
93
- DeleteModelObject(rebind={constants.OBJECT:
94
- constants.MEMBER}))
95
- delete_member_flow.add(database_tasks.DeleteMemberInDB(
96
- requires=constants.MEMBER))
97
- delete_member_flow.add(amphora_driver_tasks.ListenersUpdate(
98
- requires=constants.LOADBALANCER))
99
- delete_member_flow.add(database_tasks.DecrementMemberQuota(
100
- requires=constants.MEMBER))
101
- delete_member_flow.add(database_tasks.MarkPoolActiveInDB(
102
- requires=constants.POOL))
103
- delete_member_flow.add(database_tasks.
104
- MarkLBAndListenersActiveInDB(
105
- requires=[constants.LOADBALANCER,
106
- constants.LISTENERS]))
107
-
108
- return delete_member_flow
109
-
110
- def get_update_member_flow(self):
111
- """Create a flow to update a member
112
-
113
- :returns: The flow for updating a member
114
- """
115
- update_member_flow = linear_flow.Flow(constants.UPDATE_MEMBER_FLOW)
116
- update_member_flow.add(lifecycle_tasks.MemberToErrorOnRevertTask(
117
- requires=[constants.MEMBER,
118
- constants.LISTENERS,
119
- constants.LOADBALANCER,
120
- constants.POOL]))
121
- update_member_flow.add(database_tasks.MarkMemberPendingUpdateInDB(
122
- requires=constants.MEMBER))
123
- update_member_flow.add(amphora_driver_tasks.ListenersUpdate(
124
- requires=constants.LOADBALANCER))
125
- update_member_flow.add(database_tasks.UpdateMemberInDB(
126
- requires=[constants.MEMBER, constants.UPDATE_DICT]))
127
- update_member_flow.add(database_tasks.MarkMemberActiveInDB(
128
- requires=constants.MEMBER))
129
- update_member_flow.add(database_tasks.MarkPoolActiveInDB(
130
- requires=constants.POOL))
131
- update_member_flow.add(database_tasks.
132
- MarkLBAndListenersActiveInDB(
133
- requires=[constants.LOADBALANCER,
134
- constants.LISTENERS]))
135
-
136
- return update_member_flow
137
-
138
- def get_batch_update_members_flow(self, old_members, new_members,
139
- updated_members):
140
- """Create a flow to batch update members
141
-
142
- :returns: The flow for batch updating members
143
- """
144
- batch_update_members_flow = linear_flow.Flow(
145
- constants.BATCH_UPDATE_MEMBERS_FLOW)
146
- unordered_members_flow = unordered_flow.Flow(
147
- constants.UNORDERED_MEMBER_UPDATES_FLOW)
148
- unordered_members_active_flow = unordered_flow.Flow(
149
- constants.UNORDERED_MEMBER_ACTIVE_FLOW)
150
-
151
- # Delete old members
152
- unordered_members_flow.add(
153
- lifecycle_tasks.MembersToErrorOnRevertTask(
154
- inject={constants.MEMBERS: old_members},
155
- name='{flow}-deleted'.format(
156
- flow=constants.MEMBER_TO_ERROR_ON_REVERT_FLOW)))
157
- for m in old_members:
158
- unordered_members_flow.add(
159
- model_tasks.DeleteModelObject(
160
- inject={constants.OBJECT: m},
161
- name='{flow}-{id}'.format(
162
- id=m.id, flow=constants.DELETE_MODEL_OBJECT_FLOW)))
163
- unordered_members_flow.add(database_tasks.DeleteMemberInDB(
164
- inject={constants.MEMBER: m},
165
- name='{flow}-{id}'.format(
166
- id=m.id, flow=constants.DELETE_MEMBER_INDB)))
167
- unordered_members_flow.add(database_tasks.DecrementMemberQuota(
168
- inject={constants.MEMBER: m},
169
- name='{flow}-{id}'.format(
170
- id=m.id, flow=constants.DECREMENT_MEMBER_QUOTA_FLOW)))
171
-
172
- # Create new members
173
- unordered_members_flow.add(
174
- lifecycle_tasks.MembersToErrorOnRevertTask(
175
- inject={constants.MEMBERS: new_members},
176
- name='{flow}-created'.format(
177
- flow=constants.MEMBER_TO_ERROR_ON_REVERT_FLOW)))
178
- for m in new_members:
179
- unordered_members_active_flow.add(
180
- database_tasks.MarkMemberActiveInDB(
181
- inject={constants.MEMBER: m},
182
- name='{flow}-{id}'.format(
183
- id=m.id, flow=constants.MARK_MEMBER_ACTIVE_INDB)))
184
-
185
- # Update existing members
186
- unordered_members_flow.add(
187
- lifecycle_tasks.MembersToErrorOnRevertTask(
188
- # updated_members is a list of (obj, dict), only pass `obj`
189
- inject={constants.MEMBERS: [m[0] for m in updated_members]},
190
- name='{flow}-updated'.format(
191
- flow=constants.MEMBER_TO_ERROR_ON_REVERT_FLOW)))
192
- for m, um in updated_members:
193
- um.pop('id', None)
194
- unordered_members_active_flow.add(
195
- database_tasks.MarkMemberActiveInDB(
196
- inject={constants.MEMBER: m},
197
- name='{flow}-{id}'.format(
198
- id=m.id, flow=constants.MARK_MEMBER_ACTIVE_INDB)))
199
-
200
- batch_update_members_flow.add(unordered_members_flow)
201
-
202
- # Done, do real updates
203
- batch_update_members_flow.add(network_tasks.CalculateDelta(
204
- requires=(constants.LOADBALANCER, constants.AVAILABILITY_ZONE),
205
- provides=constants.DELTAS))
206
- batch_update_members_flow.add(network_tasks.HandleNetworkDeltas(
207
- requires=(constants.DELTAS, constants.LOADBALANCER),
208
- provides=constants.UPDATED_PORTS))
209
- batch_update_members_flow.add(network_tasks.GetAmphoraeNetworkConfigs(
210
- requires=constants.LOADBALANCER_ID,
211
- provides=constants.AMPHORAE_NETWORK_CONFIG))
212
- batch_update_members_flow.add(
213
- amphora_driver_tasks.AmphoraePostNetworkPlug(
214
- requires=(constants.LOADBALANCER, constants.UPDATED_PORTS,
215
- constants.AMPHORAE_NETWORK_CONFIG)))
216
-
217
- # Update the Listener (this makes the changes active on the Amp)
218
- batch_update_members_flow.add(amphora_driver_tasks.ListenersUpdate(
219
- requires=constants.LOADBALANCER))
220
-
221
- # Mark all the members ACTIVE here, then pool then LB/Listeners
222
- batch_update_members_flow.add(unordered_members_active_flow)
223
- batch_update_members_flow.add(database_tasks.MarkPoolActiveInDB(
224
- requires=constants.POOL))
225
- batch_update_members_flow.add(
226
- database_tasks.MarkLBAndListenersActiveInDB(
227
- requires=(constants.LOADBALANCER,
228
- constants.LISTENERS)))
229
-
230
- return batch_update_members_flow
@@ -1,127 +0,0 @@
1
- # Copyright 2015 Hewlett-Packard Development Company, L.P.
2
- #
3
- # Licensed under the Apache License, Version 2.0 (the "License"); you may
4
- # not use this file except in compliance with the License. You may obtain
5
- # a copy of the License at
6
- #
7
- # http://www.apache.org/licenses/LICENSE-2.0
8
- #
9
- # Unless required by applicable law or agreed to in writing, software
10
- # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
11
- # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
12
- # License for the specific language governing permissions and limitations
13
- # under the License.
14
- #
15
-
16
- from taskflow.patterns import linear_flow
17
-
18
- from octavia.common import constants
19
- from octavia.controller.worker.v1.tasks import amphora_driver_tasks
20
- from octavia.controller.worker.v1.tasks import database_tasks
21
- from octavia.controller.worker.v1.tasks import lifecycle_tasks
22
- from octavia.controller.worker.v1.tasks import model_tasks
23
-
24
-
25
- class PoolFlows(object):
26
-
27
- def get_create_pool_flow(self):
28
- """Create a flow to create a pool
29
-
30
- :returns: The flow for creating a pool
31
- """
32
- create_pool_flow = linear_flow.Flow(constants.CREATE_POOL_FLOW)
33
- create_pool_flow.add(lifecycle_tasks.PoolToErrorOnRevertTask(
34
- requires=[constants.POOL,
35
- constants.LISTENERS,
36
- constants.LOADBALANCER]))
37
- create_pool_flow.add(database_tasks.MarkPoolPendingCreateInDB(
38
- requires=constants.POOL))
39
- create_pool_flow.add(amphora_driver_tasks.ListenersUpdate(
40
- requires=constants.LOADBALANCER))
41
- create_pool_flow.add(database_tasks.MarkPoolActiveInDB(
42
- requires=constants.POOL))
43
- create_pool_flow.add(database_tasks.MarkLBAndListenersActiveInDB(
44
- requires=[constants.LOADBALANCER, constants.LISTENERS]))
45
-
46
- return create_pool_flow
47
-
48
- def get_delete_pool_flow(self):
49
- """Create a flow to delete a pool
50
-
51
- :returns: The flow for deleting a pool
52
- """
53
- delete_pool_flow = linear_flow.Flow(constants.DELETE_POOL_FLOW)
54
- delete_pool_flow.add(lifecycle_tasks.PoolToErrorOnRevertTask(
55
- requires=[constants.POOL,
56
- constants.LISTENERS,
57
- constants.LOADBALANCER]))
58
- delete_pool_flow.add(database_tasks.MarkPoolPendingDeleteInDB(
59
- requires=constants.POOL))
60
- delete_pool_flow.add(database_tasks.CountPoolChildrenForQuota(
61
- requires=constants.POOL, provides=constants.POOL_CHILD_COUNT))
62
- delete_pool_flow.add(model_tasks.DeleteModelObject(
63
- rebind={constants.OBJECT: constants.POOL}))
64
- delete_pool_flow.add(amphora_driver_tasks.ListenersUpdate(
65
- requires=constants.LOADBALANCER))
66
- delete_pool_flow.add(database_tasks.DeletePoolInDB(
67
- requires=constants.POOL))
68
- delete_pool_flow.add(database_tasks.DecrementPoolQuota(
69
- requires=[constants.POOL, constants.POOL_CHILD_COUNT]))
70
- delete_pool_flow.add(database_tasks.MarkLBAndListenersActiveInDB(
71
- requires=[constants.LOADBALANCER, constants.LISTENERS]))
72
-
73
- return delete_pool_flow
74
-
75
- def get_delete_pool_flow_internal(self, name):
76
- """Create a flow to delete a pool, etc.
77
-
78
- :returns: The flow for deleting a pool
79
- """
80
- delete_pool_flow = linear_flow.Flow(constants.DELETE_POOL_FLOW)
81
- # health monitor should cascade
82
- # members should cascade
83
- delete_pool_flow.add(database_tasks.MarkPoolPendingDeleteInDB(
84
- name='mark_pool_pending_delete_in_db_' + name,
85
- requires=constants.POOL,
86
- rebind={constants.POOL: name}))
87
- delete_pool_flow.add(database_tasks.CountPoolChildrenForQuota(
88
- name='count_pool_children_for_quota_' + name,
89
- requires=constants.POOL,
90
- provides=constants.POOL_CHILD_COUNT,
91
- rebind={constants.POOL: name}))
92
- delete_pool_flow.add(model_tasks.DeleteModelObject(
93
- name='delete_model_object_' + name,
94
- rebind={constants.OBJECT: name}))
95
- delete_pool_flow.add(database_tasks.DeletePoolInDB(
96
- name='delete_pool_in_db_' + name,
97
- requires=constants.POOL,
98
- rebind={constants.POOL: name}))
99
- delete_pool_flow.add(database_tasks.DecrementPoolQuota(
100
- name='decrement_pool_quota_' + name,
101
- requires=[constants.POOL, constants.POOL_CHILD_COUNT],
102
- rebind={constants.POOL: name}))
103
-
104
- return delete_pool_flow
105
-
106
- def get_update_pool_flow(self):
107
- """Create a flow to update a pool
108
-
109
- :returns: The flow for updating a pool
110
- """
111
- update_pool_flow = linear_flow.Flow(constants.UPDATE_POOL_FLOW)
112
- update_pool_flow.add(lifecycle_tasks.PoolToErrorOnRevertTask(
113
- requires=[constants.POOL,
114
- constants.LISTENERS,
115
- constants.LOADBALANCER]))
116
- update_pool_flow.add(database_tasks.MarkPoolPendingUpdateInDB(
117
- requires=constants.POOL))
118
- update_pool_flow.add(amphora_driver_tasks.ListenersUpdate(
119
- requires=constants.LOADBALANCER))
120
- update_pool_flow.add(database_tasks.UpdatePoolInDB(
121
- requires=[constants.POOL, constants.UPDATE_DICT]))
122
- update_pool_flow.add(database_tasks.MarkPoolActiveInDB(
123
- requires=constants.POOL))
124
- update_pool_flow.add(database_tasks.MarkLBAndListenersActiveInDB(
125
- requires=[constants.LOADBALANCER, constants.LISTENERS]))
126
-
127
- return update_pool_flow
@@ -1,11 +0,0 @@
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.