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