Support Projects in Userdata
diff --git a/api/src/main/java/org/apache/cloudstack/api/response/UserDataResponse.java b/api/src/main/java/org/apache/cloudstack/api/response/UserDataResponse.java
index bbe27f8..cceee8a 100644
--- a/api/src/main/java/org/apache/cloudstack/api/response/UserDataResponse.java
+++ b/api/src/main/java/org/apache/cloudstack/api/response/UserDataResponse.java
@@ -46,6 +46,14 @@
@SerializedName(ApiConstants.DOMAIN) @Param(description="the domain name of the userdata owner")
private String domain;
+ @SerializedName(ApiConstants.PROJECT_ID)
+ @Param(description = "the project id of the userdata owner")
+ private String projectId;
+
+ @SerializedName(ApiConstants.PROJECT)
+ @Param(description = "the project name of the userdata owner")
+ private String projectName;
+
@SerializedName(ApiConstants.USER_DATA) @Param(description="base64 encoded userdata content")
private String userData;
@@ -125,4 +133,12 @@
public void setDomainName(String domain) {
this.domain = domain;
}
+
+ public void setProjectId(String projectId) {
+ this.projectId = projectId;
+ }
+
+ public void setProjectName(String projectName) {
+ this.projectName = projectName;
+ }
}
diff --git a/server/src/main/java/com/cloud/api/ApiResponseHelper.java b/server/src/main/java/com/cloud/api/ApiResponseHelper.java
index 17c465d..375d6d9 100644
--- a/server/src/main/java/com/cloud/api/ApiResponseHelper.java
+++ b/server/src/main/java/com/cloud/api/ApiResponseHelper.java
@@ -4690,8 +4690,14 @@
public UserDataResponse createUserDataResponse(UserData userData) {
UserDataResponse response = new UserDataResponse(userData.getUuid(), userData.getName(), userData.getUserData(), userData.getParams());
Account account = ApiDBUtils.findAccountById(userData.getAccountId());
- response.setAccountId(account.getUuid());
- response.setAccountName(account.getAccountName());
+ if (account.getType() == Account.Type.PROJECT) {
+ Project project = ApiDBUtils.findProjectByProjectAccountIdIncludingRemoved(account.getAccountId());
+ response.setProjectId(project.getUuid());
+ response.setProjectName(project.getName());
+ } else {
+ response.setAccountName(account.getAccountName());
+ response.setAccountId(account.getUuid());
+ }
Domain domain = ApiDBUtils.findDomainById(userData.getDomainId());
response.setDomainId(domain.getUuid());
response.setDomainName(domain.getName());
diff --git a/ui/src/config/section/compute.js b/ui/src/config/section/compute.js
index 9bf8c94..67cbbf6 100644
--- a/ui/src/config/section/compute.js
+++ b/ui/src/config/section/compute.js
@@ -820,11 +820,14 @@
label: 'label.remove.user.data',
message: 'message.please.confirm.remove.user.data',
dataView: true,
- args: ['id', 'account', 'domainid'],
+ args: ['id', 'account', 'domainid', 'projectid'],
mapping: {
id: {
value: (record, params) => { return record.id }
},
+ projectid: {
+ value: (record, params) => { return record.projectid }
+ },
account: {
value: (record, params) => { return record.account }
},
@@ -838,7 +841,10 @@
return selection.map(x => {
const data = record.filter(y => { return y.id === x })
return {
- id: x, account: data[0].account, domainid: data[0].domainid
+ id: x,
+ account: data[0].account,
+ domainid: data[0].domainid,
+ projectid: data[0].projectid
}
})
}