6.10 Notification、Notifier
以下にNotification、Notifier定義と定義例を示します。Notification、Notifierの詳細については「通知の設計」を参照してください。
NotificationタイプのYAML内容は以下です。
ラベル | デフォルト値 | 必須 | 説明 | ||
---|---|---|---|---|---|
apiVersion: | 1.0 | Yes | APIバージョン | ||
kind: | Yes | Notificationの際はnotificationを指定する | |||
type: | No | Notificationの際はresourceのみ指定可能 | |||
name: | Yes | Notification定義の内部名。本YAML定義のディレクトリ名を指定 | |||
label: | Yes | YAMLファイルの表示名 | |||
includes: | No | このYAMLファイルで利用する関連YAMLファイルを記載 | |||
- kind: | Yes | 読み込むYAMLファイルの種類 | |||
name: | Yes | 読み込むYAMLファイルの内部名 | |||
description: | No | このYAMLファイルに対する詳細説明 | |||
event: | Yes | 通知のイベント条件 | |||
resource: | Yes | イベントのリソース 指定できるリソースとして以下を指定可能 - schedule - workflow |
|||
type: | Yes | イベントのタイプ - update: 対象リソースが作成/更新されたときに指定 - delete: 対象リソースが削除されたときに指定 - time: 対象リソースを定期的に評価したいときに指定 timeを指定した場合、未完了のワークフローが対象リソースとなる。 |
|||
conditions: | No | 通知する条件を記述する。 | |||
- | No | 複数の条件があった場合は、or条件で判定される。この下のレベルの条件はand条件で判定される。 | |||
- resource: | Yes | 通知のイベント条件(event部分)で指定したオブジェクトを起点にして条件判定するフィールドを指定する。 なお、オブジェクト・フィールドは、判定対象のデータの現在の値を.Context、変更前の値を.PrevContextと表記する。 イベントのタイプ(type)がupdateの場合は、現在の値を.Context、変更前の値を.PrevContextで取得可能。 イベントのタイプ(type)がdeleteの場合は、削除前の値を.PrevContextで取得可能で、.Contextは使用不可。 例) “{{ .GetValue ".Context.workflow.name" }}” “{{ .GetValue ".PrevContext.status" }}” |
|||
<key>: | Yes | 条件のオペレータとオペランドを<key>: <value>で指定する。 <key> オペレータを指定する。以下のタイプがある。 - eq, ne (==,!=) - gt, ge (>, >=) - lt, le (<, <=) - in, notIn, wildcard, regex <value> オペランドを指定する。 例) “eq: WorkflowNameAAA” |
notifications: | Yes | 送信する通知オブジェクトのリスト |
- message: | Yes | 送信する通知オブジェクトのメッセージ | |||
title: | Yes | メッセージのタイトル 通知のイベント条件(event部分)で指定したオブジェクトを起点にしてフィールドを埋め込むことも可能。なお、現在の値(.Context)のみ使用可能。変更前の値(.PrevContext)は使用不可 例) “There is an request for {{ .GetValue ".Context.activity" }}.” |
|||
body: | Yes | メッセージのボディ。 通知のイベント条件(event部分)で指定したオブジェクトを起点にしてフィールドを埋め込むことも可能 例) “There is an request for {{ .GetValue ".Context.workflow.name" }}.” |
|||
referTo: | No | メッセージの参照先。 通知のイベント条件(event部分)で指定したオブジェクトを起点にしてフィールドを埋め込むことも可能。 Ops IのURLを記載する場合、通知の宛先に設定しているユーザーが、記載したURLに対するアクセス権を持っていることを事前に確認する。 例) https://<テナント名>.ops-integration.com/sys_request/task_workflow?contextId={{ .GetValue ".Context.workflow.id" }} |
|||
severity: | Information | No | Notificationの重大度 以下の値が利用可能 - Critical - Warning - Information |
||
destinations: | Yes | メッセージの宛先のリスト messageオブジェクトの内容を複数の宛先に送付できる。 |
|||
- type: | Yes | 宛先のタイプ 次から選択できる。 - user(Ops Iユーザー宛て) - group(Ops Iグループ宛て) - groupMember(Ops Iグループの所属メンバー宛て) |
|||
value: | Yes | 宛先の値 通知のイベント条件(event部分)で指定したオブジェクトを起点にしてフィールドを埋め込むことも可能。なお、現在の値(.Context)のみ使用可能。変更前の値(.PrevContext)は使用不可 例) “{{ .GetValue “.Context.assingedGroup”}}” |
|||
notifiers: | No | 宛先への通知手段の指定。Notifierのnameを配列で指定する。 指定しない場合はデフォルトのsystem通知のみ実行される。 |
Notificationの定義内で使用可能なオブジェクト・フィールドは以下です。
(表)Notificationで使用可能なオブジェクト・フィールド
オブジェクト | フィールド | 説明 |
---|---|---|
workflow | createdOn | ワークフローの作成日時 |
workflow | updatedOn | ワークフローの更新日時 |
workflow | createdBy | ワークフローの作成者 |
workflow | id | ワークフローのID |
workflow | name | ワークフローの名前 |
workflow | schedule | 直属のscheduleオブジェクト |
workflow | <任意> | 所属する任意のscheduleオブジェクト |
schedule | id | スケジュールのid |
schedule | workflow | スケジュールにひもづいているworkflowオブジェクト |
schedule | workflowStatus | スケジュールにひもづいているworkflowアクティビティのステータス 値は「JP1 Cloud Service_Operations Integration API Reference」のdtos.ScheduleDTOのworkflowStatusを参照してください。 |
schedule | activity | スケジュールにひもづいているアクティビティ |
schedule | parent | 親スケジュールのscheduleオブジェクト |
schedule | assignedTo | 割当先ユーザーのuserオブジェクト |
schedule | assignedGroup | 割当先グループのgroupオブジェクト |
schedule | status | ステータス 値は「JP1 Cloud Service_Operations Integration API Reference」のdtos.ScheduleDTOのstatusを参照してください。 |
user | id | ユーザーid |
user | name | ユーザー名 |
user | メールアドレス | |
user | number | 電話番号 |
group | id | グループid |
group | name | グループ名 |
group | メールアドレス |
NotifierタイプのYAML内容は以下です。
ラベル | デフォルト値 | 必須 | 説明 | |||
---|---|---|---|---|---|---|
apiVersion: | 1.0 | Yes | APIバージョン | |||
kind: | Yes | Notifierの際はnotifierを指定する | ||||
type: | No | Notifierの際はcontainerのみ指定可能 | ||||
name: | Yes | Notifier定義の内部名。本YAMLファイルのディレクトリ名を指定 | ||||
label: | Yes | YAMLファイルの表示名 | ||||
includes: | No | このYAMLファイルで利用する関連YAMLファイルを記載 | ||||
- kind: | Yes | 読み込むYAMLファイルの種類 | ||||
name: | Yes | 読み込むYAMLファイルの内部名 | ||||
description: | No | このYAMLファイルに対する詳細説明 | ||||
protocol: | Yes | 通知手段の使用プロトコル 以下のプロトコルが使用可能 - smtp |
||||
property: | Yes | smtpのプロパティ | ||||
credential: | Yes | smtpサーバへの認証情報。 “default”固定 |
||||
url: | Yes | smtpサーバのアドレス。 “email-smtp.ap-northeast-1.amazonaws.com”固定 |
||||
port: | Yes | smtpサーバのポート。 “587”固定 |
||||
to: | Yes | メールの送信先アドレスを指定する。指定したメールアドレスは通知メールのBccヘッダーに指定され、送信される。 現在の値(.Context)を起点にしてNotifierで使用可能なオブジェクトのフィールドを埋め込むことも可能。使用可能なオブジェクト・フィールドは「Notifierで使用可能なオブジェクト・フィールド」参照 例) {{ .Context.receiver.email }} |
||||
from: | No | smtpの送信元アドレス。 “noreply.opsi@itg.hitachi.co.jp”固定 |
||||
subject: | No | メールのタイトル。 現在の値(.Context)を起点にしてNotifierで使用可能なオブジェクトのフィールドを埋め込むことも可能。使用可能なオブジェクト・フィールドは「Notifierで使用可能なオブジェクト・フィールド」参照 例) {{ .Context.message.title }} |
||||
message: | No | メールの本文。 現在の値(.Context)を起点にしてNotifierで使用可能なオブジェクトのフィールドを埋め込むことも可能。使用可能なオブジェクト・フィールドは「Notifierで使用可能なオブジェクト・フィールド」参照 例) {{ .Context.message.body }} |
||||
conditions | No | この定義の条件に合致した場合に、このNotifierを使って通知される。 | ||||
- | No | 複数の条件があった場合は、or条件で判定される。この下のレベルの条件はand条件で判定される。 | ||||
- resource: | Yes | 条件 現在の値(.Context)を起点にしてNotifierで使用可能なオブジェクトのフィールドを埋め込むことも可能。使用可能なオブジェクト・フィールドは「Notifierで使用可能なオブジェクト・フィールド」参照 例) {{ .Context.receiver.email }} |
||||
<key>: | Yes | 条件のオペレータとオペランドを<key>: <value>で指定する。 <key> オペレータを指定する。以下のタイプがある。 - eq, ne (==,!=) - gt, ge (>, >=) - lt, le (<, <=) - in, notIn, wildcard, regex <value> オペランドを指定する。 例) regex: ^∗@hitachi.com$ |
Notifierの定義内で使用可能なオブジェクト・フィールドは以下です。
オブジェクト | フィールド | 説明 |
---|---|---|
message | title | メッセージのタイトル |
message | severity | メッセージの重要度 |
message | body | メッセージの内容 |
message | referTo | メッセージの参照先 |
receiver | 送信先のメールアドレス |
<定義例> Notification
apiVersion: 1.0
kind: notification
## Meta data
type: resource
name: lend_reject_notification
label: lend_reject_notification
description: 申請者に却下通知を行うYAML定義です
## Notification contents
event:
resource: schedule
type: update #[update/delete]
conditions:
-
- resource: '{{ .GetValue ".Context.activity" }}'
eq: create_vm_wf_01
- resource: '{{ .GetValue ".Context.workflowStatus" }}'
eq: pending
- resource: '{{ .GetValue ".PrevContext.workflowStatus" }}'
eq: succeeded
notifications:
- message:
title: VM貸出の却下通知
body: |
VM貸出の却下通知が到着しています。申し送り事項を確認の上、対応お願いします。
申請日時:{{ .GetValue ".Context.createdOn" }}
申請者:{{ .GetValue ".Context.createdBy" }}
referTo: https://<テナント名>.ops-integration.com/sys_request/task_workflow?contextId={{ .GetValue ".Context.workflow" }}
severity: Information
destinations:
- type: user #select from [user, group, groupMember, external]
value: '{{ .GetValue ".Context.assignedTo" }}'
<定義例> Notifier
apiVersion: 1.0
kind: notifier
## Meta data
type: resource
name: email
label: Normal case
description: Normal case
protocol: smtp
property:
credential: default
url: email-smtp.ap-northeast-1.amazonaws.com