]> git.argeo.org Git - gpl/argeo-slc.git/blob - runtime/org.argeo.slc.support.simple/src/main/java/org/argeo/slc/lib/vbox/VBoxManager.java
Restructure modules
[gpl/argeo-slc.git] / runtime / org.argeo.slc.support.simple / src / main / java / org / argeo / slc / lib / vbox / VBoxManager.java
1 package org.argeo.slc.lib.vbox;
2
3 import java.util.ArrayList;
4 import java.util.List;
5
6 import org.apache.commons.logging.Log;
7 import org.apache.commons.logging.LogFactory;
8 import org.argeo.slc.core.execution.tasks.SystemCall;
9
10 public class VBoxManager {
11 private final static Log log = LogFactory.getLog(VBoxManager.class);
12
13 private String machineName;
14 private String executable = "VBoxManage";
15
16 private List<VBoxNat> nats = new ArrayList<VBoxNat>();
17
18 public void applyNats() {
19 StringBuffer script = new StringBuffer("");
20 for (VBoxNat vBoxNat : nats) {
21 for (String id : vBoxNat.getMappings().keySet()) {
22 VBoxPortMapping mapping = vBoxNat.getMappings().get(id);
23 new SystemCall(createNatCommand(id, vBoxNat.getDevice(),
24 "Protocol", mapping.getProtocol(), script)).run();
25 script.append('\n');
26 new SystemCall(createNatCommand(id, vBoxNat.getDevice(),
27 "GuestPort", mapping.getGuest(), script)).run();
28 script.append('\n');
29 new SystemCall(createNatCommand(id, vBoxNat.getDevice(),
30 "HostPort", mapping.getHost(), script)).run();
31 script.append('\n');
32 script.append('\n');
33 }
34 script.append('\n');
35 }
36
37 if (log.isDebugEnabled())
38 log.debug("Port setting script:\n" + script);
39 }
40
41 protected List<Object> createNatCommand(String id, String device,
42 String cfgKey, String value, StringBuffer script) {
43 List<Object> cmd = new ArrayList<Object>();
44 cmd.add(executable);
45 cmd.add("setextradata");
46 cmd.add(machineName);
47 cmd.add("VBoxInternal/Devices/" + device + "/0/LUN#0/Config/" + id
48 + "/" + cfgKey);
49 cmd.add(value);
50
51 for (Object arg : cmd) {
52 script.append(arg).append(' ');
53 }
54
55 return cmd;
56 }
57
58 public String getMachineName() {
59 return machineName;
60 }
61
62 public void setMachineName(String machineName) {
63 this.machineName = machineName;
64 }
65
66 public String getExecutable() {
67 return executable;
68 }
69
70 public void setExecutable(String executable) {
71 this.executable = executable;
72 }
73
74 public List<VBoxNat> getNats() {
75 return nats;
76 }
77
78 public void setNats(List<VBoxNat> boxNats) {
79 nats = boxNats;
80 }
81
82 }