What’s new in v25.1LTS
New service
- POST /tokens APIが実装されました。
usernameクエリで指定されたユーザーのtokenを発行して返却します。
POST /tokens?username={user_name}
Note
POST /tokens
はsuperuser専用のAPIとなります。
- DBのスキーマバージョンを管理する起動パラメータが追加されました。
アプリケーション更新時に値(type:int)を定義、もしくはインクリメントすることでB/Gデプロイ時の旧系pod再起動によるDB schema上書きを抑止します。
plugins_modelschema_revisionの指定により、新系デプロイが可能なパターンに制約が追加されます。
デフォルトは、None
です。
plugins_modelschema_revision | 新系: None | 新系: integer |
---|---|---|
旧系: None | 新系へ更新可 | 新系へ更新可 |
旧系: integer | 新系へ更新不可 | 旧系で指定した値以上の場合のみ更新可 |
- 各CloudService用のカスタムロガーが使用可能な起動パラメータ
log_format
が追加されました。
デフォルトは、default
です。
log_format | 説明 |
---|---|
"default" | tornadoのロガーを使用します。(v23.2LTSまでと同じ) |
"google" | google cloud用のカスタムロガーを使用します。 |
"amazon" | AWS用のカスタムロガーを使用します。 |
- リードレプリカに対応しました。
aiodb()
にread_only=True
を指定することで読み取り専用のデータベースに接続することが可能です。
本機能を利用するためには起動パラメータread_db_host
、read_db_port
、read_db_name
、read_db_user
、read_db_pass
の設定が必要になります。
async with model.aiodb(read_only=True) as conn:
r = await conn.execute(model.Test.select())
General changes
- core moduleをpoetry管理へ移行しました。
従来通り、pipをご利用いただくことができます。
labの場合はinit.shをプラグインルートディレクトリに配置し、下記のようなファイルとすることで追加のmoduleをインストールします。
#!/bin/bash
# 下記が追加でインストールされます。
## AMQP(RabbitMQ)モードを使用する場合(aio-pika)
/root/.local/bin/poetry install -E amqp
# gRPC機能を使用する場合(grpcio, grpcio-tools, protobuf)
/root/.local/bin/poetry install -E grpcio
# 全部インストールする場合
/root/.local/bin/poetry install --all-extras
- Portal/ApiFrontの認証方式変更に伴いqmonus_account.originカラムを削除しました。
アカウント機能をv25.1で継続利用する場合、originカラムの削除が必要です。
実行しない場合SDKは起動しますがスキーマ不一致のためアカウントの操作ができません。
ALTER TABLE qmonus_account DROP COLUMN origin;
- 起動パラメータ
super_user
、super_password
の指定が必須になりました。
セキュリティの観点からデフォルト値を使用するのではなく、ユーザ側での指定を必須としました。
サポートを停止する機能について
- SNMPv2組み込みオブジェクト
- TOSCA組み込みオブジェクト
- インメモリcollector
- インメモリreflector
- disable_ddl_execution起動パラメータ
- X-Xaas-Callback-Email特殊ヘッダ
- X-Xaas-Direct-Routing特殊ヘッダ
Bug fixes
-
undefienedな変数参照がないように修正しました。
-
参照のないmoduleのimport文を削除しました。
Modules
脆弱性対応
- Pythonのバージョンを
3.10
から3.12
にバージョンアップしました。
依存moduleの更新
Caution
SQLAlchemy 1.4.46 -> SQLAlchemy 2.0.37
、pysnmplib -> pysnmp
の変更に伴い、
plugin側で使用している場合についても変更対応が必要となります。
詳しくはマイグレーションガイドをご確認ください。
https://developer.qmonus.net/document/migration/top
- 以下の依存moduleのバージョンが変更となります。
aiohttp 3.8.3 -> 3.11.11
asyncssh 2.13.0 -> 2.19.0
psycopg2-binary 2.9.4 -> 2.9.10
cryptography 3.4.8 -> 44.0.1
cffi 1.15.1 -> 1.17.1
idna 3.2 -> 3.10
graphene-sqlalchemy 2.3.0 -> 3.0.0rc2
Jinja2 3.1.2 -> 3.1.6
hiredis 2.0.0 -> 3.1.0
paramiko 2.12.0 -> 3.5.0
pycryptodome 3.16.0 -> 3.21.0
pycryptodomex 3.16.0 -> 3.21.0
PyYAML 6.0 -> 6.0.2
redis 4.4.0 -> 5.2.1
requests 2.28.1 -> 2.32.3
SQLAlchemy 1.4.46 -> 2.0.37
tornado 6.2 -> 6.5.1
uvloop 0.17.0 -> 0.21.0
gcloud-aio-auth 4.0.1 -> 5.3.2
gcloud-aio-pubsub 5.1.1 -> 6.0.1
pydantic 1.10.4 -> 2.10.6
yarl 1.7.2 -> 1.18.3
line-profiler 4.0.2 -> 4.1.2
- 以下のmoduleを新規に依存moduleとして追加します。
asyncpg 0.30.0
pysnmp 7.1.16
- 以下のmoduleをpoetry管理で追加することが可能になりました。
aio-pika 9.5.4
grpcio 1.62.0
grpcio-tools 1.62.0
protobuf 4.21.9
- 以下のmoduleを依存moduleから削除します。
aioredis
pysnmplib
kubernetesサポートについて
- v25.1LTSではk8s v1.33までの対応を仕様確認済みです。
- Core 内部で使用しているバージョンは下記の通りです。
異なるAPIバージョンを使用しているk8sバージョンでは一部機能(SDKRunner, closedloop)が使用できません。
kind | version | group |
---|---|---|
Affinity | v1 | core |
ConfigMap | v1 | core |
ConfigMapVolumeSource | v1 | core |
Container | v1 | core |
DeleteOptions | v1 | meta |
Job | v1 | batch |
JobSpec | v1 | batch |
NodeAffinity | v1 | core |
NodeSelector | v1 | core |
NodeSelectorRequirement | v1 | core |
NodeSelectorTerm | v1 | core |
ObjectMeta | v1 | meta |
Pod | v1 | core |
PodFailurePolicy | v1 | batch |
PodFailurePolicyOnPodConditionsPattern | v1 | batch |
PodFailurePolicyRule | v1 | batch |
PodSpec | v1 | core |
PodTemplateSpec | v1 | core |
ResourceRequirements | v1 | core |
Secret | v1 | core |
SecretVolumeSource | v1 | core |
Toleration | v1 | core |
Volume | v1 | core |
VolumeMount | v1 | core |
- kubernetesリソースをKube組み込みオブジェクトを利用してユーザー側でCRUDする場合は対象kubernetesクラスタのkubernetesバージョンに依存します。
kubernetesバージョンに紐づくAPI仕様に基づいて操作してください。
Caution
Beta版にて下記の既知の不具合を確認しております。
・kubenetesv1 APIで指定したアカウントの権限スコープではなく、system:anonymousでリクエストしてしまう不具合
こちらの不具合はv23.2LTS以前から既知の不具合として確認しております。