Skip to content

Commit ac48aa8

Browse files
committed
cleaning up some from a revert
1 parent 3cac7f0 commit ac48aa8

13 files changed

Lines changed: 77 additions & 183 deletions

File tree

plugins/hypervisors/baremetal/resources/META-INF/cloudstack/core/spring-baremetal-core-context.xml

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -28,13 +28,7 @@
2828
>
2929

3030
<bean id="BaremetalManager" class="com.cloud.baremetal.manager.BaremetalManagerImpl" />
31-
<bean id="BaremetalVlanManager" class="com.cloud.baremetal.manager.BaremetalVlanManagerImpl" >
32-
<property name="backends">
33-
<map>
34-
<entry key="Force10" value-ref="Force10BaremetalSwitchBackend"/>
35-
</map>
36-
</property>
37-
</bean>
31+
<bean id="BaremetalVlanManager" class="com.cloud.baremetal.manager.BaremetalVlanManagerImpl" />
3832
<bean id="Force10BaremetalSwitchBackend" class="com.cloud.baremetal.networkservice.Force10BaremetalSwitchBackend" />
3933

4034
<bean id="BaremetalKickStartPxeService"

plugins/hypervisors/baremetal/src/com/cloud/baremetal/manager/BaremetalVlanManager.java

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@
1818
package com.cloud.baremetal.manager;
1919

2020
import com.cloud.baremetal.networkservice.BaremetalRctResponse;
21-
import com.cloud.baremetal.networkservice.BaremetalSwitchBackend;
2221
import com.cloud.deploy.DeployDestination;
2322
import com.cloud.network.Network;
2423
import com.cloud.utils.component.Manager;
@@ -37,6 +36,4 @@ public interface BaremetalVlanManager extends Manager, PluggableService {
3736
void prepareVlan(Network nw, DeployDestination destHost);
3837

3938
void releaseVlan(Network nw, VirtualMachineProfile vm);
40-
41-
void registerSwitchBackend(BaremetalSwitchBackend backend);
4239
}

plugins/hypervisors/baremetal/src/com/cloud/baremetal/manager/BaremetalVlanManagerImpl.java

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@
4747
import java.net.MalformedURLException;
4848
import java.net.URL;
4949
import java.util.ArrayList;
50+
import java.util.HashMap;
5051
import java.util.List;
5152
import java.util.Map;
5253
import java.util.UUID;
@@ -68,17 +69,13 @@ public class BaremetalVlanManagerImpl extends ManagerBase implements BaremetalVl
6869
@Inject
6970
private AccountManager acntMgr;
7071

71-
private Map<String, BaremetalSwitchBackend> backends;
72+
private Map<String, BaremetalSwitchBackend> backends = new HashMap<>();
7273

7374
private class RackPair {
7475
BaremetalRct.Rack rack;
7576
BaremetalRct.HostEntry host;
7677
}
7778

78-
public void setBackends(Map<String, BaremetalSwitchBackend> backends) {
79-
this.backends = backends;
80-
}
81-
8279
@Override
8380
public BaremetalRctResponse addRct(AddBaremetalRctCmd cmd) {
8481
try {
@@ -164,11 +161,6 @@ public void releaseVlan(Network nw, VirtualMachineProfile vm) {
164161
backend.removePortFromVlan(struct);
165162
}
166163

167-
@Override
168-
public void registerSwitchBackend(BaremetalSwitchBackend backend) {
169-
backends.put(backend.getSwitchBackendType(), backend);
170-
}
171-
172164
private BaremetalSwitchBackend getSwitchBackend(String type) {
173165
BaremetalSwitchBackend backend = backends.get(type);
174166
if (backend == null) {

plugins/hypervisors/baremetal/src/com/cloud/baremetal/networkservice/BareMetalResourceBase.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -403,7 +403,7 @@ public PingCommand getCurrentStatus(long id) {
403403
VMInstanceVO vm = vms.get(0);
404404
SecurityGroupHttpClient client = new SecurityGroupHttpClient();
405405
HashMap<String, Pair<Long, Long>> nwGrpStates = client.sync(vm.getInstanceName(), vm.getId(), vm.getPrivateIpAddress());
406-
return new PingRoutingWithNwGroupsCommand(getType(), id, null, nwGrpStates);
406+
return new PingRoutingWithNwGroupsCommand(getType(), id, getHostVmStateReport(), nwGrpStates);
407407
}
408408
} else {
409409
return new PingRoutingCommand(getType(), id, getHostVmStateReport());

plugins/hypervisors/baremetal/src/com/cloud/baremetal/networkservice/BaremetalKickStartServiceImpl.java

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -225,18 +225,19 @@ private boolean preparePxeInAdvancedZone(VirtualMachineProfile profile, NicProfi
225225
}
226226

227227
List<String> tuple = parseKickstartUrl(profile);
228-
String cmd = String.format("/usr/bin/prepare_pxe.sh %s %s %s %s %s %s", tuple.get(1), tuple.get(2), profile.getTemplate().getUuid(),
229-
String.format("01-%s", nic.getMacAddress().replaceAll(":", "-")).toLowerCase(), tuple.get(0), nic.getMacAddress().toLowerCase());
230-
s_logger.debug(String.format("prepare pxe on virtual router[ip:%s], cmd: %s", mgmtNic.getIp4Address(), cmd));
231-
Pair<Boolean, String> ret = SshHelper.sshExecute(mgmtNic.getIp4Address(), 3922, "root", getSystemVMKeyFile(), null, cmd);
228+
Pair<Boolean, String> ret = SshHelper.sshExecute(mgmtNic.getIp4Address(), 3922, "root", getSystemVMKeyFile(), null,
229+
String.format("/usr/bin/prepare_pxe.sh %s %s %s %s %s", tuple.get(1), tuple.get(2), profile.getTemplate().getUuid(),
230+
String.format("01-%s", nic.getMacAddress().replaceAll(":", "-")), tuple.get(0))
231+
);
232232
if (!ret.first()) {
233233
throw new CloudRuntimeException(String.format("failed preparing PXE in virtual router[id:%s], because %s", vr.getId(), ret.second()));
234234
}
235235

236-
//String internalServerIp = "10.223.110.231";
237-
cmd = String.format("/usr/bin/baremetal_snat.sh %s %s %s", mgmtNic.getIp4Address(), internalServerIp, mgmtNic.getGateway());
238-
s_logger.debug(String.format("prepare SNAT on virtual router[ip:%s], cmd: %s", mgmtNic.getIp4Address(), cmd));
239-
ret = SshHelper.sshExecute(mgmtNic.getIp4Address(), 3922, "root", getSystemVMKeyFile(), null, cmd);
236+
//String internalServerIp = _configDao.getValue(Config.BaremetalInternalStorageServer.key());
237+
String internalServerIp = "10.223.110.231";
238+
ret = SshHelper.sshExecute(mgmtNic.getIp4Address(), 3922, "root", getSystemVMKeyFile(), null,
239+
String.format("/usr/bin/baremetal_snat.sh %s %s", mgmtNic.getIp4Address(), internalServerIp)
240+
);
240241
if (!ret.first()) {
241242
throw new CloudRuntimeException(String.format("failed preparing PXE in virtual router[id:%s], because %s", vr.getId(), ret.second()));
242243
}

plugins/hypervisors/baremetal/src/com/cloud/baremetal/networkservice/BaremetalPxeElement.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@
2121
import com.cloud.baremetal.database.BaremetalPxeVO;
2222
import com.cloud.baremetal.manager.BaremetalVlanManager;
2323
import com.cloud.dc.DataCenter;
24-
import com.cloud.dc.DataCenterVO;
2524
import com.cloud.dc.Pod;
2625
import com.cloud.dc.dao.DataCenterDao;
2726
import com.cloud.deploy.DeployDestination;
@@ -140,9 +139,11 @@ public boolean prepare(Network network, NicProfile nic, VirtualMachineProfile vm
140139
}
141140
}
142141

142+
/*
143143
if (dest.getDataCenter().getNetworkType() == DataCenter.NetworkType.Advanced){
144144
prepareVlan(network, dest);
145145
}
146+
*/
146147

147148
return true;
148149
}
@@ -158,10 +159,12 @@ public boolean release(Network network, NicProfile nic, VirtualMachineProfile vm
158159
return false;
159160
}
160161

162+
/*
161163
DataCenterVO dc = zoneDao.findById(vm.getVirtualMachine().getDataCenterId());
162164
if (dc.getNetworkType() == DataCenter.NetworkType.Advanced) {
163165
releaseVlan(network, vm);
164166
}
167+
*/
165168
return true;
166169
}
167170

plugins/hypervisors/baremetal/src/com/cloud/baremetal/networkservice/Force10BaremetalSwitchBackend.java

100755100644
Lines changed: 30 additions & 86 deletions
Original file line numberDiff line numberDiff line change
@@ -32,16 +32,11 @@
3232
import org.springframework.http.HttpHeaders;
3333
import org.springframework.http.HttpMethod;
3434
import org.springframework.http.HttpStatus;
35-
import org.springframework.http.MediaType;
3635
import org.springframework.http.ResponseEntity;
37-
import org.springframework.http.client.ClientHttpResponse;
38-
import org.springframework.web.client.ResponseErrorHandler;
3936
import org.springframework.web.client.RestTemplate;
4037
import org.springframework.web.util.UriComponentsBuilder;
4138

42-
import java.io.IOException;
4339
import java.util.ArrayList;
44-
import java.util.Arrays;
4540
import java.util.List;
4641

4742
/**
@@ -51,38 +46,17 @@ public class Force10BaremetalSwitchBackend implements BaremetalSwitchBackend {
5146
private Logger logger = Logger.getLogger(Force10BaremetalSwitchBackend.class);
5247
public static final String TYPE = "Force10";
5348

54-
private static List<HttpStatus> successHttpStatusCode = new ArrayList<>();
55-
{
56-
successHttpStatusCode.add(HttpStatus.OK);
57-
successHttpStatusCode.add(HttpStatus.ACCEPTED);
58-
successHttpStatusCode.add(HttpStatus.CREATED);
59-
successHttpStatusCode.add(HttpStatus.NO_CONTENT);
60-
successHttpStatusCode.add(HttpStatus.PARTIAL_CONTENT);
61-
successHttpStatusCode.add(HttpStatus.RESET_CONTENT);
62-
successHttpStatusCode.add(HttpStatus.ALREADY_REPORTED);
63-
}
64-
6549
RestTemplate rest = new RestTemplate();
66-
{
67-
// fake error handler, we handle error in business logic code
68-
rest.setErrorHandler(new ResponseErrorHandler() {
69-
@Override
70-
public boolean hasError(ClientHttpResponse clientHttpResponse) throws IOException {
71-
return false;
72-
}
7350

74-
@Override
75-
public void handleError(ClientHttpResponse clientHttpResponse) throws IOException {
76-
}
77-
});
78-
}
79-
80-
private String buildLink(String switchIp, String path) {
51+
private String buildLink(String switchIp, Integer vlan) {
8152
UriComponentsBuilder builder = UriComponentsBuilder.newInstance();
8253
builder.scheme("http");
8354
builder.host(switchIp);
8455
builder.port(8008);
85-
builder.path(path);
56+
builder.path("/api/running/ftos/interface/vlan");
57+
if (vlan != null) {
58+
builder.path(vlan.toString());
59+
}
8660
return builder.build().toUriString();
8761
}
8862

@@ -93,36 +67,29 @@ public String getSwitchBackendType() {
9367

9468
@Override
9569
public void prepareVlan(BaremetalVlanStruct struct) {
96-
String link = buildLink(struct.getSwitchIp(), String.format("/api/running/ftos/interface/vlan/%s", struct.getVlan()));
70+
String link = buildLink(struct.getSwitchIp(), struct.getVlan());
9771
HttpHeaders headers = createBasicAuthenticationHeader(struct);
9872
HttpEntity<String> request = new HttpEntity<>(headers);
9973
ResponseEntity rsp = rest.exchange(link, HttpMethod.GET, request, String.class);
100-
logger.debug(String.format("http get: %s", link));
10174

10275
if (rsp.getStatusCode() == HttpStatus.NOT_FOUND) {
10376
PortInfo port = new PortInfo(struct);
104-
XmlObject xml = new XmlObject("vlan").putElement("vlan-id",
105-
new XmlObject("vlan-id").setText(String.valueOf(struct.getVlan()))).putElement("untagged",
106-
new XmlObject("untagged").putElement(port.interfaceType, new XmlObject(port.interfaceType)
107-
.putElement("name", new XmlObject("name").setText(port.port)))
108-
).putElement("shutdown", new XmlObject("shutdown").setText("false"));
109-
request = new HttpEntity<>(xml.dump(), headers);
110-
link = buildLink(struct.getSwitchIp(), String.format("/api/running/ftos/interface/"));
111-
logger.debug(String.format("http get: %s, body: %s", link, request));
112-
rsp = rest.exchange(link, HttpMethod.POST, request, String.class);
113-
if (!successHttpStatusCode.contains(rsp.getStatusCode())) {
77+
XmlObject xml = new XmlObject("vlan").putElement("vlan-id", String.valueOf(struct.getVlan())).putElement("tagged",
78+
new XmlObject(port.interfaceType).putElement("name", port.port)
79+
).putElement("shutdown", "false");
80+
request = new HttpEntity<>(xml.toString(), headers);
81+
link = buildLink(struct.getSwitchIp(), null);
82+
rsp = rest.exchange(link, HttpMethod.GET, request, String.class);
83+
if (rsp.getStatusCode() != HttpStatus.OK) {
11484
throw new CloudRuntimeException(String.format("unable to create vlan[%s] on force10 switch[ip:%s]. HTTP status code:%s, body dump:%s",
115-
struct.getVlan(), struct.getSwitchIp(),rsp.getStatusCode(), rsp.getBody()));
116-
} else {
117-
logger.debug(String.format("successfully programmed vlan[%s] on Force10[ip:%s, port:%s]. http response[status code:%s, body:%s]",
118-
struct.getVlan(), struct.getSwitchIp(), struct.getPort(), rsp.getStatusCode(), rsp.getBody()));
85+
struct.getVlan(), rsp.getStatusCode(), struct.getSwitchIp(), rsp.getBody()));
11986
}
120-
} else if (successHttpStatusCode.contains(rsp.getStatusCode())) {
87+
} else if (rsp.getStatusCode() == HttpStatus.OK) {
12188
PortInfo port = new PortInfo(struct);
12289
XmlObject xml = XmlObjectParser.parseFromString((String)rsp.getBody());
123-
List<XmlObject> ports = xml.getAsList("untagged.tengigabitethernet");
124-
ports.addAll(xml.<XmlObject>getAsList("untagged.gigabitethernet"));
125-
ports.addAll(xml.<XmlObject>getAsList("untagged.fortyGigE"));
90+
List<XmlObject> ports = xml.getAsList("tagged.tengigabitethernet");
91+
ports.addAll(xml.<XmlObject>getAsList("tagged.gigabitethernet"));
92+
ports.addAll(xml.<XmlObject>getAsList("tagged.fortyGigE"));
12693
for (XmlObject pxml : ports) {
12794
XmlObject name = pxml.get("name");
12895
if (port.port.equals(name.getText())) {
@@ -131,26 +98,14 @@ public void prepareVlan(BaremetalVlanStruct struct) {
13198
}
13299
}
133100

134-
xml.removeElement("mtu");
135-
xml.setText(null);
136-
XmlObject tag = xml.get("untagged");
137-
if (tag == null) {
138-
tag = new XmlObject("untagged");
139-
xml.putElement("untagged", tag);
140-
}
141-
142-
tag.putElement(port.interfaceType, new XmlObject(port.interfaceType)
143-
.putElement("name", new XmlObject("name").setText(port.port)));
144-
request = new HttpEntity<>(xml.dump(), headers);
145-
link = buildLink(struct.getSwitchIp(), String.format("/api/running/ftos/interface/vlan/%s", struct.getVlan()));
146-
logger.debug(String.format("http get: %s, body: %s", link, request));
101+
XmlObject tag = xml.get("tagged");
102+
tag.putElement(port.interfaceType, new XmlObject("name").setText(port.port));
103+
request = new HttpEntity<>(xml.toString(), headers);
104+
link = buildLink(struct.getSwitchIp(), struct.getVlan());
147105
rsp = rest.exchange(link, HttpMethod.PUT, request, String.class);
148-
if (!successHttpStatusCode.contains(rsp.getStatusCode())) {
106+
if (rsp.getStatusCode() != HttpStatus.NO_CONTENT) {
149107
throw new CloudRuntimeException(String.format("failed to program vlan[%s] for port[%s] on force10[ip:%s]. http status:%s, body dump:%s",
150108
struct.getVlan(), struct.getPort(), struct.getSwitchIp(), rsp.getStatusCode(), rsp.getBody()));
151-
} else {
152-
logger.debug(String.format("successfully join port[%s] into vlan[%s] on Force10[ip:%s]. http response[status code:%s, body:%s]",
153-
struct.getPort(), struct.getVlan(), struct.getSwitchIp(), rsp.getStatusCode(), rsp.getBody()));
154109
}
155110
} else {
156111
throw new CloudRuntimeException(String.format("force10[ip:%s] returns unexpected error[%s] when http getting %s, body dump:%s",
@@ -160,19 +115,18 @@ public void prepareVlan(BaremetalVlanStruct struct) {
160115

161116
@Override
162117
public void removePortFromVlan(BaremetalVlanStruct struct) {
163-
String link = buildLink(struct.getSwitchIp(), String.format("/api/running/ftos/interface/vlan/%s", struct.getVlan()));
118+
String link = buildLink(struct.getSwitchIp(), struct.getVlan());
164119
HttpHeaders headers = createBasicAuthenticationHeader(struct);
165120
HttpEntity<String> request = new HttpEntity<>(headers);
166-
logger.debug(String.format("http get: %s, body: %s", link, request));
167121
ResponseEntity rsp = rest.exchange(link, HttpMethod.GET, request, String.class);
168122
if (rsp.getStatusCode() == HttpStatus.NOT_FOUND) {
169123
logger.debug(String.format("vlan[%s] has been deleted on force10[ip:%s], no need to remove the port[%s] anymore", struct.getVlan(), struct.getSwitchIp(), struct.getPort()));
170124
} else if (rsp.getStatusCode() == HttpStatus.OK) {
171125
PortInfo port = new PortInfo(struct);
172126
XmlObject xml = XmlObjectParser.parseFromString((String)rsp.getBody());
173-
List<XmlObject> ports = xml.getAsList("untagged.tengigabitethernet");
174-
ports.addAll(xml.<XmlObject>getAsList("untagged.gigabitethernet"));
175-
ports.addAll(xml.<XmlObject>getAsList("untagged.fortyGigE"));
127+
List<XmlObject> ports = xml.getAsList("tagged.tengigabitethernet");
128+
ports.addAll(xml.<XmlObject>getAsList("tagged.gigabitethernet"));
129+
ports.addAll(xml.<XmlObject>getAsList("tagged.fortyGigE"));
176130
List<XmlObject> newPorts = new ArrayList<>();
177131
boolean needRemove = false;
178132
for (XmlObject pxml : ports) {
@@ -189,19 +143,11 @@ public void removePortFromVlan(BaremetalVlanStruct struct) {
189143
return;
190144
}
191145

192-
xml.setText(null);
193-
xml.removeElement("mtu");
194-
XmlObject tagged = xml.get("untagged");
195-
tagged.removeAllChildren();
196-
for (XmlObject p : newPorts) {
197-
tagged.putElement(p.getTag(), p);
198-
}
199-
146+
xml.putElement("tagged", newPorts);
200147

201-
request = new HttpEntity<>(xml.dump(), headers);
202-
logger.debug(String.format("http get: %s, body: %s", link, request));
148+
request = new HttpEntity<>(xml.toString(), headers);
203149
rsp = rest.exchange(link, HttpMethod.PUT, request, String.class);
204-
if (!successHttpStatusCode.contains(rsp.getStatusCode())) {
150+
if (rsp.getStatusCode() != HttpStatus.NO_CONTENT) {
205151
throw new CloudRuntimeException(String.format("failed to program vlan[%s] for port[%s] on force10[ip:%s]. http status:%s, body dump:%s",
206152
struct.getVlan(), struct.getPort(), struct.getSwitchIp(), rsp.getStatusCode(), rsp.getBody()));
207153
} else {
@@ -220,8 +166,6 @@ private HttpHeaders createBasicAuthenticationHeader(BaremetalVlanStruct struct)
220166
String base64Creds = new String(base64CredsBytes);
221167
HttpHeaders headers = new HttpHeaders();
222168
headers.add("Authorization", "Basic " + base64Creds);
223-
headers.setAccept(Arrays.asList(MediaType.ALL));
224-
headers.setContentType(MediaType.valueOf("application/vnd.yang.data+xml"));
225169
return headers;
226170
}
227171

scripts/network/ping/baremetal_snat.sh

Lines changed: 1 addition & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -21,34 +21,15 @@ set +u
2121

2222
mgmt_nic_ip=$1
2323
internal_server_ip=$2
24-
gateway_ip=$3
2524

2625
ip route | grep "$internal_server_ip" > /dev/null
2726

2827
if [ $? -ne 0 ]; then
29-
ip route add $internal_server_ip via $gateway_ip
28+
ip route add $internal_server_ip via $mgmt_nic_ip
3029
fi
3130

3231
iptables-save | grep -- "-A POSTROUTING -d $internal_server_ip" > /dev/null
3332

3433
if [ $? -ne 0 ]; then
3534
iptables -t nat -A POSTROUTING -d $internal_server_ip -j SNAT --to-source $mgmt_nic_ip
3635
fi
37-
38-
39-
iptables-save | grep -- "-A INPUT -i eth0 -p udp -m udp --dport 69 -j ACCEPT" > /dev/null
40-
if [ $? -ne 0 ]; then
41-
iptables -I INPUT -i eth0 -p udp -m udp --dport 69 -j ACCEPT
42-
fi
43-
44-
iptables-save | grep -- "-A FORWARD -i eth1 -o eth0 -j ACCEPT" > /dev/null
45-
if [ $? -ne 0 ]; then
46-
iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT
47-
fi
48-
49-
rule="-A FORWARD -d $internal_server_ip/32 -i eth0 -o eth1 -j ACCEPT"
50-
iptables-save | grep -- "$rule" > /dev/null
51-
if [ $? -ne 0 ]; then
52-
iptables -I FORWARD -d $internal_server_ip/32 -i eth0 -o eth1 -j ACCEPT
53-
fi
54-

0 commit comments

Comments
 (0)