From 3c7c81df4b64fc8718e1cde6f9d160c8611a0844 Mon Sep 17 00:00:00 2001 From: vlobzakov <39057925+vlobzakov@users.noreply.github.com> Date: Wed, 16 Jun 2021 14:30:07 +0300 Subject: [PATCH 1/9] JE-53455 onBeforeInit quotas validation --- docs/creating-manifest/events.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/docs/creating-manifest/events.md b/docs/creating-manifest/events.md index d3edb498..52fb2254 100644 --- a/docs/creating-manifest/events.md +++ b/docs/creating-manifest/events.md @@ -1366,8 +1366,6 @@ The *onBeforeInit* event is executed: installation dialog in the dashboard - on application installation - -Placeholders do not work inside *onBeforeInit*, since even *globals* can be defined dynamically. You can override all the parameters of the manifest, except for: - `type` From 8879ca6730d41cca866f3972340e8d76ac762092 Mon Sep 17 00:00:00 2001 From: vlobzakov <39057925+vlobzakov@users.noreply.github.com> Date: Wed, 16 Jun 2021 16:03:17 +0300 Subject: [PATCH 2/9] JE-53455 onBeforeInit new placeholders added The ${account.(key)}, ${quota.(key)} and ${quota.data.(key)} placeholders added to Placeholders --- docs/creating-manifest/placeholders.md | 108 ++++++++++++++++++++++++- 1 file changed, 107 insertions(+), 1 deletion(-) diff --git a/docs/creating-manifest/placeholders.md b/docs/creating-manifest/placeholders.md index 32fa89da..abad856a 100644 --- a/docs/creating-manifest/placeholders.md +++ b/docs/creating-manifest/placeholders.md @@ -28,7 +28,13 @@ The following specific groups of placeholders are singled out: - [Array Placeholders](placeholders/#array-placeholders) -- [File Path Placeholders](placeholders/#file-path-placeholders) +- [File Path Placeholders](placeholders/#file-path-placeholders) + +- [Engine Placeholder](placeholders/#engine-placeholder) + +- [Account Placeholders](placeholders/#account-placeholders) + +- [Quota Placeholders](placeholders/#account-placeholders) Placeholders like `env`, `nodes`, `targetNodes`, `response` are dynamically updated. They could be updated by their requests if they are required to be updated. @@ -1249,6 +1255,106 @@ onInstall: ``` @@! +## Account Placeholders + +To ensure ability to process user's quotas and collaboration the following `${account.(key)}` placeholders are available: + +- `${account.}` + - `${account.groupType}` + - `${account.bonus}` + - `${account.hardNodeGroups}` + - `${account.createdOn}` + - `${account.updatedGroupOn}` + - `${account.defaultHardNodeGroup}` + - `${account.uid}` + - `${account.isCommerial}` + - `${account.balance}` + - `${account.isRegistered}` + - `${account.updatedStatusOn}` + - `${account.status}` + - `${account.group}` + - `${account.email}` + +Placeholders *${account.}* are initialized on demand, that is, only if they are used and only at the moment they are required. +Placeholder values are filled in depending on which user the installation is carried out for. That is, the placeholders will be filled with values for the collaborator selected during installation. + +## Quotas Placeholders + +To ensure ability to process user's quotas and collaboration the following `${quota.(key)` and `${quota.data.(key)}` placeholders are available: + +- `${quota.}` + - `${quota.maxcloudletsperrec}` + - `${quota.maxcount}` + - `${quota.disk.iolimit}` + - ... + +- `${quota.data.}` + - `${quota.data.environment.maxcloudletsperrec.quota.name}` + - `${quota.data.environment.maxcloudletsperrec.quota.description}` + - `${quota.data.environment.maxcloudletsperrec.quota.id}` + - `${quota.data.environment.maxcloudletsperrec.type}` + - `${quota.data.environment.maxcloudletsperrec.value} + - ... + +Placeholders `${quota.(key)}` are initialized on demand, that is, only if they are used and only at the moment they are required. +Placeholder values are filled in depending on which user the installation is carried out for. That is, the placeholders will be filled with values for the collaborator selected during installation. + +Placeholders `${quota.(key)}` are filled with quota values, where **key** is the name of the quota (for example: *${quota.environment.maxcloudletsperrec}*). + +Placeholders `${quota.data.(key)}` allow you to get quota data (for example, *type: ${quota.data.environment.maxcloudletsperrec.type}*). + +Example: + +@@@ +```yaml +type: install +name: Account And Quota Placeholders + +settings: + fields: [] + + onBeforeInit: | + settings.fields.push({ + type: "string", + caption: "Account", + name: "email", + value: "${account.email}" + }, { + type: "string", + caption: "Cloudlets", + name: "cloudlets", + value: "${quota.environment.maxcloudletsperrec}" + }); + return settings; +``` +```json +{ + "type": "install", + "name": "Account And Quota Placeholders", + "settings": { + "fields": [ + + ], + "onBeforeInit": [ + "settings.fields.push({", + " type: 'string',", + " caption: 'Account',", + " name: 'email',", + " value: '${account.email}'", + "},", + "{", + " type: 'string',", + " caption: 'Cloudlets',", + " name: 'cloudlets',", + " value: '${quota.environment.maxcloudletsperrec}'", + "});", + "return settings;" + ] + } +} +``` +@@! +

What’s next?

From 4e43f9132d302e293736b23eb2f43d0bd206452b Mon Sep 17 00:00:00 2001 From: vlobzakov <39057925+vlobzakov@users.noreply.github.com> Date: Wed, 16 Jun 2021 16:05:08 +0300 Subject: [PATCH 3/9] Error fixed --- docs/creating-manifest/placeholders.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/creating-manifest/placeholders.md b/docs/creating-manifest/placeholders.md index abad856a..06a279f8 100644 --- a/docs/creating-manifest/placeholders.md +++ b/docs/creating-manifest/placeholders.md @@ -1275,7 +1275,7 @@ To ensure ability to process user's quotas and collaboration the following `${ac - `${account.group}` - `${account.email}` -Placeholders *${account.}* are initialized on demand, that is, only if they are used and only at the moment they are required. +Placeholders *${account.(key)}* are initialized on demand, that is, only if they are used and only at the moment they are required. Placeholder values are filled in depending on which user the installation is carried out for. That is, the placeholders will be filled with values for the collaborator selected during installation. ## Quotas Placeholders From 23d37cbc6f2dee9f900f5e57705c5e627a1db262 Mon Sep 17 00:00:00 2001 From: vlobzakov <39057925+vlobzakov@users.noreply.github.com> Date: Wed, 16 Jun 2021 17:29:45 +0300 Subject: [PATCH 4/9] JE-53455 onBeforeInit field owner added --- docs/creating-manifest/visual-settings.md | 28 +++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/docs/creating-manifest/visual-settings.md b/docs/creating-manifest/visual-settings.md index 5a688f9f..96a54197 100644 --- a/docs/creating-manifest/visual-settings.md +++ b/docs/creating-manifest/visual-settings.md @@ -2139,6 +2139,34 @@ settings: Result: ![Tooltip-composit-field](/img/tooltip-composit-field.png) +### owner + +This field allows you to add the possibility of collaboration for packages with **type: install** without section nodes when installing environments in nested manifests. + +@@@ +```yaml +- type: owner + caption: Owner + name: ownerUid +``` +```json +[ + { + "type": "owner", + "caption": "Owner", + "name": "ownerUid" + } +] +``` +@@! + +![owner-field](/img/owner-field.png) + +The field is not displayed if there are no users defined in **Shared with Me**. + +![shared-with-me](/img/shared-with-me.png) + +Changing the *Owner* field value results in the data will be re-rerquested with *GetAppInfo* method and form re-rendered in case there is [onBeforeInit](events/#onbeforeinit) in the mainifest. Re-rendering will be performed according to the account and quotas of collaborator. ## Dynamic filling of the manifest fields Ability to dynamically determine UI in JPS manifest is accessible via [*onBeforeInit* *onBeforeInstall*](events/#onbeforeinit) events. From 5db3fad039ac222d1019ab7b657545ac1c350fc6 Mon Sep 17 00:00:00 2001 From: vlobzakov <39057925+vlobzakov@users.noreply.github.com> Date: Wed, 16 Jun 2021 17:30:50 +0300 Subject: [PATCH 5/9] JE-53455 onBeforeInit shared-with-me pic added --- theme/readthedocs/img/shared-with-me.png | Bin 0 -> 49973 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 theme/readthedocs/img/shared-with-me.png diff --git a/theme/readthedocs/img/shared-with-me.png b/theme/readthedocs/img/shared-with-me.png new file mode 100644 index 0000000000000000000000000000000000000000..becba28b5a540c55f1cc7a60e84ae1cf898046eb GIT binary patch literal 49973 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

?oS% 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 literal 0 HcmV?d00001 From e5a4f6bfc3920f11127928f57e1505f8cba838f1 Mon Sep 17 00:00:00 2001 From: vlobzakov <39057925+vlobzakov@users.noreply.github.com> Date: Wed, 16 Jun 2021 17:33:47 +0300 Subject: [PATCH 6/9] JE-53455 onBeforeInit owner pic added --- theme/readthedocs/img/owner-field.png | Bin 0 -> 5991 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 theme/readthedocs/img/owner-field.png diff --git a/theme/readthedocs/img/owner-field.png b/theme/readthedocs/img/owner-field.png new file mode 100644 index 0000000000000000000000000000000000000000..a64b067efb68d237f4f1d50336a1ecaccddb3681 GIT binary patch literal 5991 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 literal 0 HcmV?d00001 From 1e19b483609f0640541a4f32c69a71b8b59e7a04 Mon Sep 17 00:00:00 2001 From: vlobzakov <39057925+vlobzakov@users.noreply.github.com> Date: Wed, 16 Jun 2021 17:53:29 +0300 Subject: [PATCH 7/9] JE-53455 onBeforeInit event updated --- docs/creating-manifest/events.md | 59 ++++++++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) diff --git a/docs/creating-manifest/events.md b/docs/creating-manifest/events.md index 52fb2254..675b1a95 100644 --- a/docs/creating-manifest/events.md +++ b/docs/creating-manifest/events.md @@ -1372,6 +1372,65 @@ You can override all the parameters of the manifest, except for: - `name` - `baseUrl` +The *GetAppInfo* method has **ownerUid** parameter which allows to define a collaborator's account. Parameter is applied if the [owner](visual-settings/#owner) field is added to manifest. The [account](placeholders/#account-placeholders) and [quota](placeholders/#quota-placeholders) placeholders will be filled in depending on defined account. + +For example: + +@@@ +```yaml +type: install +name: Account And Quota Placeholders +settings: + fields: + - type: owner + caption: Owner + name: ownerUid + onBeforeInit: | + settings.fields.push({ + type: "string", + caption: "Account", + name: "email", + value: "${account.email}" + }, { + type: "string", + caption: "Cloudlets", + name: "cloudlets", + value: "${quota.environment.maxcloudletsperrec}" + }); + return settings; +``` +```json +{ + "type": "install", + "name": "Account And Quota Placeholders", + "settings": { + "fields": [ + { + "type": "owner", + "caption": "Owner", + "name": "ownerUid" + } + ], + "onBeforeInit": [ + "settings.fields.push({", + " type: 'string',", + " caption: 'Account',", + " name: 'email',", + " value: '${account.email}'", + "},", + "{", + " type: 'string',", + " caption: 'Cloudlets',", + " name: 'cloudlets',", + " value: '${quota.environment.maxcloudletsperrec}'", + "});", + "return settings;" + ] + } +} +``` +@@! + #### onBeforeInstall The *onBeforeInstall* event is executed before application installation but after *onBeforeInit*. The placeholders **\${globals.}** and **\${settings.}** can be used within *onBeforeInstall*. All of the manifest parameters can be overridden, except for: From 4a59e42bc812b1cf12ddf64106c4e75314693581 Mon Sep 17 00:00:00 2001 From: vlobzakov <39057925+vlobzakov@users.noreply.github.com> Date: Wed, 16 Jun 2021 17:54:34 +0300 Subject: [PATCH 8/9] error fixed --- docs/creating-manifest/placeholders.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/creating-manifest/placeholders.md b/docs/creating-manifest/placeholders.md index 06a279f8..4ea753c5 100644 --- a/docs/creating-manifest/placeholders.md +++ b/docs/creating-manifest/placeholders.md @@ -1278,7 +1278,7 @@ To ensure ability to process user's quotas and collaboration the following `${ac Placeholders *${account.(key)}* are initialized on demand, that is, only if they are used and only at the moment they are required. Placeholder values are filled in depending on which user the installation is carried out for. That is, the placeholders will be filled with values for the collaborator selected during installation. -## Quotas Placeholders +## Quota Placeholders To ensure ability to process user's quotas and collaboration the following `${quota.(key)` and `${quota.data.(key)}` placeholders are available: From c17d478c42250b037e299e882dd94d248759f0de Mon Sep 17 00:00:00 2001 From: Slava Katiukha Date: Mon, 19 Jun 2023 03:06:24 +0200 Subject: [PATCH 9/9] Update docs/creating-manifest/placeholders.md --- docs/creating-manifest/placeholders.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/creating-manifest/placeholders.md b/docs/creating-manifest/placeholders.md index 4ea753c5..ef830049 100644 --- a/docs/creating-manifest/placeholders.md +++ b/docs/creating-manifest/placeholders.md @@ -34,7 +34,7 @@ The following specific groups of placeholders are singled out: - [Account Placeholders](placeholders/#account-placeholders) -- [Quota Placeholders](placeholders/#account-placeholders) +- [Quota Placeholders](placeholders/#quota-placeholders) Placeholders like `env`, `nodes`, `targetNodes`, `response` are dynamically updated. They could be updated by their requests if they are required to be updated.