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_hostread_db_portread_db_nameread_db_userread_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_usersuper_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.37pysnmplib -> 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以前から既知の不具合として確認しております。