Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
18 commits
Select commit Hold shift + click to select a range
4334097
Replace ACL list with ACL and related changes to the json files in pu…
abh1sar Apr 30, 2025
afab814
Replace ACL list with ACL and related changes to network.js, VpcTab.v…
abh1sar Apr 30, 2025
41eee1f
Replace Export ACLs with Export ACL rules
abh1sar Apr 30, 2025
0519d76
standardize the term user data everywhere. fix the placeholder in reg…
abh1sar Apr 30, 2025
6c987c8
Convert resource names in main menu and action buttons to Title case
abh1sar May 7, 2025
8252d53
Use special icon for sharedfs instance and prefix for sharedfs volumes
abh1sar May 7, 2025
64462e8
Give custom icon precedence over shared fs icon
abh1sar May 7, 2025
d980cd0
Merge remote-tracking branch 'upstream/4.20' into ui-polish
abh1sar May 13, 2025
ff30b6f
Fixed some issues with public/locale files
abh1sar May 13, 2025
a75802a
Revert sharedfsvm changes
abh1sar May 13, 2025
c55630f
Added label.add.acl.name to en.json which was incorrectly removed
abh1sar May 13, 2025
285b64c
replace all *userdata* labels to *user.data* in public json files.
abh1sar Jun 5, 2025
d1b22df
remove redundant labels label.user.data.l2 and label.replace.acl.list
abh1sar Jun 18, 2025
05ed3e0
Merge remote-tracking branch 'upstream/4.20' into ui-polish
abh1sar Jun 18, 2025
f1b573b
Update ui/src/views/offering/AddNetworkOffering.vue
abh1sar Jun 25, 2025
d58bb99
user data -> User Data in cmd and response
abh1sar Jul 17, 2025
b52fccd
Merge branch 'ui-polish' of https://github.com/shapeblue/cloudstack i…
abh1sar Jul 17, 2025
87c0a24
fix more Title case on action buttons and labels.
abh1sar Jul 23, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
standardize the term user data everywhere. fix the placeholder in reg…
…ister user data form.
  • Loading branch information
abh1sar committed Apr 30, 2025
commit 0519d76d328215b60ed976b98adbf378015b9d9d
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@
import com.cloud.user.UserData;

@APICommand(name = "registerUserData",
description = "Register a new userdata.",
description = "Register a new user data.",
since = "4.18",
responseObject = SuccessResponse.class,
requestHasSensitiveInfo = false,
Expand All @@ -56,33 +56,33 @@ public class RegisterUserDataCmd extends BaseCmd {
//////////////// API parameters /////////////////////
/////////////////////////////////////////////////////

@Parameter(name = ApiConstants.NAME, type = CommandType.STRING, required = true, description = "Name of the userdata")
@Parameter(name = ApiConstants.NAME, type = CommandType.STRING, required = true, description = "Name of the user data")
private String name;

//Owner information
@Parameter(name = ApiConstants.ACCOUNT, type = CommandType.STRING, description = "an optional account for the userdata. Must be used with domainId.")
@Parameter(name = ApiConstants.ACCOUNT, type = CommandType.STRING, description = "an optional account for the user data. Must be used with domainId.")
private String accountName;

@Parameter(name = ApiConstants.DOMAIN_ID,
type = CommandType.UUID,
entityType = DomainResponse.class,
description = "an optional domainId for the userdata. If the account parameter is used, domainId must also be used.")
description = "an optional domainId for the user data. If the account parameter is used, domainId must also be used.")
private Long domainId;

@Parameter(name = ApiConstants.PROJECT_ID, type = CommandType.UUID, entityType = ProjectResponse.class, description = "an optional project for the userdata")
@Parameter(name = ApiConstants.PROJECT_ID, type = CommandType.UUID, entityType = ProjectResponse.class, description = "an optional project for the user data")
private Long projectId;

@Parameter(name = ApiConstants.USER_DATA,
type = CommandType.STRING,
required = true,
description = "Base64 encoded userdata content. " +
description = "Base64 encoded user data content. " +
"Using HTTP GET (via querystring), you can send up to 4KB of data after base64 encoding. " +
"Using HTTP POST (via POST body), you can send up to 1MB of data after base64 encoding. " +
"You also need to change vm.userdata.max.length value",
"Using HTTP POST (via POST body), you can send up to 32KB of data after base64 encoding, " +
"which can be increased upto 1MB using the vm.userdata.max.length setting",
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

should we change setting 'vm.userdata.max.length' => 'vm.user.data.max.length' as well?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think we should avoid changing the name of any setting in case anyone is already using it.

length = 1048576)
private String userData;

@Parameter(name = ApiConstants.PARAMS, type = CommandType.STRING, description = "comma separated list of variables declared in userdata content")
@Parameter(name = ApiConstants.PARAMS, type = CommandType.STRING, description = "comma separated list of variables declared in the user data content")
private String params;


Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,41 +27,41 @@
public class UserDataResponse extends BaseResponseWithAnnotations implements ControlledEntityResponse {

@SerializedName(ApiConstants.ID)
@Param(description = "ID of the ssh keypair")
@Param(description = "ID of the user data")
private String id;

@SerializedName(ApiConstants.NAME)
@Param(description = "Name of the userdata")
@Param(description = "Name of the user data")
private String name;

@SerializedName(ApiConstants.ACCOUNT_ID) @Param(description="the owner id of the userdata")
@SerializedName(ApiConstants.ACCOUNT_ID) @Param(description="the owner id of the user data")
private String accountId;

@SerializedName(ApiConstants.ACCOUNT) @Param(description="the owner of the userdata")
@SerializedName(ApiConstants.ACCOUNT) @Param(description="the owner of the user data")
private String accountName;

@SerializedName(ApiConstants.PROJECT_ID)
@Param(description = "the project id of the userdata", since = "4.19.1")
@Param(description = "the project id of the user data", since = "4.19.1")
private String projectId;

@SerializedName(ApiConstants.PROJECT)
@Param(description = "the project name of the userdata", since = "4.19.1")
@Param(description = "the project name of the user data", since = "4.19.1")
private String projectName;

@SerializedName(ApiConstants.DOMAIN_ID) @Param(description="the domain id of the userdata owner")
@SerializedName(ApiConstants.DOMAIN_ID) @Param(description="the domain id of the user data owner")
private String domainId;

@SerializedName(ApiConstants.DOMAIN) @Param(description="the domain name of the userdata owner")
@SerializedName(ApiConstants.DOMAIN) @Param(description="the domain name of the user data owner")
private String domain;

@SerializedName(ApiConstants.DOMAIN_PATH)
@Param(description = "path of the domain to which the userdata owner belongs", since = "4.19.2.0")
@Param(description = "path of the domain to which the user data owner belongs", since = "4.19.2.0")
private String domainPath;

@SerializedName(ApiConstants.USER_DATA) @Param(description="base64 encoded userdata content")
@SerializedName(ApiConstants.USER_DATA) @Param(description="base64 encoded user data content")
private String userData;

@SerializedName(ApiConstants.PARAMS) @Param(description="list of parameters which contains the list of keys or string parameters that are needed to be passed for any variables declared in userdata")
@SerializedName(ApiConstants.PARAMS) @Param(description="list of parameters which contains the list of keys or string parameters that are needed to be passed for any variables declared in the user data")
private String params;

public UserDataResponse() {
Expand Down
42 changes: 22 additions & 20 deletions ui/public/locales/en.json
Original file line number Diff line number Diff line change
Expand Up @@ -226,7 +226,7 @@
"label.action.update.offering.access": "Update offering access",
"label.action.update.resource.count": "Update resource count",
"label.action.value": "Action/Value",
"label.action.userdata.reset": "Reset Userdata",
"label.action.userdata.reset": "Reset User data",
"label.action.vmsnapshot.create": "Take Instance Snapshot",
"label.action.vmsnapshot.delete": "Delete Instance Snapshot",
"label.action.vmsnapshot.revert": "Revert to Instance Snapshot",
Expand Down Expand Up @@ -1859,7 +1859,8 @@
"label.region": "Region",
"label.register.oauth": "Register OAuth",
"label.register.template": "Register Template",
"label.register.user.data": "Register a userdata",
"label.register.user.data": "Register User Data",
"label.register.user.data.details": "Enter the user data in plain text or in Base64 encoding. Up to 32KB of Base64 encoded user data can be sent by default. The setting vm.userdata.max.length can be used to increase the limit to upto 1MB.",
"label.reinstall.vm": "Reinstall Instance",
"label.reject": "Reject",
"label.related": "Related",
Expand Down Expand Up @@ -1895,7 +1896,7 @@
"label.remove.rule": "Remove rule",
"label.remove.ssh.key.pair": "Remove SSH Key pair",
"label.remove.tungsten.tag": "Remove Tag",
"label.remove.user.data": "Remove Userdata",
"label.remove.user.data": "Remove User Data",
"label.remove.vm.from.lb": "Remove Instance from load balancer rule",
"label.remove.vmware.datacenter": "Remove VMware Datacenter",
"label.remove.vpc": "Remove VPC",
Expand All @@ -1922,8 +1923,8 @@
"label.reset.config.value": "Reset to default value",
"label.reset.ssh.key.pair": "Reset SSH key pair",
"label.reset.to.default": "Reset to default",
"label.reset.userdata.on.autoscale.vm.group": "Reset Userdata on AutoScale VM Group",
"label.reset.userdata.on.vm": "Reset Userdata on Instance",
"label.reset.userdata.on.autoscale.vm.group": "Reset User data on AutoScale VM Group",
"label.reset.userdata.on.vm": "Reset User data on Instance",
"label.reset.vpn.connection": "Reset VPN connection",
"label.resource": "Resource",
"label.resource.limit.exceeded": "Resource limit exceeded",
Expand Down Expand Up @@ -2136,17 +2137,18 @@
"label.ssh.key.pairs": "SSH key pairs",
"label.uefi.supported": "UEFI supported",
"label.usediops": "IOPS used",
"label.userdataid": "Userdata ID",
"label.userdataname": "Userdata name",
"label.userdatadetails": "Userdata details",
"label.userdataparams": "Userdata parameters",
"label.userdatapolicy": "Userdata link policy",
"label.userdata.text": "Manual Userdata entry",
"label.userdata.registered": "Stored Userdata",
"label.userdata.do.override": "Userdata override",
"label.userdata.do.append": "Userdata append",
"label.userdatapolicy.tooltip": "Userdata linked to the Template can be overridden by Userdata provided during Instance deploy. Select the override policy as required.",
"label.userdataid": "User data ID",
"label.userdataname": "User data name",
"label.userdatadetails": "User data details",
"label.userdataparams": "User data parameters",
"label.userdatapolicy": "User data link policy",
Copy link
Copy Markdown
Contributor

@sureshanaparti sureshanaparti May 23, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

update label keys as well -label.user.data.id|name|details|...

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done

"label.userdata.text": "Manual User data entry",
"label.userdata.registered": "Stored User data",
"label.userdata.do.override": "User data override",
"label.userdata.do.append": "User data append",
"label.userdatapolicy.tooltip": "User data linked to the Template can be overridden by User data provided during Instance deploy. Select the override policy as required.",
"label.user.data": "User Data",
"label.user.data.library": "User Data Library",
"label.ssh.port": "SSH port",
"label.sshkeypair": "New SSH key pair",
"label.sshkeypairs": "SSH key pairs",
Expand Down Expand Up @@ -2430,7 +2432,7 @@
"label.usenewdiskoffering": "Replace disk offering?",
"label.user": "User",
"label.user.conflict": "Conflict",
"label.userdata": "Userdata",
"label.userdata": "User data",
"label.userdatal2": "User data",
"label.username": "Username",
"label.username.tooltip": "The Username for the Host",
Expand Down Expand Up @@ -3000,7 +3002,7 @@
"message.desc.primary.storage": "Each cluster must contain one or more primary storage servers. We will add the first one now. Primary storage contains the disk volumes for all the Instances running on hosts in the cluster. Use any standards-compliant protocol that is supported by the underlying hypervisor.",
"message.desc.reset.ssh.key.pair": "Please specify a ssh key pair that you would like to add to this Instance.",
"message.desc.secondary.storage": "Each zone must have at least one NFS or secondary storage server. We will add the first one now. Secondary storage stores Instance Templates, ISO images, and Instance disk volume Snapshots. This server must be available to all hosts in the zone.<br/><br/>Provide the IP address and exported path.",
"message.desc.register.user.data": "Please fill in the following data to register a User data.",
"message.desc.register.user.data": "Please fill in the following to register new user data.",
"message.desc.registered.user.data": "Registered a User Data.",
"message.desc.zone": "A zone is the largest organizational unit in CloudStack, and it typically corresponds to a single datacenter. Zones provide physical isolation and redundancy. A zone consists of one or more pods (each of which contains hosts and primary storage servers) and a secondary storage server which is shared by all pods in the zone.",
"message.desc.zone.edge": "A zone is the largest organizational unit in CloudStack, and it typically corresponds to a single datacenter. Zones provide physical isolation and redundancy. An edge zone consists of one or more hosts (each of which provides local storage as primary storage servers). Only shared and L2 Networks can be deployed in such zones and functionalities that require secondary storages are not supported.",
Expand Down Expand Up @@ -3177,7 +3179,7 @@
"message.error.upload.template": "Template upload failed.",
"message.error.upload.template.description": "Only one Template can be uploaded at a time.",
"message.error.url": "Please enter URL.",
"message.error.userdata": "Please enter Userdata",
"message.error.userdata": "Please enter the User data",
"message.error.username": "Enter your username.",
"message.error.valid.iops.range": "Please enter a valid IOPS range.",
"message.error.vcenter.datacenter": "Please enter vCenter datacenter.",
Expand Down Expand Up @@ -3339,7 +3341,7 @@
"message.path": "Path : ",
"message.path.description": "NFS: exported path from the server. VMFS: /datacenter name/datastore name. SharedMountPoint: path where primary storage is mounted, such as /mnt/primary.",
"message.please.confirm.remove.ssh.key.pair": "Please confirm that you want to remove this SSH key pair.",
"message.please.confirm.remove.user.data": "Please confirm that you want to remove this Userdata",
"message.please.confirm.remove.user.data": "Please confirm that you want to remove this User data",
"message.please.enter.valid.value": "Please enter a valid value.",
"message.please.enter.value": "Please enter values.",
"message.please.wait.while.autoscale.vmgroup.is.being.created": "Please wait while your AutoScaling Group is being created; this may take a while...",
Expand Down Expand Up @@ -3545,7 +3547,7 @@
"message.success.register.iso": "Successfully registered ISO",
"message.success.register.keypair": "Successfully registered SSH key pair",
"message.success.register.template": "Successfully registered Template",
"message.success.register.user.data": "Successfully registered Userdata",
"message.success.register.user.data": "Successfully registered User data",
"message.success.release.ip": "Successfully released IP",
"message.success.release.dedicated.bgp.peer": "Successfully released dedicated BGP peer",
"message.success.release.dedicated.ipv4.subnet": "Successfully released dedicated IPv4 subnet",
Expand Down
4 changes: 2 additions & 2 deletions ui/src/config/section/compute.js
Original file line number Diff line number Diff line change
Expand Up @@ -903,7 +903,7 @@ export default {
},
{
name: 'userdata',
title: 'label.user.data',
title: 'label.user.data.library',
icon: 'solution-outlined',
docHelp: 'adminguide/virtual_machines.html#user-data-and-meta-data',
permission: ['listUserData'],
Expand Down Expand Up @@ -942,7 +942,7 @@ export default {
api: 'registerUserData',
icon: 'plus-outlined',
label: 'label.register.user.data',
docHelp: 'adminguide/virtual_machines.html#creating-the-ssh-keypair',
docHelp: 'adminguide/virtual_machines.html#user-data-and-meta-data',
listView: true,
popup: true,
component: shallowRef(defineAsyncComponent(() => import('@/views/compute/RegisterUserData.vue')))
Expand Down
4 changes: 2 additions & 2 deletions ui/src/views/compute/RegisterUserData.vue
Original file line number Diff line number Diff line change
Expand Up @@ -37,11 +37,11 @@
</a-form-item>
<a-form-item name="userdata" ref="userdata">
<template #label>
<tooltip-label :title="$t('label.userdata')" :tooltip="apiParams.userdata.description"/>
<tooltip-label :title="$t('label.userdata')" :tooltip="$t('label.register.user.data.details')"/>
</template>
<a-textarea
v-model:value="form.userdata"
:placeholder="apiParams.userdata.description"/>
:placeholder="$t('label.register.user.data.details')"/>
</a-form-item>
<a-form-item name="isbase64" ref="isbase64" :label="$t('label.is.base64.encoded')">
<a-checkbox v-model:checked="form.isbase64"></a-checkbox>
Expand Down