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