|
31 | 31 | import com.cloud.agent.api.Command; |
32 | 32 | import com.cloud.agent.api.NetworkUsageAnswer; |
33 | 33 | import com.cloud.agent.api.NetworkUsageCommand; |
| 34 | +import com.cloud.agent.api.StartAnswer; |
| 35 | +import com.cloud.agent.api.StartCommand; |
34 | 36 | import com.cloud.agent.api.StartupRoutingCommand; |
| 37 | +import com.cloud.agent.api.StopAnswer; |
| 38 | +import com.cloud.agent.api.StopCommand; |
| 39 | +import com.cloud.agent.api.to.NicTO; |
| 40 | +import com.cloud.agent.api.to.VirtualMachineTO; |
| 41 | +import com.cloud.network.Networks.TrafficType; |
35 | 42 | import com.cloud.resource.ServerResource; |
36 | 43 | import com.cloud.utils.exception.CloudRuntimeException; |
37 | 44 | import com.cloud.utils.script.Script; |
| 45 | +import com.cloud.vm.VirtualMachine; |
38 | 46 | import com.xensource.xenapi.Connection; |
39 | 47 | import com.xensource.xenapi.Types; |
40 | 48 | import com.xensource.xenapi.VBD; |
@@ -124,4 +132,35 @@ public Answer executeRequest(Command cmd) { |
124 | 132 | return super.executeRequest(cmd); |
125 | 133 | } |
126 | 134 | } |
| 135 | + |
| 136 | + @Override |
| 137 | + public StartAnswer execute(StartCommand cmd) { |
| 138 | + StartAnswer answer = super.execute(cmd); |
| 139 | + |
| 140 | + VirtualMachineTO vmSpec = cmd.getVirtualMachine(); |
| 141 | + if (vmSpec.getType() == VirtualMachine.Type.ConsoleProxy) { |
| 142 | + Connection conn = getConnection(); |
| 143 | + String publicIp = null; |
| 144 | + for (NicTO nic : vmSpec.getNics()) { |
| 145 | + if (nic.getType() == TrafficType.Guest) { |
| 146 | + publicIp = nic.getIp(); |
| 147 | + } |
| 148 | + } |
| 149 | + callHostPlugin(conn, "vmops", "setDNATRule", "ip", publicIp, "port", "8443", "add", "true"); |
| 150 | + } |
| 151 | + |
| 152 | + return answer; |
| 153 | + } |
| 154 | + |
| 155 | + @Override |
| 156 | + public StopAnswer execute(StopCommand cmd) { |
| 157 | + StopAnswer answer = super.execute(cmd); |
| 158 | + String vmName = cmd.getVmName(); |
| 159 | + if (vmName.startsWith("v-")) { |
| 160 | + Connection conn = getConnection(); |
| 161 | + callHostPlugin(conn, "vmops", "setDNATRule", "add", "false"); |
| 162 | + } |
| 163 | + return answer; |
| 164 | + } |
| 165 | + |
127 | 166 | } |
0 commit comments