From 4f9b66071e0325a646f3bf6ec3608273ab963a93 Mon Sep 17 00:00:00 2001 From: Marcelo Castro Date: Mon, 5 Dec 2022 15:12:19 -0300 Subject: [PATCH] octavia-cli: Added flag to control whether to reset the streams or not (#18337) * Added flag on octavia to control wheter to reset the streams or not * Restore test_api_http_headers * Going back to reseting by default --- .../connections/poke_to_pg/configuration.yaml | 1 + octavia-cli/octavia_cli/apply/resources.py | 16 ++++++++++++++++ .../generate/templates/connection.yaml.j2 | 1 + 3 files changed, 18 insertions(+) diff --git a/octavia-cli/integration_tests/configurations/connections/poke_to_pg/configuration.yaml b/octavia-cli/integration_tests/configurations/connections/poke_to_pg/configuration.yaml index 1e343e606fb6..f1a13465657c 100644 --- a/octavia-cli/integration_tests/configurations/connections/poke_to_pg/configuration.yaml +++ b/octavia-cli/integration_tests/configurations/connections/poke_to_pg/configuration.yaml @@ -7,6 +7,7 @@ destination_configuration_path: TO_UPDATE_FROM_TEST # EDIT THE CONFIGURATION BELOW! configuration: status: active # REQUIRED | string | Allowed values: active, inactive, deprecated + skip_reset: false # REQUIRED | boolean | Flag to check if the connection should be reseted after a connection update namespace_definition: source # OPTIONAL | string | Allowed values: source, destination, customformat namespace_format: "${SOURCE_NAMESPACE}" # OPTIONAL | string | Used when namespaceDefinition is 'customformat'. If blank then behaves like namespaceDefinition = 'destination'. If "${SOURCE_NAMESPACE}" then behaves like namespaceDefinition = 'source'. prefix: "" # REQUIRED | Prefix that will be prepended to the name of each stream when it is written to the destination diff --git a/octavia-cli/octavia_cli/apply/resources.py b/octavia-cli/octavia_cli/apply/resources.py index da60f0008b44..be3a2da7dd57 100644 --- a/octavia-cli/octavia_cli/apply/resources.py +++ b/octavia-cli/octavia_cli/apply/resources.py @@ -569,6 +569,14 @@ class Connection(BaseResource): resource_type = "connection" + local_root_level_keys_to_remove_during_create = [ + "skip_reset" + ] # Remove these keys when sending a create request + + local_root_level_keys_to_filter_out_for_comparison = [ + "skip_reset" + ] # Remote do not have these keys + remote_root_level_keys_to_filter_out_for_comparison = [ "name", "source", @@ -667,6 +675,8 @@ def create_payload(self) -> WebBackendConnectionCreate: self.configuration["operations"] = self._deserialize_operations( self.raw_configuration["configuration"]["operations"], OperationCreate ) + for k in self.local_root_level_keys_to_remove_during_create: + self.configuration.pop(k, None) return WebBackendConnectionCreate( name=self.resource_name, source_id=self.source_id, destination_id=self.destination_id, **self.configuration ) @@ -794,6 +804,12 @@ def _check_for_legacy_raw_configuration_keys(self, raw_configuration): "These keys changed to source_configuration_path and destination_configuration_path in version > 0.39.18, please update your connection configuration to give path to source and destination configuration files or regenerate the connection", ) + def _get_local_comparable_configuration(self) -> dict: + comparable = { + k: v for k, v in self.raw_configuration["configuration"].items() if k not in self.local_root_level_keys_to_filter_out_for_comparison + } + return comparable + def _get_remote_comparable_configuration(self) -> dict: comparable = { diff --git a/octavia-cli/octavia_cli/generate/templates/connection.yaml.j2 b/octavia-cli/octavia_cli/generate/templates/connection.yaml.j2 index 58b36cba53cd..7ac37c77ffaf 100644 --- a/octavia-cli/octavia_cli/generate/templates/connection.yaml.j2 +++ b/octavia-cli/octavia_cli/generate/templates/connection.yaml.j2 @@ -7,6 +7,7 @@ destination_configuration_path: {{ destination_configuration_path }} # EDIT THE CONFIGURATION BELOW! configuration: status: active # REQUIRED | string | Allowed values: active, inactive, deprecated + skip_reset: false # REQUIRED | boolean | Flag to check if the connection should be reseted after a connection update namespace_definition: source # OPTIONAL | string | Allowed values: source, destination, customformat namespace_format: "${SOURCE_NAMESPACE}" # OPTIONAL | string | Used when namespaceDefinition is 'customformat'. If blank then behaves like namespaceDefinition = 'destination'. If "${SOURCE_NAMESPACE}" then behaves like namespaceDefinition = 'source'. prefix: "" # REQUIRED | Prefix that will be prepended to the name of each stream when it is written to the destination