Skip to content

Commit 7b65b16

Browse files
committed
Merge remote-tracking branch 'origin/feature-wf-cr-rs' into feature-wf-cr-rs
2 parents 5f274c2 + 5791aa0 commit 7b65b16

File tree

11 files changed

+2261
-1
lines changed

11 files changed

+2261
-1
lines changed

src/conductor/client/http/api/service_registry_resource_api.py

Lines changed: 1384 additions & 0 deletions
Large diffs are not rendered by default.

src/conductor/client/http/models/__init__.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,4 +57,9 @@
5757
from conductor.client.http.models.workflow_task import CacheConfig
5858
from conductor.client.http.models.schema_def import SchemaDef
5959
from conductor.client.http.models.schema_def import SchemaType
60-
from conductor.client.http.models.signal_response import SignalResponse, TaskStatus
60+
from conductor.client.http.models.service_registry import ServiceRegistry, OrkesCircuitBreakerConfig, Config, ServiceType
61+
from conductor.client.http.models.request_param import RequestParam, Schema
62+
from conductor.client.http.models.proto_registry_entry import ProtoRegistryEntry
63+
from conductor.client.http.models.service_method import ServiceMethod
64+
from conductor.client.http.models.circuit_breaker_transition_response import CircuitBreakerTransitionResponse
65+
from conductor.client.http.models.signal_response import SignalResponse, TaskStatus
Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
from dataclasses import dataclass
2+
from typing import Optional
3+
import six
4+
5+
6+
@dataclass
7+
class CircuitBreakerTransitionResponse:
8+
"""Circuit breaker transition response model."""
9+
10+
swagger_types = {
11+
'service': 'str',
12+
'previous_state': 'str',
13+
'current_state': 'str',
14+
'transition_timestamp': 'int',
15+
'message': 'str'
16+
}
17+
18+
attribute_map = {
19+
'service': 'service',
20+
'previous_state': 'previousState',
21+
'current_state': 'currentState',
22+
'transition_timestamp': 'transitionTimestamp',
23+
'message': 'message'
24+
}
25+
26+
service: Optional[str] = None
27+
previous_state: Optional[str] = None
28+
current_state: Optional[str] = None
29+
transition_timestamp: Optional[int] = None
30+
message: Optional[str] = None
31+
32+
def to_dict(self):
33+
"""Returns the model properties as a dict"""
34+
result = {}
35+
for attr, _ in six.iteritems(self.swagger_types):
36+
value = getattr(self, attr)
37+
if isinstance(value, list):
38+
result[attr] = list(map(
39+
lambda x: x.to_dict() if hasattr(x, "to_dict") else x,
40+
value
41+
))
42+
elif hasattr(value, "to_dict"):
43+
result[attr] = value.to_dict()
44+
elif isinstance(value, dict):
45+
result[attr] = dict(map(
46+
lambda item: (item[0], item[1].to_dict())
47+
if hasattr(item[1], "to_dict") else item,
48+
value.items()
49+
))
50+
else:
51+
result[attr] = value
52+
return result
53+
54+
def __str__(self):
55+
return f"CircuitBreakerTransitionResponse(service='{self.service}', previous_state='{self.previous_state}', current_state='{self.current_state}', transition_timestamp={self.transition_timestamp}, message='{self.message}')"
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
from dataclasses import dataclass
2+
from typing import Optional
3+
import six
4+
5+
6+
@dataclass
7+
class ProtoRegistryEntry:
8+
"""Protocol buffer registry entry for storing service definitions."""
9+
10+
swagger_types = {
11+
'service_name': 'str',
12+
'filename': 'str',
13+
'data': 'bytes'
14+
}
15+
16+
attribute_map = {
17+
'service_name': 'serviceName',
18+
'filename': 'filename',
19+
'data': 'data'
20+
}
21+
22+
service_name: str
23+
filename: str
24+
data: bytes
25+
26+
def to_dict(self):
27+
"""Returns the model properties as a dict"""
28+
result = {}
29+
for attr, _ in six.iteritems(self.swagger_types):
30+
value = getattr(self, attr)
31+
if isinstance(value, list):
32+
result[attr] = list(map(
33+
lambda x: x.to_dict() if hasattr(x, "to_dict") else x,
34+
value
35+
))
36+
elif hasattr(value, "to_dict"):
37+
result[attr] = value.to_dict()
38+
elif isinstance(value, dict):
39+
result[attr] = dict(map(
40+
lambda item: (item[0], item[1].to_dict())
41+
if hasattr(item[1], "to_dict") else item,
42+
value.items()
43+
))
44+
else:
45+
result[attr] = value
46+
return result
47+
48+
def __str__(self):
49+
return f"ProtoRegistryEntry(service_name='{self.service_name}', filename='{self.filename}', data_size={len(self.data)})"
Lines changed: 98 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,98 @@
1+
from dataclasses import dataclass
2+
from typing import Optional, Any
3+
import six
4+
5+
6+
@dataclass
7+
class Schema:
8+
"""Schema definition for request parameters."""
9+
10+
swagger_types = {
11+
'type': 'str',
12+
'format': 'str',
13+
'default_value': 'object'
14+
}
15+
16+
attribute_map = {
17+
'type': 'type',
18+
'format': 'format',
19+
'default_value': 'defaultValue'
20+
}
21+
22+
type: Optional[str] = None
23+
format: Optional[str] = None
24+
default_value: Optional[Any] = None
25+
26+
def to_dict(self):
27+
"""Returns the model properties as a dict"""
28+
result = {}
29+
for attr, _ in six.iteritems(self.swagger_types):
30+
value = getattr(self, attr)
31+
if isinstance(value, list):
32+
result[attr] = list(map(
33+
lambda x: x.to_dict() if hasattr(x, "to_dict") else x,
34+
value
35+
))
36+
elif hasattr(value, "to_dict"):
37+
result[attr] = value.to_dict()
38+
elif isinstance(value, dict):
39+
result[attr] = dict(map(
40+
lambda item: (item[0], item[1].to_dict())
41+
if hasattr(item[1], "to_dict") else item,
42+
value.items()
43+
))
44+
else:
45+
result[attr] = value
46+
return result
47+
48+
def __str__(self):
49+
return f"Schema(type='{self.type}', format='{self.format}', default_value={self.default_value})"
50+
51+
52+
@dataclass
53+
class RequestParam:
54+
"""Request parameter model for API endpoints."""
55+
56+
swagger_types = {
57+
'name': 'str',
58+
'type': 'str',
59+
'required': 'bool',
60+
'schema': 'Schema'
61+
}
62+
63+
attribute_map = {
64+
'name': 'name',
65+
'type': 'type',
66+
'required': 'required',
67+
'schema': 'schema'
68+
}
69+
70+
name: Optional[str] = None
71+
type: Optional[str] = None # Query, Header, Path, etc.
72+
required: bool = False
73+
schema: Optional[Schema] = None
74+
75+
def to_dict(self):
76+
"""Returns the model properties as a dict"""
77+
result = {}
78+
for attr, _ in six.iteritems(self.swagger_types):
79+
value = getattr(self, attr)
80+
if isinstance(value, list):
81+
result[attr] = list(map(
82+
lambda x: x.to_dict() if hasattr(x, "to_dict") else x,
83+
value
84+
))
85+
elif hasattr(value, "to_dict"):
86+
result[attr] = value.to_dict()
87+
elif isinstance(value, dict):
88+
result[attr] = dict(map(
89+
lambda item: (item[0], item[1].to_dict())
90+
if hasattr(item[1], "to_dict") else item,
91+
value.items()
92+
))
93+
else:
94+
result[attr] = value
95+
return result
96+
97+
def __str__(self):
98+
return f"RequestParam(name='{self.name}', type='{self.type}', required={self.required})"
Lines changed: 91 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,91 @@
1+
from dataclasses import dataclass
2+
from typing import Optional, List, Dict, Any
3+
import six
4+
5+
6+
@dataclass
7+
class ServiceMethod:
8+
"""Service method model matching the Java ServiceMethod POJO."""
9+
10+
swagger_types = {
11+
'id': 'int',
12+
'operation_name': 'str',
13+
'method_name': 'str',
14+
'method_type': 'str',
15+
'input_type': 'str',
16+
'output_type': 'str',
17+
'request_params': 'list[RequestParam]',
18+
'example_input': 'dict'
19+
}
20+
21+
attribute_map = {
22+
'id': 'id',
23+
'operation_name': 'operationName',
24+
'method_name': 'methodName',
25+
'method_type': 'methodType',
26+
'input_type': 'inputType',
27+
'output_type': 'outputType',
28+
'request_params': 'requestParams',
29+
'example_input': 'exampleInput'
30+
}
31+
32+
id: Optional[int] = None
33+
operation_name: Optional[str] = None
34+
method_name: Optional[str] = None
35+
method_type: Optional[str] = None # GET, PUT, POST, UNARY, SERVER_STREAMING etc.
36+
input_type: Optional[str] = None
37+
output_type: Optional[str] = None
38+
request_params: Optional[List[Any]] = None # List of RequestParam objects
39+
example_input: Optional[Dict[str, Any]] = None
40+
41+
def __post_init__(self):
42+
"""Initialize default values after dataclass creation."""
43+
if self.request_params is None:
44+
self.request_params = []
45+
if self.example_input is None:
46+
self.example_input = {}
47+
48+
def to_dict(self):
49+
"""Returns the model properties as a dict using the correct JSON field names."""
50+
result = {}
51+
for attr, json_key in six.iteritems(self.attribute_map):
52+
value = getattr(self, attr)
53+
if value is not None:
54+
if isinstance(value, list):
55+
result[json_key] = list(map(
56+
lambda x: x.to_dict() if hasattr(x, "to_dict") else x,
57+
value
58+
))
59+
elif hasattr(value, "to_dict"):
60+
result[json_key] = value.to_dict()
61+
elif isinstance(value, dict):
62+
result[json_key] = dict(map(
63+
lambda item: (item[0], item[1].to_dict())
64+
if hasattr(item[1], "to_dict") else item,
65+
value.items()
66+
))
67+
else:
68+
result[json_key] = value
69+
return result
70+
71+
def __str__(self):
72+
return f"ServiceMethod(operation_name='{self.operation_name}', method_name='{self.method_name}', method_type='{self.method_type}')"
73+
74+
75+
# For backwards compatibility, add helper methods
76+
@dataclass
77+
class RequestParam:
78+
"""Request parameter model (placeholder - define based on actual Java RequestParam class)."""
79+
80+
name: Optional[str] = None
81+
type: Optional[str] = None
82+
required: Optional[bool] = False
83+
description: Optional[str] = None
84+
85+
def to_dict(self):
86+
return {
87+
'name': self.name,
88+
'type': self.type,
89+
'required': self.required,
90+
'description': self.description
91+
}

0 commit comments

Comments
 (0)