如何在我的 Jelastic 清单中进行可选的电子邮件设置并 return 给用户的值?
How can I make an optional email settings in my Jelastic manifest and return the value to the user?
假设我有一个 Jelastic 清单,在设置部分,我要求用户提供电子邮件地址(以设置某些服务)。因为使用 Jelastic 的用户已经使用电子邮件登录 Jelastic,所以向用户建议她使用该电子邮件可能是有意义的。它在清单设置期间节省了她的输入。所以,理想情况下,我想做的是:
settings:
fields:
- name: email
caption: Email
type: string
default: ${user.email}
然后,在清单成功文本中,我想显示它,以及已安装的 Jelastic 环境中已部署服务的其他凭据:
success:
text: |
**Email**: ${settings.email}
电子邮件通常用作部署在新 Jelastic 环境中的服务中的用户名,在成功文本中,它会显示在相应密码附近。
以上这些都很好,但它不起作用。事实上,我不能在 default
字段中使用 ${user.email}
来设置 email
。
目前,我发现唯一可行的方法如下:
settings:
fields:
- name: useJelasticEmailAsEmail
type: toggle
caption: Use Jelastic Email
value: true
hidden: false
showIf:
false:
name: email
caption: email
type: string
required: true
然后,我可以用它来安装这样的服务:
onInstall:
- script: 'return { result: 0, email: ${settings.useJelasticEmailAsEmail} ? "${user.email}" : "${settings.email}" };'
- install:
jps: my-service-manifest.yml
settings:
username: ${response.email}
但是,安装 my-service-manifest.yml
后,我无法再访问实际使用的电子邮件,因此我无法在成功文本中使用 ${response.email}
,除非 my-service-manifest.yml
return以某种方式编辑了电子邮件(可能带有 return 语句?)。
问题是,我可能有很多这样的服务要安装,但只有一个需要电子邮件。此外,可能出于某种原因必须首先安装需要电子邮件的服务。在这种情况下,使用上述解决方案,我需要通过所有服务传播电子邮件,以便将其发送到成功文本。电子邮件将被第一个服务使用,并以某种方式 returned 到下一个。下一个服务不需要电子邮件,但必须传播它,因此它应该将其作为设置参数并将其 return 传递给下一个服务,依此类推。清单采用它不需要的参数并不是很好,因此该解决方案可能不是正确的解决方案。
我发现对于一个非常简单的问题来说非常复杂。一定有更容易做的事情,对吧?有人可以给我提示吗?
我需要一个清单解决方案,我有很多这样的可选参数。目前,我对电子邮件和机密有疑问。在我的用例中,这些秘密由我直接在设置中提供,或者它们是自动生成的,例如${fn.password(20)}
。有些安装我需要自己设置,有些安装我需要让它们自动生成。
因此,假设我有 2 个可选参数,我找到的工作解决方案如下:
- 在我的 jps 清单的
settings
部分,我
settings:
fields:
- name: useOptionalParam1
type: toggle
caption: Use optional param1
value: true
hidden: false
showIf:
false:
name: param1
caption: Param1
type: string
required: true
- name: useOptionalParam2
type: toggle
caption: Use optional param2
value: true
hidden: false
showIf:
false:
name: param2
caption: Param2
type: string
required: true
- 在
globals
部分定义这些参数的值(对于电子邮件,这不是必需的,因为它被定义为 user.email
):
globals:
OPTIONAL_PARAM1: ${fn.password(20)}
OPTIONAL_PARAM2: ${fn.password(20)}
- 像这样定义一个动作:
actions:
getOptionalParams:
- script: 'return { result: 0, param1: ${settings.useOptionalParam1} ? "${globals.OPTIONAL_PARAM1}" : "${settings.param1}", param2: ${settings.useOptionalParam2} ? "${globals.OPTIONAL_PARAM2}" : "${settings.param2}" };'
- 必要时调用操作;例如,在成功文本之前:
# settings, globals, nodes sections
[...]
onInstall:
- myVariousInstalls
- getOptionalParams
success:
text: |
**PARAM1**: ${response.param1}
**PARAM2**: ${response.param2}
请注意 onInstall
部分末尾对 getOptionalParams
的最后一次调用。它用于向 success
部分提供 [=20=] 对象。有趣的是,这很好用。 getOptionalParams
动作也可以在 myVariousInstalls
动作的任何地方调用。它必须在操作之前调用,例如这样:
actions:
[...]
myVariousInstalls:
- getOptionalParams
- install:
jps: path/to/manifest
settings:
param1: ${response.param1}
这样做,我解决了最初的问题。
假设我有一个 Jelastic 清单,在设置部分,我要求用户提供电子邮件地址(以设置某些服务)。因为使用 Jelastic 的用户已经使用电子邮件登录 Jelastic,所以向用户建议她使用该电子邮件可能是有意义的。它在清单设置期间节省了她的输入。所以,理想情况下,我想做的是:
settings:
fields:
- name: email
caption: Email
type: string
default: ${user.email}
然后,在清单成功文本中,我想显示它,以及已安装的 Jelastic 环境中已部署服务的其他凭据:
success:
text: |
**Email**: ${settings.email}
电子邮件通常用作部署在新 Jelastic 环境中的服务中的用户名,在成功文本中,它会显示在相应密码附近。
以上这些都很好,但它不起作用。事实上,我不能在 default
字段中使用 ${user.email}
来设置 email
。
目前,我发现唯一可行的方法如下:
settings:
fields:
- name: useJelasticEmailAsEmail
type: toggle
caption: Use Jelastic Email
value: true
hidden: false
showIf:
false:
name: email
caption: email
type: string
required: true
然后,我可以用它来安装这样的服务:
onInstall:
- script: 'return { result: 0, email: ${settings.useJelasticEmailAsEmail} ? "${user.email}" : "${settings.email}" };'
- install:
jps: my-service-manifest.yml
settings:
username: ${response.email}
但是,安装 my-service-manifest.yml
后,我无法再访问实际使用的电子邮件,因此我无法在成功文本中使用 ${response.email}
,除非 my-service-manifest.yml
return以某种方式编辑了电子邮件(可能带有 return 语句?)。
问题是,我可能有很多这样的服务要安装,但只有一个需要电子邮件。此外,可能出于某种原因必须首先安装需要电子邮件的服务。在这种情况下,使用上述解决方案,我需要通过所有服务传播电子邮件,以便将其发送到成功文本。电子邮件将被第一个服务使用,并以某种方式 returned 到下一个。下一个服务不需要电子邮件,但必须传播它,因此它应该将其作为设置参数并将其 return 传递给下一个服务,依此类推。清单采用它不需要的参数并不是很好,因此该解决方案可能不是正确的解决方案。
我发现对于一个非常简单的问题来说非常复杂。一定有更容易做的事情,对吧?有人可以给我提示吗?
我需要一个清单解决方案,我有很多这样的可选参数。目前,我对电子邮件和机密有疑问。在我的用例中,这些秘密由我直接在设置中提供,或者它们是自动生成的,例如${fn.password(20)}
。有些安装我需要自己设置,有些安装我需要让它们自动生成。
因此,假设我有 2 个可选参数,我找到的工作解决方案如下:
- 在我的 jps 清单的
settings
部分,我
settings:
fields:
- name: useOptionalParam1
type: toggle
caption: Use optional param1
value: true
hidden: false
showIf:
false:
name: param1
caption: Param1
type: string
required: true
- name: useOptionalParam2
type: toggle
caption: Use optional param2
value: true
hidden: false
showIf:
false:
name: param2
caption: Param2
type: string
required: true
- 在
globals
部分定义这些参数的值(对于电子邮件,这不是必需的,因为它被定义为user.email
):
globals:
OPTIONAL_PARAM1: ${fn.password(20)}
OPTIONAL_PARAM2: ${fn.password(20)}
- 像这样定义一个动作:
actions:
getOptionalParams:
- script: 'return { result: 0, param1: ${settings.useOptionalParam1} ? "${globals.OPTIONAL_PARAM1}" : "${settings.param1}", param2: ${settings.useOptionalParam2} ? "${globals.OPTIONAL_PARAM2}" : "${settings.param2}" };'
- 必要时调用操作;例如,在成功文本之前:
# settings, globals, nodes sections
[...]
onInstall:
- myVariousInstalls
- getOptionalParams
success:
text: |
**PARAM1**: ${response.param1}
**PARAM2**: ${response.param2}
请注意 onInstall
部分末尾对 getOptionalParams
的最后一次调用。它用于向 success
部分提供 [=20=] 对象。有趣的是,这很好用。 getOptionalParams
动作也可以在 myVariousInstalls
动作的任何地方调用。它必须在操作之前调用,例如这样:
actions:
[...]
myVariousInstalls:
- getOptionalParams
- install:
jps: path/to/manifest
settings:
param1: ${response.param1}
这样做,我解决了最初的问题。