+ def test_exception_mongodb_relation_and_config(
+ self,
+ ) -> NoReturn:
+ "Test with all relations and config for mongodb. Must fail"
+ self.initialize_mongo_relation()
+ self.initialize_mongo_config()
+ # Verifying status
+ self.assertIsInstance(self.harness.charm.unit.status, BlockedStatus)
+
+ # def test_build_pod_spec(
+ # self,
+ # ) -> NoReturn:
+ # expected_config = {
+ # "OSMLCM_GLOBAL_LOGLEVEL": self.config["log_level"],
+ # "OSMLCM_DATABASE_COMMONKEY": self.config["database_commonkey"],
+ # }
+ # expected_config.update(
+ # {
+ # f"OSMLCM_{k.upper()}": v
+ # for k, v in self.config.items()
+ # if k.startswith("vca_")
+ # }
+ # )
+ # self.harness.charm._check_missing_dependencies = mock.Mock()
+ # pod_spec = self.harness.charm.build_pod_spec(
+ # {"imageDetails": {"imagePath": "lcm-image"}}
+ # )
+ # actual_config = pod_spec["containers"][0]["envConfig"]
+
+ # self.assertDictContainsSubset(
+ # expected_config,
+ # actual_config,
+ # )
+ # for config_key in actual_config:
+ # self.assertNotIn("VCA_MODEL_CONFIG", config_key)
+
+ def test_build_pod_spec_with_model_config(
+ self,
+ ) -> NoReturn:
+ self.harness.update_config(
+ {
+ "vca_model_config_agent_metadata_url": "string",
+ "vca_model_config_agent_stream": "string",
+ "vca_model_config_apt_ftp_proxy": "string",
+ "vca_model_config_apt_http_proxy": "string",
+ "vca_model_config_apt_https_proxy": "string",
+ "vca_model_config_apt_mirror": "string",
+ "vca_model_config_apt_no_proxy": "string",
+ "vca_model_config_automatically_retry_hooks": False,
+ "vca_model_config_backup_dir": "string",
+ "vca_model_config_cloudinit_userdata": "string",
+ "vca_model_config_container_image_metadata_url": "string",
+ "vca_model_config_container_image_stream": "string",
+ "vca_model_config_container_inherit_properties": "string",
+ "vca_model_config_container_networking_method": "string",
+ "vca_model_config_default_series": "string",
+ "vca_model_config_default_space": "string",
+ "vca_model_config_development": False,
+ "vca_model_config_disable_network_management": False,
+ "vca_model_config_egress_subnets": "string",
+ "vca_model_config_enable_os_refresh_update": False,
+ "vca_model_config_enable_os_upgrade": False,
+ "vca_model_config_fan_config": "string",
+ "vca_model_config_firewall_mode": "string",
+ "vca_model_config_ftp_proxy": "string",
+ "vca_model_config_http_proxy": "string",
+ "vca_model_config_https_proxy": "string",
+ "vca_model_config_ignore_machine_addresses": False,
+ "vca_model_config_image_metadata_url": "string",
+ "vca_model_config_image_stream": "string",
+ "vca_model_config_juju_ftp_proxy": "string",
+ "vca_model_config_juju_http_proxy": "string",
+ "vca_model_config_juju_https_proxy": "string",
+ "vca_model_config_juju_no_proxy": "string",
+ "vca_model_config_logforward_enabled": False,
+ "vca_model_config_logging_config": "string",
+ "vca_model_config_lxd_snap_channel": "string",
+ "vca_model_config_max_action_results_age": "string",
+ "vca_model_config_max_action_results_size": "string",
+ "vca_model_config_max_status_history_age": "string",
+ "vca_model_config_max_status_history_size": "string",
+ "vca_model_config_net_bond_reconfigure_delay": "string",
+ "vca_model_config_no_proxy": "string",
+ "vca_model_config_provisioner_harvest_mode": "string",
+ "vca_model_config_proxy_ssh": False,
+ "vca_model_config_snap_http_proxy": "string",
+ "vca_model_config_snap_https_proxy": "string",
+ "vca_model_config_snap_store_assertions": "string",
+ "vca_model_config_snap_store_proxy": "string",
+ "vca_model_config_snap_store_proxy_url": "string",
+ "vca_model_config_ssl_hostname_verification": False,
+ "vca_model_config_test_mode": False,
+ "vca_model_config_transmit_vendor_metrics": False,
+ "vca_model_config_update_status_hook_interval": "string",
+ }
+ )
+ expected_config = {
+ f"OSMLCM_{k.upper()}": v
+ for k, v in self.config.items()
+ if k.startswith("vca_model_config_")
+ }
+
+ self.harness.charm._check_missing_dependencies = mock.Mock()
+ pod_spec = self.harness.charm.build_pod_spec(
+ {"imageDetails": {"imagePath": "lcm-image"}}
+ )
+ actual_config = pod_spec["containers"][0]["envConfig"]
+
+ self.assertDictContainsSubset(
+ expected_config,
+ actual_config,
+ )
+