mirror of
				https://github.com/apache/cloudstack.git
				synced 2025-11-02 20:02:29 +01:00 
			
		
		
		
	bug 7504: Events refactoring
This commit is contained in:
		
							parent
							
								
									bb0e6a0ae3
								
							
						
					
					
						commit
						53d3455cbe
					
				@ -53,7 +53,7 @@ public interface VirtualNetworkApplianceService {
 | 
			
		||||
     * @throws ResourceUnavailableException 
 | 
			
		||||
     * @throws InvalidParameterValueException, PermissionDeniedException
 | 
			
		||||
     */
 | 
			
		||||
    VirtualRouter stopRouter(long routerId) throws ResourceUnavailableException, ConcurrentOperationException;
 | 
			
		||||
    VirtualRouter stopDomainRouter(long routerId) throws ResourceUnavailableException, ConcurrentOperationException;
 | 
			
		||||
    
 | 
			
		||||
    /**
 | 
			
		||||
     * Reboots domain router
 | 
			
		||||
 | 
			
		||||
@ -78,8 +78,8 @@ import com.cloud.dc.dao.DataCenterDao;
 | 
			
		||||
import com.cloud.dc.dao.HostPodDao;
 | 
			
		||||
import com.cloud.deploy.DataCenterDeployment;
 | 
			
		||||
import com.cloud.deploy.DeployDestination;
 | 
			
		||||
import com.cloud.event.Event;
 | 
			
		||||
import com.cloud.event.EventTypes;
 | 
			
		||||
import com.cloud.event.EventUtils;
 | 
			
		||||
import com.cloud.event.EventVO;
 | 
			
		||||
import com.cloud.event.dao.EventDao;
 | 
			
		||||
import com.cloud.exception.AgentUnavailableException;
 | 
			
		||||
@ -344,6 +344,8 @@ public class ConsoleProxyManagerImpl implements ConsoleProxyManager, ConsoleProx
 | 
			
		||||
        try {
 | 
			
		||||
            if (proxyLock.lock(ACQUIRE_GLOBAL_LOCK_TIMEOUT_FOR_SYNC)) {
 | 
			
		||||
                try {
 | 
			
		||||
                    long accountId = proxy.getAccountId();
 | 
			
		||||
                    long startEventId = EventUtils.saveStartedEvent(User.UID_SYSTEM, accountId, EventTypes.EVENT_PROXY_START, "Starting proxy : " + proxy.getName());
 | 
			
		||||
                    proxy = startProxy(proxyVmId);
 | 
			
		||||
 | 
			
		||||
                    if (proxy == null) {
 | 
			
		||||
@ -365,6 +367,7 @@ public class ConsoleProxyManagerImpl implements ConsoleProxyManager, ConsoleProx
 | 
			
		||||
                        if (s_logger.isInfoEnabled()) {
 | 
			
		||||
                            s_logger.info("Unable to start console proxy, proxy vm Id : " + proxyVmId + " will recycle it and restart a new one");
 | 
			
		||||
                        }
 | 
			
		||||
                        EventUtils.saveEvent(User.UID_SYSTEM, accountId, EventVO.LEVEL_ERROR, EventTypes.EVENT_PROXY_START, "Failed to start console proxy", startEventId);
 | 
			
		||||
                        destroyProxy(proxyVmId);
 | 
			
		||||
                        return null;
 | 
			
		||||
                    } else {
 | 
			
		||||
@ -372,6 +375,7 @@ public class ConsoleProxyManagerImpl implements ConsoleProxyManager, ConsoleProx
 | 
			
		||||
                            s_logger.trace("Console proxy " + proxy.getName() + " is started");
 | 
			
		||||
                        }
 | 
			
		||||
 | 
			
		||||
                        EventUtils.saveEvent(User.UID_SYSTEM, accountId, EventVO.LEVEL_INFO, EventTypes.EVENT_PROXY_START, "Started console proxy: "+proxy.getName(), startEventId);
 | 
			
		||||
                        // if it is a new assignment or a changed assignment,
 | 
			
		||||
                        // update the
 | 
			
		||||
                        // record
 | 
			
		||||
@ -644,6 +648,7 @@ public class ConsoleProxyManagerImpl implements ConsoleProxyManager, ConsoleProx
 | 
			
		||||
            s_logger.debug("Assign console proxy from a newly started instance for request from data center : " + dataCenterId);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        long startEventId = EventUtils.saveStartedEvent(User.UID_SYSTEM, Account.ACCOUNT_ID_SYSTEM, EventTypes.EVENT_PROXY_CREATE, "Creating console proxy");
 | 
			
		||||
        Map<String, Object> context = createProxyInstance(dataCenterId);
 | 
			
		||||
 | 
			
		||||
        long proxyVmId = (Long) context.get("proxyVmId");
 | 
			
		||||
@ -651,13 +656,14 @@ public class ConsoleProxyManagerImpl implements ConsoleProxyManager, ConsoleProx
 | 
			
		||||
            if (s_logger.isTraceEnabled()) {
 | 
			
		||||
                s_logger.trace("Creating proxy instance failed, data center id : " + dataCenterId);
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            EventUtils.saveEvent(User.UID_SYSTEM, Account.ACCOUNT_ID_SYSTEM, EventVO.LEVEL_ERROR, EventTypes.EVENT_PROXY_CREATE, "console proxy creation failed", startEventId);
 | 
			
		||||
            return null;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        ConsoleProxyVO proxy = _consoleProxyDao.findById(proxyVmId); 
 | 
			
		||||
       // allocProxyStorage(dataCenterId, proxyVmId);
 | 
			
		||||
        if (proxy != null) {
 | 
			
		||||
            EventUtils.saveEvent(User.UID_SYSTEM, Account.ACCOUNT_ID_SYSTEM, EventVO.LEVEL_INFO, EventTypes.EVENT_PROXY_CREATE, "Succesfully created console proxy", startEventId);
 | 
			
		||||
            SubscriptionMgr.getInstance().notifySubscribers(ConsoleProxyManager.ALERT_SUBJECT, this,
 | 
			
		||||
                    new ConsoleProxyAlertEventArgs(ConsoleProxyAlertEventArgs.PROXY_CREATED, dataCenterId, proxy.getId(), proxy, null));
 | 
			
		||||
            return proxy;
 | 
			
		||||
@ -671,7 +677,7 @@ public class ConsoleProxyManagerImpl implements ConsoleProxyManager, ConsoleProx
 | 
			
		||||
                    this,
 | 
			
		||||
                    new ConsoleProxyAlertEventArgs(ConsoleProxyAlertEventArgs.PROXY_CREATE_FAILURE, dataCenterId, proxyVmId, null,
 | 
			
		||||
                            "Unable to allocate storage"));
 | 
			
		||||
 | 
			
		||||
            EventUtils.saveEvent(User.UID_SYSTEM, Account.ACCOUNT_ID_SYSTEM, EventVO.LEVEL_ERROR, EventTypes.EVENT_PROXY_CREATE, "console proxy creation failed", startEventId);
 | 
			
		||||
            destroyProxyDBOnly(proxyVmId);
 | 
			
		||||
        }
 | 
			
		||||
        return null;
 | 
			
		||||
@ -1254,6 +1260,8 @@ public class ConsoleProxyManagerImpl implements ConsoleProxyManager, ConsoleProx
 | 
			
		||||
        if (proxy != null) {
 | 
			
		||||
            long proxyVmId = proxy.getId();
 | 
			
		||||
            GlobalLock proxyLock = GlobalLock.getInternLock(getProxyLockName(proxyVmId));
 | 
			
		||||
            long accountId = proxy.getAccountId();
 | 
			
		||||
            long startEventId = EventUtils.saveStartedEvent(User.UID_SYSTEM, accountId, EventTypes.EVENT_PROXY_START, "Starting proxy : " + proxy.getName());
 | 
			
		||||
            try {
 | 
			
		||||
                if (proxyLock.lock(ACQUIRE_GLOBAL_LOCK_TIMEOUT_FOR_SYNC)) {
 | 
			
		||||
                    try {
 | 
			
		||||
@ -1276,7 +1284,8 @@ public class ConsoleProxyManagerImpl implements ConsoleProxyManager, ConsoleProx
 | 
			
		||||
                    s_logger.info("Unable to start console proxy for standby capacity, proxy vm Id : " + proxyVmId
 | 
			
		||||
                            + ", will recycle it and start a new one");
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
                EventUtils.saveEvent(User.UID_SYSTEM, accountId, EventVO.LEVEL_ERROR, EventTypes.EVENT_PROXY_START, "Failed to start console proxy", startEventId);
 | 
			
		||||
                
 | 
			
		||||
                if (proxyFromStoppedPool) {
 | 
			
		||||
                    destroyProxy(proxyVmId);
 | 
			
		||||
                }
 | 
			
		||||
@ -1284,6 +1293,8 @@ public class ConsoleProxyManagerImpl implements ConsoleProxyManager, ConsoleProx
 | 
			
		||||
                if (s_logger.isInfoEnabled()) {
 | 
			
		||||
                    s_logger.info("Console proxy " + proxy.getName() + " is started");
 | 
			
		||||
                }
 | 
			
		||||
                
 | 
			
		||||
                EventUtils.saveEvent(User.UID_SYSTEM, accountId, EventVO.LEVEL_INFO, EventTypes.EVENT_PROXY_START, "Started console proxy: "+proxy.getName(), startEventId);
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
@ -1505,11 +1516,6 @@ public class ConsoleProxyManagerImpl implements ConsoleProxyManager, ConsoleProx
 | 
			
		||||
            return false;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        /*
 | 
			
		||||
         * saveStartedEvent(User.UID_SYSTEM, Account.ACCOUNT_ID_SYSTEM,
 | 
			
		||||
         * EventTypes.EVENT_PROXY_REBOOT, "Rebooting console proxy with Id: " +
 | 
			
		||||
         * proxyVmId, startEventId);
 | 
			
		||||
         */
 | 
			
		||||
        if (proxy.getState() == State.Running && proxy.getHostId() != null) {
 | 
			
		||||
            final RebootCommand cmd = new RebootCommand(proxy.getInstanceName());
 | 
			
		||||
            final Answer answer = _agentMgr.easySend(proxy.getHostId(), cmd);
 | 
			
		||||
@ -1526,28 +1532,12 @@ public class ConsoleProxyManagerImpl implements ConsoleProxyManager, ConsoleProx
 | 
			
		||||
                                new ConsoleProxyAlertEventArgs(ConsoleProxyAlertEventArgs.PROXY_REBOOTED, proxy.getDataCenterId(), proxy.getId(),
 | 
			
		||||
                                        proxy, null));
 | 
			
		||||
 | 
			
		||||
                final EventVO event = new EventVO();
 | 
			
		||||
                event.setUserId(User.UID_SYSTEM);
 | 
			
		||||
                event.setAccountId(Account.ACCOUNT_ID_SYSTEM);
 | 
			
		||||
                event.setType(EventTypes.EVENT_PROXY_REBOOT);
 | 
			
		||||
                event.setLevel(EventVO.LEVEL_INFO);
 | 
			
		||||
               // event.setStartId(startEventId);
 | 
			
		||||
                event.setDescription("Console proxy rebooted - " + proxy.getName());
 | 
			
		||||
                _eventDao.persist(event);
 | 
			
		||||
                return true;
 | 
			
		||||
            } else {
 | 
			
		||||
                if (s_logger.isDebugEnabled()) {
 | 
			
		||||
                    s_logger.debug("failed to reboot console proxy : " + proxy.getName());
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
                final EventVO event = new EventVO();
 | 
			
		||||
                event.setUserId(User.UID_SYSTEM);
 | 
			
		||||
                event.setAccountId(Account.ACCOUNT_ID_SYSTEM);
 | 
			
		||||
                event.setType(EventTypes.EVENT_PROXY_REBOOT);
 | 
			
		||||
                event.setLevel(EventVO.LEVEL_ERROR);
 | 
			
		||||
               // event.setStartId(startEventId);
 | 
			
		||||
                event.setDescription("Rebooting console proxy failed - " + proxy.getName());
 | 
			
		||||
                _eventDao.persist(event);
 | 
			
		||||
                return false;
 | 
			
		||||
            }
 | 
			
		||||
        } else {
 | 
			
		||||
@ -1580,11 +1570,7 @@ public class ConsoleProxyManagerImpl implements ConsoleProxyManager, ConsoleProx
 | 
			
		||||
            }
 | 
			
		||||
            return true;
 | 
			
		||||
        }
 | 
			
		||||
        /*
 | 
			
		||||
         * saveStartedEvent(User.UID_SYSTEM, Account.ACCOUNT_ID_SYSTEM,
 | 
			
		||||
         * EventTypes.EVENT_PROXY_DESTROY, "Destroying console proxy with Id: "
 | 
			
		||||
         * + vmId, startEventId);
 | 
			
		||||
         */
 | 
			
		||||
 | 
			
		||||
        if (s_logger.isDebugEnabled()) {
 | 
			
		||||
            s_logger.debug("Destroying console proxy vm " + vmId);
 | 
			
		||||
        }
 | 
			
		||||
@ -1615,15 +1601,6 @@ public class ConsoleProxyManagerImpl implements ConsoleProxyManager, ConsoleProx
 | 
			
		||||
 | 
			
		||||
                _consoleProxyDao.remove(vm.getId());
 | 
			
		||||
 | 
			
		||||
                final EventVO event = new EventVO();
 | 
			
		||||
                event.setUserId(User.UID_SYSTEM);
 | 
			
		||||
                event.setAccountId(Account.ACCOUNT_ID_SYSTEM);
 | 
			
		||||
                event.setType(EventTypes.EVENT_PROXY_DESTROY);
 | 
			
		||||
                event.setLevel(EventVO.LEVEL_INFO);
 | 
			
		||||
                //event.setStartId(startEventId);
 | 
			
		||||
                event.setDescription("Console proxy destroyed - " + vm.getName());
 | 
			
		||||
                _eventDao.persist(event);
 | 
			
		||||
 | 
			
		||||
                txn.commit();
 | 
			
		||||
            } catch (Exception e) {
 | 
			
		||||
                s_logger.error("Caught this error: ", e);
 | 
			
		||||
@ -1650,13 +1627,6 @@ public class ConsoleProxyManagerImpl implements ConsoleProxyManager, ConsoleProx
 | 
			
		||||
 | 
			
		||||
                _consoleProxyDao.remove(vmId);
 | 
			
		||||
 | 
			
		||||
                final EventVO event = new EventVO();
 | 
			
		||||
                event.setUserId(User.UID_SYSTEM);
 | 
			
		||||
                event.setAccountId(Account.ACCOUNT_ID_SYSTEM);
 | 
			
		||||
                event.setType(EventTypes.EVENT_PROXY_DESTROY);
 | 
			
		||||
                event.setLevel(EventVO.LEVEL_INFO);
 | 
			
		||||
                event.setDescription("Console proxy destroyed - " + proxy.getName());
 | 
			
		||||
                _eventDao.persist(event);
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            txn.commit();
 | 
			
		||||
@ -1696,15 +1666,6 @@ public class ConsoleProxyManagerImpl implements ConsoleProxyManager, ConsoleProx
 | 
			
		||||
                        StopAnswer answer = (StopAnswer) _agentMgr.send(proxyHostId, cmd);
 | 
			
		||||
                        if (answer == null || !answer.getResult()) {
 | 
			
		||||
                            s_logger.debug("Unable to stop due to " + (answer == null ? "answer is null" : answer.getDetails()));
 | 
			
		||||
 | 
			
		||||
                            final EventVO event = new EventVO();
 | 
			
		||||
                            event.setUserId(User.UID_SYSTEM);
 | 
			
		||||
                            event.setAccountId(Account.ACCOUNT_ID_SYSTEM);
 | 
			
		||||
                            event.setType(EventTypes.EVENT_PROXY_STOP);
 | 
			
		||||
                            event.setLevel(EventVO.LEVEL_ERROR);
 | 
			
		||||
                            //event.setStartId(startEventId);
 | 
			
		||||
                            event.setDescription("Stopping console proxy failed due to negative answer from agent - " + proxy.getName());
 | 
			
		||||
                            _eventDao.persist(event);
 | 
			
		||||
                            return false;
 | 
			
		||||
                        }
 | 
			
		||||
                        completeStopCommand(proxy, VirtualMachine.Event.OperationSucceeded);
 | 
			
		||||
@ -1714,25 +1675,8 @@ public class ConsoleProxyManagerImpl implements ConsoleProxyManager, ConsoleProx
 | 
			
		||||
                                this,
 | 
			
		||||
                                new ConsoleProxyAlertEventArgs(ConsoleProxyAlertEventArgs.PROXY_DOWN, proxy.getDataCenterId(), proxy.getId(), proxy,
 | 
			
		||||
                                        null));
 | 
			
		||||
 | 
			
		||||
                        final EventVO event = new EventVO();
 | 
			
		||||
                        event.setUserId(User.UID_SYSTEM);
 | 
			
		||||
                        event.setAccountId(Account.ACCOUNT_ID_SYSTEM);
 | 
			
		||||
                        event.setType(EventTypes.EVENT_PROXY_STOP);
 | 
			
		||||
                        event.setLevel(EventVO.LEVEL_INFO);
 | 
			
		||||
                        //event.setStartId(startEventId);
 | 
			
		||||
                        event.setDescription("Console proxy stopped - " + proxy.getName());
 | 
			
		||||
                        _eventDao.persist(event);
 | 
			
		||||
                        return true;
 | 
			
		||||
                    } catch (OperationTimedoutException e) {
 | 
			
		||||
                        final EventVO event = new EventVO();
 | 
			
		||||
                        event.setUserId(User.UID_SYSTEM);
 | 
			
		||||
                        event.setAccountId(Account.ACCOUNT_ID_SYSTEM);
 | 
			
		||||
                        event.setType(EventTypes.EVENT_PROXY_STOP);
 | 
			
		||||
                        event.setLevel(EventVO.LEVEL_ERROR);
 | 
			
		||||
                        //event.setStartId(startEventId);
 | 
			
		||||
                        event.setDescription("Stopping console proxy failed due to operation time out - " + proxy.getName());
 | 
			
		||||
                        _eventDao.persist(event);
 | 
			
		||||
                        throw new AgentUnavailableException(proxy.getHostId());
 | 
			
		||||
                    }
 | 
			
		||||
                } finally {
 | 
			
		||||
@ -1858,21 +1802,6 @@ public class ConsoleProxyManagerImpl implements ConsoleProxyManager, ConsoleProx
 | 
			
		||||
        return "consoleproxy." + id;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private Long saveStartedEvent(Long userId, Long accountId, String type, String description, long startEventId) {
 | 
			
		||||
        EventVO event = new EventVO();
 | 
			
		||||
        event.setUserId(userId);
 | 
			
		||||
        event.setAccountId(accountId);
 | 
			
		||||
        event.setType(type);
 | 
			
		||||
        event.setState(Event.State.Started);
 | 
			
		||||
        event.setDescription(description);
 | 
			
		||||
        event.setStartId(startEventId);
 | 
			
		||||
        event = _eventDao.persist(event);
 | 
			
		||||
        if (event != null) {
 | 
			
		||||
            return event.getId();
 | 
			
		||||
        }
 | 
			
		||||
        return null;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public boolean configure(String name, Map<String, Object> params) throws ConfigurationException {
 | 
			
		||||
        if (s_logger.isInfoEnabled()) {
 | 
			
		||||
 | 
			
		||||
@ -113,7 +113,7 @@ public class DhcpElement extends AdapterBase implements NetworkElement{
 | 
			
		||||
        if (router == null) {
 | 
			
		||||
            return true;
 | 
			
		||||
        }
 | 
			
		||||
        return _routerMgr.stopRouter(router.getId(), 1);
 | 
			
		||||
        return _routerMgr.stopRouter(router.getId());
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
 | 
			
		||||
@ -124,7 +124,7 @@ public class VirtualRouterElement extends AdapterBase implements NetworkElement
 | 
			
		||||
        if (router == null) {
 | 
			
		||||
            return true;
 | 
			
		||||
        }
 | 
			
		||||
        return _routerMgr.stopRouter(router.getId(), 1);
 | 
			
		||||
        return _routerMgr.stopRouter(router.getId());
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
 | 
			
		||||
@ -68,7 +68,7 @@ public interface VirtualNetworkApplianceManager extends Manager {
 | 
			
		||||
    
 | 
			
		||||
    boolean destroyRouter(long routerId);
 | 
			
		||||
    
 | 
			
		||||
    boolean stopRouter(long routerId, long eventId);
 | 
			
		||||
    boolean stopRouter(long routerId);
 | 
			
		||||
    
 | 
			
		||||
    boolean getRouterStatistics(long vmId, Map<String, long[]> netStats, Map<String, long[]> diskStats);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -345,15 +345,6 @@ public class VirtualNetworkApplianceManagerImpl implements VirtualNetworkApplian
 | 
			
		||||
            return false;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        EventVO event = new EventVO();
 | 
			
		||||
        event.setUserId(User.UID_SYSTEM);
 | 
			
		||||
        event.setAccountId(router.getAccountId());
 | 
			
		||||
        event.setType(EventTypes.EVENT_ROUTER_DESTROY);
 | 
			
		||||
        event.setState(Event.State.Started);
 | 
			
		||||
        event.setParameters("id=" + routerId);
 | 
			
		||||
        event.setDescription("Starting to destroy router : " + router.getName());
 | 
			
		||||
        event = _eventDao.persist(event);
 | 
			
		||||
 | 
			
		||||
        try {
 | 
			
		||||
            if (router.getState() == State.Destroyed || router.getState() == State.Expunging || router.getRemoved() != null) {
 | 
			
		||||
                if (s_logger.isDebugEnabled()) {
 | 
			
		||||
@ -362,10 +353,15 @@ public class VirtualNetworkApplianceManagerImpl implements VirtualNetworkApplian
 | 
			
		||||
                return true;
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            long startEventId = EventUtils.saveStartedEvent(User.UID_SYSTEM, router.getAccountId(), EventTypes.EVENT_ROUTER_STOP, "Starting to stop router : " + router.getName());
 | 
			
		||||
            if (!stop(router)) {
 | 
			
		||||
                s_logger.debug("Unable to stop the router: " + routerId);
 | 
			
		||||
                EventUtils.saveEvent(User.UID_SYSTEM, router.getAccountId(), EventVO.LEVEL_ERROR, EventTypes.EVENT_ROUTER_STOP, "Unable to stop router: " + router.getName(), startEventId);
 | 
			
		||||
                return false;
 | 
			
		||||
            } else {
 | 
			
		||||
                EventUtils.saveEvent(User.UID_SYSTEM, router.getAccountId(), EventVO.LEVEL_INFO, EventTypes.EVENT_ROUTER_STOP, "successfully stopped router : " + router.getName(), startEventId);
 | 
			
		||||
            }
 | 
			
		||||
            
 | 
			
		||||
            router = _routerDao.findById(routerId);
 | 
			
		||||
            if (!_itMgr.stateTransitTo(router, VirtualMachine.Event.DestroyRequested, router.getHostId())) {
 | 
			
		||||
                s_logger.debug("VM " + router.toString() + " is not in a state to be destroyed.");
 | 
			
		||||
@ -390,15 +386,6 @@ public class VirtualNetworkApplianceManagerImpl implements VirtualNetworkApplian
 | 
			
		||||
            s_logger.debug("Successfully destroyed router: " + routerId);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        EventVO completedEvent = new EventVO();
 | 
			
		||||
        completedEvent.setUserId(User.UID_SYSTEM);
 | 
			
		||||
        completedEvent.setAccountId(router.getAccountId());
 | 
			
		||||
        completedEvent.setType(EventTypes.EVENT_ROUTER_DESTROY);
 | 
			
		||||
        completedEvent.setStartId(event.getId());
 | 
			
		||||
        completedEvent.setParameters("id=" + routerId);
 | 
			
		||||
        completedEvent.setDescription("successfully destroyed router : " + router.getName());
 | 
			
		||||
        _eventDao.persist(completedEvent);
 | 
			
		||||
 | 
			
		||||
        return true;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
@ -619,7 +606,7 @@ public class VirtualNetworkApplianceManagerImpl implements VirtualNetworkApplian
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public boolean stopRouter(final long routerId, long eventId) {
 | 
			
		||||
    public boolean stopRouter(final long routerId) {
 | 
			
		||||
        AsyncJobExecutor asyncExecutor = BaseAsyncJobExecutor.getCurrentExecutor();
 | 
			
		||||
        if (asyncExecutor != null) {
 | 
			
		||||
            AsyncJobVO job = asyncExecutor.getJob();
 | 
			
		||||
@ -633,15 +620,23 @@ public class VirtualNetworkApplianceManagerImpl implements VirtualNetworkApplian
 | 
			
		||||
        if (s_logger.isDebugEnabled()) {
 | 
			
		||||
            s_logger.debug("Stopping router " + routerId);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        return stop(_routerDao.findById(routerId));
 | 
			
		||||
        DomainRouterVO router = _routerDao.findById(routerId);
 | 
			
		||||
        long startEventId = EventUtils.saveStartedEvent(User.UID_SYSTEM, router.getAccountId(), EventTypes.EVENT_ROUTER_STOP, "Starting to stop router : " + router.getName());
 | 
			
		||||
        if (!stop(router)) {
 | 
			
		||||
            s_logger.debug("Unable to stop the router: " + routerId);
 | 
			
		||||
            EventUtils.saveEvent(User.UID_SYSTEM, router.getAccountId(), EventVO.LEVEL_ERROR, EventTypes.EVENT_ROUTER_STOP, "Unable to stop router: " + router.getName(), startEventId);
 | 
			
		||||
            return false;
 | 
			
		||||
        } else {
 | 
			
		||||
            EventUtils.saveEvent(User.UID_SYSTEM, router.getAccountId(), EventVO.LEVEL_INFO, EventTypes.EVENT_ROUTER_STOP, "successfully stopped router : " + router.getName(), startEventId);
 | 
			
		||||
            return true;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public VirtualRouter stopRouter(StopRouterCmd cmd) throws InvalidParameterValueException, PermissionDeniedException,
 | 
			
		||||
            ResourceUnavailableException, ConcurrentOperationException {
 | 
			
		||||
        if (_useNewNetworking) {
 | 
			
		||||
            return stopRouter(cmd.getId());
 | 
			
		||||
            return stopDomainRouter(cmd.getId());
 | 
			
		||||
        }
 | 
			
		||||
        Long routerId = cmd.getId();
 | 
			
		||||
        Account account = UserContext.current().getAccount();
 | 
			
		||||
@ -656,7 +651,7 @@ public class VirtualNetworkApplianceManagerImpl implements VirtualNetworkApplian
 | 
			
		||||
            throw new PermissionDeniedException("Unable to stop router with id " + routerId + ". Permission denied");
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        boolean success = stopRouter(routerId, 0);
 | 
			
		||||
        boolean success = stopRouter(routerId);
 | 
			
		||||
 | 
			
		||||
        if (success) {
 | 
			
		||||
            return _routerDao.findById(routerId);
 | 
			
		||||
@ -1208,7 +1203,7 @@ public class VirtualNetworkApplianceManagerImpl implements VirtualNetworkApplian
 | 
			
		||||
                s_logger.info("Found " + ids.size() + " routers to stop. ");
 | 
			
		||||
 | 
			
		||||
                for (final Long id : ids) {
 | 
			
		||||
                    stopRouter(id, 0);
 | 
			
		||||
                    stopRouter(id);
 | 
			
		||||
                }
 | 
			
		||||
                s_logger.info("Done my job.  Time to rest.");
 | 
			
		||||
            } catch (Exception e) {
 | 
			
		||||
@ -1314,6 +1309,7 @@ public class VirtualNetworkApplianceManagerImpl implements VirtualNetworkApplian
 | 
			
		||||
 | 
			
		||||
        DomainRouterVO router = _routerDao.findByNetworkConfiguration(guestNetwork.getId());
 | 
			
		||||
        if (router == null) {
 | 
			
		||||
            long startEventId = EventUtils.saveStartedEvent(User.UID_SYSTEM, owner.getId(), EventTypes.EVENT_ROUTER_CREATE, "Starting to create router for accountId : " +owner.getAccountId());
 | 
			
		||||
            long id = _routerDao.getNextInSequence(Long.class, "id");
 | 
			
		||||
            if (s_logger.isDebugEnabled()) {
 | 
			
		||||
                s_logger.debug("Creating the router " + id);
 | 
			
		||||
@ -1357,9 +1353,26 @@ public class VirtualNetworkApplianceManagerImpl implements VirtualNetworkApplian
 | 
			
		||||
            router = new DomainRouterVO(id, _offering.getId(), VirtualMachineName.getRouterName(id, _instance), _template.getId(),
 | 
			
		||||
                    _template.getGuestOSId(), owner.getDomainId(), owner.getId(), guestNetwork.getId(), _offering.getOfferHA());
 | 
			
		||||
            router = _itMgr.allocate(router, _template, _offering, networks, plan, null, owner);
 | 
			
		||||
            if(router != null){
 | 
			
		||||
                EventUtils.saveEvent(User.UID_SYSTEM, owner.getAccountId(), EventVO.LEVEL_INFO, EventTypes.EVENT_ROUTER_CREATE, "successfully create router : " + router.getName(), startEventId);  
 | 
			
		||||
            } else {
 | 
			
		||||
                EventUtils.saveEvent(User.UID_SYSTEM, owner.getAccountId(), EventVO.LEVEL_ERROR, EventTypes.EVENT_ROUTER_CREATE, "router creation failed", startEventId);
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        return _itMgr.start(router, null, _accountService.getSystemUser(), _accountService.getSystemAccount(), null);
 | 
			
		||||
        
 | 
			
		||||
        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 = _itMgr.start(router, null, _accountService.getSystemUser(), _accountService.getSystemAccount(), null);
 | 
			
		||||
            if(router != null){
 | 
			
		||||
                EventUtils.saveEvent(User.UID_SYSTEM, owner.getAccountId(), EventVO.LEVEL_INFO, EventTypes.EVENT_ROUTER_START, "successfully started router : " + router.getName(), startEventId);  
 | 
			
		||||
            } else {
 | 
			
		||||
                EventUtils.saveEvent(User.UID_SYSTEM, owner.getAccountId(), EventVO.LEVEL_ERROR, EventTypes.EVENT_ROUTER_START, "failed to start router", startEventId);
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
        return router;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
@ -1377,6 +1390,7 @@ public class VirtualNetworkApplianceManagerImpl implements VirtualNetworkApplian
 | 
			
		||||
 | 
			
		||||
        DomainRouterVO router = _routerDao.findByNetworkConfiguration(guestNetwork.getId());
 | 
			
		||||
        if (router == null) {
 | 
			
		||||
            long startEventId = EventUtils.saveStartedEvent(User.UID_SYSTEM, owner.getId(), EventTypes.EVENT_ROUTER_CREATE, "Starting to create router for accountId : " +owner.getAccountId()); 
 | 
			
		||||
            long id = _routerDao.getNextInSequence(Long.class, "id");
 | 
			
		||||
            if (s_logger.isDebugEnabled()) {
 | 
			
		||||
                s_logger.debug("Creating the router " + id);
 | 
			
		||||
@ -1396,9 +1410,23 @@ public class VirtualNetworkApplianceManagerImpl implements VirtualNetworkApplian
 | 
			
		||||
                    _template.getGuestOSId(), owner.getDomainId(), owner.getId(), guestNetwork.getId(), _offering.getOfferHA());
 | 
			
		||||
            router.setRole(Role.DHCP_USERDATA);
 | 
			
		||||
            router = _itMgr.allocate(router, _template, _offering, networks, plan, null, owner);
 | 
			
		||||
            if(router != null){
 | 
			
		||||
                EventUtils.saveEvent(User.UID_SYSTEM, owner.getAccountId(), EventVO.LEVEL_INFO, EventTypes.EVENT_ROUTER_CREATE, "successfully create router : " + router.getName(), startEventId);  
 | 
			
		||||
            } else {
 | 
			
		||||
                EventUtils.saveEvent(User.UID_SYSTEM, owner.getAccountId(), EventVO.LEVEL_ERROR, EventTypes.EVENT_ROUTER_CREATE, "router creation failed", startEventId);
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        return _itMgr.start(router, null, _accountService.getSystemUser(), _accountService.getSystemAccount(), null);
 | 
			
		||||
        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 = _itMgr.start(router, null, _accountService.getSystemUser(), _accountService.getSystemAccount(), null);
 | 
			
		||||
            if(router != null){
 | 
			
		||||
                EventUtils.saveEvent(User.UID_SYSTEM, owner.getAccountId(), EventVO.LEVEL_INFO, EventTypes.EVENT_ROUTER_START, "successfully started router : " + router.getName(), startEventId);  
 | 
			
		||||
            } else {
 | 
			
		||||
                EventUtils.saveEvent(User.UID_SYSTEM, owner.getAccountId(), EventVO.LEVEL_ERROR, EventTypes.EVENT_ROUTER_START, "failed to start router", startEventId);
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
        return router;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
@ -1757,7 +1785,7 @@ public class VirtualNetworkApplianceManagerImpl implements VirtualNetworkApplian
 | 
			
		||||
     *             , PermissionDeniedException
 | 
			
		||||
     */
 | 
			
		||||
    @Override
 | 
			
		||||
    public VirtualRouter stopRouter(long routerId) throws ResourceUnavailableException, ConcurrentOperationException {
 | 
			
		||||
    public VirtualRouter stopDomainRouter(long routerId) throws ResourceUnavailableException, ConcurrentOperationException {
 | 
			
		||||
        UserContext context = UserContext.current();
 | 
			
		||||
        Account account = context.getAccount();
 | 
			
		||||
        long accountId = account.getId();
 | 
			
		||||
 | 
			
		||||
@ -4219,9 +4219,6 @@ public class ManagementServerImpl implements ManagementServer {
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public VirtualMachine startSystemVm(long vmId) {
 | 
			
		||||
        UserContext context = UserContext.current();
 | 
			
		||||
        long callerId = context.getUserId();
 | 
			
		||||
        long callerAccountId = context.getAccount().getId(); 
 | 
			
		||||
        
 | 
			
		||||
        VMInstanceVO systemVm = _vmInstanceDao.findByIdTypes(vmId, VirtualMachine.Type.ConsoleProxy, VirtualMachine.Type.SecondaryStorageVm);
 | 
			
		||||
        if (systemVm == null) {
 | 
			
		||||
@ -4239,10 +4236,6 @@ public class ManagementServerImpl implements ManagementServer {
 | 
			
		||||
    
 | 
			
		||||
    @Override
 | 
			
		||||
    public VirtualMachine stopSystemVm(long vmId) {
 | 
			
		||||
        UserContext context = UserContext.current();
 | 
			
		||||
        
 | 
			
		||||
        long callerId = context.getUserId();
 | 
			
		||||
        long callerAccountId = context.getAccount().getId();
 | 
			
		||||
        
 | 
			
		||||
        // verify parameters      
 | 
			
		||||
        VMInstanceVO systemVm = _vmInstanceDao.findByIdTypes(vmId, VirtualMachine.Type.ConsoleProxy, VirtualMachine.Type.SecondaryStorageVm);
 | 
			
		||||
 | 
			
		||||
@ -2360,7 +2360,7 @@ public class StorageManagerImpl implements StorageManager, StorageService, Manag
 | 
			
		||||
           			//if the instance is of type domain router vm, call the network manager
 | 
			
		||||
        			if(vmInstance.getType().equals(VirtualMachine.Type.DomainRouter))
 | 
			
		||||
        			{   
 | 
			
		||||
        				if(!_routerMgr.stopRouter(vmInstance.getId(), 0))
 | 
			
		||||
        				if(!_routerMgr.stopRouter(vmInstance.getId()))
 | 
			
		||||
        				{
 | 
			
		||||
        				    String errorMsg = "There was an error stopping the domain router id: "+vmInstance.getId()+" ,cannot enable primary storage maintenance";
 | 
			
		||||
        					s_logger.warn(errorMsg);
 | 
			
		||||
 | 
			
		||||
@ -819,7 +819,7 @@ public class AccountManagerImpl implements AccountManager, AccountService {
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            for (UserVmVO vm : vms) {
 | 
			
		||||
                long startEventId = EventUtils.saveStartedEvent(userId, vm.getAccountId(), EventTypes.EVENT_VM_DESTROY, "Destroyed VM instance : " + vm.getName(), 0);
 | 
			
		||||
                long startEventId = EventUtils.saveStartedEvent(userId, vm.getAccountId(), EventTypes.EVENT_VM_DESTROY, "Destroyed VM instance : " + vm.getName());
 | 
			
		||||
                if (!_vmMgr.destroyVirtualMachine(userId, vm.getId())) {
 | 
			
		||||
                    s_logger.error("Unable to destroy vm: " + vm.getId());
 | 
			
		||||
                    accountCleanupNeeded = true;
 | 
			
		||||
@ -846,9 +846,13 @@ public class AccountManagerImpl implements AccountManager, AccountService {
 | 
			
		||||
 | 
			
		||||
            boolean routersCleanedUp = true;
 | 
			
		||||
            for (DomainRouterVO router : routers) {
 | 
			
		||||
                long startEventId = EventUtils.saveStartedEvent(userId, router.getAccountId(), EventTypes.EVENT_ROUTER_DESTROY, "Starting to destroy router : " + router.getName());
 | 
			
		||||
                if (!_routerMgr.destroyRouter(router.getId())) {
 | 
			
		||||
                    s_logger.error("Unable to destroy router: " + router.getId());
 | 
			
		||||
                    routersCleanedUp = false;
 | 
			
		||||
                    EventUtils.saveEvent(userId, router.getAccountId(), EventVO.LEVEL_ERROR, EventTypes.EVENT_ROUTER_DESTROY, "Unable to destroy router: " + router.getName(), startEventId);
 | 
			
		||||
                } else {
 | 
			
		||||
                    EventUtils.saveEvent(userId, router.getAccountId(), EventVO.LEVEL_INFO, EventTypes.EVENT_ROUTER_DESTROY, "successfully destroyed router : " + router.getName(), startEventId);
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
@ -967,7 +971,7 @@ public class AccountManagerImpl implements AccountManager, AccountService {
 | 
			
		||||
 | 
			
		||||
        List<DomainRouterVO> routers = _routerDao.listBy(accountId);
 | 
			
		||||
        for (DomainRouterVO router : routers) {
 | 
			
		||||
            success = (success && _routerMgr.stopRouter(router.getId(), 0));
 | 
			
		||||
            success = (success && _routerMgr.stopRouter(router.getId()));
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        return success;
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user