From b71f50731c26fe53f1c4d300f57df9f48be13340 Mon Sep 17 00:00:00 2001 From: Mihaela Stoica Date: Mon, 3 Mar 2014 16:25:25 +0000 Subject: [PATCH 01/16] CLOUDSTACK-6196: [UI] Fixed invalid field name (label.dynamically.scalable) on instance details. Signed-off-by: Mihaela Stoica --- ui/dictionary.jsp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ui/dictionary.jsp b/ui/dictionary.jsp index bf48417cd47..fdf15cc337a 100644 --- a/ui/dictionary.jsp +++ b/ui/dictionary.jsp @@ -1251,7 +1251,7 @@ dictionary = { 'label.network.addVM': '', 'label.set.default.NIC': '', 'label.Xenserver.Tools.Version61plus': '', -'label.dynamically.scalabel': '', +'label.dynamically.scalable': '', 'label.instance.scaled.up': '', 'label.tag.value': '', 'label.tag.key': '', From 477902379e0fad25a796ad3cbed53bec33737541 Mon Sep 17 00:00:00 2001 From: Gabor Apati-Nagy Date: Mon, 3 Mar 2014 10:17:57 -0800 Subject: [PATCH 02/16] Fix CLOUDSTACK-4563: Initial zone wizard UI label issue --- client/WEB-INF/classes/resources/messages.properties | 1 + ui/dictionary.jsp | 1 + ui/scripts/zoneWizard.js | 2 +- 3 files changed, 3 insertions(+), 1 deletion(-) diff --git a/client/WEB-INF/classes/resources/messages.properties b/client/WEB-INF/classes/resources/messages.properties index 1e91d38f465..82ac499a85e 100644 --- a/client/WEB-INF/classes/resources/messages.properties +++ b/client/WEB-INF/classes/resources/messages.properties @@ -945,6 +945,7 @@ label.project.view=Project View label.project=Project label.projects=Projects label.protocol=Protocol +label.provider=Provider label.providers=Providers label.public.interface=Public Interface label.public.ip=Public IP Address diff --git a/ui/dictionary.jsp b/ui/dictionary.jsp index fdf15cc337a..11dbeb5179c 100644 --- a/ui/dictionary.jsp +++ b/ui/dictionary.jsp @@ -933,6 +933,7 @@ dictionary = { 'label.projects': '', 'label.project.view': '', 'label.protocol': '', +'label.provider': '', 'label.providers': '', 'label.provider': '', 'label.public': '', diff --git a/ui/scripts/zoneWizard.js b/ui/scripts/zoneWizard.js index 26915868749..1de36469297 100755 --- a/ui/scripts/zoneWizard.js +++ b/ui/scripts/zoneWizard.js @@ -1872,7 +1872,7 @@ secondaryStorage: { fields: { provider: { - label: 'Provider', + label: 'label.provider', select: function(args) { var storageproviders = []; storageproviders.push({ id: '', description: ''}); From 0d688fec73c73073eea3b3f78c26c2a784323533 Mon Sep 17 00:00:00 2001 From: Brian Federle Date: Mon, 3 Mar 2014 10:52:53 -0800 Subject: [PATCH 03/16] VM wizard: Add specify IP field when in VPC flow --- ui/css/cloudstack3.css | 7 +++++++ ui/index.jsp | 12 +++++++++++- ui/scripts/instanceWizard.js | 2 +- 3 files changed, 19 insertions(+), 2 deletions(-) diff --git a/ui/css/cloudstack3.css b/ui/css/cloudstack3.css index 2d49c044c8a..a70d2a221d1 100644 --- a/ui/css/cloudstack3.css +++ b/ui/css/cloudstack3.css @@ -3682,6 +3682,13 @@ Dialogs*/ margin: 18px 0 0; } +.ui-dialog .ui-widget-content .nothing-to-select .specify-ip { + margin-top: 28px; + padding-top: 21px; + font-size: 12px; + border-top: 1px solid #DFDFDF; +} + .ui-dialog-buttonset { width: 285px; margin: 0; diff --git a/ui/index.jsp b/ui/index.jsp index c638f93789a..4daa9eb096d 100644 --- a/ui/index.jsp +++ b/ui/index.jsp @@ -265,7 +265,17 @@

-

+

+

+
+ + +
+
+

diff --git a/ui/scripts/instanceWizard.js b/ui/scripts/instanceWizard.js index e9296a97eef..c447b319d9b 100644 --- a/ui/scripts/instanceWizard.js +++ b/ui/scripts/instanceWizard.js @@ -381,7 +381,7 @@ step6ContainerType = 'nothing-to-select'; $networkStep.find("#from_instance_page_1").hide(); $networkStep.find("#from_instance_page_2").hide(); - $networkStep.find("#from_vpc_tier").text("tier " + args.context.networks[0].name); + $networkStep.find("#from_vpc_tier").prepend("tier " + _s(args.context.networks[0].name)); $networkStep.find("#from_vpc_tier").show(); } else { //from Instance page if (selectedZoneObj.securitygroupsenabled != true) { // Advanced SG-disabled zone From f45a5b231d4554a597080b304e15dedbf05e6148 Mon Sep 17 00:00:00 2001 From: Brian Federle Date: Mon, 3 Mar 2014 11:38:02 -0800 Subject: [PATCH 04/16] Update infrastructure icons --- ui/images/infrastructure-icons.png | Bin 62059 -> 66823 bytes ui/images/sprites.png | Bin 209041 -> 210353 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/ui/images/infrastructure-icons.png b/ui/images/infrastructure-icons.png index a589fc42dc2f9828358b85d9d690b4eb87581c9a..188afb131592e3114f76bdc83adb942d160faf80 100644 GIT binary patch literal 66823 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 literal 62059 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 AOaK4? diff --git a/ui/images/sprites.png b/ui/images/sprites.png index 84d354606cc790f6d4940a6954fdad0274b2a8fd..ca03abcb72eef25baa97849f57c2089f41ba844b 100644 GIT binary patch delta 98135 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

mxb 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 BKXw2B delta 97013 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 Date: Mon, 3 Mar 2014 11:43:05 -0800 Subject: [PATCH 05/16] Main UI layout: Tweak font sizes for better readability --- ui/css/cloudstack3.css | 24 ++++++++++++++---------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/ui/css/cloudstack3.css b/ui/css/cloudstack3.css index a70d2a221d1..5681f0a6768 100644 --- a/ui/css/cloudstack3.css +++ b/ui/css/cloudstack3.css @@ -2338,6 +2338,11 @@ div.detail-group.actions td { position: relative; top: 5px; left: 7px; + /*+text-shadow:0px -1px 1px #464646;*/ + -moz-text-shadow: 0px -1px 1px #464646; + -webkit-text-shadow: 0px -1px 1px #464646; + -o-text-shadow: 0px -1px 1px #464646; + text-shadow: 0px -1px 1px #464646; } #header div.notifications:hover { @@ -2594,10 +2599,9 @@ div.detail-group.actions td { position: relative; left: 14px; top: 13px; - font-size: 11px; + font-size: 12px; color: #515151; padding-left: 19px; - font-weight: bold; /*+text-shadow:0px 1px #FFFFFF;*/ -moz-text-shadow: 0px 1px #FFFFFF; -webkit-text-shadow: 0px 1px #FFFFFF; @@ -3375,7 +3379,7 @@ div.toolbar div.filters select { #breadcrumbs .home { height: 21px; float: left; - font-size: 11px; + font-size: 13px; color: #FFFFFF; padding: 9px 5px 0px 8px; cursor: pointer; @@ -3440,6 +3444,7 @@ div.toolbar div.filters select { top: 0px; margin-left: -10px; text-indent: 13px; + font-size: 13px; } #breadcrumbs div.active-project { @@ -9267,8 +9272,7 @@ div.container div.panel div#details-tab-addloadBalancer.detail-group div.loadBal .project-switcher label { top: 29px; color: #FFFFFF; - font-size: 12px; - font-weight: bold; + font-size: 13px; float: left; margin-right: 7px; margin-top: 5px; @@ -9277,7 +9281,7 @@ div.container div.panel div#details-tab-addloadBalancer.detail-group div.loadBal .project-switcher select { width: 70%; float: left; - margin-top: -1px; + margin-top: 0px; border: 1px solid #393939; /*+text-shadow:0px -1px 1px #373737;*/ -moz-text-shadow: 0px -1px 1px #373737; @@ -9285,7 +9289,7 @@ div.container div.panel div#details-tab-addloadBalancer.detail-group div.loadBal -o-text-shadow: 0px -1px 1px #373737; text-shadow: 0px -1px 1px #373737; background: #515151; - font-size: 15px; + font-size: 13px; font-weight: 100; color: #FFFFFF; } @@ -11919,10 +11923,10 @@ div.ui-dialog div.autoscaler div.field-group div.form-container form div.form-it .region-switcher .title { display: inline-block; float: right; - padding: 10px 9px 0 34px; + padding: 9px 9px 0 34px; color: #FFFFFF; - font-size: 12px; - font-weight: bold; + font-size: 13px; + font-weight: 100; max-width: 285px; overflow: hidden; white-space: nowrap; From d71483f7718922624273e60d920010fa268549fb Mon Sep 17 00:00:00 2001 From: Jessica Wang Date: Mon, 3 Mar 2014 11:44:10 -0800 Subject: [PATCH 06/16] BUG-ID: CS-19426: UI > VPC > VM Wizard > change to send ipToNetworkList parameter instead of networkIds parameter to deployVM API. Reviewed-by: Brian --- ui/scripts/instanceWizard.js | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/ui/scripts/instanceWizard.js b/ui/scripts/instanceWizard.js index c447b319d9b..3ee9af1b9e4 100644 --- a/ui/scripts/instanceWizard.js +++ b/ui/scripts/instanceWizard.js @@ -817,10 +817,12 @@ }); } } else if (step6ContainerType == 'nothing-to-select') { - if (args.context.networks != null) { //from VPC tier - $.extend(deployVmData, { - networkids : args.context.networks[0].id - }); + if ("vpc" in args.context) { //from VPC tier + deployVmData["iptonetworklist[0].networkid"] = args.context.networks[0].id; + if (args.data["vpc-specify-ip"] != undefined && args.data["vpc-specify-ip"].length > 0) { + deployVmData["iptonetworklist[0].ip"] = args.data["vpc-specify-ip"]; + } + $.extend(deployVmData, { domainid : args.context.vpc[0].domainid }); From 6726b7fee0c712ee4ef6d052d5b4f56034a01275 Mon Sep 17 00:00:00 2001 From: Brian Federle Date: Mon, 3 Mar 2014 11:56:03 -0800 Subject: [PATCH 07/16] Dashboard: Restore colors/appearance for alert items --- ui/css/cloudstack3.css | 3 +++ 1 file changed, 3 insertions(+) diff --git a/ui/css/cloudstack3.css b/ui/css/cloudstack3.css index 5681f0a6768..77c548792f1 100644 --- a/ui/css/cloudstack3.css +++ b/ui/css/cloudstack3.css @@ -4473,6 +4473,9 @@ Dialogs*/ } .dashboard.admin .dashboard-container.sub.alerts ul li { + border: 1px solid #FF7070; + border-left-width: 20px; + background: #FFEFEF; } .dashboard.admin .dashboard-container.sub.alerts ul li span.title { From fd43cf151663c48fe29f97323490d53a7c0f9d5b Mon Sep 17 00:00:00 2001 From: Alena Prokharchyk Date: Mon, 3 Mar 2014 12:44:08 -0800 Subject: [PATCH 08/16] Revert "CLOUDSTACK-5872: Async response from addAccountToProject doesn't contain useful information" This reverts commit ebcaec8632dbd92c071317f3190915244a287afb. Reverting as it breaks API compatibility --- .../com/cloud/projects/ProjectService.java | 6 ++-- .../user/account/AddAccountToProjectCmd.java | 7 ++-- .../account/DeleteAccountFromProjectCmd.java | 7 ++-- .../project/UpdateProjectInvitationCmd.java | 8 ++--- .../com/cloud/projects/ProjectManager.java | 2 +- .../cloud/projects/ProjectManagerImpl.java | 34 +++++++++---------- .../projects/MockProjectManagerImpl.java | 16 ++++----- 7 files changed, 38 insertions(+), 42 deletions(-) diff --git a/api/src/com/cloud/projects/ProjectService.java b/api/src/com/cloud/projects/ProjectService.java index 53dd44bd013..dc882ef11b8 100644 --- a/api/src/com/cloud/projects/ProjectService.java +++ b/api/src/com/cloud/projects/ProjectService.java @@ -69,11 +69,11 @@ public interface ProjectService { Project updateProject(long id, String displayText, String newOwnerName) throws ResourceAllocationException; - Project addAccountToProject(long projectId, String accountName, String email); + boolean addAccountToProject(long projectId, String accountName, String email); - Project deleteAccountFromProject(long projectId, String accountName); + boolean deleteAccountFromProject(long projectId, String accountName); - Project updateInvitation(long projectId, String accountName, String token, boolean accept); + boolean updateInvitation(long projectId, String accountName, String token, boolean accept); Project activateProject(long projectId); diff --git a/api/src/org/apache/cloudstack/api/command/user/account/AddAccountToProjectCmd.java b/api/src/org/apache/cloudstack/api/command/user/account/AddAccountToProjectCmd.java index 8372b052a39..ef36038c5c4 100644 --- a/api/src/org/apache/cloudstack/api/command/user/account/AddAccountToProjectCmd.java +++ b/api/src/org/apache/cloudstack/api/command/user/account/AddAccountToProjectCmd.java @@ -88,10 +88,9 @@ public class AddAccountToProjectCmd extends BaseAsyncCmd { } CallContext.current().setEventDetails("Project id: " + projectId + "; accountName " + accountName); - Project project = _projectService.addAccountToProject(getProjectId(), getAccountName(), getEmail()); - if (project != null) { - ProjectResponse response = _responseGenerator.createProjectResponse(project); - response.setResponseName(getCommandName()); + boolean result = _projectService.addAccountToProject(getProjectId(), getAccountName(), getEmail()); + if (result) { + SuccessResponse response = new SuccessResponse(getCommandName()); this.setResponseObject(response); } else { throw new ServerApiException(ApiErrorCode.INTERNAL_ERROR, "Failed to add account to the project"); diff --git a/api/src/org/apache/cloudstack/api/command/user/account/DeleteAccountFromProjectCmd.java b/api/src/org/apache/cloudstack/api/command/user/account/DeleteAccountFromProjectCmd.java index 4c6721a2997..5c891733b5a 100644 --- a/api/src/org/apache/cloudstack/api/command/user/account/DeleteAccountFromProjectCmd.java +++ b/api/src/org/apache/cloudstack/api/command/user/account/DeleteAccountFromProjectCmd.java @@ -77,10 +77,9 @@ public class DeleteAccountFromProjectCmd extends BaseAsyncCmd { @Override public void execute() { CallContext.current().setEventDetails("Project id: " + projectId + "; accountName " + accountName); - Project project = _projectService.deleteAccountFromProject(projectId, accountName); - if (project != null) { - ProjectResponse response = _responseGenerator.createProjectResponse(project); - response.setResponseName(getCommandName()); + boolean result = _projectService.deleteAccountFromProject(projectId, accountName); + if (result) { + SuccessResponse response = new SuccessResponse(getCommandName()); this.setResponseObject(response); } else { throw new ServerApiException(ApiErrorCode.INTERNAL_ERROR, "Failed to delete account from the project"); diff --git a/api/src/org/apache/cloudstack/api/command/user/project/UpdateProjectInvitationCmd.java b/api/src/org/apache/cloudstack/api/command/user/project/UpdateProjectInvitationCmd.java index 0ceb4ac877e..79e3f8a9cfd 100644 --- a/api/src/org/apache/cloudstack/api/command/user/project/UpdateProjectInvitationCmd.java +++ b/api/src/org/apache/cloudstack/api/command/user/project/UpdateProjectInvitationCmd.java @@ -16,7 +16,6 @@ // under the License. package org.apache.cloudstack.api.command.user.project; -import com.cloud.projects.Project; import org.apache.log4j.Logger; import org.apache.cloudstack.api.APICommand; @@ -95,10 +94,9 @@ public class UpdateProjectInvitationCmd extends BaseAsyncCmd { @Override public void execute() { CallContext.current().setEventDetails("Project id: " + projectId + "; accountName " + accountName + "; accept " + getAccept()); - Project project = _projectService.updateInvitation(projectId, accountName, token, getAccept()); - if (project != null) { - ProjectResponse response = _responseGenerator.createProjectResponse(project); - response.setResponseName(getCommandName()); + boolean result = _projectService.updateInvitation(projectId, accountName, token, getAccept()); + if (result) { + SuccessResponse response = new SuccessResponse(getCommandName()); this.setResponseObject(response); } else { throw new ServerApiException(ApiErrorCode.INTERNAL_ERROR, "Failed to join the project"); diff --git a/server/src/com/cloud/projects/ProjectManager.java b/server/src/com/cloud/projects/ProjectManager.java index 538104b8776..f5681464615 100644 --- a/server/src/com/cloud/projects/ProjectManager.java +++ b/server/src/com/cloud/projects/ProjectManager.java @@ -25,7 +25,7 @@ public interface ProjectManager extends ProjectService { boolean canModifyProjectAccount(Account caller, long accountId); - Project deleteAccountFromProject(long projectId, long accountId); + boolean deleteAccountFromProject(long projectId, long accountId); List listPermittedProjectAccounts(long accountId); diff --git a/server/src/com/cloud/projects/ProjectManagerImpl.java b/server/src/com/cloud/projects/ProjectManagerImpl.java index a3c7eda7f2d..5a0ed1cf64c 100755 --- a/server/src/com/cloud/projects/ProjectManagerImpl.java +++ b/server/src/com/cloud/projects/ProjectManagerImpl.java @@ -373,10 +373,10 @@ public class ProjectManagerImpl extends ManagerBase implements ProjectManager { @Override @DB - public Project deleteAccountFromProject(final long projectId, final long accountId) { - return Transaction.execute(new TransactionCallback() { + public boolean deleteAccountFromProject(final long projectId, final long accountId) { + return Transaction.execute(new TransactionCallback() { @Override - public Project doInTransaction(TransactionStatus status) { + public Boolean doInTransaction(TransactionStatus status) { boolean success = true; //remove account @@ -392,7 +392,7 @@ public class ProjectManagerImpl extends ManagerBase implements ProjectManager { } } - return success ? getProject(projectAccount.getProjectId()) : null; + return success; } }); } @@ -514,7 +514,7 @@ public class ProjectManagerImpl extends ManagerBase implements ProjectManager { @Override @ActionEvent(eventType = EventTypes.EVENT_PROJECT_ACCOUNT_ADD, eventDescription = "adding account to project", async = true) - public Project addAccountToProject(long projectId, String accountName, String email) { + public boolean addAccountToProject(long projectId, String accountName, String email) { Account caller = CallContext.current().getCallingAccount(); //check that the project exists @@ -556,7 +556,7 @@ public class ProjectManagerImpl extends ManagerBase implements ProjectManager { ProjectAccount projectAccount = _projectAccountDao.findByProjectIdAccountId(projectId, account.getId()); if (projectAccount != null) { s_logger.debug("Account " + accountName + " already added to the project id=" + projectId); - return project; + return true; } } @@ -567,21 +567,21 @@ public class ProjectManagerImpl extends ManagerBase implements ProjectManager { throw new InvalidParameterValueException("Account information is required for assigning account to the project"); } if (assignAccountToProject(project, account.getId(), ProjectAccount.Role.Regular) != null) { - return project; + return true; } else { s_logger.warn("Failed to add account " + accountName + " to project id=" + projectId); - return null; + return false; } } } - private Project inviteAccountToProject(Project project, Account account, String email) { + private boolean inviteAccountToProject(Project project, Account account, String email) { if (account != null) { if (createAccountInvitation(project, account.getId()) != null) { - return project; + return true; } else { s_logger.warn("Failed to generate invitation for account " + account.getAccountName() + " to project id=" + project); - return null; + return false; } } @@ -589,19 +589,19 @@ public class ProjectManagerImpl extends ManagerBase implements ProjectManager { //generate the token String token = generateToken(10); if (generateTokenBasedInvitation(project, email, token) != null) { - return project; + return true; } else { s_logger.warn("Failed to generate invitation for email " + email + " to project id=" + project); - return null; + return false; } } - return null; + return false; } @Override @ActionEvent(eventType = EventTypes.EVENT_PROJECT_ACCOUNT_REMOVE, eventDescription = "removing account from project", async = true) - public Project deleteAccountFromProject(long projectId, String accountName) { + public boolean deleteAccountFromProject(long projectId, String accountName) { Account caller = CallContext.current().getCallingAccount(); //check that the project exists @@ -725,7 +725,7 @@ public class ProjectManagerImpl extends ManagerBase implements ProjectManager { @Override @DB @ActionEvent(eventType = EventTypes.EVENT_PROJECT_INVITATION_UPDATE, eventDescription = "updating project invitation", async = true) - public Project updateInvitation(final long projectId, String accountName, String token, final boolean accept) { + public boolean updateInvitation(final long projectId, String accountName, String token, final boolean accept) { Account caller = CallContext.current().getCallingAccount(); Long accountId = null; boolean result = true; @@ -806,7 +806,7 @@ public class ProjectManagerImpl extends ManagerBase implements ProjectManager { throw new InvalidParameterValueException("Unable to find invitation for account name=" + accountName + " to the project id=" + projectId); } - return result ? project : null; + return result; } @Override diff --git a/server/test/com/cloud/projects/MockProjectManagerImpl.java b/server/test/com/cloud/projects/MockProjectManagerImpl.java index 7afd671d097..dc377ff6f42 100644 --- a/server/test/com/cloud/projects/MockProjectManagerImpl.java +++ b/server/test/com/cloud/projects/MockProjectManagerImpl.java @@ -87,21 +87,21 @@ public class MockProjectManagerImpl extends ManagerBase implements ProjectManage } @Override - public Project addAccountToProject(long projectId, String accountName, String email) { + public boolean addAccountToProject(long projectId, String accountName, String email) { // TODO Auto-generated method stub - return null; + return false; } @Override - public Project deleteAccountFromProject(long projectId, String accountName) { + public boolean deleteAccountFromProject(long projectId, String accountName) { // TODO Auto-generated method stub - return null; + return false; } @Override - public Project updateInvitation(long projectId, String accountName, String token, boolean accept) { + public boolean updateInvitation(long projectId, String accountName, String token, boolean accept) { // TODO Auto-generated method stub - return null; + return false; } @Override @@ -165,9 +165,9 @@ public class MockProjectManagerImpl extends ManagerBase implements ProjectManage } @Override - public Project deleteAccountFromProject(long projectId, long accountId) { + public boolean deleteAccountFromProject(long projectId, long accountId) { // TODO Auto-generated method stub - return null; + return false; } @Override From bbf5a912c61c42587f4403ea6f64301d421d3204 Mon Sep 17 00:00:00 2001 From: Alena Prokharchyk Date: Mon, 3 Mar 2014 14:37:46 -0800 Subject: [PATCH 09/16] list* APIs - added parameter helping to filter by "display" flag (available to ROOT admin only) --- api/src/com/cloud/network/vpc/VpcService.java | 3 ++- .../api/BaseListAccountResourcesCmd.java | 12 ++++++++++ .../address/ListPublicIpAddressesCmd.java | 15 ++++++++++-- .../autoscale/ListAutoScaleVmGroupsCmd.java | 15 ++++++++++-- .../autoscale/ListAutoScaleVmProfilesCmd.java | 13 +++++++++++ .../firewall/ListEgressFirewallRulesCmd.java | 3 +-- .../user/firewall/ListFirewallRulesCmd.java | 15 ++++++++++-- .../firewall/ListPortForwardingRulesCmd.java | 15 ++++++++++-- .../ListApplicationLoadBalancersCmd.java | 15 ++++++++++-- .../user/network/ListNetworkACLListsCmd.java | 14 +++++++++-- .../user/network/ListNetworkACLsCmd.java | 15 ++++++++++-- .../command/user/network/ListNetworksCmd.java | 11 +++++++++ .../api/command/user/vm/ListNicsCmd.java | 13 +++++++++++ .../api/command/user/vm/ListVMsCmd.java | 11 +++++++++ .../command/user/volume/ListVolumesCmd.java | 10 ++++++++ .../api/command/user/vpc/ListVPCsCmd.java | 17 +++++++++++--- .../user/vpn/ListRemoteAccessVpnsCmd.java | 15 ++++++++++-- .../user/vpn/ListVpnConnectionsCmd.java | 15 ++++++++++-- .../command/user/vpn/ListVpnGatewaysCmd.java | 15 ++++++++++-- .../src/com/cloud/vm/dao/NicDaoImpl.java | 1 - .../com/cloud/api/query/QueryManagerImpl.java | 17 +++++++++++++- .../com/cloud/network/NetworkServiceImpl.java | 23 +++++++++++-------- .../network/as/AutoScaleManagerImpl.java | 11 +++++++++ .../network/firewall/FirewallManagerImpl.java | 6 +++++ .../cloud/network/rules/RulesManagerImpl.java | 6 +++++ .../network/vpc/NetworkACLServiceImpl.java | 13 +++++++++++ .../com/cloud/network/vpc/VpcManagerImpl.java | 7 +++++- .../vpn/RemoteAccessVpnManagerImpl.java | 2 ++ .../network/vpn/Site2SiteVpnManagerImpl.java | 11 +++++++++ server/src/com/cloud/server/Criteria.java | 1 + .../cloud/server/ManagementServerImpl.java | 6 +++++ .../ApplicationLoadBalancerManagerImpl.java | 6 +++++ 32 files changed, 314 insertions(+), 38 deletions(-) diff --git a/api/src/com/cloud/network/vpc/VpcService.java b/api/src/com/cloud/network/vpc/VpcService.java index 3b1c005b1ec..d1166df4065 100644 --- a/api/src/com/cloud/network/vpc/VpcService.java +++ b/api/src/com/cloud/network/vpc/VpcService.java @@ -93,12 +93,13 @@ public interface VpcService { * @param restartRequired TODO * @param tags TODO * @param projectId TODO + * @param display TODO * @param vpc * @return */ public List listVpcs(Long id, String vpcName, String displayText, List supportedServicesStr, String cidr, Long vpcOffId, String state, String accountName, Long domainId, String keyword, Long startIndex, Long pageSizeVal, Long zoneId, Boolean isRecursive, Boolean listAll, Boolean restartRequired, - Map tags, Long projectId); + Map tags, Long projectId, Boolean display); /** * Starts VPC which includes starting VPC provider and applying all the neworking rules on the backend diff --git a/api/src/org/apache/cloudstack/api/BaseListAccountResourcesCmd.java b/api/src/org/apache/cloudstack/api/BaseListAccountResourcesCmd.java index 0586117f0c6..63d2b7f7615 100644 --- a/api/src/org/apache/cloudstack/api/BaseListAccountResourcesCmd.java +++ b/api/src/org/apache/cloudstack/api/BaseListAccountResourcesCmd.java @@ -16,6 +16,10 @@ // under the License. package org.apache.cloudstack.api; +import org.apache.cloudstack.context.CallContext; + +import com.cloud.user.Account; + public abstract class BaseListAccountResourcesCmd extends BaseListDomainResourcesCmd { @Parameter(name = ApiConstants.ACCOUNT, type = CommandType.STRING, description = "list resources by account. Must be used with the domainId parameter.") @@ -24,4 +28,12 @@ public abstract class BaseListAccountResourcesCmd extends BaseListDomainResource public String getAccountName() { return accountName; } + + public Boolean getDisplay() { + Account caller = CallContext.current().getCallingAccount(); + if (caller.getType() == Account.ACCOUNT_TYPE_NORMAL) { + return true; + } + return null; + } } diff --git a/api/src/org/apache/cloudstack/api/command/user/address/ListPublicIpAddressesCmd.java b/api/src/org/apache/cloudstack/api/command/user/address/ListPublicIpAddressesCmd.java index 1f2b4505c83..109dcd0148b 100644 --- a/api/src/org/apache/cloudstack/api/command/user/address/ListPublicIpAddressesCmd.java +++ b/api/src/org/apache/cloudstack/api/command/user/address/ListPublicIpAddressesCmd.java @@ -19,8 +19,7 @@ package org.apache.cloudstack.api.command.user.address; import java.util.ArrayList; import java.util.List; -import org.apache.log4j.Logger; - +import org.apache.cloudstack.acl.RoleType; import org.apache.cloudstack.api.APICommand; import org.apache.cloudstack.api.ApiCommandJobType; import org.apache.cloudstack.api.ApiConstants; @@ -33,6 +32,7 @@ import org.apache.cloudstack.api.response.PhysicalNetworkResponse; import org.apache.cloudstack.api.response.VlanIpRangeResponse; import org.apache.cloudstack.api.response.VpcResponse; import org.apache.cloudstack.api.response.ZoneResponse; +import org.apache.log4j.Logger; import com.cloud.network.IpAddress; import com.cloud.utils.Pair; @@ -90,6 +90,9 @@ public class ListPublicIpAddressesCmd extends BaseListTaggedResourcesCmd { @Parameter(name = ApiConstants.VPC_ID, type = CommandType.UUID, entityType = VpcResponse.class, description = "List ips belonging to the VPC") private Long vpcId; + @Parameter(name = ApiConstants.FOR_DISPLAY, type = CommandType.BOOLEAN, description = "list resources by display flag; only ROOT admin is eligible to pass this parameter", since = "4.4", authorized = {RoleType.Admin}) + private Boolean display; + ///////////////////////////////////////////////////// /////////////////// Accessors /////////////////////// ///////////////////////////////////////////////////// @@ -137,6 +140,14 @@ public class ListPublicIpAddressesCmd extends BaseListTaggedResourcesCmd { return vpcId; } + @Override + public Boolean getDisplay() { + if (display != null) { + return display; + } + return super.getDisplay(); + } + ///////////////////////////////////////////////////// /////////////// API Implementation/////////////////// ///////////////////////////////////////////////////// diff --git a/api/src/org/apache/cloudstack/api/command/user/autoscale/ListAutoScaleVmGroupsCmd.java b/api/src/org/apache/cloudstack/api/command/user/autoscale/ListAutoScaleVmGroupsCmd.java index 0d5de483615..a5d3cdb0e19 100644 --- a/api/src/org/apache/cloudstack/api/command/user/autoscale/ListAutoScaleVmGroupsCmd.java +++ b/api/src/org/apache/cloudstack/api/command/user/autoscale/ListAutoScaleVmGroupsCmd.java @@ -19,8 +19,7 @@ package org.apache.cloudstack.api.command.user.autoscale; import java.util.ArrayList; import java.util.List; -import org.apache.log4j.Logger; - +import org.apache.cloudstack.acl.RoleType; import org.apache.cloudstack.api.APICommand; import org.apache.cloudstack.api.ApiConstants; import org.apache.cloudstack.api.BaseListProjectAndAccountResourcesCmd; @@ -31,6 +30,7 @@ import org.apache.cloudstack.api.response.AutoScaleVmProfileResponse; import org.apache.cloudstack.api.response.FirewallRuleResponse; import org.apache.cloudstack.api.response.ListResponse; import org.apache.cloudstack.api.response.ZoneResponse; +import org.apache.log4j.Logger; import com.cloud.exception.InvalidParameterValueException; import com.cloud.network.as.AutoScaleVmGroup; @@ -61,6 +61,9 @@ public class ListAutoScaleVmGroupsCmd extends BaseListProjectAndAccountResources @Parameter(name = ApiConstants.ZONE_ID, type = CommandType.UUID, entityType = ZoneResponse.class, description = "the availability zone ID") private Long zoneId; + @Parameter(name = ApiConstants.FOR_DISPLAY, type = CommandType.BOOLEAN, description = "list resources by display flag; only ROOT admin is eligible to pass this parameter", since = "4.4", authorized = {RoleType.Admin}) + private Boolean display; + // /////////////////////////////////////////////////// // ///////////////// Accessors /////////////////////// // /////////////////////////////////////////////////// @@ -85,6 +88,14 @@ public class ListAutoScaleVmGroupsCmd extends BaseListProjectAndAccountResources return zoneId; } + @Override + public Boolean getDisplay() { + if (display != null) { + return display; + } + return super.getDisplay(); + } + // /////////////////////////////////////////////////// // ///////////// API Implementation/////////////////// // /////////////////////////////////////////////////// diff --git a/api/src/org/apache/cloudstack/api/command/user/autoscale/ListAutoScaleVmProfilesCmd.java b/api/src/org/apache/cloudstack/api/command/user/autoscale/ListAutoScaleVmProfilesCmd.java index 5e73053d956..782ccaec6dc 100644 --- a/api/src/org/apache/cloudstack/api/command/user/autoscale/ListAutoScaleVmProfilesCmd.java +++ b/api/src/org/apache/cloudstack/api/command/user/autoscale/ListAutoScaleVmProfilesCmd.java @@ -19,6 +19,7 @@ package org.apache.cloudstack.api.command.user.autoscale; import java.util.ArrayList; import java.util.List; +import org.apache.cloudstack.acl.RoleType; import org.apache.cloudstack.api.APICommand; import org.apache.cloudstack.api.ApiConstants; import org.apache.cloudstack.api.BaseListProjectAndAccountResourcesCmd; @@ -58,6 +59,9 @@ public class ListAutoScaleVmProfilesCmd extends BaseListProjectAndAccountResourc @Parameter(name = ApiConstants.ZONE_ID, type = CommandType.UUID, entityType = ZoneResponse.class, since = "4.4", description = "availability zone for the auto deployed virtual machine") private Long zoneId; + @Parameter(name = ApiConstants.FOR_DISPLAY, type = CommandType.BOOLEAN, description = "list resources by display flag; only ROOT admin is eligible to pass this parameter", since = "4.4", authorized = {RoleType.Admin}) + private Boolean display; + // /////////////////////////////////////////////////// // ///////////////// Accessors /////////////////////// // /////////////////////////////////////////////////// @@ -81,6 +85,15 @@ public class ListAutoScaleVmProfilesCmd extends BaseListProjectAndAccountResourc public Long getZoneId() { return zoneId; } + + @Override + public Boolean getDisplay() { + if (display != null) { + return display; + } + return super.getDisplay(); + } + // /////////////////////////////////////////////////// // ///////////// API Implementation/////////////////// // /////////////////////////////////////////////////// diff --git a/api/src/org/apache/cloudstack/api/command/user/firewall/ListEgressFirewallRulesCmd.java b/api/src/org/apache/cloudstack/api/command/user/firewall/ListEgressFirewallRulesCmd.java index 65614629f02..9585256959c 100644 --- a/api/src/org/apache/cloudstack/api/command/user/firewall/ListEgressFirewallRulesCmd.java +++ b/api/src/org/apache/cloudstack/api/command/user/firewall/ListEgressFirewallRulesCmd.java @@ -20,8 +20,6 @@ package org.apache.cloudstack.api.command.user.firewall; import java.util.ArrayList; import java.util.List; -import org.apache.log4j.Logger; - import org.apache.cloudstack.api.APICommand; import org.apache.cloudstack.api.ApiConstants; import org.apache.cloudstack.api.Parameter; @@ -29,6 +27,7 @@ import org.apache.cloudstack.api.response.FirewallResponse; import org.apache.cloudstack.api.response.FirewallRuleResponse; import org.apache.cloudstack.api.response.ListResponse; import org.apache.cloudstack.api.response.NetworkResponse; +import org.apache.log4j.Logger; import com.cloud.network.rules.FirewallRule; import com.cloud.utils.Pair; diff --git a/api/src/org/apache/cloudstack/api/command/user/firewall/ListFirewallRulesCmd.java b/api/src/org/apache/cloudstack/api/command/user/firewall/ListFirewallRulesCmd.java index e0e1a40f3d8..01fc436f29b 100644 --- a/api/src/org/apache/cloudstack/api/command/user/firewall/ListFirewallRulesCmd.java +++ b/api/src/org/apache/cloudstack/api/command/user/firewall/ListFirewallRulesCmd.java @@ -19,8 +19,7 @@ package org.apache.cloudstack.api.command.user.firewall; import java.util.ArrayList; import java.util.List; -import org.apache.log4j.Logger; - +import org.apache.cloudstack.acl.RoleType; import org.apache.cloudstack.api.APICommand; import org.apache.cloudstack.api.ApiConstants; import org.apache.cloudstack.api.BaseListTaggedResourcesCmd; @@ -30,6 +29,7 @@ import org.apache.cloudstack.api.response.FirewallRuleResponse; import org.apache.cloudstack.api.response.IPAddressResponse; import org.apache.cloudstack.api.response.ListResponse; import org.apache.cloudstack.api.response.NetworkResponse; +import org.apache.log4j.Logger; import com.cloud.network.rules.FirewallRule; import com.cloud.utils.Pair; @@ -59,6 +59,9 @@ public class ListFirewallRulesCmd extends BaseListTaggedResourcesCmd { since = "4.3") private Long networkId; + @Parameter(name = ApiConstants.FOR_DISPLAY, type = CommandType.BOOLEAN, description = "list resources by display flag; only ROOT admin is eligible to pass this parameter", since = "4.4", authorized = {RoleType.Admin}) + private Boolean display; + ///////////////////////////////////////////////////// /////////////////// Accessors /////////////////////// ///////////////////////////////////////////////////// @@ -79,6 +82,14 @@ public class ListFirewallRulesCmd extends BaseListTaggedResourcesCmd { return networkId; } + @Override + public Boolean getDisplay() { + if (display != null) { + return display; + } + return super.getDisplay(); + } + ///////////////////////////////////////////////////// /////////////// API Implementation/////////////////// ///////////////////////////////////////////////////// diff --git a/api/src/org/apache/cloudstack/api/command/user/firewall/ListPortForwardingRulesCmd.java b/api/src/org/apache/cloudstack/api/command/user/firewall/ListPortForwardingRulesCmd.java index 1bb43ceb037..63b6ea72094 100644 --- a/api/src/org/apache/cloudstack/api/command/user/firewall/ListPortForwardingRulesCmd.java +++ b/api/src/org/apache/cloudstack/api/command/user/firewall/ListPortForwardingRulesCmd.java @@ -19,8 +19,7 @@ package org.apache.cloudstack.api.command.user.firewall; import java.util.ArrayList; import java.util.List; -import org.apache.log4j.Logger; - +import org.apache.cloudstack.acl.RoleType; import org.apache.cloudstack.api.APICommand; import org.apache.cloudstack.api.ApiConstants; import org.apache.cloudstack.api.BaseListTaggedResourcesCmd; @@ -29,6 +28,7 @@ import org.apache.cloudstack.api.response.FirewallRuleResponse; import org.apache.cloudstack.api.response.IPAddressResponse; import org.apache.cloudstack.api.response.ListResponse; import org.apache.cloudstack.api.response.NetworkResponse; +import org.apache.log4j.Logger; import com.cloud.network.rules.PortForwardingRule; import com.cloud.utils.Pair; @@ -60,6 +60,9 @@ public class ListPortForwardingRulesCmd extends BaseListTaggedResourcesCmd { since = "4.3") private Long networkId; + @Parameter(name = ApiConstants.FOR_DISPLAY, type = CommandType.BOOLEAN, description = "list resources by display flag; only ROOT admin is eligible to pass this parameter", since = "4.4", authorized = {RoleType.Admin}) + private Boolean display; + ///////////////////////////////////////////////////// /////////////////// Accessors /////////////////////// ///////////////////////////////////////////////////// @@ -76,6 +79,14 @@ public class ListPortForwardingRulesCmd extends BaseListTaggedResourcesCmd { return networkId; } + @Override + public Boolean getDisplay() { + if (display != null) { + return display; + } + return super.getDisplay(); + } + ///////////////////////////////////////////////////// /////////////// API Implementation/////////////////// ///////////////////////////////////////////////////// diff --git a/api/src/org/apache/cloudstack/api/command/user/loadbalancer/ListApplicationLoadBalancersCmd.java b/api/src/org/apache/cloudstack/api/command/user/loadbalancer/ListApplicationLoadBalancersCmd.java index 41b9817bce6..f8696d4b3f6 100644 --- a/api/src/org/apache/cloudstack/api/command/user/loadbalancer/ListApplicationLoadBalancersCmd.java +++ b/api/src/org/apache/cloudstack/api/command/user/loadbalancer/ListApplicationLoadBalancersCmd.java @@ -19,8 +19,7 @@ package org.apache.cloudstack.api.command.user.loadbalancer; import java.util.ArrayList; import java.util.List; -import org.apache.log4j.Logger; - +import org.apache.cloudstack.acl.RoleType; import org.apache.cloudstack.api.APICommand; import org.apache.cloudstack.api.ApiConstants; import org.apache.cloudstack.api.BaseListTaggedResourcesCmd; @@ -30,6 +29,7 @@ import org.apache.cloudstack.api.response.FirewallRuleResponse; import org.apache.cloudstack.api.response.ListResponse; import org.apache.cloudstack.api.response.NetworkResponse; import org.apache.cloudstack.network.lb.ApplicationLoadBalancerRule; +import org.apache.log4j.Logger; import com.cloud.exception.InvalidParameterValueException; import com.cloud.network.rules.LoadBalancerContainer.Scheme; @@ -67,6 +67,9 @@ public class ListApplicationLoadBalancersCmd extends BaseListTaggedResourcesCmd @Parameter(name = ApiConstants.NETWORK_ID, type = CommandType.UUID, entityType = NetworkResponse.class, description = "the network id of the Load Balancer") private Long networkId; + @Parameter(name = ApiConstants.FOR_DISPLAY, type = CommandType.BOOLEAN, description = "list resources by display flag; only ROOT admin is eligible to pass this parameter", since = "4.4", authorized = {RoleType.Admin}) + private Boolean display; + // /////////////////////////////////////////////////// // ///////////////// Accessors /////////////////////// // /////////////////////////////////////////////////// @@ -91,6 +94,14 @@ public class ListApplicationLoadBalancersCmd extends BaseListTaggedResourcesCmd return sourceIpNetworkId; } + @Override + public Boolean getDisplay() { + if (display != null) { + return display; + } + return super.getDisplay(); + } + @Override public String getCommandName() { return s_name; diff --git a/api/src/org/apache/cloudstack/api/command/user/network/ListNetworkACLListsCmd.java b/api/src/org/apache/cloudstack/api/command/user/network/ListNetworkACLListsCmd.java index c34ea3f09e4..c115fb76165 100644 --- a/api/src/org/apache/cloudstack/api/command/user/network/ListNetworkACLListsCmd.java +++ b/api/src/org/apache/cloudstack/api/command/user/network/ListNetworkACLListsCmd.java @@ -19,8 +19,7 @@ package org.apache.cloudstack.api.command.user.network; import java.util.ArrayList; import java.util.List; -import org.apache.log4j.Logger; - +import org.apache.cloudstack.acl.RoleType; import org.apache.cloudstack.api.APICommand; import org.apache.cloudstack.api.ApiConstants; import org.apache.cloudstack.api.BaseListProjectAndAccountResourcesCmd; @@ -29,6 +28,7 @@ import org.apache.cloudstack.api.response.ListResponse; import org.apache.cloudstack.api.response.NetworkACLResponse; import org.apache.cloudstack.api.response.NetworkResponse; import org.apache.cloudstack.api.response.VpcResponse; +import org.apache.log4j.Logger; import com.cloud.network.vpc.NetworkACL; import com.cloud.utils.Pair; @@ -55,6 +55,9 @@ public class ListNetworkACLListsCmd extends BaseListProjectAndAccountResourcesCm @Parameter(name = ApiConstants.NAME, type = CommandType.STRING, description = "list network ACLs by specified name") private String name; + @Parameter(name = ApiConstants.FOR_DISPLAY, type = CommandType.BOOLEAN, description = "list resources by display flag; only ROOT admin is eligible to pass this parameter", since = "4.4", authorized = {RoleType.Admin}) + private Boolean display; + ///////////////////////////////////////////////////// /////////////////// Accessors /////////////////////// ///////////////////////////////////////////////////// @@ -75,6 +78,13 @@ public class ListNetworkACLListsCmd extends BaseListProjectAndAccountResourcesCm return name; } + @Override + public Boolean getDisplay() { + if (display != null) { + return display; + } + return super.getDisplay(); + } ///////////////////////////////////////////////////// /////////////// API Implementation/////////////////// ///////////////////////////////////////////////////// diff --git a/api/src/org/apache/cloudstack/api/command/user/network/ListNetworkACLsCmd.java b/api/src/org/apache/cloudstack/api/command/user/network/ListNetworkACLsCmd.java index 41f96d31b84..4f9065bf2cd 100644 --- a/api/src/org/apache/cloudstack/api/command/user/network/ListNetworkACLsCmd.java +++ b/api/src/org/apache/cloudstack/api/command/user/network/ListNetworkACLsCmd.java @@ -19,8 +19,7 @@ package org.apache.cloudstack.api.command.user.network; import java.util.ArrayList; import java.util.List; -import org.apache.log4j.Logger; - +import org.apache.cloudstack.acl.RoleType; import org.apache.cloudstack.api.APICommand; import org.apache.cloudstack.api.ApiConstants; import org.apache.cloudstack.api.BaseListTaggedResourcesCmd; @@ -29,6 +28,7 @@ import org.apache.cloudstack.api.response.ListResponse; import org.apache.cloudstack.api.response.NetworkACLItemResponse; import org.apache.cloudstack.api.response.NetworkACLResponse; import org.apache.cloudstack.api.response.NetworkResponse; +import org.apache.log4j.Logger; import com.cloud.network.vpc.NetworkACLItem; import com.cloud.utils.Pair; @@ -62,6 +62,9 @@ public class ListNetworkACLsCmd extends BaseListTaggedResourcesCmd { @Parameter(name = ApiConstants.ACTION, type = CommandType.STRING, description = "list network ACL Items by Action") private String action; + @Parameter(name = ApiConstants.FOR_DISPLAY, type = CommandType.BOOLEAN, description = "list resources by display flag; only ROOT admin is eligible to pass this parameter", since = "4.4", authorized = {RoleType.Admin}) + private Boolean display; + ///////////////////////////////////////////////////// /////////////////// Accessors /////////////////////// ///////////////////////////////////////////////////// @@ -90,6 +93,14 @@ public class ListNetworkACLsCmd extends BaseListTaggedResourcesCmd { return action; } + @Override + public Boolean getDisplay() { + if (display != null) { + return display; + } + return super.getDisplay(); + } + ///////////////////////////////////////////////////// /////////////// API Implementation/////////////////// ///////////////////////////////////////////////////// diff --git a/api/src/org/apache/cloudstack/api/command/user/network/ListNetworksCmd.java b/api/src/org/apache/cloudstack/api/command/user/network/ListNetworksCmd.java index d94c836aab7..2e54a078b74 100644 --- a/api/src/org/apache/cloudstack/api/command/user/network/ListNetworksCmd.java +++ b/api/src/org/apache/cloudstack/api/command/user/network/ListNetworksCmd.java @@ -19,6 +19,7 @@ package org.apache.cloudstack.api.command.user.network; import java.util.ArrayList; import java.util.List; +import org.apache.cloudstack.acl.RoleType; import org.apache.cloudstack.api.APICommand; import org.apache.cloudstack.api.ApiConstants; import org.apache.cloudstack.api.BaseListTaggedResourcesCmd; @@ -81,6 +82,9 @@ public class ListNetworksCmd extends BaseListTaggedResourcesCmd { @Parameter(name = ApiConstants.FOR_VPC, type = CommandType.BOOLEAN, description = "the network belongs to vpc") private Boolean forVpc; + @Parameter(name = ApiConstants.DISPLAY_NETWORK, type = CommandType.BOOLEAN, description = "list resources by display flag; only ROOT admin is eligible to pass this parameter", since = "4.4", authorized = {RoleType.Admin}) + private Boolean display; + ///////////////////////////////////////////////////// /////////////////// Accessors /////////////////////// ///////////////////////////////////////////////////// @@ -137,6 +141,13 @@ public class ListNetworksCmd extends BaseListTaggedResourcesCmd { return forVpc; } + @Override + public Boolean getDisplay() { + if (display != null) { + return display; + } + return super.getDisplay(); + } ///////////////////////////////////////////////////// /////////////// API Implementation/////////////////// ///////////////////////////////////////////////////// diff --git a/api/src/org/apache/cloudstack/api/command/user/vm/ListNicsCmd.java b/api/src/org/apache/cloudstack/api/command/user/vm/ListNicsCmd.java index 3c66f033494..408497cbc64 100644 --- a/api/src/org/apache/cloudstack/api/command/user/vm/ListNicsCmd.java +++ b/api/src/org/apache/cloudstack/api/command/user/vm/ListNicsCmd.java @@ -19,6 +19,7 @@ package org.apache.cloudstack.api.command.user.vm; import java.util.ArrayList; import java.util.List; +import org.apache.cloudstack.acl.RoleType; import org.apache.cloudstack.api.APICommand; import org.apache.cloudstack.api.ApiCommandJobType; import org.apache.cloudstack.api.ApiConstants; @@ -59,6 +60,9 @@ public class ListNicsCmd extends BaseListCmd { @Parameter(name = ApiConstants.NETWORK_ID, type = CommandType.UUID, entityType = NetworkResponse.class, description = "list nic of the specific vm's network") private Long networkId; + @Parameter(name = ApiConstants.FOR_DISPLAY, type = CommandType.BOOLEAN, description = "list resources by display flag; only ROOT admin is eligible to pass this parameter", since = "4.4", authorized = {RoleType.Admin}) + private Boolean display; + ///////////////////////////////////////////////////// /////////////////// Accessors /////////////////////// ///////////////////////////////////////////////////// @@ -93,6 +97,15 @@ public class ListNicsCmd extends BaseListCmd { return caller.getAccountId(); } + + public Boolean getDisplay() { + Account caller = CallContext.current().getCallingAccount(); + if (caller.getType() == Account.ACCOUNT_TYPE_NORMAL) { + return true; + } + return display; + } + ///////////////////////////////////////////////////// /////////////// API Implementation/////////////////// ///////////////////////////////////////////////////// diff --git a/api/src/org/apache/cloudstack/api/command/user/vm/ListVMsCmd.java b/api/src/org/apache/cloudstack/api/command/user/vm/ListVMsCmd.java index 3c0c8b039b3..1a564f60d9a 100644 --- a/api/src/org/apache/cloudstack/api/command/user/vm/ListVMsCmd.java +++ b/api/src/org/apache/cloudstack/api/command/user/vm/ListVMsCmd.java @@ -20,6 +20,7 @@ import java.util.ArrayList; import java.util.EnumSet; import java.util.List; +import org.apache.cloudstack.acl.RoleType; import org.apache.cloudstack.affinity.AffinityGroupResponse; import org.apache.cloudstack.api.APICommand; import org.apache.cloudstack.api.ApiCommandJobType; @@ -115,6 +116,9 @@ public class ListVMsCmd extends BaseListTaggedResourcesCmd { @Parameter(name = ApiConstants.SERVICE_OFFERING_ID, type = CommandType.UUID, entityType = ServiceOfferingResponse.class, description = "list by the service offering", since = "4.4") private Long serviceOffId; + @Parameter(name = ApiConstants.DISPLAY_VM, type = CommandType.BOOLEAN, description = "list resources by display flag; only ROOT admin is eligible to pass this parameter", since = "4.4", authorized = {RoleType.Admin}) + private Boolean display; + ///////////////////////////////////////////////////// /////////////////// Accessors /////////////////////// ///////////////////////////////////////////////////// @@ -205,6 +209,13 @@ public class ListVMsCmd extends BaseListTaggedResourcesCmd { return dv; } + @Override + public Boolean getDisplay() { + if (display != null) { + return display; + } + return super.getDisplay(); + } ///////////////////////////////////////////////////// /////////////// API Implementation/////////////////// ///////////////////////////////////////////////////// diff --git a/api/src/org/apache/cloudstack/api/command/user/volume/ListVolumesCmd.java b/api/src/org/apache/cloudstack/api/command/user/volume/ListVolumesCmd.java index 92afff4b23f..04c68fecbb7 100644 --- a/api/src/org/apache/cloudstack/api/command/user/volume/ListVolumesCmd.java +++ b/api/src/org/apache/cloudstack/api/command/user/volume/ListVolumesCmd.java @@ -75,6 +75,9 @@ public class ListVolumesCmd extends BaseListTaggedResourcesCmd { @Parameter(name = ApiConstants.DISK_OFFERING_ID, type = CommandType.UUID, entityType = DiskOfferingResponse.class, description = "list volumes by disk offering") private Long diskOfferingId; + @Parameter(name = ApiConstants.DISPLAY_VOLUME, type = CommandType.BOOLEAN, description = "list resources by display flag; only ROOT admin is eligible to pass this parameter", since = "4.4", authorized = {RoleType.Admin}) + private Boolean display; + ///////////////////////////////////////////////////// /////////////////// Accessors /////////////////////// ///////////////////////////////////////////////////// @@ -115,6 +118,13 @@ public class ListVolumesCmd extends BaseListTaggedResourcesCmd { return storageId; } + @Override + public Boolean getDisplay() { + if (display != null) { + return display; + } + return super.getDisplay(); + } ///////////////////////////////////////////////////// /////////////// API Implementation/////////////////// ///////////////////////////////////////////////////// diff --git a/api/src/org/apache/cloudstack/api/command/user/vpc/ListVPCsCmd.java b/api/src/org/apache/cloudstack/api/command/user/vpc/ListVPCsCmd.java index e81bf69d539..69a86930f8f 100644 --- a/api/src/org/apache/cloudstack/api/command/user/vpc/ListVPCsCmd.java +++ b/api/src/org/apache/cloudstack/api/command/user/vpc/ListVPCsCmd.java @@ -19,8 +19,7 @@ package org.apache.cloudstack.api.command.user.vpc; import java.util.ArrayList; import java.util.List; -import org.apache.log4j.Logger; - +import org.apache.cloudstack.acl.RoleType; import org.apache.cloudstack.api.APICommand; import org.apache.cloudstack.api.ApiConstants; import org.apache.cloudstack.api.BaseListTaggedResourcesCmd; @@ -29,6 +28,7 @@ import org.apache.cloudstack.api.response.ListResponse; import org.apache.cloudstack.api.response.VpcOfferingResponse; import org.apache.cloudstack.api.response.VpcResponse; import org.apache.cloudstack.api.response.ZoneResponse; +import org.apache.log4j.Logger; import com.cloud.network.vpc.Vpc; @@ -69,6 +69,9 @@ public class ListVPCsCmd extends BaseListTaggedResourcesCmd { @Parameter(name = ApiConstants.RESTART_REQUIRED, type = CommandType.BOOLEAN, description = "list VPCs by restartRequired option") private Boolean restartRequired; + @Parameter(name = ApiConstants.FOR_DISPLAY, type = CommandType.BOOLEAN, description = "list resources by display flag; only ROOT admin is eligible to pass this parameter", since = "4.4", authorized = {RoleType.Admin}) + private Boolean display; + ///////////////////////////////////////////////////// /////////////////// Accessors /////////////////////// ///////////////////////////////////////////////////// @@ -109,6 +112,14 @@ public class ListVPCsCmd extends BaseListTaggedResourcesCmd { return restartRequired; } + @Override + public Boolean getDisplay() { + if (display != null) { + return display; + } + return super.getDisplay(); + } + ///////////////////////////////////////////////////// /////////////// API Implementation/////////////////// ///////////////////////////////////////////////////// @@ -118,7 +129,7 @@ public class ListVPCsCmd extends BaseListTaggedResourcesCmd { List vpcs = _vpcService.listVpcs(getId(), getVpcName(), getDisplayText(), getSupportedServices(), getCidr(), getVpcOffId(), getState(), getAccountName(), getDomainId(), this.getKeyword(), this.getStartIndex(), this.getPageSizeVal(), getZoneId(), this.isRecursive(), this.listAll(), getRestartRequired(), getTags(), - getProjectId()); + getProjectId(), getDisplay()); ListResponse response = new ListResponse(); List offeringResponses = new ArrayList(); for (Vpc vpc : vpcs) { diff --git a/api/src/org/apache/cloudstack/api/command/user/vpn/ListRemoteAccessVpnsCmd.java b/api/src/org/apache/cloudstack/api/command/user/vpn/ListRemoteAccessVpnsCmd.java index 56acd41fc04..bcf00d9d4c6 100644 --- a/api/src/org/apache/cloudstack/api/command/user/vpn/ListRemoteAccessVpnsCmd.java +++ b/api/src/org/apache/cloudstack/api/command/user/vpn/ListRemoteAccessVpnsCmd.java @@ -19,8 +19,7 @@ package org.apache.cloudstack.api.command.user.vpn; import java.util.ArrayList; import java.util.List; -import org.apache.log4j.Logger; - +import org.apache.cloudstack.acl.RoleType; import org.apache.cloudstack.api.APICommand; import org.apache.cloudstack.api.ApiConstants; import org.apache.cloudstack.api.BaseListProjectAndAccountResourcesCmd; @@ -29,6 +28,7 @@ import org.apache.cloudstack.api.response.IPAddressResponse; import org.apache.cloudstack.api.response.ListResponse; import org.apache.cloudstack.api.response.NetworkResponse; import org.apache.cloudstack.api.response.RemoteAccessVpnResponse; +import org.apache.log4j.Logger; import com.cloud.network.RemoteAccessVpn; import com.cloud.utils.Pair; @@ -60,6 +60,9 @@ public class ListRemoteAccessVpnsCmd extends BaseListProjectAndAccountResourcesC since = "4.3") private Long networkId; + @Parameter(name = ApiConstants.FOR_DISPLAY, type = CommandType.BOOLEAN, description = "list resources by display flag; only ROOT admin is eligible to pass this parameter", since = "4.4", authorized = {RoleType.Admin}) + private Boolean display; + ///////////////////////////////////////////////////// /////////////////// Accessors /////////////////////// ///////////////////////////////////////////////////// @@ -76,6 +79,14 @@ public class ListRemoteAccessVpnsCmd extends BaseListProjectAndAccountResourcesC return networkId; } + @Override + public Boolean getDisplay() { + if (display != null) { + return display; + } + return super.getDisplay(); + } + ///////////////////////////////////////////////////// /////////////// API Implementation/////////////////// ///////////////////////////////////////////////////// diff --git a/api/src/org/apache/cloudstack/api/command/user/vpn/ListVpnConnectionsCmd.java b/api/src/org/apache/cloudstack/api/command/user/vpn/ListVpnConnectionsCmd.java index 28ab8b9dfac..1da2166ab0d 100644 --- a/api/src/org/apache/cloudstack/api/command/user/vpn/ListVpnConnectionsCmd.java +++ b/api/src/org/apache/cloudstack/api/command/user/vpn/ListVpnConnectionsCmd.java @@ -19,8 +19,7 @@ package org.apache.cloudstack.api.command.user.vpn; import java.util.ArrayList; import java.util.List; -import org.apache.log4j.Logger; - +import org.apache.cloudstack.acl.RoleType; import org.apache.cloudstack.api.APICommand; import org.apache.cloudstack.api.ApiConstants; import org.apache.cloudstack.api.BaseListProjectAndAccountResourcesCmd; @@ -28,6 +27,7 @@ import org.apache.cloudstack.api.Parameter; import org.apache.cloudstack.api.response.ListResponse; import org.apache.cloudstack.api.response.Site2SiteVpnConnectionResponse; import org.apache.cloudstack.api.response.VpcResponse; +import org.apache.log4j.Logger; import com.cloud.network.Site2SiteVpnConnection; import com.cloud.utils.Pair; @@ -48,6 +48,9 @@ public class ListVpnConnectionsCmd extends BaseListProjectAndAccountResourcesCmd @Parameter(name = ApiConstants.VPC_ID, type = CommandType.UUID, entityType = VpcResponse.class, description = "id of vpc") private Long vpcId; + @Parameter(name = ApiConstants.FOR_DISPLAY, type = CommandType.BOOLEAN, description = "list resources by display flag; only ROOT admin is eligible to pass this parameter", since = "4.4", authorized = {RoleType.Admin}) + private Boolean display; + ///////////////////////////////////////////////////// /////////////////// Accessors /////////////////////// ///////////////////////////////////////////////////// @@ -60,6 +63,14 @@ public class ListVpnConnectionsCmd extends BaseListProjectAndAccountResourcesCmd return vpcId; } + @Override + public Boolean getDisplay() { + if (display != null) { + return display; + } + return super.getDisplay(); + } + ///////////////////////////////////////////////////// /////////////// API Implementation/////////////////// ///////////////////////////////////////////////////// diff --git a/api/src/org/apache/cloudstack/api/command/user/vpn/ListVpnGatewaysCmd.java b/api/src/org/apache/cloudstack/api/command/user/vpn/ListVpnGatewaysCmd.java index d1729d7bc09..359360bdedb 100644 --- a/api/src/org/apache/cloudstack/api/command/user/vpn/ListVpnGatewaysCmd.java +++ b/api/src/org/apache/cloudstack/api/command/user/vpn/ListVpnGatewaysCmd.java @@ -19,8 +19,7 @@ package org.apache.cloudstack.api.command.user.vpn; import java.util.ArrayList; import java.util.List; -import org.apache.log4j.Logger; - +import org.apache.cloudstack.acl.RoleType; import org.apache.cloudstack.api.APICommand; import org.apache.cloudstack.api.ApiConstants; import org.apache.cloudstack.api.BaseListProjectAndAccountResourcesCmd; @@ -28,6 +27,7 @@ import org.apache.cloudstack.api.Parameter; import org.apache.cloudstack.api.response.ListResponse; import org.apache.cloudstack.api.response.Site2SiteVpnGatewayResponse; import org.apache.cloudstack.api.response.VpcResponse; +import org.apache.log4j.Logger; import com.cloud.network.Site2SiteVpnGateway; import com.cloud.utils.Pair; @@ -49,6 +49,9 @@ public class ListVpnGatewaysCmd extends BaseListProjectAndAccountResourcesCmd { @Parameter(name = ApiConstants.VPC_ID, type = CommandType.UUID, entityType = VpcResponse.class, description = "id of vpc") private Long vpcId; + @Parameter(name = ApiConstants.FOR_DISPLAY, type = CommandType.BOOLEAN, description = "list resources by display flag; only ROOT admin is eligible to pass this parameter", since = "4.4", authorized = {RoleType.Admin}) + private Boolean display; + ///////////////////////////////////////////////////// /////////////////// Accessors /////////////////////// ///////////////////////////////////////////////////// @@ -61,6 +64,14 @@ public class ListVpnGatewaysCmd extends BaseListProjectAndAccountResourcesCmd { return vpcId; } + @Override + public Boolean getDisplay() { + if (display != null) { + return display; + } + return super.getDisplay(); + } + ///////////////////////////////////////////////////// /////////////// API Implementation/////////////////// ///////////////////////////////////////////////////// diff --git a/engine/schema/src/com/cloud/vm/dao/NicDaoImpl.java b/engine/schema/src/com/cloud/vm/dao/NicDaoImpl.java index c345bb290cf..2a9a6025071 100644 --- a/engine/schema/src/com/cloud/vm/dao/NicDaoImpl.java +++ b/engine/schema/src/com/cloud/vm/dao/NicDaoImpl.java @@ -291,5 +291,4 @@ public class NicDaoImpl extends GenericDaoBase implements NicDao { List results = customSearch(sc, null); return results.get(0); } - } diff --git a/server/src/com/cloud/api/query/QueryManagerImpl.java b/server/src/com/cloud/api/query/QueryManagerImpl.java index 6e2b36cb0db..69c25ee3bf3 100644 --- a/server/src/com/cloud/api/query/QueryManagerImpl.java +++ b/server/src/com/cloud/api/query/QueryManagerImpl.java @@ -712,6 +712,7 @@ public class QueryManagerImpl extends ManagerBase implements QueryService { boolean listAll = cmd.listAll(); Long id = cmd.getId(); Map tags = cmd.getTags(); + Boolean display = cmd.getDisplay(); Ternary domainIdRecursiveListProject = new Ternary(cmd.getDomainId(), cmd.isRecursive(), null); @@ -736,6 +737,7 @@ public class QueryManagerImpl extends ManagerBase implements QueryService { c.addCriteria(Criteria.VPC_ID, cmd.getVpcId()); c.addCriteria(Criteria.AFFINITY_GROUP_ID, cmd.getAffinityGroupId()); c.addCriteria(Criteria.SERVICE_OFFERING_ID, cmd.getServiceOfferingId()); + c.addCriteria(Criteria.DISPLAY, cmd.getDisplay()); if (domainId != null) { c.addCriteria(Criteria.DOMAINID, domainId); @@ -793,6 +795,7 @@ public class QueryManagerImpl extends ManagerBase implements QueryService { Object vpcId = c.getCriteria(Criteria.VPC_ID); Object affinityGroupId = c.getCriteria(Criteria.AFFINITY_GROUP_ID); Object serviceOffId = c.getCriteria(Criteria.SERVICE_OFFERING_ID); + Object display = c.getCriteria(Criteria.DISPLAY); sb.and("displayName", sb.entity().getDisplayName(), SearchCriteria.Op.LIKE); sb.and("id", sb.entity().getId(), SearchCriteria.Op.EQ); @@ -812,7 +815,9 @@ public class QueryManagerImpl extends ManagerBase implements QueryService { if (serviceOffId != null) { sb.and("serviceOfferingId", sb.entity().getServiceOfferingId(), SearchCriteria.Op.EQ); } - + if (display != null) { + sb.and("display", sb.entity().isDisplayVm(), SearchCriteria.Op.EQ); + } if (groupId != null && (Long)groupId != -1) { sb.and("instanceGroupId", sb.entity().getInstanceGroupId(), SearchCriteria.Op.EQ); } @@ -872,6 +877,10 @@ public class QueryManagerImpl extends ManagerBase implements QueryService { sc.setParameters("serviceOfferingId", serviceOffId); } + if (display != null) { + sc.setParameters("display", display); + } + if (id != null) { sc.setParameters("id", id); } @@ -1623,6 +1632,7 @@ public class QueryManagerImpl extends ManagerBase implements QueryService { boolean isRootAdmin = _accountMgr.isRootAdmin(caller.getType()); Long storageId = cmd.getStorageId(); Long diskOffId = cmd.getDiskOfferingId(); + Boolean display = cmd.getDisplay(); Long zoneId = cmd.getZoneId(); Long podId = null; @@ -1657,6 +1667,7 @@ public class QueryManagerImpl extends ManagerBase implements QueryService { sb.and("podId", sb.entity().getPodId(), SearchCriteria.Op.EQ); sb.and("storageId", sb.entity().getPoolId(), SearchCriteria.Op.EQ); sb.and("diskOfferingId", sb.entity().getDiskOfferingId(), SearchCriteria.Op.EQ); + sb.and("display", sb.entity().isDisplayVolume(), SearchCriteria.Op.EQ); // Only return volumes that are not destroyed sb.and("state", sb.entity().getState(), SearchCriteria.Op.NEQ); sb.and("systemUse", sb.entity().isSystemUse(), SearchCriteria.Op.NEQ); @@ -1684,6 +1695,10 @@ public class QueryManagerImpl extends ManagerBase implements QueryService { sc.setParameters("name", name); } + if (display != null) { + sc.setParameters("display", display); + } + sc.setParameters("systemUse", 1); if (tags != null && !tags.isEmpty()) { diff --git a/server/src/com/cloud/network/NetworkServiceImpl.java b/server/src/com/cloud/network/NetworkServiceImpl.java index c42d4214f40..ebeb31a6f88 100755 --- a/server/src/com/cloud/network/NetworkServiceImpl.java +++ b/server/src/com/cloud/network/NetworkServiceImpl.java @@ -1383,6 +1383,7 @@ public class NetworkServiceImpl extends ManagerBase implements NetworkService { Boolean canUseForDeploy = cmd.canUseForDeploy(); Map tags = cmd.getTags(); Boolean forVpc = cmd.getForVpc(); + Boolean display = cmd.getDisplay(); // 1) default is system to false if not specified // 2) reset parameter to false if it's specified by the regular user @@ -1515,33 +1516,33 @@ public class NetworkServiceImpl extends ManagerBase implements NetworkService { //get account level networks networksToReturn.addAll(listAccountSpecificNetworks( buildNetworkSearchCriteria(sb, keyword, id, isSystem, zoneId, guestIpType, trafficType, physicalNetworkId, aclType, skipProjectNetworks, restartRequired, - specifyIpRanges, vpcId, tags), searchFilter, permittedAccounts)); + specifyIpRanges, vpcId, tags, display), searchFilter, permittedAccounts)); //get domain level networks if (domainId != null) { networksToReturn.addAll(listDomainLevelNetworks( buildNetworkSearchCriteria(sb, keyword, id, isSystem, zoneId, guestIpType, trafficType, physicalNetworkId, aclType, true, restartRequired, - specifyIpRanges, vpcId, tags), searchFilter, domainId, false)); + specifyIpRanges, vpcId, tags, display), searchFilter, domainId, false)); } } else { //add account specific networks networksToReturn.addAll(listAccountSpecificNetworksByDomainPath( buildNetworkSearchCriteria(sb, keyword, id, isSystem, zoneId, guestIpType, trafficType, physicalNetworkId, aclType, skipProjectNetworks, restartRequired, - specifyIpRanges, vpcId, tags), searchFilter, path, isRecursive)); + specifyIpRanges, vpcId, tags, display), searchFilter, path, isRecursive)); //add domain specific networks of domain + parent domains networksToReturn.addAll(listDomainSpecificNetworksByDomainPath( buildNetworkSearchCriteria(sb, keyword, id, isSystem, zoneId, guestIpType, trafficType, physicalNetworkId, aclType, skipProjectNetworks, restartRequired, - specifyIpRanges, vpcId, tags), searchFilter, path, isRecursive)); + specifyIpRanges, vpcId, tags, display), searchFilter, path, isRecursive)); //add networks of subdomains if (domainId == null) { networksToReturn.addAll(listDomainLevelNetworks( buildNetworkSearchCriteria(sb, keyword, id, isSystem, zoneId, guestIpType, trafficType, physicalNetworkId, aclType, true, restartRequired, - specifyIpRanges, vpcId, tags), searchFilter, caller.getDomainId(), true)); + specifyIpRanges, vpcId, tags, display), searchFilter, caller.getDomainId(), true)); } } } else { networksToReturn = _networksDao.search( buildNetworkSearchCriteria(sb, keyword, id, isSystem, zoneId, guestIpType, trafficType, physicalNetworkId, null, skipProjectNetworks, restartRequired, - specifyIpRanges, vpcId, tags), searchFilter); + specifyIpRanges, vpcId, tags, display), searchFilter); } if (supportedServicesStr != null && !supportedServicesStr.isEmpty() && !networksToReturn.isEmpty()) { @@ -1608,7 +1609,7 @@ public class NetworkServiceImpl extends ManagerBase implements NetworkService { private SearchCriteria buildNetworkSearchCriteria(SearchBuilder sb, String keyword, Long id, Boolean isSystem, Long zoneId, String guestIpType, String trafficType, Long physicalNetworkId, String aclType, boolean skipProjectNetworks, Boolean restartRequired, Boolean specifyIpRanges, Long vpcId, - Map tags) { + Map tags, Boolean display) { SearchCriteria sc = sb.create(); @@ -1622,6 +1623,10 @@ public class NetworkServiceImpl extends ManagerBase implements NetworkService { sc.addAnd("name", SearchCriteria.Op.SC, ssc); } + if (display != null) { + sc.addAnd("displayNetwork", SearchCriteria.Op.EQ, display); + } + if (id != null) { sc.addAnd("id", SearchCriteria.Op.EQ, id); } @@ -4007,14 +4012,14 @@ public class NetworkServiceImpl extends ManagerBase implements NetworkService { Long nicId = cmd.getNicId(); long vmId = cmd.getVmId(); Long networkId = cmd.getNetworkId(); - UserVmVO userVm = _userVmDao.findById(vmId); - if (userVm == null) { + if (userVm == null || (!userVm.isDisplayVm() && caller.getType() == Account.ACCOUNT_TYPE_NORMAL)) { InvalidParameterValueException ex = new InvalidParameterValueException("Virtual mahine id does not exist"); ex.addProxyObject(Long.valueOf(vmId).toString(), "vmId"); throw ex; } + _accountMgr.checkAccess(caller, null, true, userVm); return _networkMgr.listVmNics(vmId, nicId, networkId); } diff --git a/server/src/com/cloud/network/as/AutoScaleManagerImpl.java b/server/src/com/cloud/network/as/AutoScaleManagerImpl.java index ff2b2eabd31..208b4a42cfd 100644 --- a/server/src/com/cloud/network/as/AutoScaleManagerImpl.java +++ b/server/src/com/cloud/network/as/AutoScaleManagerImpl.java @@ -454,6 +454,7 @@ public class AutoScaleManagerImpl extends ManagerBase implements AutoScale String otherDeployParams = cmd.getOtherDeployParams(); Long serviceOffId = cmd.getServiceOfferingId(); Long zoneId = cmd.getZoneId(); + Boolean display = cmd.getDisplay(); SearchWrapper searchWrapper = new SearchWrapper(_autoScaleVmProfileDao, AutoScaleVmProfileVO.class, cmd, cmd.getId()); SearchBuilder sb = searchWrapper.getSearchBuilder(); @@ -463,6 +464,7 @@ public class AutoScaleManagerImpl extends ManagerBase implements AutoScale sb.and("serviceOfferingId", sb.entity().getServiceOfferingId(), SearchCriteria.Op.EQ); sb.and("otherDeployParams", sb.entity().getOtherDeployParams(), SearchCriteria.Op.LIKE); sb.and("zoneId", sb.entity().getZoneId(), SearchCriteria.Op.EQ); + sb.and("display", sb.entity().isDisplay(), SearchCriteria.Op.EQ); SearchCriteria sc = searchWrapper.buildSearchCriteria(); if (id != null) { @@ -483,6 +485,10 @@ public class AutoScaleManagerImpl extends ManagerBase implements AutoScale sc.setParameters("zoneId", zoneId); } + if (display != null) { + sc.setParameters("display", display); + } + return searchWrapper.search(); } @@ -864,6 +870,7 @@ public class AutoScaleManagerImpl extends ManagerBase implements AutoScale Long loadBalancerId = cmd.getLoadBalancerId(); Long profileId = cmd.getProfileId(); Long zoneId = cmd.getZoneId(); + Boolean forDisplay = cmd.getDisplay(); SearchWrapper searchWrapper = new SearchWrapper(_autoScaleVmGroupDao, AutoScaleVmGroupVO.class, cmd, cmd.getId()); SearchBuilder sb = searchWrapper.getSearchBuilder(); @@ -872,6 +879,7 @@ public class AutoScaleManagerImpl extends ManagerBase implements AutoScale sb.and("loadBalancerId", sb.entity().getLoadBalancerId(), SearchCriteria.Op.EQ); sb.and("profileId", sb.entity().getProfileId(), SearchCriteria.Op.EQ); sb.and("zoneId", sb.entity().getZoneId(), SearchCriteria.Op.EQ); + sb.and("display", sb.entity().isDisplay(), SearchCriteria.Op.EQ); if (policyId != null) { SearchBuilder asVmGroupPolicySearch = _autoScaleVmGroupPolicyMapDao.createSearchBuilder(); @@ -895,6 +903,9 @@ public class AutoScaleManagerImpl extends ManagerBase implements AutoScale if (policyId != null) { sc.setJoinParameters("asVmGroupPolicySearch", "policyId", policyId); } + if (forDisplay != null) { + sc.setParameters("display", forDisplay); + } return searchWrapper.search(); } diff --git a/server/src/com/cloud/network/firewall/FirewallManagerImpl.java b/server/src/com/cloud/network/firewall/FirewallManagerImpl.java index 853de4495c3..ca474d6b91f 100644 --- a/server/src/com/cloud/network/firewall/FirewallManagerImpl.java +++ b/server/src/com/cloud/network/firewall/FirewallManagerImpl.java @@ -259,6 +259,7 @@ public class FirewallManagerImpl extends ManagerBase implements FirewallService, Long networkId = cmd.getNetworkId(); Map tags = cmd.getTags(); FirewallRule.TrafficType trafficType = cmd.getTrafficType(); + Boolean display = cmd.getDisplay(); Account caller = CallContext.current().getCallingAccount(); List permittedAccounts = new ArrayList(); @@ -287,6 +288,7 @@ public class FirewallManagerImpl extends ManagerBase implements FirewallService, sb.and("networkId", sb.entity().getNetworkId(), Op.EQ); sb.and("ip", sb.entity().getSourceIpAddressId(), Op.EQ); sb.and("purpose", sb.entity().getPurpose(), Op.EQ); + sb.and("display", sb.entity().isDisplay(), Op.EQ); if (tags != null && !tags.isEmpty()) { SearchBuilder tagSearch = _resourceTagDao.createSearchBuilder(); @@ -317,6 +319,10 @@ public class FirewallManagerImpl extends ManagerBase implements FirewallService, } } + if (display != null) { + sc.setParameters("display", display); + } + if (ipId != null) { sc.setParameters("ip", ipId); } diff --git a/server/src/com/cloud/network/rules/RulesManagerImpl.java b/server/src/com/cloud/network/rules/RulesManagerImpl.java index 06c478cf9b2..ad977a2b5f4 100755 --- a/server/src/com/cloud/network/rules/RulesManagerImpl.java +++ b/server/src/com/cloud/network/rules/RulesManagerImpl.java @@ -779,6 +779,7 @@ public class RulesManagerImpl extends ManagerBase implements RulesManager, Rules Long id = cmd.getId(); Map tags = cmd.getTags(); Long networkId = cmd.getNetworkId(); + Boolean display = cmd.getDisplay(); Account caller = CallContext.current().getCallingAccount(); List permittedAccounts = new ArrayList(); @@ -806,6 +807,7 @@ public class RulesManagerImpl extends ManagerBase implements RulesManager, Rules sb.and("ip", sb.entity().getSourceIpAddressId(), Op.EQ); sb.and("purpose", sb.entity().getPurpose(), Op.EQ); sb.and("networkId", sb.entity().getNetworkId(), Op.EQ); + sb.and("display", sb.entity().isDisplay(), Op.EQ); if (tags != null && !tags.isEmpty()) { SearchBuilder tagSearch = _resourceTagDao.createSearchBuilder(); @@ -826,6 +828,10 @@ public class RulesManagerImpl extends ManagerBase implements RulesManager, Rules sc.setParameters("id", id); } + if (display != null) { + sc.setParameters("display", display); + } + if (tags != null && !tags.isEmpty()) { int count = 0; sc.setJoinParameters("tagSearch", "resourceType", ResourceObjectType.PortForwardingRule.toString()); diff --git a/server/src/com/cloud/network/vpc/NetworkACLServiceImpl.java b/server/src/com/cloud/network/vpc/NetworkACLServiceImpl.java index b043381ad6c..1bec06de32f 100644 --- a/server/src/com/cloud/network/vpc/NetworkACLServiceImpl.java +++ b/server/src/com/cloud/network/vpc/NetworkACLServiceImpl.java @@ -118,10 +118,13 @@ public class NetworkACLServiceImpl extends ManagerBase implements NetworkACLServ Long networkId = cmd.getNetworkId(); Long vpcId = cmd.getVpcId(); String keyword = cmd.getKeyword(); + Boolean display = cmd.getDisplay(); + SearchBuilder sb = _networkACLDao.createSearchBuilder(); sb.and("id", sb.entity().getId(), Op.EQ); sb.and("name", sb.entity().getName(), Op.EQ); sb.and("vpcId", sb.entity().getVpcId(), Op.IN); + sb.and("display", sb.entity().isDisplay(), Op.EQ); Account caller = CallContext.current().getCallingAccount(); @@ -140,6 +143,10 @@ public class NetworkACLServiceImpl extends ManagerBase implements NetworkACLServ sc.addAnd("name", SearchCriteria.Op.SC, ssc); } + if (display != null) { + sc.setParameters("display", display); + } + if(id != null){ sc.setParameters("id", id); } @@ -477,6 +484,7 @@ public class NetworkACLServiceImpl extends ManagerBase implements NetworkACLServ String action = cmd.getAction(); Map tags = cmd.getTags(); Account caller = CallContext.current().getCallingAccount(); + Boolean display = cmd.getDisplay(); Filter filter = new Filter(NetworkACLItemVO.class, "id", false, cmd.getStartIndex(), cmd.getPageSizeVal()); SearchBuilder sb = _networkACLItemDao.createSearchBuilder(); @@ -486,6 +494,7 @@ public class NetworkACLServiceImpl extends ManagerBase implements NetworkACLServ sb.and("trafficType", sb.entity().getTrafficType(), Op.EQ); sb.and("protocol", sb.entity().getProtocol(), Op.EQ); sb.and("action", sb.entity().getAction(), Op.EQ); + sb.and("display", sb.entity().isDisplay(), Op.EQ); if (tags != null && !tags.isEmpty()) { SearchBuilder tagSearch = _resourceTagDao.createSearchBuilder(); @@ -508,6 +517,10 @@ public class NetworkACLServiceImpl extends ManagerBase implements NetworkACLServ SearchCriteria sc = sb.create(); + if (display != null) { + sc.setParameters("display", display); + } + if (id != null) { sc.setParameters("id", id); } diff --git a/server/src/com/cloud/network/vpc/VpcManagerImpl.java b/server/src/com/cloud/network/vpc/VpcManagerImpl.java index 2157eacf986..403b95e3a1b 100644 --- a/server/src/com/cloud/network/vpc/VpcManagerImpl.java +++ b/server/src/com/cloud/network/vpc/VpcManagerImpl.java @@ -813,7 +813,7 @@ public class VpcManagerImpl extends ManagerBase implements VpcManager, VpcProvis @Override public List listVpcs(Long id, String vpcName, String displayText, List supportedServicesStr, String cidr, Long vpcOffId, String state, String accountName, Long domainId, String keyword, Long startIndex, Long pageSizeVal, Long zoneId, Boolean isRecursive, Boolean listAll, Boolean restartRequired, - Map tags, Long projectId) { + Map tags, Long projectId, Boolean display) { Account caller = CallContext.current().getCallingAccount(); List permittedAccounts = new ArrayList(); @@ -836,6 +836,7 @@ public class VpcManagerImpl extends ManagerBase implements VpcManager, VpcProvis sb.and("state", sb.entity().getState(), SearchCriteria.Op.EQ); sb.and("restartRequired", sb.entity().isRestartRequired(), SearchCriteria.Op.EQ); sb.and("cidr", sb.entity().getCidr(), SearchCriteria.Op.EQ); + sb.and("display", sb.entity().isDisplay(), SearchCriteria.Op.EQ); if (tags != null && !tags.isEmpty()) { SearchBuilder tagSearch = _resourceTagDao.createSearchBuilder(); @@ -878,6 +879,10 @@ public class VpcManagerImpl extends ManagerBase implements VpcManager, VpcProvis } } + if (display != null) { + sc.setParameters("display", display); + } + if (id != null) { sc.addAnd("id", SearchCriteria.Op.EQ, id); } diff --git a/server/src/com/cloud/network/vpn/RemoteAccessVpnManagerImpl.java b/server/src/com/cloud/network/vpn/RemoteAccessVpnManagerImpl.java index b61e7b16ab9..0306fad1733 100755 --- a/server/src/com/cloud/network/vpn/RemoteAccessVpnManagerImpl.java +++ b/server/src/com/cloud/network/vpn/RemoteAccessVpnManagerImpl.java @@ -618,6 +618,7 @@ public class RemoteAccessVpnManagerImpl extends ManagerBase implements RemoteAcc Long vpnId = cmd.getId(); Long networkId = cmd.getNetworkId(); List permittedAccounts = new ArrayList(); + Boolean display = cmd.getDisplay(); if (ipAddressId != null) { PublicIpAddress publicIp = _networkMgr.getPublicIpAddress(ipAddressId); @@ -648,6 +649,7 @@ public class RemoteAccessVpnManagerImpl extends ManagerBase implements RemoteAcc sb.and("id", sb.entity().getId(), Op.EQ); sb.and("networkId", sb.entity().getNetworkId(), Op.EQ); sb.and("state", sb.entity().getState(), Op.EQ); + sb.and("display", sb.entity().isDisplay(), Op.EQ); SearchCriteria sc = sb.create(); _accountMgr.buildACLSearchCriteria(sc, domainId, isRecursive, permittedAccounts, listProjectResourcesCriteria); diff --git a/server/src/com/cloud/network/vpn/Site2SiteVpnManagerImpl.java b/server/src/com/cloud/network/vpn/Site2SiteVpnManagerImpl.java index 05fec85f7d7..66a2b580aab 100644 --- a/server/src/com/cloud/network/vpn/Site2SiteVpnManagerImpl.java +++ b/server/src/com/cloud/network/vpn/Site2SiteVpnManagerImpl.java @@ -611,6 +611,7 @@ public class Site2SiteVpnManagerImpl extends ManagerBase implements Site2SiteVpn public Pair, Integer> searchForVpnGateways(ListVpnGatewaysCmd cmd) { Long id = cmd.getId(); Long vpcId = cmd.getVpcId(); + Boolean display = cmd.getDisplay(); Long domainId = cmd.getDomainId(); boolean isRecursive = cmd.isRecursive(); @@ -635,6 +636,7 @@ public class Site2SiteVpnManagerImpl extends ManagerBase implements Site2SiteVpn sb.and("id", sb.entity().getId(), SearchCriteria.Op.EQ); sb.and("vpcId", sb.entity().getVpcId(), SearchCriteria.Op.EQ); + sb.and("display", sb.entity().isDisplay(), SearchCriteria.Op.EQ); SearchCriteria sc = sb.create(); _accountMgr.buildACLSearchCriteria(sc, domainId, isRecursive, permittedAccounts, listProjectResourcesCriteria); @@ -643,6 +645,10 @@ public class Site2SiteVpnManagerImpl extends ManagerBase implements Site2SiteVpn sc.addAnd("id", SearchCriteria.Op.EQ, id); } + if (display != null) { + sc.setParameters("display", display); + } + if (vpcId != null) { sc.addAnd("vpcId", SearchCriteria.Op.EQ, vpcId); } @@ -655,6 +661,7 @@ public class Site2SiteVpnManagerImpl extends ManagerBase implements Site2SiteVpn public Pair, Integer> searchForVpnConnections(ListVpnConnectionsCmd cmd) { Long id = cmd.getId(); Long vpcId = cmd.getVpcId(); + Boolean display = cmd.getDisplay(); Long domainId = cmd.getDomainId(); boolean isRecursive = cmd.isRecursive(); @@ -678,6 +685,7 @@ public class Site2SiteVpnManagerImpl extends ManagerBase implements Site2SiteVpn _accountMgr.buildACLSearchBuilder(sb, domainId, isRecursive, permittedAccounts, listProjectResourcesCriteria); sb.and("id", sb.entity().getId(), SearchCriteria.Op.EQ); + sb.and("display", sb.entity().isDisplay(), SearchCriteria.Op.EQ); if (vpcId != null) { SearchBuilder gwSearch = _vpnGatewayDao.createSearchBuilder(); @@ -688,6 +696,9 @@ public class Site2SiteVpnManagerImpl extends ManagerBase implements Site2SiteVpn SearchCriteria sc = sb.create(); _accountMgr.buildACLSearchCriteria(sc, domainId, isRecursive, permittedAccounts, listProjectResourcesCriteria); + if (display != null) { + sc.setParameters("display", display); + } if (id != null) { sc.addAnd("id", SearchCriteria.Op.EQ, id); } diff --git a/server/src/com/cloud/server/Criteria.java b/server/src/com/cloud/server/Criteria.java index de29e3ee5e0..02bafa7b56f 100755 --- a/server/src/com/cloud/server/Criteria.java +++ b/server/src/com/cloud/server/Criteria.java @@ -85,6 +85,7 @@ public class Criteria { public static final String VPC_ID = "vpcId"; public static final String AFFINITY_GROUP_ID = "affinitygroupid"; public static final String SERVICE_OFFERING_ID = "serviceofferingid"; + public static final String DISPLAY = "display"; public Criteria(String orderBy, Boolean ascending, Long offset, Long limit) { this.offset = offset; diff --git a/server/src/com/cloud/server/ManagementServerImpl.java b/server/src/com/cloud/server/ManagementServerImpl.java index 2a08ddc4abb..62faafc68b3 100755 --- a/server/src/com/cloud/server/ManagementServerImpl.java +++ b/server/src/com/cloud/server/ManagementServerImpl.java @@ -1900,6 +1900,7 @@ public class ManagementServerImpl extends ManagerBase implements ManagementServe Boolean sourceNat = cmd.getIsSourceNat(); Boolean staticNat = cmd.getIsStaticNat(); Long vpcId = cmd.getVpcId(); + Boolean forDisplay = cmd.getDisplay(); Map tags = cmd.getTags(); Boolean isAllocated = cmd.isAllocatedOnly(); @@ -1935,6 +1936,7 @@ public class ManagementServerImpl extends ManagerBase implements ManagementServe sb.and("isSourceNat", sb.entity().isSourceNat(), SearchCriteria.Op.EQ); sb.and("isStaticNat", sb.entity().isOneToOneNat(), SearchCriteria.Op.EQ); sb.and("vpcId", sb.entity().getVpcId(), SearchCriteria.Op.EQ); + sb.and("display", sb.entity().isDisplay(), SearchCriteria.Op.EQ); if (forLoadBalancing != null && forLoadBalancing) { SearchBuilder lbSearch = _loadbalancerDao.createSearchBuilder(); @@ -2032,6 +2034,10 @@ public class ManagementServerImpl extends ManagerBase implements ManagementServe sc.setParameters("associatedNetworkIdEq", associatedNetworkId); } + if (forDisplay != null) { + sc.setParameters("display", forDisplay); + } + Pair, Integer> result = _publicIpAddressDao.searchAndCount(sc, searchFilter); return new Pair, Integer>(result.first(), result.second()); } diff --git a/server/src/org/apache/cloudstack/network/lb/ApplicationLoadBalancerManagerImpl.java b/server/src/org/apache/cloudstack/network/lb/ApplicationLoadBalancerManagerImpl.java index ab5a0dde324..cafdb273952 100644 --- a/server/src/org/apache/cloudstack/network/lb/ApplicationLoadBalancerManagerImpl.java +++ b/server/src/org/apache/cloudstack/network/lb/ApplicationLoadBalancerManagerImpl.java @@ -383,6 +383,7 @@ public class ApplicationLoadBalancerManagerImpl extends ManagerBase implements A String keyword = cmd.getKeyword(); Scheme scheme = cmd.getScheme(); Long networkId = cmd.getNetworkId(); + Boolean display = cmd.getDisplay(); Map tags = cmd.getTags(); @@ -406,6 +407,7 @@ public class ApplicationLoadBalancerManagerImpl extends ManagerBase implements A sb.and("sourceIpAddressNetworkId", sb.entity().getSourceIpNetworkId(), SearchCriteria.Op.EQ); sb.and("scheme", sb.entity().getScheme(), SearchCriteria.Op.EQ); sb.and("networkId", sb.entity().getNetworkId(), SearchCriteria.Op.EQ); + sb.and("display", sb.entity().isDisplay(), SearchCriteria.Op.EQ); //list only load balancers having not null sourceIp/sourceIpNtwkId sb.and("sourceIpAddress", sb.entity().getSourceIp(), SearchCriteria.Op.NNULL); @@ -467,6 +469,10 @@ public class ApplicationLoadBalancerManagerImpl extends ManagerBase implements A } } + if (display != null) { + sc.setParameters("display", display); + } + Pair, Integer> result = _lbDao.searchAndCount(sc, searchFilter); return new Pair, Integer>(result.first(), result.second()); } From 5dd4fb22eff5ec6df3c79bab0ebb99226c954e9b Mon Sep 17 00:00:00 2001 From: Kelven Yang Date: Mon, 3 Mar 2014 16:09:40 -0800 Subject: [PATCH 10/16] Remove cancelled jobs from job monitoring, correct mis-calculated time-unit in job cancellation. --- .../jobs/impl/AsyncJobManagerImpl.java | 15 ++++++---- .../framework/jobs/impl/AsyncJobMonitor.java | 30 +++++++++++++++---- 2 files changed, 35 insertions(+), 10 deletions(-) diff --git a/framework/jobs/src/org/apache/cloudstack/framework/jobs/impl/AsyncJobManagerImpl.java b/framework/jobs/src/org/apache/cloudstack/framework/jobs/impl/AsyncJobManagerImpl.java index 2be27860f07..b9246aa395d 100644 --- a/framework/jobs/src/org/apache/cloudstack/framework/jobs/impl/AsyncJobManagerImpl.java +++ b/framework/jobs/src/org/apache/cloudstack/framework/jobs/impl/AsyncJobManagerImpl.java @@ -85,12 +85,11 @@ public class AsyncJobManagerImpl extends ManagerBase implements AsyncJobManager, private static final ConfigKey JobExpireMinutes = new ConfigKey(Long.class, "job.expire.minutes", "Advanced", "1440", "Time (in minutes) for async-jobs to be kept in system", true, ConfigKey.Scope.Global, 60l); private static final ConfigKey JobCancelThresholdMinutes = new ConfigKey(Long.class, "job.cancel.threshold.minutes", "Advanced", "60", - "Time (in minutes) for async-jobs to be forcely cancelled if it has been in process for long", true, ConfigKey.Scope.Global, 60l); + "Time (in minutes) for async-jobs to be forcely cancelled if it has been in process for long", true, ConfigKey.Scope.Global, 240l); private static final Logger s_logger = Logger.getLogger(AsyncJobManagerImpl.class); private static final int ACQUIRE_GLOBAL_LOCK_TIMEOUT_FOR_COOPERATION = 3; // 3 seconds - private static final int ACQUIRE_GLOBAL_LOCK_TIMEOUT_FOR_SYNC = 60; // 60 seconds private static final int MAX_ONETIME_SCHEDULE_SIZE = 50; private static final int HEARTBEAT_INTERVAL = 2000; @@ -706,14 +705,16 @@ public class AsyncJobManagerImpl extends ManagerBase implements AsyncJobManager, try { s_logger.trace("Begin cleanup expired async-jobs"); - Date cutTime = new Date(DateUtil.currentGMTTime().getTime() - JobExpireMinutes.value() * 1000); + Date cutTime = new Date(DateUtil.currentGMTTime().getTime() - JobExpireMinutes.value() * 60000); // limit to 100 jobs per turn, this gives cleanup throughput as 600 jobs per minute // hopefully this will be fast enough to balance potential growth of job table //1) Expire unfinished jobs that weren't processed yet List l = _jobDao.getExpiredUnfinishedJobs(cutTime, 100); for (AsyncJobVO job : l) { - s_logger.trace("Expunging unfinished job " + job); + s_logger.info("Expunging unfinished job " + job); + + _jobMonitor.unregisterByJobId(job.getId()); expungeAsyncJob(job); } @@ -721,15 +722,19 @@ public class AsyncJobManagerImpl extends ManagerBase implements AsyncJobManager, List completedJobs = _jobDao.getExpiredCompletedJobs(cutTime, 100); for (AsyncJobVO job : completedJobs) { s_logger.trace("Expunging completed job " + job); + expungeAsyncJob(job); } // forcefully cancel blocking queue items if they've been staying there for too long - List blockItems = _queueMgr.getBlockedQueueItems(JobCancelThresholdMinutes.value() * 1000, false); + List blockItems = _queueMgr.getBlockedQueueItems(JobCancelThresholdMinutes.value() * 60000, false); if (blockItems != null && blockItems.size() > 0) { for (SyncQueueItemVO item : blockItems) { if (item.getContentType().equalsIgnoreCase(SyncQueueItem.AsyncJobContentType)) { + s_logger.info("Remove Job-" + item.getContentId() + " from Queue-" + item.getId() + " since it has been blocked for too long"); completeAsyncJob(item.getContentId(), JobInfo.Status.FAILED, 0, "Job is cancelled as it has been blocking others for too long"); + + _jobMonitor.unregisterByJobId(item.getContentId()); } // purge the item and resume queue processing diff --git a/framework/jobs/src/org/apache/cloudstack/framework/jobs/impl/AsyncJobMonitor.java b/framework/jobs/src/org/apache/cloudstack/framework/jobs/impl/AsyncJobMonitor.java index 671818130f9..0b6f7a582b0 100644 --- a/framework/jobs/src/org/apache/cloudstack/framework/jobs/impl/AsyncJobMonitor.java +++ b/framework/jobs/src/org/apache/cloudstack/framework/jobs/impl/AsyncJobMonitor.java @@ -17,6 +17,7 @@ package org.apache.cloudstack.framework.jobs.impl; import java.util.HashMap; +import java.util.Iterator; import java.util.Map; import java.util.Timer; import java.util.concurrent.atomic.AtomicInteger; @@ -38,8 +39,7 @@ import com.cloud.utils.component.ManagerBase; public class AsyncJobMonitor extends ManagerBase { public static final Logger s_logger = Logger.getLogger(AsyncJobMonitor.class); - @Inject - private MessageBus _messageBus; + @Inject private MessageBus _messageBus; private final Map _activeTasks = new HashMap(); private final Timer _timer = new Timer(); @@ -86,15 +86,16 @@ public class AsyncJobMonitor extends ManagerBase { synchronized (this) { for (Map.Entry entry : _activeTasks.entrySet()) { if (entry.getValue().millisSinceLastJobHeartbeat() > _inactivityWarningThresholdMs) { - s_logger.warn("Task (job-" + entry.getValue().getJobId() + ") has been pending for " + entry.getValue().millisSinceLastJobHeartbeat() / 1000 + - " seconds"); + s_logger.warn("Task (job-" + entry.getValue().getJobId() + ") has been pending for " + + entry.getValue().millisSinceLastJobHeartbeat() / 1000 + " seconds"); } } } } @Override - public boolean configure(String name, Map params) throws ConfigurationException { + public boolean configure(String name, Map params) + throws ConfigurationException { _messageBus.subscribe(AsyncJob.Topics.JOB_HEARTBEAT, MessageDispatcher.getDispatcher(this)); _timer.scheduleAtFixedRate(new ManagedContextTimerTask() { @@ -141,6 +142,25 @@ public class AsyncJobMonitor extends ManagerBase { } } + public void unregisterByJobId(long jobId) { + synchronized (this) { + Iterator> it = _activeTasks.entrySet().iterator(); + while (it.hasNext()) { + Map.Entry entry = it.next(); + if (entry.getValue().getJobId() == jobId) { + s_logger.info("Remove Job-" + entry.getValue().getJobId() + " from job monitoring due to job cancelling"); + + if (entry.getValue().isPoolThread()) + _activePoolThreads.decrementAndGet(); + else + _activeInplaceThreads.decrementAndGet(); + + it.remove(); + } + } + } + } + public int getActivePoolThreads() { return _activePoolThreads.get(); } From bb149fb77ba83209df36258d4a884c39ff326c42 Mon Sep 17 00:00:00 2001 From: Gaurav Aradhye Date: Wed, 19 Feb 2014 19:18:52 -0500 Subject: [PATCH 11/16] CLOUDSTACK:4840: Adding further test cases for Multiple IPs per NIC feature Signed-off-by: SrikanteswaraRao Talluri --- .../component/test_multiple_ips_per_nic.py | 405 +++++++++++++++++- 1 file changed, 403 insertions(+), 2 deletions(-) diff --git a/test/integration/component/test_multiple_ips_per_nic.py b/test/integration/component/test_multiple_ips_per_nic.py index 7d7e9f1ade2..dcbb453e7eb 100644 --- a/test/integration/component/test_multiple_ips_per_nic.py +++ b/test/integration/component/test_multiple_ips_per_nic.py @@ -34,7 +34,10 @@ from marvin.integration.lib.base import (Account, VPC, NIC, Domain, - PublicIPAddress) + PublicIPAddress, + StaticNATRule, + FireWallRule, + NATRule) from marvin.integration.lib.common import (get_domain, get_zone, get_template, @@ -44,7 +47,7 @@ from marvin.integration.lib.common import (get_domain, shouldTestBeSkipped) from nose.plugins.attrib import attr -from marvin.codes import PASS, ISOLATED_NETWORK, VPC_NETWORK, SHARED_NETWORK +from marvin.codes import PASS, ISOLATED_NETWORK, VPC_NETWORK, SHARED_NETWORK, FAIL from ddt import ddt, data def createNetwork(self, networkType): @@ -102,6 +105,31 @@ def CreateEnabledNetworkOffering(apiclient, networkServices): assert result[0] == PASS, "Network offering creation/enabling failed due to %s" % result[2] return result[1] +def createNetworkRules(self, virtual_machine, network, vmguestip, networktype, ruletype): + """ Acquire public ip in the given network, open firewall if required and + create NAT rule for the public ip to the given guest vm ip address""" + + try: + public_ip = PublicIPAddress.create(self.api_client,accountid=self.account.name, + zoneid=self.zone.id,domainid=self.account.domainid, + networkid=network.id, vpcid = network.vpcid if networktype == VPC_NETWORK else None) + + if networktype != VPC_NETWORK: + FireWallRule.create(self.apiclient,ipaddressid=public_ip.ipaddress.id, + protocol='TCP', cidrlist=[self.services["fwrule"]["cidr"]], + startport=self.services["fwrule"]["startport"],endport=self.services["fwrule"]["endport"]) + + if ruletype == "nat": + NATRule.create(self.api_client, virtual_machine, + self.services["natrule"],ipaddressid=public_ip.ipaddress.id, + networkid=network.id, vmguestip = vmguestip) + elif ruletype == "staticnat": + StaticNATRule.enable(self.apiclient, public_ip.ipaddress.id, virtual_machine.id, network.id, vmguestip=vmguestip) + except Exception: + return FAIL + + return PASS + @ddt class TestBasicOperations(cloudstackTestCase): """Test Basic operations (add/remove/list) IP to/from NIC @@ -450,3 +478,376 @@ class TestBasicOperations(cloudstackTestCase): self.fail("Removing seondary IP %s from NIC failed as expected with Exception %s" % (ipaddress_1.id,e)) return + +@ddt +class TestNetworkRules(cloudstackTestCase): + """Test PF/NAT/static nat rules with the secondary IPs + """ + + @classmethod + def setUpClass(cls): + cloudstackTestClient = super(TestNetworkRules,cls).getClsTestClient() + cls.api_client = cloudstackTestClient.getApiClient() + + # Fill services from the external config file + cls.services = cloudstackTestClient.getConfigParser().parsedDict + + # Get Zone, Domain and templates + cls.domain = get_domain(cls.api_client, cls.services) + cls.zone = get_zone(cls.api_client, cls.services) + cls.mode = str(cls.zone.networktype).lower() + cls.template = get_template( + cls.api_client, + cls.zone.id, + cls.services["ostype"] + ) + cls.services["virtual_machine"]["zoneid"] = cls.zone.id + cls.services["virtual_machine"]["template"] = cls.template.id + cls.service_offering = ServiceOffering.create( + cls.api_client, + cls.services["service_offering"] + ) + cls._cleanup = [cls.service_offering] + cls.services["shared_network_offering"]["specifyVlan"] = "True" + cls.services["shared_network_offering"]["specifyIpRanges"] = "True" + + cls.shared_network_offering = CreateEnabledNetworkOffering(cls.api_client, cls.services["shared_network_offering"]) + cls._cleanup.append(cls.shared_network_offering) + + if cls.mode == "advanced": + cls.isolated_network_offering = CreateEnabledNetworkOffering(cls.api_client, cls.services["isolated_network_offering"]) + cls._cleanup.append(cls.isolated_network_offering) + cls.isolated_network_offering_vpc = CreateEnabledNetworkOffering(cls.api_client, cls.services["nw_offering_isolated_vpc"]) + cls._cleanup.append(cls.isolated_network_offering_vpc) + cls.vpc_off = VpcOffering.create(cls.api_client, cls.services["vpc_offering"]) + cls.vpc_off.update(cls.api_client, state='Enabled') + cls._cleanup.append(cls.vpc_off) + return + + @classmethod + def tearDownClass(cls): + try: + # Cleanup resources used + cleanup_resources(cls.api_client, cls._cleanup) + except Exception as e: + raise Exception("Warning: Exception during cleanup : %s" % e) + return + + def setUp(self): + self.apiclient = self.testClient.getApiClient() + self.dbclient = self.testClient.getDbConnection() + self.cleanup = [ ] + return + + def tearDown(self): + try: + # Clean up, terminate the resources created + cleanup_resources(self.apiclient, self.cleanup) + self.cleanup[:] = [] + except Exception as e: + raise Exception("Warning: Exception during cleanup : %s" % e) + return + + def VerifyStaticNatForPublicIp(self, ipaddressid, natrulestatus): + """ List public IP and verify that NAT rule status for the IP is as desired """ + + publiciplist = PublicIPAddress.list(self.apiclient, id=ipaddressid, listall=True) + self.assertEqual(validateList(publiciplist)[0], PASS, "Public IP list validation failed") + self.assertEqual(publiciplist[0].isstaticnat, natrulestatus, "isstaticnat should be %s, it is %s" % + (natrulestatus, publiciplist[0].isstaticnat)) + + return + + @data(ISOLATED_NETWORK, SHARED_NETWORK, VPC_NETWORK) + @attr(tags=["advanced"]) + def test_add_PF_rule(self, value): + """ Add secondary IP to NIC of a VM""" + + # Steps: + # 1. Create Account and create network in it (isoalted/ shared/ vpc) + # 2. Deploy a VM in this network and account + # 3. Add 2 secondary IPs to the default nic of VM + # 4. Acquire public IP, open firewall for it, and + # create NAT rule for this public IP to the 1st secondary IP + # 5. Repeat step 4 for another public IP + # 6. Repeat step 4 for 2nd secondary IP + # 7. Repeat step 4 for invalid secondary IP + + # Validations: + # 1. Step 4 should succeed + # 2. Step 5 should succeed + # 3. Step 6 should succeed + # 4. Step 7 should fail + + self.account = Account.create(self.apiclient,self.services["account"],domainid=self.domain.id) + self.cleanup.append(self.account) + + network = createNetwork(self, value) + + try: + virtual_machine = VirtualMachine.create(self.apiclient,self.services["virtual_machine"], + networkids=[network.id],serviceofferingid=self.service_offering.id, + accountid=self.account.name,domainid=self.account.domainid) + except Exception as e: + self.fail("vm creation failed: %s" % e) + + try: + ipaddress_1 = NIC.addIp(self.apiclient, id=virtual_machine.nic[0].id) + except Exception as e: + self.fail("Failed while adding secondary IP to NIC of vm %s" % virtual_machine.id) + + try: + ipaddress_2 = NIC.addIp(self.apiclient, id=virtual_machine.nic[0].id) + except Exception as e: + self.fail("Failed while adding secondary IP to NIC of vm %s" % virtual_machine.id) + + self.assertEqual(createNetworkRules(self, virtual_machine, network, ipaddress_1.ipaddress, value, ruletype="nat"), + PASS, "Failure in creating NAT rule") + self.assertEqual(createNetworkRules(self, virtual_machine, network, ipaddress_1.ipaddress, value, ruletype="nat"), + PASS, "Failure in creating NAT rule") + self.assertEqual(createNetworkRules(self, virtual_machine, network, ipaddress_2.ipaddress, value, ruletype="nat"), + PASS, "Failure in creating NAT rule") + self.assertEqual(createNetworkRules(self, virtual_machine, network, "255.255.255.300", value, ruletype="nat"), + FAIL, "Failure in NAT rule creation") + return + + @data(ISOLATED_NETWORK, SHARED_NETWORK, VPC_NETWORK) + @attr(tags=["advanced"]) + def test_delete_PF_nat_rule(self, value): + """ Add secondary IP to NIC of a VM""" + + # Steps: + # 1. Create Account and create network in it (isoalted/ shared/ vpc) + # 2. Deploy a VM in this network and account + # 3. Add secondary IP to the default nic of VM + # 4. Acquire public IP, open firewall for it, and + # create NAT rule for this public IP to the 1st secondary IP + # 5. Try to delete secondary IP when NAT rule exists for it + # 6. Delete firewall rule and NAT rule + + # Validations: + # 1. Step 5 should fail + # 2. Step 6 should succeed + + self.account = Account.create(self.apiclient,self.services["account"],domainid=self.domain.id) + self.cleanup.append(self.account) + + network = createNetwork(self, value) + firewallrule = None + + try: + virtual_machine = VirtualMachine.create(self.apiclient,self.services["virtual_machine"], + networkids=[network.id],serviceofferingid=self.service_offering.id, + accountid=self.account.name,domainid=self.account.domainid) + except Exception as e: + self.fail("vm creation failed: %s" % e) + + try: + ipaddress_1 = NIC.addIp(self.apiclient, id=virtual_machine.nic[0].id) + except Exception as e: + self.fail("Failed while adding secondary IP to NIC of vm %s" % virtual_machine.id) + + public_ip = PublicIPAddress.create(self.api_client,accountid=self.account.name, + zoneid=self.zone.id,domainid=self.account.domainid, + networkid=network.id, vpcid = network.vpcid if value == VPC_NETWORK else None) + + if value != VPC_NETWORK: + firewallrule = FireWallRule.create(self.apiclient,ipaddressid=public_ip.ipaddress.id, + protocol='TCP', cidrlist=[self.services["fwrule"]["cidr"]], + startport=self.services["fwrule"]["startport"],endport=self.services["fwrule"]["endport"]) + + # Create NAT rule + natrule = NATRule.create(self.api_client, virtual_machine, + self.services["natrule"],ipaddressid=public_ip.ipaddress.id, + networkid=network.id, vmguestip = ipaddress_1.ipaddress) + try: + NIC.removeIp(self.apiclient, ipaddressid=ipaddress_1.id) + self.fail("Removing secondary IP succeeded while it had active NAT rule on it, should have failed") + except Exception as e: + self.debug("Removing secondary IP with active NAT rule failed as expected") + + if firewallrule: + try: + firewallrule.delete(self.apiclient) + except Exception as e: + self.fail("Exception while deleting firewall rule %s: %s" % (firewallrule.id, e)) + + try: + natrule.delete(self.apiclient) + except Exception as e: + self.fail("Exception while deleting nat rule %s: %s" % (natrule.id, e)) + return + + @data(ISOLATED_NETWORK, SHARED_NETWORK, VPC_NETWORK) + @attr(tags=["advanced"]) + def test_disassociate_ip_mapped_to_secondary_ip_through_PF_rule(self, value): + """ Add secondary IP to NIC of a VM""" + + ## Steps: + # 1. Create Account and create network in it (isoalted/ shared/ vpc) + # 2. Deploy a VM in this network and account + # 3. Add secondary IP to the default nic of VM + # 4. Acquire public IP, open firewall for it, and + # create NAT rule for this public IP to the 1st secondary IP + # 5. Try to delete the public IP used for NAT rule + + # Validations: + # 1. Step 5 should succeed + + self.account = Account.create(self.apiclient,self.services["account"],domainid=self.domain.id) + self.cleanup.append(self.account) + + network = createNetwork(self, value) + + try: + virtual_machine = VirtualMachine.create(self.apiclient,self.services["virtual_machine"], + networkids=[network.id],serviceofferingid=self.service_offering.id, + accountid=self.account.name,domainid=self.account.domainid) + except Exception as e: + self.fail("vm creation failed: %s" % e) + + try: + ipaddress_1 = NIC.addIp(self.apiclient, id=virtual_machine.nic[0].id) + except Exception as e: + self.fail("Failed while adding secondary IP to NIC of vm %s" % virtual_machine.id) + + public_ip = PublicIPAddress.create(self.api_client,accountid=self.account.name, + zoneid=self.zone.id,domainid=self.account.domainid, + networkid=network.id, vpcid = network.vpcid if value == VPC_NETWORK else None) + + if value != VPC_NETWORK: + FireWallRule.create(self.apiclient,ipaddressid=public_ip.ipaddress.id, + protocol='TCP', cidrlist=[self.services["fwrule"]["cidr"]], + startport=self.services["fwrule"]["startport"],endport=self.services["fwrule"]["endport"]) + + # Create NAT rule + natrule = NATRule.create(self.api_client, virtual_machine, + self.services["natrule"],ipaddressid=public_ip.ipaddress.id, + networkid=network.id, vmguestip = ipaddress_1.ipaddress) + + try: + public_ip.delete(self.apiclient) + except Exception as e: + self.fail("Exception while deleting nat rule %s: %s" % (natrule.id, e)) + return + + @data(ISOLATED_NETWORK, SHARED_NETWORK, VPC_NETWORK) + @attr(tags=["advanced"]) + def test_add_static_nat_rule(self, value): + """ Add secondary IP to NIC of a VM""" + + # Steps: + # 1. Create Account and create network in it (isoalted/ shared/ vpc) + # 2. Deploy a VM in this network and account + # 3. Add 2 secondary IPs to the default nic of VM + # 4. Acquire public IP, open firewall for it, and + # create static NAT rule for this public IP to the 1st secondary IP + # 5. Repeat step 4 for another public IP + # 6. Repeat step 4 for 2nd secondary IP + # 7. Repeat step 4 for invalid secondary IP + # 8. Try to remove 1st secondary IP (with active static nat rule) + + # Validations: + # 1. Step 4 should succeed + # 2. Step 5 should succeed + # 3. Step 6 should succeed + # 4. Step 7 should fail + # 5. Step 8 should succeed + + self.account = Account.create(self.apiclient,self.services["account"],domainid=self.domain.id) + self.cleanup.append(self.account) + + network = createNetwork(self, value) + + try: + virtual_machine = VirtualMachine.create(self.apiclient,self.services["virtual_machine"], + networkids=[network.id],serviceofferingid=self.service_offering.id, + accountid=self.account.name,domainid=self.account.domainid) + except Exception as e: + self.fail("vm creation failed: %s" % e) + + try: + ipaddress_1 = NIC.addIp(self.apiclient, id=virtual_machine.nic[0].id) + except Exception as e: + self.fail("Failed while adding secondary IP to NIC of vm %s" % virtual_machine.id) + + try: + ipaddress_2 = NIC.addIp(self.apiclient, id=virtual_machine.nic[0].id) + except Exception as e: + self.fail("Failed while adding secondary IP to NIC of vm %s" % virtual_machine.id) + + self.assertEqual(createNetworkRules(self, virtual_machine, network, ipaddress_1.ipaddress, value, ruletype="staticnat"), + PASS, "Failure in creating NAT rule") + self.assertEqual(createNetworkRules(self, virtual_machine, network, ipaddress_1.ipaddress, value, ruletype="staticnat"), + FAIL, "Failure in creating NAT rule") + self.assertEqual(createNetworkRules(self, virtual_machine, network, ipaddress_2.ipaddress, value, ruletype="staticnat"), + PASS, "Failure in creating NAT rule") + self.assertEqual(createNetworkRules(self, virtual_machine, network, "255.255.255.300", value, ruletype="staticnat"), + FAIL, "Failure in NAT rule creation") + + try: + NIC.removeIp(self.apiclient, ipaddress_1.id) + self.fail("Ip address should not get removed when active static NAT rule is defined for it") + except Exception as e: + self.debug("Exception while removing secondary ip address as expected because static nat rule is present for it") + return + + @data(ISOLATED_NETWORK, SHARED_NETWORK, VPC_NETWORK) + @attr(tags=["advanced"]) + def test_disable_static_nat(self, value): + """ Add secondary IP to NIC of a VM""" + + # Steps: + # 1. Create Account and create network in it (isoalted/ shared/ vpc) + # 2. Deploy a VM in this network and account + # 3. Add 2 secondary IPs to the default nic of VM + # 4. Acquire public IP, open firewall for it, and + # enable static NAT rule for this public IP to the 1st secondary IP + # 5. Disable the static nat rule and enable it again + + # Validations: + # 1. Verify step 5 by listing seconday IP and checking the appropriate flag + + self.account = Account.create(self.apiclient,self.services["account"],domainid=self.domain.id) + self.cleanup.append(self.account) + + network = createNetwork(self, value) + + try: + virtual_machine = VirtualMachine.create(self.apiclient,self.services["virtual_machine"], + networkids=[network.id],serviceofferingid=self.service_offering.id, + accountid=self.account.name,domainid=self.account.domainid) + except Exception as e: + self.fail("vm creation failed: %s" % e) + + try: + ipaddress_1 = NIC.addIp(self.apiclient, id=virtual_machine.nic[0].id) + except Exception as e: + self.fail("Failed while adding secondary IP to NIC of vm %s" % virtual_machine.id) + + public_ip = PublicIPAddress.create(self.api_client,accountid=self.account.name, + zoneid=self.zone.id,domainid=self.account.domainid, + networkid=network.id, vpcid = network.vpcid if value == VPC_NETWORK else None) + + if value != VPC_NETWORK: + FireWallRule.create(self.apiclient,ipaddressid=public_ip.ipaddress.id, + protocol='TCP', cidrlist=[self.services["fwrule"]["cidr"]], + startport=self.services["fwrule"]["startport"],endport=self.services["fwrule"]["endport"]) + + StaticNATRule.enable(self.apiclient, public_ip.ipaddress.id, virtual_machine.id, + network.id, vmguestip=ipaddress_1.ipaddress) + + self.VerifyStaticNatForPublicIp(public_ip.ipaddress.id, True) + + # Disabling static NAT + StaticNATRule.disable(self.apiclient, public_ip.ipaddress.id) + + self.VerifyStaticNatForPublicIp(public_ip.ipaddress.id, False) + + StaticNATRule.enable(self.apiclient, public_ip.ipaddress.id, virtual_machine.id, + network.id, vmguestip=ipaddress_1.ipaddress) + + self.VerifyStaticNatForPublicIp(public_ip.ipaddress.id, True) + + public_ip.delete(self.apiclient) + return From 8e2c4c810557005995f8d49ed55e903d6bc4126d Mon Sep 17 00:00:00 2001 From: Rajani Karuturi Date: Wed, 26 Feb 2014 14:56:16 +0530 Subject: [PATCH 12/16] added delete iso api to the simulator in the smoke tests, this will fix test_03_delete_iso when run against a simulator Signed-off-by: Koushik Das --- .../datastore/driver/SimulatorImageStoreDriverImpl.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/plugins/hypervisors/simulator/src/org/apache/cloudstack/storage/datastore/driver/SimulatorImageStoreDriverImpl.java b/plugins/hypervisors/simulator/src/org/apache/cloudstack/storage/datastore/driver/SimulatorImageStoreDriverImpl.java index ff5c3a6fc6d..4497448af09 100644 --- a/plugins/hypervisors/simulator/src/org/apache/cloudstack/storage/datastore/driver/SimulatorImageStoreDriverImpl.java +++ b/plugins/hypervisors/simulator/src/org/apache/cloudstack/storage/datastore/driver/SimulatorImageStoreDriverImpl.java @@ -23,6 +23,7 @@ import java.util.UUID; import javax.inject.Inject; +import org.apache.cloudstack.storage.command.CommandResult; import org.apache.log4j.Logger; import org.apache.cloudstack.engine.subsystem.api.storage.CreateCmdResult; @@ -78,6 +79,11 @@ public class SimulatorImageStoreDriverImpl extends BaseImageStoreDriverImpl { } } + @Override + public void deleteAsync(DataStore dataStore, DataObject data, AsyncCompletionCallback callback) { + callback.complete(new CommandResult()); + } + protected void createTemplate(DataObject data, AsyncCompletionCallback callback) { CreateContext context = new CreateContext(callback, data); AsyncCallbackDispatcher caller = AsyncCallbackDispatcher.create(this); From 9be51e1961aa3be09948202e3244e13343d567f9 Mon Sep 17 00:00:00 2001 From: Rajani Karuturi Date: Mon, 3 Mar 2014 16:47:41 +0530 Subject: [PATCH 13/16] added mock handlers for VpnUsersCfgCommand and RemoteAccessVpnCfgCommand in the simulator Signed-off-by: Koushik Das --- .../src/com/cloud/agent/manager/SimulatorManagerImpl.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/plugins/hypervisors/simulator/src/com/cloud/agent/manager/SimulatorManagerImpl.java b/plugins/hypervisors/simulator/src/com/cloud/agent/manager/SimulatorManagerImpl.java index 37394816d24..6fe9b40fa64 100644 --- a/plugins/hypervisors/simulator/src/com/cloud/agent/manager/SimulatorManagerImpl.java +++ b/plugins/hypervisors/simulator/src/com/cloud/agent/manager/SimulatorManagerImpl.java @@ -87,6 +87,7 @@ import com.cloud.agent.api.routing.DhcpEntryCommand; import com.cloud.agent.api.routing.IpAssocCommand; import com.cloud.agent.api.routing.IpAssocVpcCommand; import com.cloud.agent.api.routing.LoadBalancerConfigCommand; +import com.cloud.agent.api.routing.RemoteAccessVpnCfgCommand; import com.cloud.agent.api.routing.SavePasswordCommand; import com.cloud.agent.api.routing.SetFirewallRulesCommand; import com.cloud.agent.api.routing.SetNetworkACLCommand; @@ -97,6 +98,7 @@ import com.cloud.agent.api.routing.SetStaticNatRulesCommand; import com.cloud.agent.api.routing.SetStaticRouteCommand; import com.cloud.agent.api.routing.Site2SiteVpnCfgCommand; import com.cloud.agent.api.routing.VmDataCommand; +import com.cloud.agent.api.routing.VpnUsersCfgCommand; import com.cloud.agent.api.storage.CopyVolumeCommand; import com.cloud.agent.api.storage.CreateCommand; import com.cloud.agent.api.storage.DestroyCommand; @@ -365,7 +367,9 @@ public class SimulatorManagerImpl extends ManagerBase implements SimulatorManage } else if (cmd instanceof PvlanSetupCommand) { return _mockNetworkMgr.setupPVLAN((PvlanSetupCommand)cmd); } else if (cmd instanceof StorageSubSystemCommand) { - return this.storageHandler.handleStorageCommands((StorageSubSystemCommand)cmd); + return this.storageHandler.handleStorageCommands((StorageSubSystemCommand) cmd); + } else if (cmd instanceof VpnUsersCfgCommand || cmd instanceof RemoteAccessVpnCfgCommand) { + return new Answer(cmd); } else { s_logger.error("Simulator does not implement command of type " + cmd.toString()); return Answer.createUnsupportedCommandAnswer(cmd); From 8dca59d4f91f1ff19c872534ac3bcda023009d31 Mon Sep 17 00:00:00 2001 From: sbalineni Date: Tue, 7 Jan 2014 19:20:01 +0000 Subject: [PATCH 14/16] mvn clean - cleanps up only target, dist directories; testclient.log file should be generated inside target directory Signed-off-by: Daan Hoogland --- .../juniper-contrail/test/resources/log4j.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/network-elements/juniper-contrail/test/resources/log4j.properties b/plugins/network-elements/juniper-contrail/test/resources/log4j.properties index 138a9610873..2e724f4e902 100644 --- a/plugins/network-elements/juniper-contrail/test/resources/log4j.properties +++ b/plugins/network-elements/juniper-contrail/test/resources/log4j.properties @@ -25,7 +25,7 @@ log4j.appender.rolling=org.apache.log4j.DailyRollingFileAppender log4j.appender.rolling.layout=org.apache.log4j.PatternLayout log4j.appender.rolling.layout.ConversionPattern=%d %-5p [%c{3}] (%t:%x) %m%n log4j.appender.rolling.file.threshold=DEBUG -log4j.appender.rolling.File=./logs/testclient.log +log4j.appender.rolling.File=./target/logs/testclient.log log4j.appender.rolling.DatePattern='.'yyy-MM-dd log4j.appender.rolling.file.append=false log4j.category.org.apache=INFO, rolling, stdout From 1f9649bc3beee63e877c14e6d76107b4d75a92a1 Mon Sep 17 00:00:00 2001 From: Wido den Hollander Date: Tue, 4 Mar 2014 16:03:11 +0100 Subject: [PATCH 15/16] kvm: Fix a NullPointerException which occurs when storage pool creation fails Also make the logging around creating a RBD storage pool a bit better when creating that fails. --- .../kvm/storage/LibvirtStorageAdaptor.java | 27 ++++++++++++++----- 1 file changed, 21 insertions(+), 6 deletions(-) diff --git a/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/storage/LibvirtStorageAdaptor.java b/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/storage/LibvirtStorageAdaptor.java index 4a8f1f1b8d3..38ce32b69ea 100644 --- a/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/storage/LibvirtStorageAdaptor.java +++ b/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/storage/LibvirtStorageAdaptor.java @@ -244,13 +244,12 @@ public class LibvirtStorageAdaptor implements StorageAdaptor { LibvirtStoragePoolDef spd; StoragePool sp = null; + Secret s = null; String[] userInfoTemp = userInfo.split(":"); if (userInfoTemp.length == 2) { LibvirtSecretDef sd = new LibvirtSecretDef(usage.CEPH, uuid); - Secret s = null; - sd.setCephName(userInfoTemp[0] + "@" + host + ":" + port + "/" + path); try { @@ -258,15 +257,16 @@ public class LibvirtStorageAdaptor implements StorageAdaptor { s = conn.secretDefineXML(sd.toString()); s.setValue(Base64.decodeBase64(userInfoTemp[1])); } catch (LibvirtException e) { - s_logger.error(e.toString()); + s_logger.error("Failed to define the libvirt secret: " + e.toString()); if (s != null) { try { s.undefine(); s.free(); } catch (LibvirtException l) { - s_logger.debug("Failed to define secret with: " + l.toString()); + s_logger.debug("Failed to undefine the libvirt secret: " + l.toString()); } } + return null; } spd = new LibvirtStoragePoolDef(poolType.RBD, uuid, uuid, host, port, path, userInfoTemp[0], authType.CEPH, uuid); } else { @@ -278,7 +278,7 @@ public class LibvirtStorageAdaptor implements StorageAdaptor { sp = conn.storagePoolCreateXML(spd.toString(), 0); return sp; } catch (LibvirtException e) { - s_logger.debug(e.toString()); + s_logger.debug("Failed to create RBD storage pool: " + e.toString()); if (sp != null) { try { if (sp.isPersistent() == 1) { @@ -289,9 +289,20 @@ public class LibvirtStorageAdaptor implements StorageAdaptor { } sp.free(); } catch (LibvirtException l) { - s_logger.debug("Failed to define RBD storage pool with: " + l.toString()); + s_logger.debug("Failed to undefine RBD storage pool: " + l.toString()); } } + + if (s != null) { + try { + s_logger.debug("Failed to create the RBD storage pool, cleaning up the libvirt secret"); + s.undefine(); + s.free(); + } catch (LibvirtException se) { + s_logger.debug("Failed to remove the libvirt secret: " + se.toString()); + } + } + return null; } } @@ -512,6 +523,10 @@ public class LibvirtStorageAdaptor implements StorageAdaptor { } } + if (sp == null) { + throw new CloudRuntimeException("Failed to create storage pool: " + name); + } + try { if (sp.isActive() == 0) { s_logger.debug("attempting to activate pool " + name); From fb0b2eb26731a6db00c65dcd799653a213475387 Mon Sep 17 00:00:00 2001 From: Marcus Sorensen Date: Tue, 4 Mar 2014 14:18:51 -0700 Subject: [PATCH 16/16] CLOUDSTACK-6192: Return failure on StartCommand and PrepareForMigrationCommand when connectPhysicalDisk fails, rather than continuing on --- .../kvm/resource/LibvirtComputingResource.java | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/resource/LibvirtComputingResource.java b/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/resource/LibvirtComputingResource.java index 3553b5ca9c9..1056bcf21f2 100755 --- a/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/resource/LibvirtComputingResource.java +++ b/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/resource/LibvirtComputingResource.java @@ -3063,7 +3063,7 @@ public class LibvirtComputingResource extends ServerResourceBase implements Serv NicTO[] nics = vm.getNics(); - boolean success = false; + boolean skipDisconnect = false; try { Connect conn = LibvirtConnection.getConnectionByVmName(vm.getName()); @@ -3079,13 +3079,16 @@ public class LibvirtComputingResource extends ServerResourceBase implements Serv } } - _storagePoolMgr.connectPhysicalDisksViaVmSpec(vm); + if (!_storagePoolMgr.connectPhysicalDisksViaVmSpec(vm)) { + skipDisconnect = true; + return new PrepareForMigrationAnswer(cmd, "failed to connect physical disks to host"); + } synchronized (_vms) { _vms.put(vm.getName(), State.Migrating); } - success = true; + skipDisconnect = true; return new PrepareForMigrationAnswer(cmd); } catch (LibvirtException e) { @@ -3095,7 +3098,7 @@ public class LibvirtComputingResource extends ServerResourceBase implements Serv } catch (URISyntaxException e) { return new PrepareForMigrationAnswer(cmd, e.toString()); } finally { - if (!success) { + if (!skipDisconnect) { _storagePoolMgr.disconnectPhysicalDisksViaVmSpec(vm); } } @@ -3628,7 +3631,9 @@ public class LibvirtComputingResource extends ServerResourceBase implements Serv createVbd(conn, vmSpec, vmName, vm); - _storagePoolMgr.connectPhysicalDisksViaVmSpec(vmSpec); + if (!_storagePoolMgr.connectPhysicalDisksViaVmSpec(vmSpec)) { + return new StartAnswer(cmd, "Failed to connect physical disks to host"); + } createVifs(vmSpec, vm);