added a list method to list ip forwarding rules, optionally list a rule based on its public ip address

This commit is contained in:
abhishek 2010-11-18 11:11:03 -08:00
parent 020afa6e33
commit 18ff23c839
4 changed files with 135 additions and 6 deletions

View File

@ -35,6 +35,7 @@ import com.cloud.api.response.FirewallRuleResponse;
import com.cloud.api.response.HostResponse;
import com.cloud.api.response.IPAddressResponse;
import com.cloud.api.response.InstanceGroupResponse;
import com.cloud.api.response.IpForwardingRuleResponse;
import com.cloud.api.response.LoadBalancerResponse;
import com.cloud.api.response.PodResponse;
import com.cloud.api.response.PreallocatedLunResponse;
@ -1013,6 +1014,22 @@ public class ApiResponseHelper {
return response;
}
public static IpForwardingRuleResponse createIpForwardingRuleResponse(FirewallRuleVO fwRule) {
IpForwardingRuleResponse response = new IpForwardingRuleResponse();
response.setId(fwRule.getId());
response.setPrivatePort(fwRule.getPrivatePort());
response.setProtocol(fwRule.getProtocol());
response.setPublicPort(fwRule.getPublicPort());
response.setPublicIpAddress(fwRule.getPublicIpAddress());
if (fwRule.getPublicIpAddress() != null && fwRule.getPrivateIpAddress() != null) {
UserVm vm = ApiDBUtils.findUserVmByPublicIpAndGuestIp(fwRule.getPublicIpAddress(), fwRule.getPrivateIpAddress());
response.setVirtualMachineId(vm.getId());
response.setVirtualMachineName(vm.getHostName());
response.setVirtualMachineDisplayName(vm.getDisplayName());
}
response.setObjectName("ipforwardingrule");
return response;
}
public static UserVmResponse createUserVm2Response (UserVm userVm) {

View File

@ -28,6 +28,7 @@ import com.cloud.api.BaseListCmd;
import com.cloud.api.Implementation;
import com.cloud.api.Parameter;
import com.cloud.api.response.FirewallRuleResponse;
import com.cloud.api.response.IpForwardingRuleResponse;
import com.cloud.api.response.ListResponse;
import com.cloud.network.FirewallRuleVO;
@ -68,12 +69,11 @@ public class ListIpForwardingRulesCmd extends BaseListCmd {
@Override
public void execute(){
List<FirewallRuleVO> result = _mgr.searchForIpForwardingRules(this);
ListResponse<FirewallRuleResponse> response = new ListResponse<FirewallRuleResponse>();
List<FirewallRuleResponse> fwResponses = new ArrayList<FirewallRuleResponse>();
ListResponse<IpForwardingRuleResponse> response = new ListResponse<IpForwardingRuleResponse>();
List<IpForwardingRuleResponse> fwResponses = new ArrayList<IpForwardingRuleResponse>();
for (FirewallRuleVO rule : result) {
FirewallRuleResponse resp = ApiResponseHelper.createFirewallRuleResponse(rule);
IpForwardingRuleResponse resp = ApiResponseHelper.createIpForwardingRuleResponse(rule);
if (resp != null) {
resp.setObjectName("firewallrule");
fwResponses.add(resp);
}
}

View File

@ -37,10 +37,10 @@ public class FirewallRuleResponse extends BaseResponse {
@SerializedName(ApiConstants.VIRTUAL_MACHINE_ID) @Param(description="the VM ID for the port forwarding rule")
private Long virtualMachineId;
@SerializedName("vmname") @Param(description="the VM name for the port forwarding rule")
@SerializedName("virtualmachinename") @Param(description="the VM name for the port forwarding rule")
private String virtualMachineName;
@SerializedName("vmdisplayname") @Param(description="the VM display name for the port forwarding rule")
@SerializedName("virtualmachinedisplayname") @Param(description="the VM display name for the port forwarding rule")
private String virtualMachineDisplayName;
@SerializedName("publicipaddress") @Param(description="the public ip address for the port forwarding rule")

View File

@ -0,0 +1,112 @@
/**
* Copyright (C) 2010 Cloud.com, Inc. All rights reserved.
*
* This software is licensed under the GNU General Public License v3 or later.
*
* It is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or any later version.
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
package com.cloud.api.response;
import com.cloud.api.ApiConstants;
import com.cloud.serializer.Param;
import com.google.gson.annotations.SerializedName;
public class IpForwardingRuleResponse extends BaseResponse {
@SerializedName(ApiConstants.ID) @Param(description="the ID of the port forwarding rule")
private Long id;
@SerializedName(ApiConstants.PRIVATE_PORT) @Param(description="the private port for the port forwarding rule")
private String privatePort;
@SerializedName(ApiConstants.PROTOCOL) @Param(description="the protocol of the port forwarding rule")
private String protocol;
@SerializedName(ApiConstants.PUBLIC_PORT) @Param(description="the public port for the port forwarding rule")
private String publicPort;
@SerializedName(ApiConstants.VIRTUAL_MACHINE_ID) @Param(description="the VM ID for the port forwarding rule")
private Long virtualMachineId;
@SerializedName("virtualmachinename") @Param(description="the VM name for the port forwarding rule")
private String virtualMachineName;
@SerializedName("virtualmachinedisplayname") @Param(description="the VM display name for the port forwarding rule")
private String virtualMachineDisplayName;
@SerializedName("publicipaddress") @Param(description="the public ip address for the port forwarding rule")
private String publicIpAddress;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getPrivatePort() {
return privatePort;
}
public void setPrivatePort(String privatePort) {
this.privatePort = privatePort;
}
public String getProtocol() {
return protocol;
}
public void setProtocol(String protocol) {
this.protocol = protocol;
}
public String getPublicPort() {
return publicPort;
}
public void setPublicPort(String publicPort) {
this.publicPort = publicPort;
}
public Long getVirtualMachineId() {
return virtualMachineId;
}
public void setVirtualMachineId(Long virtualMachineId) {
this.virtualMachineId = virtualMachineId;
}
public String getVirtualMachineName() {
return virtualMachineName;
}
public void setVirtualMachineName(String virtualMachineName) {
this.virtualMachineName = virtualMachineName;
}
public String getVirtualMachineDisplayName() {
return virtualMachineDisplayName;
}
public void setVirtualMachineDisplayName(String virtualMachineDisplayName) {
this.virtualMachineDisplayName = virtualMachineDisplayName;
}
public String getPublicIpAddress() {
return publicIpAddress;
}
public void setPublicIpAddress(String publicIpAddress) {
this.publicIpAddress = publicIpAddress;
}
}