| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533 |
- // Copyright 2019 Yunion
- //
- // Licensed under the Apache License, Version 2.0 (the "License");
- // you may not use this file except in compliance with the License.
- // You may obtain a copy of the License at
- //
- // http://www.apache.org/licenses/LICENSE-2.0
- //
- // Unless required by applicable law or agreed to in writing, software
- // distributed under the License is distributed on an "AS IS" BASIS,
- // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- // See the License for the specific language governing permissions and
- // limitations under the License.
- package notify
- import "yunion.io/x/onecloud/pkg/apis"
- type TemplateCreateInput struct {
- apis.StandaloneAnonResourceCreateInput
- // description: Contact type, specifically, setting it to all means all contact type
- // require: true
- // example: email
- ContactType string `json:"contact_type"`
- // description: Template type
- // enum: ["title","content","remote"]
- // example: title
- TemplateType string `json:"template_type"`
- // description: Template topic
- // required: true
- // example: IMAGE_ACTIVE
- Topic string `json:"topic"`
- // description: Template content
- // required: true
- // example: 镜像 {{.name}} 上传完成
- Content string `json:"content"`
- // description: Example for using this template
- // required: true
- // example: {"name": "centos7.6"}
- Example string `json:"example"`
- // description: Language
- // enum: ["cn","en"]
- Lang string `json:"lang"`
- }
- type TemplateManagerSaveInput struct {
- ContactType string `json:"contact_type"`
- Templates []TemplateCreateInput `json:"templates"`
- Force bool `json:"force"`
- }
- type TemplateListInput struct {
- apis.StandaloneAnonResourceListInput
- // description: Contact type, specifically, setting it to all means all contact type
- // require: true
- // example: email
- ContactType string `json:"contact_type"`
- // description: Template type
- // enum: ["title","content","remote"]
- // example: title
- TemplateType string `json:"template_type"`
- // description: template topic
- // required: true
- // example: IMAGE_ACTIVE
- Topic string `json:"topic"`
- // description: Language
- // enum: ["cn","en"]
- Lang string `json:"lang"`
- }
- type TemplateUpdateInput struct {
- apis.StandaloneAnonResourceBaseUpdateInput
- // description: template content
- // required: true
- // example: 镜像 {{.name}} 上传完成
- Content string `json:"content"`
- // description: all example for using this template
- // required: true
- // example: {"name": "centos7.6"}
- Example string `json:"example"`
- }
- type TemplateDetails struct {
- apis.StandaloneResourceDetails
- STemplate
- }
- // 密码即将失效通知
- const (
- PWD_EXPIRE_SOON_TITLE_CN = `{{- $d := .resource_details -}}
- {{ $d.account }}:您的密码有效期将过`
- PWD_EXPIRE_SOON_TITLE_EN = `{{- $d := .resource_details -}}
- {{ $d.account }}:Your password is valid and will expire soon`
- PWD_EXPIRE_SOON_CONTENT_CN = `{{- $d := .resource_details -}}
- {{ $d.account }}:您的密码将在{{ .advance_days }} 天后失效,请及时登录平台更新密码。`
- PWD_EXPIRE_SOON_CONTENT_EN = `{{- $d := .resource_details -}}
- {{ $d.account }}:Your password will expire in {{ .advance_days }} days. Please log in to the platform in time to update your password.`
- )
- // 资源即将到期通知
- const (
- EXPIRED_RELEASE_TITLE_CN = `{{- $d := .resource_details -}}
- {{ $d.project }}项目的
- {{ .resource_type_display }}{{ $d.name }}即将到期`
- EXPIRED_RELEASE_TITLE_EN = `{{- $d := .resource_details -}}
- {{ .resource_type }} {{ $d.name }} {{ if $d.project -}} in project {{ $d.project }} {{ end -}} expiration`
- EXPIRED_RELEASE_CONTENT_CN = `{{- $d := .resource_details -}}
- 您在{{ $d.project }}项目的
- {{- if $d.brand -}}
- {{ $d.brand }}平台
- {{- end -}}
-
- {{- if $d.private_dns -}}
- ,内网地址为{{ $d.private_dns }}:{{ $d.private_connect_port }}
- {{- end -}}
-
- {{- if $d.public_dns -}}
- ,外网地址为{{ $d.public_dns }}:{{ $d.public_connect_port }}的
- {{- end -}}
- {{ .resource_type_display }}{{ $d.name }}将在{{ .advance_days }}天后到期释放,{{ if $d.auto_renew }}到期已开启自动续费,{{ end }}如有其它变更,请尽快前往控制台处理`
- EXPIRED_RELEASE_CONTENT_EN = `{{- $d := .resource_details -}}
- Your {{ if $d.brand -}} {{ $d.brand }} {{ end -}} {{ .resource_type }} {{ $d.name }} {{ if $d.public_dns -}} with external address {{ $d.public_dns }}:{{ $d.public_connect_port }} {{ end -}} {{ if $d.project -}} in project {{ $d.project }} {{ end -}} will expire and be released in {{ .advance_days }} days. {{ if $d.auto_renew }}It has turned on automatic renewal. {{ end }}If there are other changes, please go to the console as soon as possible.`
- )
- // 服务崩溃通知
- const (
- PANIC_TITLE_CN = `{{- $d := .resource_details -}}
- {{ .resource_type }} {{ $d.task_name }} 崩溃了`
- PANIC_TITLE_EN = `{{- $d := .resource_details -}}
- {{ .resource_type }} {{ $d.task_name }} PANIC`
- PANIC_CONTENT_CN = `{{- $d := .resource_details -}}
- {{ .resource_type }} {{ $d.task_name }} PANIC {{- if $d.error -}} 错误: {{ $d.error }} {{- end -}}
- 堆栈信息:
- {{ $d.stack }}`
- PANIC_CONTENT_EN = `{{- $d := .resource_details -}}
- {{ .resource_type }} {{ $d.task_name }} PANIC {{- if $d.error -}} Error: {{ $d.error }} {{- end -}}
- Stack Info:
- {{ $d.stack }}`
- )
- // 日志容量超限通知
- const (
- ACTION_LOG_EXCEED_COUNT_TITLE_CN = `{{- $d := .resource_details -}}
- 操作日志超出设置数量{{ $d.exceed_count }}条,当前{{ $d.current_count }}条`
- ACTION_LOG_EXCEED_COUNT_TITLE_EN = `{{- $d := .resource_details -}}
- Action logs excced expected count {{ $d.exceed_count }}, current count is {{ $d.current_count }}`
- ACTION_LOG_EXCEED_COUNT_CONTENT_CN = `{{- $d := .resource_details.action -}}
- 当前日志 ID: {{ $d.id }}`
- ACTION_LOG_EXCEED_COUNT_CONTENT_EN = `{{- $d := .resource_details.action -}}
- Current log ID: {{ $d.id }}`
- )
- // 完整性校验失败通知
- const (
- CHECKSUM_TEST_FAILED_TITLE_CN = `{{- $d := .resource_details -}}
- {{- if eq .resource_type "cloudpods_component" }}
- {{ $d.title }}
- {{- else -}}
- {{ .resource_type_display }}完整性校验失败
- {{- end -}}`
- CHECKSUM_TEST_FAILED_TITLE_EN = `{{- $d := .resource_details -}}
- {{- if eq .resource_type "cloudpods_component" }}
- {{ $d.title }}
- {{- else -}}
- The checksum of {{ .resource_type_display }} test failed
- {{- end -}}`
- CHECKSUM_TEST_FAILED_CONTENT_CN = `{{- $d := .resource_details -}}
- {{- if eq .resource_type "db_table_record" }}
- 表{{ $d.table_name }}记录{{ $d.name }}被修改,完整性校验失败。期望校验和({{ $d.expected_checksum }}) != 计算校验和({{ $d.calculated_checksum }})。
- {{- end -}}
- {{- if eq .resource_type "cloudpods_component" }}
- {{ $d.details }}
- {{- end -}}
- {{- if eq .resource_type "snapshot" }}
- 快照{{ $d.name }}的内存快照完整性校验失败
- {{- end -}}
- {{- if eq .resource_type "image" }}
- 镜像{{ $d.name }}完整性校验失败
- {{- end -}}
- {{- if eq .resource_type "vm_integrity" }}
- 主机{{ $d.name }}完整性校验失败
- {{- end -}}`
- CHECKSUM_TEST_FAILED_CONTENT_EN = `{{- $d := .resource_details -}}
- {{- if eq .resource_type "db_table_record" }}
- The record {{ $d.name }} in table {{ $d.table_name }} of the database {{ $d.db_name }} has been modified because the checksum test failed. Expected_checksum({{ $d.expected_checksum }}) != Calculated_checksum({{ $d.calculated_checksum }}).
- {{- end -}}
- {{- if eq .resource_type "cloudpods_component" }}
- {{ $d.details }}
- {{- end -}}
- {{- if eq .resource_type "snapshot" }}
- The checksum of the memory snapshot of the snapshot {{ $d.name }} test failed.
- {{- end -}}
- {{- if eq .resource_type "image" }}
- The checksum of the image {{ $d.name }} test failed.
- {{- end -}}`
- )
- // 通用通知
- const (
- COMMON_TITLE_CN = `{{- $d := .resource_details -}}
- {{- if $d.project -}}
- {{ $d.project }}项目的
- {{- end -}}
- {{ .resource_type_display }}{{ $d.name }}{{ .action_display }}{{ .result_display }}`
- COMMON_TITLE_EN = `{{- $d := .resource_details -}}
- The {{ .resource_type_display }} {{ .Name }} {{ if $d.project }} in poject {{ $d.project }} {{ end -}} {{ .action_display }} {{ .result_display }}`
- COMMON_CONTENT_CN = `{{- $d := .resource_details -}}
- 您
- {{- if $d.project -}}
- 在{{ $d.project }}项目
- {{- end -}}
- {{- if $d.brand -}}
- {{ $d.brand }}平台
- {{- end -}}
- 的{{ .resource_type_display }}{{ $d.name }}{{ .action_display }}{{.result_display}}
- {{- if eq .result "failed" -}}
- ,请尽快前往控制台进行处理
- {{- end -}}`
- COMMON_CONTENT_EN = `{{- $d := .resource_details -}}
- Your {{- if $d.brand -}} {{ $d.brand }} {{ end -}} {{ .resource_type_display }} {{ $d.name }} {{ if $d.project -}} in project {{ $d.project }} {{ end -}} has been {{ .action_display }} {{ .result_display }}
- {{- if eq .result "failed" -}}
- . And please go to the console as soon as possible to process.
- {{- end -}}`
- )
- // 服务组件异常通知
- const (
- EXCEPTION_TITLE_CN = `{{- $d := .resource_details -}}
- {{ .resource_type }} {{ $d.name }} 发生异常: {{ $d.message }}`
- EXCEPTION_TITLE_EN = `{{- $d := .resource_details -}}
- {{ .resource_type }} {{ $d.name }} exception occurs: {{ $d.message }}`
- EXCEPTION_CONTENT_CN = `{{- $d := .resource_details -}}
- {{ .resource_type }} {{ $d.name }} 发生异常: {{ $d.message }}`
- EXCEPTION_CONTENT_EN = `{{- $d := .resource_details -}}
- {{ .resource_type }} {{ $d.name }} exception occurs: {{ $d.message }}`
- )
- // 数据库主从同步不一致通知
- const (
- MYSQL_OUT_OF_SYNC_TITLE_CN = `{{- $d := .resource_details -}}
- 数据库 {{$d.ip}} 的主从同步不一致,请及时检查。`
- MYSQL_OUT_OF_SYNC_TITLE_EN = `{{- $d := .resource_details -}}
- The primary and secondary synchronization of the database ({{ $d.ip }}) is inconsistent, please check in time.`
- MYSQL_OUT_OF_SYNC_CONTENT_CN = `{{- $d := .resource_details -}}
- 数据库 {{$d.ip}} 的主从同步不一致,请及时检查。
- {{ range $status := $d.status }}
- 数据库 {{$status.ip}} 状态:
- {{- if not $status.operator_error }}
- - Slave_IO_Running: {{$status.slave_io_running}}
- - Slave_SQL_Running: {{$status.slave_sql_running}}
- {{- if $status.last_error }}
- - Last_Error: {{$status.last_error}}
- {{- end -}}
- {{- if $status.last_io_error }}
- - Last_IO_Error: {{$status.last_io_error}}
- {{- end }}
- {{else}}
- - Operator_Error: {{$status.operator_error}}
- {{- end}}
- {{end}}`
- MYSQL_OUT_OF_SYNC_CONTENT_EN = `{{- $d := .resource_details -}}
- The primary and secondary synchronization of the database ({{ $d.ip }}) is inconsistent, please check in time.
- {{ range $status := $d.status }}
- Database {{$status.ip}} status:
- {{- if not $status.operator_error }}
- - Slave_IO_Running: {{$status.slave_io_running}}
- - Slave_SQL_Running: {{$status.slave_sql_running}}
- {{- if $status.last_error }}
- - Last_Error: {{$status.last_error}}
- {{- end -}}
- {{- if $status.last_io_error }}
- - Last_IO_Error: {{$status.last_io_error}}
- {{- end }}
- {{else}}
- - Operator_Error: {{$status.operator_error}}
- {{- end}}
- {{end}}`
- )
- // 网络拓扑不一致通知
- const (
- NET_OUT_OF_SYNC_TITLE_CN = `{{- $d := .resource_details -}}
- {{ $d.service_name }}服务的网络拓扑信息同步不一致,请及时检查。 `
- NET_OUT_OF_SYNC_TITLE_EN = `{{- $d := .resource_details -}}
- {{ $d.service_name }}: The network topology information of the service is inconsistent, please check in time.`
- NET_OUT_OF_SYNC_CONTENT_CN = `{{- $d := .resource_details -}}
- {{ $d.service_name }}服务的网络拓扑信息同步不一致,请及时检查。 `
- NET_OUT_OF_SYNC_CONTENT_EN = `{{- $d := .resource_details -}}
- {{ $d.service_name }}: The network topology information of the service is inconsistent, please check in time.`
- )
- // 离线通知
- const (
- OFFLINE_TITLE_CN = `{{- $d := .resource_details -}}
- {{ .resource_type }} {{ $d.name }} 离线`
- OFFLINE_TITLE_EN = `{{- $d := .resource_details -}}
- The {{ .resource_type }} {{ $d.name }} Offline `
- OFFLINE_CONTENT_CN = `{{- $d := .resource_details -}}
- {{ .resource_type }} {{ $d.name }} 离线 {{- if $d.reason -}} 原因: {{ $d.reason }} {{- end -}}`
- OFFLINE_CONTENT_EN = `{{- $d := .resource_details -}}
- The {{ .resource_type }} {{ $d.name }} Offline {{- if $d.reason -}} Reason: {{ $d.reason }}的 {{- end -}}`
- )
- // 资源加入回收站通知
- const (
- PENDING_DELETE_TITLE_CN = `{{- $d := .resource_details -}}
- {{- if $d.project -}}
- {{ $d.project }}项目的
- {{- end -}}
- {{ .resource_type_display }}{{ $d.name }}成功加入回收站`
- PENDING_DELETE_TITLE_EN = `{{- $d := .resource_details -}}
- The {{ .resource_type_display }} {{ .Name }} {{ if $d.project }} in poject {{ $d.project }} {{ end -}} has been added to recycle bin successfully`
- PENDING_DELETE_CONTENT_CN = `{{- $d := .resource_details -}}
- 您在{{ $d.project }}项目的
-
- {{- if $d.ips -}}
- IP地址为{{ $d.ips }}的
- {{- end -}}
-
- {{- if $d.ip_addr -}}
- IP地址为{{ $d.ip_addr }}的
- {{- end -}}
- {{- if $d.brand -}}
- {{ $d.brand }}平台
- {{- end -}}
- {{ .resource_type_display }}{{ $d.name }}成功加入回收站`
- PENDING_DELETE_CONTENT_EN = `{{- $d := .resource_details -}}
- Your {{ if $d.brand -}} {{ $d.brand }} {{ end -}} {{ .resource_type_display }} {{ $d.name }}
- {{ if $d.project -}} in project {{ $d.project }} {{ end -}} has been added to recycle bin successfully
- {{- if $d.private_dns -}}
- , the intranet address is {{ $d.private_dns }}:{{ $d.private_connect_port }}
- {{- end -}}
-
- {{- if $d.public_dns -}}
- , the external address is {{ $d.public_dns }}:{{ $d.public_connect_port }}
- {{- end -}}
-
- {{- if and $d.address_type $d.address -}}
- , the service address is {{ $d.address_type }}{{ $d.address }}
- {{- end -}}
-
- {{- if $d.ips -}}
- , the IP address is {{ $d.ips }}
- {{- end -}}
-
- {{- if $d.ip_addr -}}
- , the IP address is {{ $d.ip_addr }}
- {{- end -}}`
- )
- // 虚拟机崩溃通知
- const (
- SERVER_PANICKED_TITLE_CN = `{{- $d := .resource_details -}}
- 您在{{ $d.project }}项目的虚拟机{{ $d.name }}崩溃了`
- SERVER_PANICKED_TITLE_EN = `{{- $d := .resource_details -}}
- {{ .resource_type }} {{ $d.task_name }} PANIC`
- SERVER_PANICKED_CONTENT_CN = `{{- $d := .resource_details -}}
- 您在{{ $d.project }}项目的虚拟机{{ $d.name }}崩溃了`
- SERVER_PANICKED_CONTENT_EN = `{{- $d := .resource_details -}}
- The server {{ $d.name }} in project {{ $d.project }} panicked.`
- )
- // 资源定时调度任务通知
- const (
- SCHEDULEDTASK_EXECUTE_TITLE_CN = `{{- $d := .resource_details -}}
- 您在{{ $d.project }}项目的定时任务执行成功`
- SCHEDULEDTASK_EXECUTE_TITLE_EN = `{{- $d := .resource_details -}}
- The scheduled task in {{ $d.project }} execute successfully`
- SCHEDULEDTASK_EXECUTE_CONTENT_CN = `{{- $d := .resource_details -}}
- 您在{{ $d.project }}项目的定时任务执行成功`
- SCHEDULEDTASK_EXECUTE_CONTENT_EN = `{{- $d := .resource_details -}}
- The scheduled task in {{ $d.project }} successfully {{ $d.operation_display }} the {{ $d.resource_type_display }} {{ $d.resource_name }}`
- )
- // 服务异常通知
- const (
- SERVICE_ABNORMAL_TITLE_CN = `{{- $d := .resource_details -}}
- 服务{{ $d.service_name }}异常`
- SERVICE_ABNORMAL_TITLE_EN = `{{- $d := .resource_details -}}
- Server {{ $d.service_name }} abnormal`
- SERVICE_ABNORMAL_CONTENT_CN = `{{- $d := .resource_details -}}
- 服务: {{ $d.service_name }} 异常。
- 方法: {{ $d.method }}
- 路径: {{ $d.path }}
- {{- if $d.body }}
- 请求: {{ $d.body -}}
- {{ end }}
- 错误: {{ $d.error }}`
- SERVICE_ABNORMAL_CONTENT_EN = `{{- $d := .resource_details -}}
- Service: {{ $d.service_name }} abnormal
- Method: {{ $d.method }}
- Path: {{ $d.path }}
- {{- if $d.body }}
- Body: {{ $d.body -}}
- {{ end }}
- Error: {{ $d.error }}`
- )
- // 弹性伸缩组策略生效通知
- const (
- SCALINGPOLICY_EXECUTE_TITLE_CN = `{{- $d := .resource_details -}}
- {{ $d.project }}项目的弹性伸缩组{{ $d.scaling_group }}中的伸缩策略{{ $d.name }}满足触发条件`
- SCALINGPOLICY_EXECUTE_TITLE_EN = `{{- $d := .resource_details -}}
- The scaling policy {{ $d.name }} in the scaling group {{ $d.scaling_group }} triggered`
- SCALINGPOLICY_EXECUTE_CONTENT_CN = `{{- $d := .resource_details -}}
- 您在{{ $d.project }}项目的弹性伸缩组{{ $d.scaling_group }}中的{{ $d.trigger_type_display }}类型伸缩策略{{ $d.name }}满足触发条件,成功{{ $d.action_display }}{{ $d.number }}{{ $d.unit_display }}实例`
- SCALINGPOLICY_EXECUTE_CONTENT_EN = `{{- $d := .resource_details -}}
- The {{ $d.trigger_type_display }} type scaling policy {{ $d.name }} in the scaling group {{ $d.scaling_group }} of the {{ $d.project }} project satisfies the trigger conditions, and {{ $d.action_display }} {{ $d.number }}{{ $d.unit_display }} instances successfully`
- )
- // 自动快照策略生效通知
- const (
- SNAPSHOTPOLICY_EXECUTE_TITLE_CN = `{{- $d := .resource_details -}}
- {{ $d.project }}项目的自动快照策略{{ $d.name }}生效`
- SNAPSHOTPOLICY_EXECUTE_TITLE_EN = `{{- $d := .resource_details -}}
- The snapshot policy {{ $d.name }} in the {{ $d.project }} project executed`
- SNAPSHOTPOLICY_EXECUTE_CONTENT_CN = `{{- $d := .resource_details -}}
- 您在{{ $d.project }}项目的自动快照策略{{ $d.name }}为硬盘{{ $d.disk }}创建快照成功`
- SNAPSHOTPOLICY_EXECUTE_CONTENT_EN = `{{- $d := .resource_details -}}
- The snapshot policy {{ $d.name }} in the {{ $d.project }} project successfully creates a snapshot for the disk {{ $d.disk }}`
- )
- // 资源变更通知
- const (
- UPDATE_TITLE_CN = `{{- $d := .resource_details -}}
- {{- if $d.project -}}
- {{ $d.project }}项目的
- {{- end -}}
- {{ .resource_type_display }}{{ $d.name }}{{ .action_display }}成功`
- UPDATE_TITLE_EN = `{{- $d := .resource_details -}}
- The {{ .resource_type }} {{ $d.name }} {{ if $d.project -}} in project {{ $d.project }} {{ end -}} {{ .action_display }} successfully`
- UPDATE_CONTENT_CN = `{{- $d := .resource_details -}}
- 您
- {{- if $d.project -}}
- 在{{ $d.project }}项目
- {{- end -}}
- {{- if $d.brand -}}
- {{ $d.brand }}平台
- {{- end -}}
- 的{{ .resource_type_display }}{{ $d.name }}{{ .action_display }}成功
- {{- if $d.account -}}
- ,帐号为{{ $d.account }}
- {{- end -}}
-
- {{- if $d.password -}}
- ,密码为{{ $d.password }}
- {{- end -}}
- ,更多信息请前往控制台进行查看`
- UPDATE_CONTENT_EN = `{{- $d := .resource_details -}}
- Your {{ if $d.brand -}} {{ $d.brand }} {{ end -}} {{ .resource_type }} {{ $d.name }} {{ if $d.project -}} in project {{ $d.project }} {{ end -}} has been {{ .action_display }} successfully
- {{- if $d.account -}}
- , the acount is {{ $d.account }}
- {{- end -}}
-
- {{- if $d.password -}}
- , the password is {{ $d.password }}
- {{- end -}}
- , and please go to the console to view more information`
- )
- // 用户锁定通知
- const (
- USER_LOCK_TITLE_CN = `{{- $d := .resource_details -}}
- 账号{{ $d.name }}已被锁定`
- USER_LOCK_TITLE_EN = `{{- $d := .resource_details -}}
- Account {{ $d.name }} has been locked`
- USER_LOCK_CONTENT_CN = `{{- $d := .resource_details -}}
- 账号{{ $d.name }}由于异常登录已被锁定,请核实情况,如果需要为用户解锁,请到用户列表启用该用户。`
- USER_LOCK_CONTENT_EN = `{{- $d := .resource_details -}}
- The account {{ $d.name }} has been locked due to abnormal login. Please verify the situation. If you need to unlock the user, please go to the user list to enable the user.`
- )
- // 云账号状态异常通知
- const (
- SYNC_ACCOUNT_STATUS_TITLE_CN = `{{- $d := .resource_details -}}
- 云账号{{ $d.name}}状态异常`
- SYNC_ACCOUNT_STATUS_TITLE_EN = `{{- $d := .resource_details -}}
- The account {{ $d.name }} status is abnormal`
- SYNC_ACCOUNT_STATUS_CONTENT_CN = `{{- $d := .resource_details -}}
- 云账号{{ $d.name }}状态异常,请及时检查。`
- SYNC_ACCOUNT_STATUS_CONTENT_EN = `{{- $d := .resource_details -}}
- The account {{ $d.name }} status is abnormal. Please check in time.`
- )
- // work阻塞通知
- const (
- WORK_BLOCK_TITLE_CN = `{{- $d := .resource_details -}}
- 服务{{ d.service_name}} worker阻塞半小时,请及时检查。`
- WORK_BLOCK_TITLE_EN = `{{- $d := .resource_details -}}
- The service: {{ d.service_name}} worker has been block 30 minutes.Please verify the service in time.`
- WORK_BLOCK_CONTENT_CN = `{{- $d := .resource_details -}}
- 服务{{ d.service_name}} worker阻塞半小时,请及时检查。`
- WORK_BLOCK_CONTENT_EN = `{{- $d := .resource_details -}}
- The service: {{ d.service_name}} worker has been block 30 minutes.Please verify the service in time.`
- )
- // TODO
- // 资源挂载\卸载通知
- const (
- // ACTION_ATTACH_TITLE_CN = `{{- $d := .resource_details -}}
- // 操作日志超出设置数量{{ $d.exceed_count }}条,当前{{ $d.current_count }}条`
- // ACTION_ATTACH_TITLE_EN = `{{- $d := .resource_details -}}
- // Action logs excced expected count {{ $d.exceed_count }}, current count is {{ $d.current_count }}`
- // ACTION_ATTACH_CONTENT_CN = `{{- $d := .resource_details.action -}}
- // 当前日志 ID: {{ $d.id }}`
- // ACTION_ATTACH_CONTENT_EN = `{{- $d := .resource_details.action -}}
- // Current log ID: {{ $d.id }}`
- )
- const (
- STATUS_CHANGED_TITLE_CN = `{{- $d := .resource_details -}}
- {{ $d.project }}项目的
- {{ .resource_type_display }}{{ $d.name }}状态发生变更`
- STATUS_CHANGED_TITLE_EN = `{{- $d := .resource_details -}}
- {{ .resource_type }} {{ $d.name }} {{ if $d.project -}} in project {{ $d.project }} {{ end -}} status changed`
- STATUS_CHANGED_CONTENT_CN = `{{- $d := .resource_details -}}
- 您在{{ $d.project }}项目的
- {{- if $d.brand -}}
- {{ $d.brand }}平台
- {{- end -}}
- {{ .resource_type_display }}{{ $d.name }}状态发生变更,原状态为:{{ $d.old_status }},变更后状态为{{$d.new_status }}`
- STATUS_CHANGED_CONTENT_EN = `{{- $d := .resource_details -}}
- Your {{ if $d.brand -}} {{ $d.brand }} {{ end -}} {{ .resource_type }} {{ $d.name }} status has changed,old status: {{ $d.old_status }},new_status: {{$d.new_status }}{{ if $d.project -}} in project {{ $d.project }} {{ end -}} `
- )
|