def test_agent_config(self): config_dict = {POLYAXON_KEYS_AGENT_ARTIFACTS_STORE: 12} with self.assertRaises(ValidationError): AgentConfig.from_dict(config_dict) config_dict = {POLYAXON_KEYS_AGENT_ARTIFACTS_STORE: "some"} with self.assertRaises(ValidationError): AgentConfig.from_dict(config_dict) config_dict = { POLYAXON_KEYS_K8S_NAMESPACE: "foo", POLYAXON_KEYS_AGENT_ARTIFACTS_STORE: { "name": "some", "kind": V1ConnectionKind.GCS, "schema": V1BucketConnection(bucket="gs://test").to_dict(), }, POLYAXON_KEYS_AGENT_CONNECTIONS: [], } config = AgentConfig.from_dict(config_dict) assert config.to_light_dict() == config_dict config_dict = { POLYAXON_KEYS_K8S_NAMESPACE: "foo", POLYAXON_KEYS_AGENT_ARTIFACTS_STORE: "some", POLYAXON_KEYS_AGENT_CONNECTIONS: [ { "name": "some", "kind": V1ConnectionKind.GCS, "schema": V1BucketConnection(bucket="gs://test").to_dict(), "secretResource": "some", } ], } with self.assertRaises(ValidationError): AgentConfig.from_dict(config_dict) config_dict = { POLYAXON_KEYS_K8S_NAMESPACE: "foo", POLYAXON_KEYS_AGENT_ARTIFACTS_STORE: { "name": "test", "kind": V1ConnectionKind.GCS, "schema": V1BucketConnection(bucket="gs://test").to_dict(), "secret": V1K8sResourceSchema(name="some").to_dict(), }, POLYAXON_KEYS_AGENT_CONNECTIONS: [ { "name": "some", "kind": V1ConnectionKind.GCS, "schema": V1BucketConnection(bucket="gs://test").to_dict(), "secret": V1K8sResourceSchema(name="some").to_dict(), }, { "name": "slack", "kind": V1ConnectionKind.SLACK, "secret": V1K8sResourceSchema(name="some").to_dict(), }, ], } config = AgentConfig.from_dict(config_dict) assert config.to_light_dict() == config_dict
def test_agent_config_from_str_envs(self): config_dict = { POLYAXON_KEYS_K8S_NAMESPACE: "foo", POLYAXON_KEYS_AGENT_ARTIFACTS_STORE: ujson.dumps( { "name": "test1", "kind": V1ConnectionKind.GCS, "schema": V1BucketConnection(bucket="gs://test").to_dict(), "secret": V1K8sResourceSchema(name="some").to_dict(), } ), POLYAXON_KEYS_AGENT_NOTIFICATION_CONNECTIONS: ujson.dumps( [ { "name": "slack", "kind": V1ConnectionKind.SLACK, "secret": V1K8sResourceSchema(name="some").to_dict(), } ], ), POLYAXON_KEYS_AGENT_CONNECTIONS: ujson.dumps( [ { "name": "test2", "kind": V1ConnectionKind.GCS, "schema": V1BucketConnection(bucket="gs://test").to_dict(), "secret": V1K8sResourceSchema(name="some").to_dict(), } ] ), } config = AgentConfig.from_dict(config_dict) assert len(config.secrets) == 1 assert len(config.to_light_dict()[POLYAXON_KEYS_AGENT_CONNECTIONS]) == 1
def get_config_from_env(cls) -> AgentConfig: tmp_path = os.path.join(CONTEXT_TMP_POLYAXON_PATH, ".agent") user_path = os.path.join(CONTEXT_USER_POLYAXON_PATH, ".agent") config_paths = [ os.environ, ConfigSpec(tmp_path, config_type=".json", check_if_exists=False), ConfigSpec(user_path, config_type=".json", check_if_exists=False), { "dummy": "dummy" }, ] agent_config = ConfigManager.read_configs(config_paths) return AgentConfig.from_dict(agent_config.data)