What’s new in v22.7LTS
New builtins
CLA(Closed Loop Automation)に関する以下の組込オブジェクトを追加
詳細は、ドキュメントを参照(https://docs.sdk.qmonus.net/scenario/closedloop/
)
- ClosedLoopComponent
- ClosedLoopType
- ClosedLoop
- CLG
- CLC
New service
CLA(Closed Loop Automation)サービス追加
General changes
- ATOMのlocalfieldsメソッドに
ignore_null_field
キーワード引数を追加(issue#60
)
(デフォルトは従来動作踏襲のためTrue)
>> await atom.Foo(name="test").save()↵
... ↵
↵
>>> i = await atom.Foo.load("test")↵
... ↵
↵
>>> print(i.localfields())↵
... ↵
↵
{'name': 'test'}
>>> print(i.localfields(ignore_null_field=False))↵
... ↵
↵
{'name': 'test', 'description': None}
>>>
- テストケースの名前空間に
Stats
辞書を追加
Stats辞書には以下のようにテストケースで実行された各フェーズの処理時間が記録されるためassert処理の中でStatsを参照して想定を超える処理時間を要していないかチェックすることが可能になりました。
{
"call": 0.0278,
"assert_output": 0.0001,
"assert_progress": 0.0001
}
以下のassert endのような性能評価式を記述することで性能劣化を検出できます。
category: example
name: exampleNormalDryrun
target: example
illusion: exampleDryrun
fakers:
ExampleFaker: fake
getHoge: Success
getHogeWaitForActive: WaitForActive
getHogeWaitForNotFound: WaitForNotFound
postHoge: Accepted
input:
path: /examples
method: POST
body: |-
def randomBody():
import rstr
return dict(name=rstr.xeger("^[A-Z][a-zA-Z_0-9-]+$"), region=rstr.rstr(["jp1", "jp2"], 1))
headers:
Content-Type: application/json
assertion:
output: |-
async def assertion():
assert Response.code==202, "Invalid response code %r" % Response.code
assert Response.body, "Empty body %r" % Response.body
assert "hogeID" in json.loads(Response.body), "Invalid response body %s" % Response.body
progress:
- index: 1
script: |-
async def assertion():
assert Transaction.xglobals.name and Transaction.xglobals.region, "name or region is None"
assert Transaction.xglobals.hogeID is not None, "hogeID is None"
end: |
async def assertion():
assert Transaction.status=="Complete", "Transaction is in an unexpected state %r" % Transaction.status
assert Stats["call"] < 0.500, f"Exceeds the expected TAT {Stats['call']}"
- 依存解決のために一括インストールするclasses/modelschemasプラグインのアップロードタイムアウトのデフォルト値を300秒に変更。また
--plugins_upload_timeout
起動パラメータで変更可能オプションを追加
- Kube組込オブジェクトでカスタムリソースのCRUDに対応
k = await Kube.load(CLUSTER)
await k.getNamespace(NAMESPACE).createCustomObject(
{
"apiVersion": "kafka.strimzi.io/v1beta2",
"kind": "KafkaTopic",
"metadata": {
"name": f"kafka-topic-{identity}",
"namespace": NAMESPACE,
"labels": {
"strimzi.io/cluster": "my-cluster"
}
},
"spec": {
"topicName": f"topic-{identity}",
"partitions": 1,
"replicas": 1
}
},
group="kafka.strimzi.io",
version="v1beta2",
plural="kafkatopics"
)
Bug fixes
- Test組込オブジェクトのflushメソッドでテストケースの試験履歴が削除されない問題の修正(
issue#61
) - SQL.bulkUpsertでMySQL予約語フィールドが存在するテーブルへの実行が失敗する問題の修正(
issue#63
) - 100万件以上のレコード数のテーブルが存在する状態でのプラグインインストールに時間がかかり、メモリも高騰する問題の修正(
issue#64
) - guestノードでのjobタスク登録に初回失敗する問題の修正(
issue#65
) - active状態のデーモンが起動しない場合がある(
issue#66
) - collector/reflectorを有効化した環境でGraphQLを利用した場合、404エラー(
issue#67
)
Modules
aiohttp==3.8.1
aiomysql==0.0.22
aioredis==2.0.1
aiosmtplib==1.1.6
aiofiles==0.8.0
async-timeout==4.0.2
aniso8601==3.0.2
asn1crypto==1.4.0
asyncssh==1.18.0
attrs==21.2.0
bcrypt==3.2.0
cffi==1.14.6
chardet==3.0.4
cryptography==3.4.8
Cython==0.29.26
graphene==2.1.8
graphene-sqlalchemy==2.2.2
graphql-core==2.2.1
graphql-relay==2.0.0
hiredis==2.0.0
idna==3.2
Jinja2==3.0.3
jinja2schema==0.1.4
jsonschema==4.4.0
MarkupSafe==2.0.1
multidict==5.1.0
netmiko==3.4.0
paramiko==2.7.2
ply==3.11
promise==2.3
psutil==5.9.0
py-dateutil==2.2
pyasn1==0.4.8
pycparser==2.20
pycryptodome==3.12.0
pycryptodomex==3.12.0
pycurl==7.44.1
PyJWT==2.3.0
PyMySQL==0.9.3
PyNaCl==1.4.0
pyrsistent==0.18.0
pyserial==3.5
pysmi==0.3.4
pysnmp==4.4.12
pytz==2021.3
PyYAML==5.4.1
python-rapidjson==1.5
python-dateutil==2.8.2
redis==4.1.0
Rx==1.6.1
scp==0.14.2
singledispatch==3.7.0
six==1.16.0
SQLAlchemy==1.4.36
textfsm==1.1.2
tornado==6.1
uvloop==0.16.0
xmltodict==0.12.0
yarl==1.7.2
requests==2.26.0
line-profiler==3.4.0
rstr==3.0.0
prestring==0.9.0
autopep8==1.6.0
hashids==1.3.1
geopy==2.2.0
prometheus-client==0.12.0
tosca-parser==2.4.1
kubernetes-asyncio==19.15.0
gcloud-aio-auth==3.7.0
gcloud-aio-pubsub==4.5.0
flake8==4.0.1