Skip to content

Commit b6302d4

Browse files
committed
Merge remote-tracking branch 'origin/4.11'
Conflicts resolved for: engine/orchestration/src/org/apache/cloudstack/engine/orchestration/NetworkOrchestrator.java engine/schema/src/com/cloud/vm/dao/UserVmDaoImpl.java server/src/com/cloud/network/element/VirtualRouterElement.java server/src/com/cloud/vm/UserVmManagerImpl.java tools/marvin/setup.py Signed-off-by: Rohit Yadav <rohit.yadav@shapeblue.com>
2 parents 769a008 + 0c943ab commit b6302d4

27 files changed

Lines changed: 2245 additions & 2632 deletions

File tree

engine/orchestration/src/main/java/org/apache/cloudstack/engine/orchestration/NetworkOrchestrator.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1336,7 +1336,7 @@ public boolean canUpdateInSequence(Network network, boolean forced){
13361336

13371337
//check if the there are no service provider other than virtualrouter.
13381338
for(Provider provider : providers) {
1339-
if (provider!=Provider.VirtualRouter)
1339+
if (provider != Provider.VirtualRouter)
13401340
throw new UnsupportedOperationException("Cannot update the network resources in sequence when providers other than virtualrouter are used");
13411341
}
13421342
//check if routers are in correct state before proceeding with the update

engine/schema/src/main/java/com/cloud/vm/dao/UserVmDaoImpl.java

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -29,11 +29,11 @@
2929
import javax.annotation.PostConstruct;
3030
import javax.inject.Inject;
3131

32+
import org.apache.log4j.Logger;
33+
3234
import com.cloud.network.Network;
3335
import com.cloud.network.dao.NetworkDao;
3436
import com.cloud.network.dao.NetworkVO;
35-
import org.apache.log4j.Logger;
36-
3737
import com.cloud.server.ResourceTag.ResourceObjectType;
3838
import com.cloud.tags.dao.ResourceTagDao;
3939
import com.cloud.user.Account;
@@ -368,9 +368,13 @@ public void saveDetails(UserVmVO vm) {
368368
if (detailsStr == null) {
369369
return;
370370
}
371+
372+
final Map<String, Boolean> visibilityMap = _detailsDao.listDetailsVisibility(vm.getId());
373+
371374
List<UserVmDetailVO> details = new ArrayList<UserVmDetailVO>();
372-
for (String key : detailsStr.keySet()) {
373-
details.add(new UserVmDetailVO(vm.getId(), key, detailsStr.get(key), true));
375+
for (Map.Entry<String, String> entry : detailsStr.entrySet()) {
376+
boolean display = visibilityMap.getOrDefault(entry.getKey(), true);
377+
details.add(new UserVmDetailVO(vm.getId(), entry.getKey(), entry.getValue(), display));
374378
}
375379

376380
_detailsDao.saveDetails(details);

engine/schema/src/main/java/org/apache/cloudstack/resourcedetail/ResourceDetailsDao.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,8 @@ public interface ResourceDetailsDao<R extends ResourceDetail> extends GenericDao
7373

7474
public Map<String, String> listDetailsKeyPairs(long resourceId, boolean forDisplay);
7575

76+
Map<String, Boolean> listDetailsVisibility(long resourceId);
77+
7678
public void saveDetails(List<R> details);
7779

7880
public void addDetail(long resourceId, String key, String value, boolean display);

engine/schema/src/main/java/org/apache/cloudstack/resourcedetail/ResourceDetailsDaoBase.java

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@
2727
import com.cloud.utils.db.SearchCriteria;
2828
import com.cloud.utils.db.TransactionLegacy;
2929

30-
public abstract class ResourceDetailsDaoBase<R extends ResourceDetail> extends GenericDaoBase<R, Long> {
30+
public abstract class ResourceDetailsDaoBase<R extends ResourceDetail> extends GenericDaoBase<R, Long> implements ResourceDetailsDao<R> {
3131
private SearchBuilder<R> AllFieldsSearch;
3232

3333
public ResourceDetailsDaoBase() {
@@ -81,6 +81,18 @@ public Map<String, String> listDetailsKeyPairs(long resourceId) {
8181
return details;
8282
}
8383

84+
public Map<String, Boolean> listDetailsVisibility(long resourceId) {
85+
SearchCriteria<R> sc = AllFieldsSearch.create();
86+
sc.setParameters("resourceId", resourceId);
87+
88+
List<R> results = search(sc, null);
89+
Map<String, Boolean> details = new HashMap<>(results.size());
90+
for (R result : results) {
91+
details.put(result.getName(), result.isDisplay());
92+
}
93+
return details;
94+
}
95+
8496
public List<R> listDetails(long resourceId) {
8597
SearchCriteria<R> sc = AllFieldsSearch.create();
8698
sc.setParameters("resourceId", resourceId);

packaging/centos63/cloud.spec

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -569,7 +569,7 @@ pip install --upgrade /usr/share/cloudstack-marvin/Marvin-*.tar.gz
569569
%attr(0755,root,root) %{_bindir}/%{name}-ssh
570570
%attr(0755,root,root) %{_sysconfdir}/init.d/%{name}-agent
571571
%attr(0644,root,root) %{_sysconfdir}/profile.d/%{name}-agent-profile.sh
572-
%attr(0644,root,root) %{_sysconfdir}/logrotate.d/%{name}-agent
572+
%config(noreplace) %{_sysconfdir}/logrotate.d/%{name}-agent
573573
%attr(0755,root,root) %{_datadir}/%{name}-common/scripts/network/cisco
574574
%config(noreplace) %{_sysconfdir}/%{name}/agent
575575
%dir %{_localstatedir}/log/%{name}/agent

packaging/centos7/cloud.spec

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -516,7 +516,7 @@ pip install --upgrade /usr/share/cloudstack-marvin/Marvin-*.tar.gz
516516
%attr(0644,root,root) %{_unitdir}/%{name}-agent.service
517517
%config(noreplace) %{_sysconfdir}/default/%{name}-agent
518518
%attr(0644,root,root) %{_sysconfdir}/profile.d/%{name}-agent-profile.sh
519-
%attr(0644,root,root) %{_sysconfdir}/logrotate.d/%{name}-agent
519+
%config(noreplace) %{_sysconfdir}/logrotate.d/%{name}-agent
520520
%attr(0755,root,root) %{_datadir}/%{name}-common/scripts/network/cisco
521521
%config(noreplace) %{_sysconfdir}/%{name}/agent
522522
%dir %{_localstatedir}/log/%{name}/agent

server/src/main/java/com/cloud/network/element/VirtualRouterElement.java

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -24,14 +24,12 @@
2424

2525
import javax.inject.Inject;
2626

27-
import com.cloud.utils.net.NetUtils;
28-
import org.springframework.beans.factory.annotation.Autowired;
29-
import org.springframework.beans.factory.annotation.Qualifier;
30-
import com.cloud.network.router.NetworkHelper;
3127
import org.apache.commons.collections.CollectionUtils;
3228
import org.apache.log4j.Logger;
3329
import org.cloud.network.router.deployment.RouterDeploymentDefinition;
3430
import org.cloud.network.router.deployment.RouterDeploymentDefinitionBuilder;
31+
import org.springframework.beans.factory.annotation.Autowired;
32+
import org.springframework.beans.factory.annotation.Qualifier;
3533

3634
import com.google.gson.Gson;
3735

@@ -83,6 +81,7 @@
8381
import com.cloud.network.dao.VirtualRouterProviderDao;
8482
import com.cloud.network.lb.LoadBalancingRule;
8583
import com.cloud.network.lb.LoadBalancingRulesManager;
84+
import com.cloud.network.router.NetworkHelper;
8685
import com.cloud.network.router.VirtualRouter;
8786
import com.cloud.network.router.VirtualRouter.Role;
8887
import com.cloud.network.router.VpcVirtualNetworkApplianceManager;
@@ -103,6 +102,7 @@
103102
import com.cloud.utils.db.QueryBuilder;
104103
import com.cloud.utils.db.SearchCriteria.Op;
105104
import com.cloud.utils.exception.CloudRuntimeException;
105+
import com.cloud.utils.net.NetUtils;
106106
import com.cloud.vm.DomainRouterVO;
107107
import com.cloud.vm.NicProfile;
108108
import com.cloud.vm.ReservationContext;
@@ -703,7 +703,14 @@ public boolean savePassword(final Network network, final NicProfile nic, final V
703703
// save the password in DB
704704
for (final VirtualRouter router : routers) {
705705
if (router.getState() == State.Running) {
706-
return networkTopology.savePasswordToRouter(network, nic, uservm, router);
706+
final boolean result = networkTopology.savePasswordToRouter(network, nic, uservm, router);
707+
if (result) {
708+
// Explicit password reset, while VM hasn't generated a password yet.
709+
final UserVmVO userVmVO = _userVmDao.findById(vm.getId());
710+
userVmVO.setUpdateParameters(false);
711+
_userVmDao.update(userVmVO.getId(), userVmVO);
712+
}
713+
return result;
707714
}
708715
}
709716
final String password = (String) uservm.getParameter(VirtualMachineProfile.Param.VmPassword);

server/src/main/java/com/cloud/vm/UserVmManagerImpl.java

Lines changed: 11 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,11 @@
3939
import javax.inject.Inject;
4040
import javax.naming.ConfigurationException;
4141

42+
import org.apache.commons.codec.binary.Base64;
43+
import org.apache.commons.collections.MapUtils;
44+
import org.apache.commons.lang3.StringUtils;
45+
import org.apache.log4j.Logger;
46+
4247
import org.apache.cloudstack.acl.ControlledEntity.ACLType;
4348
import org.apache.cloudstack.acl.SecurityChecker.AccessType;
4449
import org.apache.cloudstack.affinity.AffinityGroupService;
@@ -91,10 +96,6 @@
9196
import org.apache.cloudstack.storage.datastore.db.StoragePoolVO;
9297
import org.apache.cloudstack.storage.datastore.db.TemplateDataStoreDao;
9398
import org.apache.cloudstack.storage.datastore.db.TemplateDataStoreVO;
94-
import org.apache.commons.codec.binary.Base64;
95-
import org.apache.commons.collections.MapUtils;
96-
import org.apache.commons.lang3.StringUtils;
97-
import org.apache.log4j.Logger;
9899

99100
import com.cloud.agent.AgentManager;
100101
import com.cloud.agent.api.Answer;
@@ -686,10 +687,6 @@ public UserVm resetVMPassword(ResetVMPasswordCmd cmd, String password) throws Re
686687

687688
if (result) {
688689
userVm.setPassword(password);
689-
// update the password in vm_details table too
690-
// Check if an SSH key pair was selected for the instance and if so
691-
// use it to encrypt & save the vm password
692-
encryptAndStorePassword(userVm, password);
693690
} else {
694691
throw new CloudRuntimeException("Failed to reset password for the virtual machine ");
695692
}
@@ -734,7 +731,6 @@ private boolean resetVMPasswordInternal(Long vmId, String password) throws Resou
734731
} else {
735732
final UserVmVO userVm = _vmDao.findById(vmId);
736733
_vmDao.loadDetails(userVm);
737-
userVm.setPassword(password);
738734
// update the password in vm_details table too
739735
// Check if an SSH key pair was selected for the instance and if so
740736
// use it to encrypt & save the vm password
@@ -848,8 +844,9 @@ private boolean resetVMSSHKeyInternal(Long vmId, String sshPublicKey, String pas
848844
userVm.setPassword(password);
849845
//update the encrypted password in vm_details table too
850846
encryptAndStorePassword(userVm, password);
847+
} else {
848+
_vmDao.saveDetails(userVm);
851849
}
852-
_vmDao.saveDetails(userVm);
853850

854851
if (vmInstance.getState() == State.Stopped) {
855852
s_logger.debug("Vm " + vmInstance + " is stopped, not rebooting it as a part of SSH Key reset");
@@ -4463,6 +4460,7 @@ public Pair<UserVmVO, Map<VirtualMachineProfile.Param, Object>> startVirtualMach
44634460
password = DBEncryptionUtil.decrypt(vm.getDetail("password"));
44644461
} else {
44654462
password = _mgr.generateRandomPassword();
4463+
vm.setPassword(password);
44664464
}
44674465
}
44684466

@@ -4501,11 +4499,10 @@ public Pair<UserVmVO, Map<VirtualMachineProfile.Param, Object>> startVirtualMach
45014499
// this value is not being sent to the backend; need only for api
45024500
// display purposes
45034501
if (template.isEnablePassword()) {
4504-
vm.setPassword((String)vmParamPair.second().get(VirtualMachineProfile.Param.VmPassword));
4505-
vm.setUpdateParameters(false);
45064502
if (vm.getDetail("password") != null) {
4507-
userVmDetailsDao.remove(userVmDetailsDao.findDetail(vm.getId(), "password").getId());
4503+
userVmDetailsDao.removeDetail(vm.getId(), "password");
45084504
}
4505+
vm.setUpdateParameters(false);
45094506
_vmDao.update(vm.getId(), vm);
45104507
}
45114508
}
@@ -6183,7 +6180,7 @@ public UserVm restoreVMInternal(Account caller, UserVmVO vm, Long newTemplateId)
61836180
vm.setUpdateParameters(false);
61846181
_vmDao.loadDetails(vm);
61856182
if (vm.getDetail("password") != null) {
6186-
userVmDetailsDao.remove(userVmDetailsDao.findDetail(vm.getId(), "password").getId());
6183+
userVmDetailsDao.removeDetail(vm.getId(), "password");
61876184
}
61886185
_vmDao.update(vm.getId(), vm);
61896186
}

systemvm/debian/opt/cloud/bin/baremetal-vr.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -156,4 +156,4 @@ def notify_provisioning_done(mac):
156156
if __name__ == '__main__':
157157
server = Server()
158158
shell("iptables-save | grep -- '-A INPUT -i eth0 -p tcp -m tcp --dport 10086 -j ACCEPT' > /dev/null || iptables -I INPUT -i eth0 -p tcp -m tcp --dport 10086 -j ACCEPT")
159-
app.run(host='0.0.0.0', port=10086, debug=True)
159+
app.run(host='0.0.0.0', port=10086)

0 commit comments

Comments
 (0)