Merge branch 'master' of git.cloud.com:/var/lib/git/cloudstack-oss

This commit is contained in:
Ragnar B. Johannsson 2011-01-12 23:31:42 +00:00
commit bf747a4a2e
9 changed files with 119 additions and 93 deletions

View File

@ -218,14 +218,19 @@ Requires: jpackage-utils
Requires: %{name}-daemonize
Requires: /sbin/service
Requires: /sbin/chkconfig
%if 0%{?rhel} >= 6
Requires: cloud-kvm
%else
Requires: kvm
%endif
%if 0%{?fedora} >= 12
Requires: qemu-cloud-system-x86
Requires: qemu-cloud-img
%endif
%if 0%{?rhel} >= 6
Requires: cloud-qemu-kvm
Requires: cloud-qemu-img
%endif

11
deps/.project vendored Normal file
View File

@ -0,0 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>deps</name>
<comment></comment>
<projects>
</projects>
<buildSpec>
</buildSpec>
<natures>
</natures>
</projectDescription>

View File

@ -201,10 +201,10 @@ public class ApiXmlDocWriter {
regularUserSorted.close();
//gzip directory with xml doc
zipDir(dirName + "xmldoc.zip", xmlDocDir);
//zipDir(dirName + "xmldoc.zip", xmlDocDir);
//Delete directory
deleteDir(new File(xmlDocDir));
//deleteDir(new File(xmlDocDir));
} catch (Exception ex) {
ex.printStackTrace();

View File

@ -32,25 +32,26 @@ import com.cloud.deploy.DeployDestination;
import com.cloud.exception.ConcurrentOperationException;
import com.cloud.exception.InsufficientCapacityException;
import com.cloud.exception.ResourceUnavailableException;
import com.cloud.host.Host;
import com.cloud.network.LoadBalancerVO;
import com.cloud.network.Network;
import com.cloud.network.Network.Capability;
import com.cloud.network.Network.GuestIpType;
import com.cloud.network.Network.Provider;
import com.cloud.network.Network.Service;
import com.cloud.network.NetworkManager;
import com.cloud.network.PublicIpAddress;
import com.cloud.network.RemoteAccessVpn;
import com.cloud.network.VpnUser;
import com.cloud.network.Network.Capability;
import com.cloud.network.Network.GuestIpType;
import com.cloud.network.Network.Provider;
import com.cloud.network.Network.Service;
import com.cloud.network.dao.LoadBalancerDao;
import com.cloud.network.dao.NetworkDao;
import com.cloud.network.lb.LoadBalancingRule;
import com.cloud.network.lb.LoadBalancingRule.LbDestination;
import com.cloud.network.lb.LoadBalancingRulesManager;
import com.cloud.network.lb.LoadBalancingRule.LbDestination;
import com.cloud.network.router.VirtualNetworkApplianceManager;
import com.cloud.network.rules.FirewallRule;
import com.cloud.network.rules.FirewallRule.Purpose;
import com.cloud.network.rules.PortForwardingRule;
import com.cloud.network.rules.FirewallRule.Purpose;
import com.cloud.network.vpn.RemoteAccessVpnElement;
import com.cloud.offering.NetworkOffering;
import com.cloud.offerings.dao.NetworkOfferingDao;
@ -63,8 +64,8 @@ import com.cloud.vm.NicProfile;
import com.cloud.vm.ReservationContext;
import com.cloud.vm.UserVmManager;
import com.cloud.vm.VirtualMachine;
import com.cloud.vm.VirtualMachine.State;
import com.cloud.vm.VirtualMachineProfile;
import com.cloud.vm.VirtualMachine.State;
import com.cloud.vm.dao.DomainRouterDao;
import com.cloud.vm.dao.UserVmDao;
@ -96,6 +97,7 @@ public class VirtualRouterElement extends AdapterBase implements NetworkElement,
if (!canHandle(guestConfig.getGuestType(), dest.getDataCenter())) {
return false;
}
_routerMgr.deployVirtualRouter(guestConfig, dest, context.getAccount());
return true;
@ -111,6 +113,30 @@ public class VirtualRouterElement extends AdapterBase implements NetworkElement,
@SuppressWarnings("unchecked")
VirtualMachineProfile<UserVm> uservm = (VirtualMachineProfile<UserVm>)vm;
DomainRouterVO router = _routerDao.findById(uservm.getVirtualMachine().getDomainRouterId());
if(router != null) {
State state = router.getState();
if ( state == State.Starting ) {
// wait 300 seconds
for ( int i = 0; i < 300; ) {
try {
Thread.sleep(2000);
} catch (Exception e) {
}
i += 2;
state = router.getState();
if ( state != State.Starting ) {
break;
}
}
}
// TODO: need to find a better exception to throw!
if(state != State.Running)
throw new ResourceUnavailableException("Virtual router is not available", Host.class, router.getHostId());
}
return _routerMgr.addVirtualMachineIntoNetwork(config, nic, uservm, dest, context, false) != null;
} else {
return false;

View File

@ -72,10 +72,9 @@ import com.cloud.configuration.ConfigurationManager;
import com.cloud.configuration.dao.ConfigurationDao;
import com.cloud.configuration.dao.ResourceLimitDao;
import com.cloud.dc.DataCenter;
import com.cloud.dc.DataCenter.NetworkType;
import com.cloud.dc.DataCenterVO;
import com.cloud.dc.HostPodVO;
import com.cloud.dc.Vlan;
import com.cloud.dc.DataCenter.NetworkType;
import com.cloud.dc.dao.AccountVlanMapDao;
import com.cloud.dc.dao.DataCenterDao;
import com.cloud.dc.dao.HostPodDao;
@ -105,18 +104,18 @@ import com.cloud.network.IPAddressVO;
import com.cloud.network.IpAddress;
import com.cloud.network.LoadBalancerVO;
import com.cloud.network.Network;
import com.cloud.network.Network.GuestIpType;
import com.cloud.network.NetworkManager;
import com.cloud.network.NetworkVO;
import com.cloud.network.Networks.BroadcastDomainType;
import com.cloud.network.Networks.IsolationType;
import com.cloud.network.Networks.TrafficType;
import com.cloud.network.PublicIpAddress;
import com.cloud.network.RemoteAccessVpn;
import com.cloud.network.SshKeysDistriMonitor;
import com.cloud.network.VirtualNetworkApplianceService;
import com.cloud.network.VpnUser;
import com.cloud.network.VpnUserVO;
import com.cloud.network.Network.GuestIpType;
import com.cloud.network.Networks.BroadcastDomainType;
import com.cloud.network.Networks.IsolationType;
import com.cloud.network.Networks.TrafficType;
import com.cloud.network.addr.PublicIp;
import com.cloud.network.dao.FirewallRulesDao;
import com.cloud.network.dao.IPAddressDao;
@ -127,8 +126,8 @@ import com.cloud.network.dao.NetworkRuleConfigDao;
import com.cloud.network.dao.RemoteAccessVpnDao;
import com.cloud.network.dao.VpnUserDao;
import com.cloud.network.lb.LoadBalancingRule;
import com.cloud.network.lb.LoadBalancingRule.LbDestination;
import com.cloud.network.lb.LoadBalancingRulesManager;
import com.cloud.network.lb.LoadBalancingRule.LbDestination;
import com.cloud.network.ovs.GreTunnelException;
import com.cloud.network.ovs.OvsNetworkManager;
import com.cloud.network.router.VirtualRouter.Role;
@ -177,11 +176,11 @@ import com.cloud.vm.ReservationContext;
import com.cloud.vm.UserVmVO;
import com.cloud.vm.VMInstanceVO;
import com.cloud.vm.VirtualMachine;
import com.cloud.vm.VirtualMachine.State;
import com.cloud.vm.VirtualMachineGuru;
import com.cloud.vm.VirtualMachineManager;
import com.cloud.vm.VirtualMachineName;
import com.cloud.vm.VirtualMachineProfile;
import com.cloud.vm.VirtualMachine.State;
import com.cloud.vm.dao.DomainRouterDao;
import com.cloud.vm.dao.NicDao;
import com.cloud.vm.dao.UserVmDao;
@ -1034,24 +1033,9 @@ public class VirtualNetworkApplianceManagerImpl implements VirtualNetworkApplian
} else {
EventUtils.saveEvent(User.UID_SYSTEM, owner.getAccountId(), EventVO.LEVEL_ERROR, EventTypes.EVENT_ROUTER_CREATE, "router creation failed", startEventId);
}
}
State state = router.getState();
if ( state == State.Starting ) {
// wait 300 seconds
for ( int i = 0; i < 300; ) {
try {
Thread.sleep(2);
} catch (Exception e) {
}
i += 2;
state = router.getState();
if ( state != State.Starting ) {
break;
}
}
}
State state = router.getState();
if (state != State.Starting && state != State.Running) {
long startEventId = EventUtils.saveStartedEvent(User.UID_SYSTEM, owner.getId(), EventTypes.EVENT_ROUTER_START, "Starting router : " +router.getName());
router = this.start(router, _accountService.getSystemUser(), _accountService.getSystemAccount());
@ -1061,11 +1045,8 @@ public class VirtualNetworkApplianceManagerImpl implements VirtualNetworkApplian
EventUtils.saveEvent(User.UID_SYSTEM, owner.getAccountId(), EventVO.LEVEL_ERROR, EventTypes.EVENT_ROUTER_START, "failed to start router", startEventId);
}
}
state = router.getState();
if ( state == State.Running ) {
return router;
}
throw new CloudRuntimeException(router.getName() + " is not running , it is in " + state);
return router;
}
@Override

View File

@ -62,6 +62,7 @@ public class UserVmDaoImpl extends GenericDaoBase<UserVmVO, Long> implements Use
protected final SearchBuilder<UserVmVO> DestroySearch;
protected SearchBuilder<UserVmVO> AccountDataCenterVirtualSearch;
protected SearchBuilder<UserVmVO> UserVmSearch;
protected final Attribute _updateTimeAttr;
protected final UserVmDetailsDaoImpl _detailsDao = ComponentLocator.inject(UserVmDetailsDaoImpl.class);
@ -323,18 +324,18 @@ public class UserVmDaoImpl extends GenericDaoBase<UserVmVO, Long> implements Use
@Override
public List<UserVmVO> listByNetworkId(long networkId) {
if (AccountDataCenterVirtualSearch == null) {
if (UserVmSearch == null) {
NicDao _nicDao = ComponentLocator.getLocator("management-server").getDao(NicDao.class);
SearchBuilder<NicVO> nicSearch = _nicDao.createSearchBuilder();
nicSearch.and("networkId", nicSearch.entity().getNetworkId(), SearchCriteria.Op.EQ);
nicSearch.and("ip4Address", nicSearch.entity().getIp4Address(), SearchCriteria.Op.NNULL);
AccountDataCenterVirtualSearch = createSearchBuilder();
AccountDataCenterVirtualSearch.join("nicSearch", nicSearch, AccountDataCenterVirtualSearch.entity().getId(), nicSearch.entity().getInstanceId(), JoinBuilder.JoinType.INNER);
AccountDataCenterVirtualSearch.done();
UserVmSearch = createSearchBuilder();
UserVmSearch.join("nicSearch", nicSearch, UserVmSearch.entity().getId(), nicSearch.entity().getInstanceId(), JoinBuilder.JoinType.INNER);
UserVmSearch.done();
}
SearchCriteria<UserVmVO> sc = AccountDataCenterVirtualSearch.create();
SearchCriteria<UserVmVO> sc = UserVmSearch.create();
sc.setJoinParameters("nicSearch", "networkId", networkId);
return listBy(sc);

View File

@ -174,12 +174,9 @@ function bindStartVMButton() {
inProcessText: "Starting Instance....",
asyncJobResponse: "startvirtualmachineresponse",
afterActionSeccessFn: function(json, $midmenuItem1, id) {
var jsonObj = json.queryasyncjobresultresponse.jobresult.virtualmachine;
vmToMidmenu(jsonObj, $midmenuItem1);
if( ($("#right_panel_content #tab_content_details").length > 0)
&& ($("#right_panel_content #tab_content_details").data("jsonObj") != null )
&& (jsonObj.id == $("#right_panel_content #tab_content_details").data("jsonObj").id))
var jsonObj = json.queryasyncjobresultresponse.jobresult.virtualmachine;
vmToMidmenu(jsonObj, $midmenuItem1);
if(jsonObj.id.toString() == $("#right_panel_content #tab_content_details").find("#id").text())
vmToRightPanel($midmenuItem1);
}
}
@ -225,10 +222,8 @@ function bindStopVMButton() {
afterActionSeccessFn: function(json, $midmenuItem1, id) {
var jsonObj = json.queryasyncjobresultresponse.jobresult.virtualmachine;
vmToMidmenu(jsonObj, $midmenuItem1);
if( ($("#right_panel_content #tab_content_details").length > 0)
&& ($("#right_panel_content #tab_content_details").data("jsonObj") != null )
&& (jsonObj.id == $("#right_panel_content #tab_content_details").data("jsonObj").id))
vmToRightPanel($midmenuItem1);
if(jsonObj.id.toString() == $("#right_panel_content #tab_content_details").find("#id").text())
vmToRightPanel($midmenuItem1);
}
}
@ -273,10 +268,8 @@ function bindRebootVMButton() {
afterActionSeccessFn: function(json, $midmenuItem1, id) {
var jsonObj = json.queryasyncjobresultresponse.jobresult.virtualmachine;
vmToMidmenu(jsonObj, $midmenuItem1);
if( ($("#right_panel_content #tab_content_details").length > 0)
&& ($("#right_panel_content #tab_content_details").data("jsonObj") != null )
&& (jsonObj.id == $("#right_panel_content #tab_content_details").data("jsonObj").id))
vmToRightPanel($midmenuItem1);
if(jsonObj.id.toString() == $("#right_panel_content #tab_content_details").find("#id").text())
vmToRightPanel($midmenuItem1);
}
}
@ -321,10 +314,8 @@ function bindDestroyVMButton() {
afterActionSeccessFn: function(json, $midmenuItem1, id) {
var jsonObj = json.queryasyncjobresultresponse.jobresult.virtualmachine;
vmToMidmenu(jsonObj, $midmenuItem1);
if( ($("#right_panel_content #tab_content_details").length > 0)
&& ($("#right_panel_content #tab_content_details").data("jsonObj") != null )
&& (jsonObj.id == $("#right_panel_content #tab_content_details").data("jsonObj").id))
vmToRightPanel($midmenuItem1);
if(jsonObj.id.toString() == $("#right_panel_content #tab_content_details").find("#id").text())
vmToRightPanel($midmenuItem1);
}
}

View File

@ -399,14 +399,14 @@ function doActionToMidMenu(id, apiInfo, apiCommand) {
$("body").stopTime(timerKey);
$midmenuItem1.find("#content").removeClass("inaction");
$midmenuItem1.find("#spinning_wheel").hide();
hideDetailsTabActionSpinningWheel(id, inProcessText);
hideDetailsTabActionSpinningWheel(id, inProcessText, $midmenuItem1);
if (result.jobstatus == 1) { // Succeeded
$midmenuItem1.find("#info_icon").removeClass("error").show();
$midmenuItem1.data("afterActionInfo", (label + " action succeeded."));
afterActionSeccessFn(json, $midmenuItem1, id);
} else if (result.jobstatus == 2) { // Failed
$midmenuItem1.find("#info_icon").addClass("error").show();
$midmenuItem1.data("afterActionInfo", (label + " action failed. Reason: " + fromdb(result.jobresult.errortext)));
} else if (result.jobstatus == 2) { // Failed
var errorMsg = label + " action failed. Reason: " + fromdb(result.jobresult.errortext);
handleErrorInMidMenu2(errorMsg, $midmenuItem1, id, inProcessText);
}
}
},
@ -438,7 +438,7 @@ function doActionToMidMenu(id, apiInfo, apiCommand) {
$midmenuItem1.find("#spinning_wheel").hide();
$midmenuItem1.find("#info_icon").removeClass("error").show();
$midmenuItem1.data("afterActionInfo", (label + " action succeeded."));
hideDetailsTabActionSpinningWheel(id, inProcessText);
hideDetailsTabActionSpinningWheel(id, inProcessText, $midmenuItem1);
afterActionSeccessFn(json, $midmenuItem1, id);
},
error: function(XMLHttpResponse) {
@ -449,29 +449,34 @@ function doActionToMidMenu(id, apiInfo, apiCommand) {
//Sync job (end) *****
}
function handleErrorInMidMenu(XMLHttpResponse, $midmenuItem1, id, inProcessText) {
$midmenuItem1.find("#content").removeClass("inaction");
$midmenuItem1.find("#spinning_wheel").hide();
$midmenuItem1.find("#info_icon").addClass("error").show();
$midmenuItem1.find("#first_row").text("Action failed");
hideDetailsTabActionSpinningWheel(id, inProcessText);
function handleErrorInMidMenu(XMLHttpResponse, $midmenuItem1, id, inProcessText) {
var errorMsg = "";
if(XMLHttpResponse.responseText != null & XMLHttpResponse.responseText.length > 0) {
errorMsg = parseXMLHttpResponse(XMLHttpResponse);
}
handleErrorInMidMenu2(errorMsg, $midmenuItem1, id, inProcessText);
}
function handleErrorInMidMenu2(errorMsg, $midmenuItem1, id, inProcessText) {
$midmenuItem1.find("#content").removeClass("inaction");
$midmenuItem1.find("#spinning_wheel").hide();
$midmenuItem1.find("#info_icon").addClass("error").show();
//$midmenuItem1.find("#first_row").text("Action failed");
$midmenuItem1.data("afterActionInfo", errorMsg);
hideDetailsTabActionSpinningWheel(id, inProcessText, $midmenuItem1);
if(errorMsg.length > 0)
$midmenuItem1.find("#second_row").text(fromdb(errorMsg));
else
$midmenuItem1.find("#second_row").html("&nbsp;");
}
function hideDetailsTabActionSpinningWheel(id, inProcessText) {
function hideDetailsTabActionSpinningWheel(id, inProcessText, $midmenuItem1) {
var $detailsTab = $("#right_panel_content #tab_content_details");
var jsonObj = $detailsTab.data("jsonObj");
var $spinningWheel = $detailsTab.find("#spinning_wheel");
if(jsonObj != null && ("id" in jsonObj) && jsonObj.id == id && ($spinningWheel.find("#description").text() == inProcessText)) {
$spinningWheel.hide();
if((id == $detailsTab.find("#id").text()) && (inProcessText == $spinningWheel.find("#description").text())) {
copyActionInfoFromMidMenuToRightPanel($midmenuItem1);
}
}
@ -506,14 +511,17 @@ function copyActionInfoFromMidMenuToRightPanel($midmenuItem1) {
}
var $midMenuSpinningWheel = $midmenuItem1.find("#spinning_wheel");
if($midMenuSpinningWheel.css("display") != "none") {
var $detailsTabSpinningWheel = $("#right_panel_content #tab_content_details").find("#spinning_wheel");
var $detailsTabSpinningWheel = $("#right_panel_content #tab_content_details").find("#spinning_wheel");
if($midMenuSpinningWheel.css("display") != "none") {
if($detailsTabSpinningWheel.css("display") == "none") {
var inProcessText = $midMenuSpinningWheel.data("inProcessText");
$detailsTabSpinningWheel.find("#description").text(inProcessText);
$detailsTabSpinningWheel.show();
}
}
else {
$detailsTabSpinningWheel.hide();
}
}
//***** actions for middle menu (end) **************************************************************************

View File

@ -1,13 +1,16 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" path="src"/>
<classpathentry kind="src" path="test"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
<classpathentry kind="lib" path="/thirdparty/log4j-1.2.15.jar"/>
<classpathentry kind="lib" path="/thirdparty/cglib-nodep-2.2.jar"/>
<classpathentry kind="lib" path="/thirdparty/ehcache-1.5.0.jar"/>
<classpathentry kind="lib" path="/thirdparty/commons-dbcp-1.2.2.jar"/>
<classpathentry kind="lib" path="/thirdparty/commons-pool-1.4.jar"/>
<classpathentry kind="lib" path="/thirdparty/junit-4.8.1.jar"/>
<classpathentry kind="output" path="bin"/>
</classpath>
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" path="src"/>
<classpathentry kind="src" path="test"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
<classpathentry kind="lib" path="/thirdparty/log4j-1.2.15.jar"/>
<classpathentry kind="lib" path="/thirdparty/cglib-nodep-2.2.jar"/>
<classpathentry kind="lib" path="/thirdparty/ehcache-1.5.0.jar"/>
<classpathentry kind="lib" path="/thirdparty/commons-dbcp-1.2.2.jar"/>
<classpathentry kind="lib" path="/thirdparty/commons-pool-1.4.jar"/>
<classpathentry kind="lib" path="/thirdparty/junit-4.8.1.jar"/>
<classpathentry kind="lib" path="/deps/cloud-bcprov-jdk16-1.45.jar"/>
<classpathentry kind="lib" path="/deps/cloud-jsch-0.1.42.jar"/>
<classpathentry kind="lib" path="/deps/cloud-commons-codec-1.4.jar"/>
<classpathentry kind="output" path="bin"/>
</classpath>