jetstream-api 0.22.0__tar.gz → 0.22.1__tar.gz
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.
- {jetstream_api-0.22.0/jetstream_api.egg-info → jetstream_api-0.22.1}/PKG-INFO +8 -1
- {jetstream_api-0.22.0 → jetstream_api-0.22.1}/README.md +7 -0
- {jetstream_api-0.22.0 → jetstream_api-0.22.1}/ilink/__init__.py +1 -1
- {jetstream_api-0.22.0 → jetstream_api-0.22.1}/ilink/admin.py +6 -2
- {jetstream_api-0.22.0 → jetstream_api-0.22.1}/ilink/properties.py +34 -4
- {jetstream_api-0.22.0 → jetstream_api-0.22.1/jetstream_api.egg-info}/PKG-INFO +8 -1
- {jetstream_api-0.22.0 → jetstream_api-0.22.1}/pyproject.toml +1 -1
- {jetstream_api-0.22.0 → jetstream_api-0.22.1}/LICENSE.txt +0 -0
- {jetstream_api-0.22.0 → jetstream_api-0.22.1}/ilink/_codec.py +0 -0
- {jetstream_api-0.22.0 → jetstream_api-0.22.1}/ilink/_consumer.py +0 -0
- {jetstream_api-0.22.0 → jetstream_api-0.22.1}/ilink/_groupwire.py +0 -0
- {jetstream_api-0.22.0 → jetstream_api-0.22.1}/ilink/_propv2.py +0 -0
- {jetstream_api-0.22.0 → jetstream_api-0.22.1}/ilink/_qleader.py +0 -0
- {jetstream_api-0.22.0 → jetstream_api-0.22.1}/ilink/_throttle.py +0 -0
- {jetstream_api-0.22.0 → jetstream_api-0.22.1}/ilink/admintopic.py +0 -0
- {jetstream_api-0.22.0 → jetstream_api-0.22.1}/ilink/common.py +0 -0
- {jetstream_api-0.22.0 → jetstream_api-0.22.1}/ilink/connectivity.py +0 -0
- {jetstream_api-0.22.0 → jetstream_api-0.22.1}/ilink/exception.py +0 -0
- {jetstream_api-0.22.0 → jetstream_api-0.22.1}/ilink/msg.py +0 -0
- {jetstream_api-0.22.0 → jetstream_api-0.22.1}/ilink/partitioner.py +0 -0
- {jetstream_api-0.22.0 → jetstream_api-0.22.1}/ilink/pattern.py +0 -0
- {jetstream_api-0.22.0 → jetstream_api-0.22.1}/ilink/producer.py +0 -0
- {jetstream_api-0.22.0 → jetstream_api-0.22.1}/ilink/py.typed +0 -0
- {jetstream_api-0.22.0 → jetstream_api-0.22.1}/ilink/qmgr.py +0 -0
- {jetstream_api-0.22.0 → jetstream_api-0.22.1}/ilink/topic.py +0 -0
- {jetstream_api-0.22.0 → jetstream_api-0.22.1}/ilink/util.py +0 -0
- {jetstream_api-0.22.0 → jetstream_api-0.22.1}/jetstream_api.egg-info/SOURCES.txt +0 -0
- {jetstream_api-0.22.0 → jetstream_api-0.22.1}/jetstream_api.egg-info/dependency_links.txt +0 -0
- {jetstream_api-0.22.0 → jetstream_api-0.22.1}/jetstream_api.egg-info/requires.txt +0 -0
- {jetstream_api-0.22.0 → jetstream_api-0.22.1}/jetstream_api.egg-info/top_level.txt +0 -0
- {jetstream_api-0.22.0 → jetstream_api-0.22.1}/setup.cfg +0 -0
- {jetstream_api-0.22.0 → jetstream_api-0.22.1}/tests/test_example.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: jetstream-api
|
|
3
|
-
Version: 0.22.
|
|
3
|
+
Version: 0.22.1
|
|
4
4
|
Summary: Python client API for iLink M.O.M. (Message Oriented Middleware)
|
|
5
5
|
Author: snowjeans
|
|
6
6
|
License: Boost Software License - Version 1.0 - August 17th, 2003
|
|
@@ -60,6 +60,13 @@ lz4 배치 압축을 쓰려면 `pip install "jetstream-api[lz4]"`, zstd 배치
|
|
|
60
60
|
## 설치 방법
|
|
61
61
|
pip install jetstream-api
|
|
62
62
|
|
|
63
|
+
## 0.22.1 변경 - 노드 추가 결과에 컨트롤러 기동 여부 (자바 v2.18.1 와 같음, started · wait 는 짝 엔진 7.0.1.3602 이상)
|
|
64
|
+
|
|
65
|
+
- ``addNode`` 결과(``ILClusterNodeAddResult``)에 ``started`` · ``wait``(``is_started()``): 자리를 맡은 서비스가 컨트롤러를 **띄웠는가**와
|
|
66
|
+
안 띄운 까닭(``MANUAL`` - 정의 STARTMODE 가 MANUAL 이라 :meth:`startCluster` 로 띄운다 · ``STOPPED`` - 사용자가 멈춰 둠 · ``FAILED`` -
|
|
67
|
+
띄우다 실패, ilsvc 로그). 그 전 엔진은 이 칸을 주지 않아 맡았으면 띄운 것으로 본다(종전 동작).
|
|
68
|
+
- 문서: 클러스터 팔로워 노드에 보낸 생성 · 변경 · 삭제는 ``MIMQE_OPERATION_DENIED (STANDBY, leader=..)``, 조회 · 목록은 팔로워도 답한다.
|
|
69
|
+
|
|
63
70
|
## 0.22.0 변경 - 7 신규 오브젝트(쿼터 · 디스크 가드 · 토픽 · 클러스터) 관리를 Property v2(JSON)로 (자바 v2.18.0 와 같음, 짝 엔진 7.0.1.3601 이상)
|
|
64
71
|
|
|
65
72
|
- **와이어**: 쿼터 · 디스크 가드 · 토픽 · 클러스터의 생성 · 조회 · 목록 · 변경 · 삭제가 새 요청 코드 3600~3604(본문 = UTF-8 JSON)로 간다.
|
|
@@ -10,6 +10,13 @@ lz4 배치 압축을 쓰려면 `pip install "jetstream-api[lz4]"`, zstd 배치
|
|
|
10
10
|
## 설치 방법
|
|
11
11
|
pip install jetstream-api
|
|
12
12
|
|
|
13
|
+
## 0.22.1 변경 - 노드 추가 결과에 컨트롤러 기동 여부 (자바 v2.18.1 와 같음, started · wait 는 짝 엔진 7.0.1.3602 이상)
|
|
14
|
+
|
|
15
|
+
- ``addNode`` 결과(``ILClusterNodeAddResult``)에 ``started`` · ``wait``(``is_started()``): 자리를 맡은 서비스가 컨트롤러를 **띄웠는가**와
|
|
16
|
+
안 띄운 까닭(``MANUAL`` - 정의 STARTMODE 가 MANUAL 이라 :meth:`startCluster` 로 띄운다 · ``STOPPED`` - 사용자가 멈춰 둠 · ``FAILED`` -
|
|
17
|
+
띄우다 실패, ilsvc 로그). 그 전 엔진은 이 칸을 주지 않아 맡았으면 띄운 것으로 본다(종전 동작).
|
|
18
|
+
- 문서: 클러스터 팔로워 노드에 보낸 생성 · 변경 · 삭제는 ``MIMQE_OPERATION_DENIED (STANDBY, leader=..)``, 조회 · 목록은 팔로워도 답한다.
|
|
19
|
+
|
|
13
20
|
## 0.22.0 변경 - 7 신규 오브젝트(쿼터 · 디스크 가드 · 토픽 · 클러스터) 관리를 Property v2(JSON)로 (자바 v2.18.0 와 같음, 짝 엔진 7.0.1.3601 이상)
|
|
14
21
|
|
|
15
22
|
- **와이어**: 쿼터 · 디스크 가드 · 토픽 · 클러스터의 생성 · 조회 · 목록 · 변경 · 삭제가 새 요청 코드 3600~3604(본문 = UTF-8 JSON)로 간다.
|
|
@@ -1516,7 +1516,8 @@ class ILAdminService:
|
|
|
1516
1516
|
Returns:
|
|
1517
1517
|
ILClusterNodeAddResult: 이 서비스가 그 자리를 **곧바로 맡았는가**. 맡았으면
|
|
1518
1518
|
:meth:`joinCluster` 가 필요 없다. 새 자리가 이 서비스 호스트의 컨트롤러 전용 자리일 때만 맡는다 -
|
|
1519
|
-
**브로커를 더하면 어디서 불러도 맡지 않은 것으로 나온다.**
|
|
1519
|
+
**브로커를 더하면 어디서 불러도 맡지 않은 것으로 나온다.** ★ 맡았다고 곧 뜨는 것은 아니다 - 그 서비스의 정의
|
|
1520
|
+
``STARTMODE`` 가 ``AUTO`` 면 컨트롤러가 저절로 뜨고, ``MANUAL`` 이면 :meth:`startCluster` 를 불러야 뜬다(엔진 r3492 부터).
|
|
1520
1521
|
|
|
1521
1522
|
Raises:
|
|
1522
1523
|
ILOperationException: 엔진이 거절할 때(사유 문자열로 가른다) - 투표권(``coordinator=True``)을
|
|
@@ -1561,7 +1562,10 @@ class ILAdminService:
|
|
|
1561
1562
|
r = self._alter_cluster(p).get("_RESULT") or {}
|
|
1562
1563
|
if not r.get("CLAIMED"):
|
|
1563
1564
|
return ILClusterNodeAddResult()
|
|
1564
|
-
|
|
1565
|
+
# 0.22.1: 엔진 r3602 부터 STARTED / WAIT(맡은 서비스가 컨트롤러를 띄웠는가) - 없으면(그 전 엔진) 띄운 것으로 본다
|
|
1566
|
+
st = r.get("STARTED")
|
|
1567
|
+
return ILClusterNodeAddResult("CLAIMED", str(r.get("NODE", "")), str(r.get("CTRLPORT", "")),
|
|
1568
|
+
None if st is None else bool(st), str(r.get("WAIT", "") or ""))
|
|
1565
1569
|
|
|
1566
1570
|
def removeNode(self, clusterName: str, nodeId: int) -> None:
|
|
1567
1571
|
"""클러스터에서 **투표권 없는 노드 하나**(컨트롤러 전용 노드 또는 브로커)를 뺀다.
|
|
@@ -4789,6 +4789,9 @@ class ILPropertyResult(_AutoAccessor):
|
|
|
4789
4789
|
엔진이 무엇을 적용했고 무엇을 무시했는지 돌려준다 - 모르는 키를 무시하는 규칙(U4)이 **조용한 무시**가 되지 않게
|
|
4790
4790
|
하는 장치다. 무시된 키가 있으면 라이브러리는 WARNING 로그도 남긴다(결과를 돌려주지 않는 옛 메서드도 같다).
|
|
4791
4791
|
|
|
4792
|
+
클러스터의 팔로워 노드에 보낸 변경(CREATE / ALTER / DELETE)은 ``MIMQE_OPERATION_DENIED (STANDBY, leader=<리더>)`` 로
|
|
4793
|
+
거절된다(연결 유형과 무관, 엔진 r3601). 조회(GET / LIST)는 팔로워도 답한다.
|
|
4794
|
+
|
|
4792
4795
|
Attributes:
|
|
4793
4796
|
applied (list[tuple[str, str]]): 적용된 키와 반영 시점 ``(키, "NOW" | "RESTART")``.
|
|
4794
4797
|
ignored (list[tuple[str, str]]): 무시된 키와 까닭 ``(키 경로, "unknown" | "retired" | "readonly" | "unsupported-by-peer")``.
|
|
@@ -5863,15 +5866,21 @@ class ILClusterNodeAddResult(_AutoAccessor):
|
|
|
5863
5866
|
claimed (bool): 이 서비스가 그 자리를 맡았는가.
|
|
5864
5867
|
nodeId (int): 맡은 노드 번호. 맡지 않았으면 0.
|
|
5865
5868
|
ctrlPort (int): 맡은 자리의 ctrl 포트. 맡지 않았으면 0.
|
|
5869
|
+
started (bool): 자리를 맡은 이 서비스가 컨트롤러(ilcc)를 **띄웠는가**(0.22.1, 엔진 r3602). 맡지 않았으면 False.
|
|
5870
|
+
그 전 엔진은 이 칸을 주지 않으므로 맡았으면 True 로 본다(종전 동작).
|
|
5871
|
+
wait (str): 맡았는데 띄우지 않은 까닭. ``"MANUAL"``(정의 STARTMODE 가 MANUAL - :meth:`ILAdminService.startCluster` 로
|
|
5872
|
+
띄운다) · ``"STOPPED"``(사용자가 멈춰 두었다) · ``"FAILED"``(띄우다 실패 - ilsvc 로그). 띄웠거나 맡지 않았으면 ``""``.
|
|
5866
5873
|
"""
|
|
5867
5874
|
|
|
5868
|
-
def __init__(self, arg1: str = "", arg2: str = "", arg3: str = "") -> None:
|
|
5869
|
-
"""응답
|
|
5875
|
+
def __init__(self, arg1: str = "", arg2: str = "", arg3: str = "", started: bool | None = None, not_started_reason: str = "") -> None:
|
|
5876
|
+
"""응답 칸을 파싱한다. **응용이 직접 만들 일은 없다.**
|
|
5870
5877
|
|
|
5871
5878
|
Args:
|
|
5872
5879
|
arg1 (str): ``"CLAIMED"`` 면 맡았다. 비면 맡지 않았다.
|
|
5873
5880
|
arg2 (str): 노드 번호.
|
|
5874
5881
|
arg3 (str): ctrl 포트.
|
|
5882
|
+
started (bool | None): 엔진의 ``STARTED``. None(그 전 엔진)이면 맡았을 때 True.
|
|
5883
|
+
not_started_reason (str): 엔진의 ``WAIT`` - ``"MANUAL"`` · ``"STOPPED"`` · ``"FAILED"`` 중 하나 또는 ``""``.
|
|
5875
5884
|
"""
|
|
5876
5885
|
def _int(v):
|
|
5877
5886
|
try:
|
|
@@ -5881,6 +5890,8 @@ class ILClusterNodeAddResult(_AutoAccessor):
|
|
|
5881
5890
|
self.claimed = str(arg1 or "").strip() == "CLAIMED"
|
|
5882
5891
|
self.nodeId = _int(arg2) if self.claimed else 0
|
|
5883
5892
|
self.ctrlPort = _int(arg3) if self.claimed else 0
|
|
5893
|
+
self.started = self.claimed and (True if started is None else bool(started))
|
|
5894
|
+
self.wait = "" if (not self.claimed or self.started) else str(not_started_reason or "")
|
|
5884
5895
|
|
|
5885
5896
|
def is_claimed(self) -> bool:
|
|
5886
5897
|
"""이 서비스가 그 자리를 맡았는가.
|
|
@@ -5892,14 +5903,33 @@ class ILClusterNodeAddResult(_AutoAccessor):
|
|
|
5892
5903
|
|
|
5893
5904
|
isClaimed = is_claimed
|
|
5894
5905
|
|
|
5906
|
+
def is_started(self) -> bool:
|
|
5907
|
+
"""자리를 맡은 이 서비스가 컨트롤러를 띄웠는가(0.22.1).
|
|
5908
|
+
|
|
5909
|
+
Returns:
|
|
5910
|
+
bool: 띄웠으면 True. 맡지 않았으면 False.
|
|
5911
|
+
"""
|
|
5912
|
+
return self.started
|
|
5913
|
+
|
|
5914
|
+
isStarted = is_started
|
|
5915
|
+
|
|
5916
|
+
_WAIT_TEXT = {
|
|
5917
|
+
"MANUAL": "STARTMODE is MANUAL - run startCluster",
|
|
5918
|
+
"STOPPED": "the cluster was stopped here - run startCluster",
|
|
5919
|
+
"FAILED": "starting it failed - see the ilsvc log",
|
|
5920
|
+
}
|
|
5921
|
+
|
|
5895
5922
|
def __str__(self) -> str:
|
|
5896
5923
|
"""사람이 읽는 한 줄 요약을 돌려준다.
|
|
5897
5924
|
|
|
5898
5925
|
Returns:
|
|
5899
|
-
str:
|
|
5926
|
+
str: 맡았는지 · 띄웠는지와 자리. 형식은 고정이 아니므로 파싱하지 말 것.
|
|
5900
5927
|
"""
|
|
5928
|
+
if self.claimed and self.started:
|
|
5929
|
+
return "node added: claimed node[%d] ctrl port %d here and started its controller" % (self.nodeId, self.ctrlPort)
|
|
5901
5930
|
if self.claimed:
|
|
5902
|
-
return "node added: claimed node[%d] ctrl port %d here" % (
|
|
5931
|
+
return "node added: claimed node[%d] ctrl port %d here but did not start it: %s" % (
|
|
5932
|
+
self.nodeId, self.ctrlPort, self._WAIT_TEXT.get(self.wait, self.wait or "unknown"))
|
|
5903
5933
|
return "node added: not claimed here (joinCluster on the service that should host it)"
|
|
5904
5934
|
|
|
5905
5935
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: jetstream-api
|
|
3
|
-
Version: 0.22.
|
|
3
|
+
Version: 0.22.1
|
|
4
4
|
Summary: Python client API for iLink M.O.M. (Message Oriented Middleware)
|
|
5
5
|
Author: snowjeans
|
|
6
6
|
License: Boost Software License - Version 1.0 - August 17th, 2003
|
|
@@ -60,6 +60,13 @@ lz4 배치 압축을 쓰려면 `pip install "jetstream-api[lz4]"`, zstd 배치
|
|
|
60
60
|
## 설치 방법
|
|
61
61
|
pip install jetstream-api
|
|
62
62
|
|
|
63
|
+
## 0.22.1 변경 - 노드 추가 결과에 컨트롤러 기동 여부 (자바 v2.18.1 와 같음, started · wait 는 짝 엔진 7.0.1.3602 이상)
|
|
64
|
+
|
|
65
|
+
- ``addNode`` 결과(``ILClusterNodeAddResult``)에 ``started`` · ``wait``(``is_started()``): 자리를 맡은 서비스가 컨트롤러를 **띄웠는가**와
|
|
66
|
+
안 띄운 까닭(``MANUAL`` - 정의 STARTMODE 가 MANUAL 이라 :meth:`startCluster` 로 띄운다 · ``STOPPED`` - 사용자가 멈춰 둠 · ``FAILED`` -
|
|
67
|
+
띄우다 실패, ilsvc 로그). 그 전 엔진은 이 칸을 주지 않아 맡았으면 띄운 것으로 본다(종전 동작).
|
|
68
|
+
- 문서: 클러스터 팔로워 노드에 보낸 생성 · 변경 · 삭제는 ``MIMQE_OPERATION_DENIED (STANDBY, leader=..)``, 조회 · 목록은 팔로워도 답한다.
|
|
69
|
+
|
|
63
70
|
## 0.22.0 변경 - 7 신규 오브젝트(쿼터 · 디스크 가드 · 토픽 · 클러스터) 관리를 Property v2(JSON)로 (자바 v2.18.0 와 같음, 짝 엔진 7.0.1.3601 이상)
|
|
64
71
|
|
|
65
72
|
- **와이어**: 쿼터 · 디스크 가드 · 토픽 · 클러스터의 생성 · 조회 · 목록 · 변경 · 삭제가 새 요청 코드 3600~3604(본문 = UTF-8 JSON)로 간다.
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|