This commit is contained in:
Kelven Yang 2013-09-17 16:29:48 -07:00
parent 37f4a120fd
commit 832db1b398
13 changed files with 246 additions and 163 deletions

View File

@ -0,0 +1,31 @@
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
package com.cloud.event;
import static java.lang.annotation.ElementType.*;
import static java.lang.annotation.RetentionPolicy.*;
import java.lang.annotation.Retention;
import java.lang.annotation.Target;
@Target({ TYPE, METHOD })
@Retention(RUNTIME)
public @interface ActionEvents {
ActionEvent[] value();
}

View File

@ -42,7 +42,9 @@ public class CallContext {
private String contextId;
private Account account;
private long startEventId = 0;
private String eventDescription;
private String eventDetails;
private String eventType;
private User user;
private final Map<Object, Object> context = new HashMap<Object, Object>();
@ -212,6 +214,30 @@ public class CallContext {
return eventDetails;
}
public String getEventType() {
return eventType;
}
public void setEventType(String eventType) {
this.eventType = eventType;
}
public String getEventDescription() {
return eventDescription;
}
public void setEventDescription(String eventDescription) {
this.eventDescription = eventDescription;
}
public static void setActionEventInfo(String eventType, String description) {
CallContext context = CallContext.current();
if ( context != null ) {
context.setEventType(eventType);
context.setEventDescription(description);
}
}
@Override
public String toString() {
return new StringBuffer("CCtxt[acct=").append(account.getId())

View File

@ -69,58 +69,58 @@ public interface ConfigurationManager {
*/
String updateConfiguration(long userId, String name, String category, String value, String scope, Long id);
/**
* Creates a new service offering
*
* @param name
* @param cpu
* @param ramSize
* @param speed
* @param displayText
* @param localStorageRequired
* @param offerHA
* @param domainId
* @param volatileVm
* @param hostTag
* @param networkRate
* TODO
* @param id
* @param useVirtualNetwork
* @param deploymentPlanner
* @param details
* @param bytesReadRate
* @param bytesWriteRate
* @param iopsReadRate
* @param iopsWriteRate
* @return ID
*/
ServiceOfferingVO createServiceOffering(long userId, boolean isSystem, VirtualMachine.Type vm_typeType, String name, int cpu, int ramSize, int speed, String displayText, boolean localStorageRequired,
boolean offerHA, boolean limitResourceUse, boolean volatileVm, String tags, Long domainId, String hostTag, Integer networkRate, String deploymentPlanner, Map<String, String> details,
Long bytesReadRate, Long bytesWriteRate, Long iopsReadRate, Long iopsWriteRate);
// /**
// * Creates a new service offering
// *
// * @param name
// * @param cpu
// * @param ramSize
// * @param speed
// * @param displayText
// * @param localStorageRequired
// * @param offerHA
// * @param domainId
// * @param volatileVm
// * @param hostTag
// * @param networkRate
// * TODO
// * @param id
// * @param useVirtualNetwork
// * @param deploymentPlanner
// * @param details
// * @param bytesReadRate
// * @param bytesWriteRate
// * @param iopsReadRate
// * @param iopsWriteRate
// * @return ID
// */
// ServiceOfferingVO createServiceOffering(long userId, boolean isSystem, VirtualMachine.Type vm_typeType, String name, int cpu, int ramSize, int speed, String displayText, boolean localStorageRequired,
// boolean offerHA, boolean limitResourceUse, boolean volatileVm, String tags, Long domainId, String hostTag, Integer networkRate, String deploymentPlanner, Map<String, String> details,
// Long bytesReadRate, Long bytesWriteRate, Long iopsReadRate, Long iopsWriteRate);
/**
* Creates a new disk offering
*
* @param domainId
* @param name
* @param description
* @param numGibibytes
* @param tags
* @param isCustomized
* @param localStorageRequired
* @param isDisplayOfferingEnabled
* @param isCustomizedIops (is admin allowing users to set custom iops?)
* @param minIops
* @param maxIops
* @param bytesReadRate
* @param bytesWriteRate
* @param iopsReadRate
* @param iopsWriteRate
* @return newly created disk offering
*/
DiskOfferingVO createDiskOffering(Long domainId, String name, String description, Long numGibibytes, String tags, boolean isCustomized,
boolean localStorageRequired, boolean isDisplayOfferingEnabled, Boolean isCustomizedIops, Long minIops, Long maxIops,
Long bytesReadRate, Long bytesWriteRate, Long iopsReadRate, Long iopsWriteRate);
// /**
// * Creates a new disk offering
// *
// * @param domainId
// * @param name
// * @param description
// * @param numGibibytes
// * @param tags
// * @param isCustomized
// * @param localStorageRequired
// * @param isDisplayOfferingEnabled
// * @param isCustomizedIops (is admin allowing users to set custom iops?)
// * @param minIops
// * @param maxIops
// * @param bytesReadRate
// * @param bytesWriteRate
// * @param iopsReadRate
// * @param iopsWriteRate
// * @return newly created disk offering
// */
// DiskOfferingVO createDiskOffering(Long domainId, String name, String description, Long numGibibytes, String tags, boolean isCustomized,
// boolean localStorageRequired, boolean isDisplayOfferingEnabled, Boolean isCustomizedIops, Long minIops, Long maxIops,
// Long bytesReadRate, Long bytesWriteRate, Long iopsReadRate, Long iopsWriteRate);
/**
* Creates a new pod

View File

@ -55,22 +55,22 @@ public interface FirewallManager extends FirewallService {
boolean revokeFirewallRulesForIp(long ipId, long userId, Account caller) throws ResourceUnavailableException;
/**
* Revokes a firewall rule
*
* @param ruleId
* the id of the rule to revoke.
* @param caller
* TODO
* @param userId
* TODO
* @return
*/
boolean revokeFirewallRule(long ruleId, boolean apply, Account caller, long userId);
// /**
// * Revokes a firewall rule
// *
// * @param ruleId
// * the id of the rule to revoke.
// * @param caller
// * TODO
// * @param userId
// * TODO
// * @return
// */
// boolean revokeFirewallRule(long ruleId, boolean apply, Account caller, long userId);
FirewallRule createFirewallRule(Long ipAddrId, Account caller, String xId, Integer portStart, Integer portEnd, String protocol, List<String> sourceCidrList, Integer icmpCode, Integer icmpType, Long relatedRuleId,
FirewallRule.FirewallRuleType type, Long networkId, FirewallRule.TrafficType traffictype)
throws NetworkRuleConflictException;
// FirewallRule createFirewallRule(Long ipAddrId, Account caller, String xId, Integer portStart, Integer portEnd, String protocol, List<String> sourceCidrList, Integer icmpCode, Integer icmpType, Long relatedRuleId,
// FirewallRule.FirewallRuleType type, Long networkId, FirewallRule.TrafficType traffictype)
// throws NetworkRuleConflictException;
FirewallRule createRuleForAllCidrs(long ipAddrId, Account caller, Integer startPort, Integer endPort, String protocol, Integer icmpCode, Integer icmpType, Long relatedRuleId, long networkId) throws NetworkRuleConflictException;

View File

@ -1979,6 +1979,7 @@ public class ConfigurationManagerImpl extends ManagerBase implements Configurati
}
@Override
@ActionEvent(eventType = EventTypes.EVENT_SERVICE_OFFERING_CREATE, eventDescription = "creating service offering")
public ServiceOffering createServiceOffering(CreateServiceOfferingCmd cmd) {
Long userId = CallContext.current().getCallingUserId();
@ -2079,9 +2080,7 @@ public class ConfigurationManagerImpl extends ManagerBase implements Configurati
cmd.getBytesReadRate(), cmd.getBytesWriteRate(), cmd.getIopsReadRate(), cmd.getIopsWriteRate());
}
@Override
@ActionEvent(eventType = EventTypes.EVENT_SERVICE_OFFERING_CREATE, eventDescription = "creating service offering")
public ServiceOfferingVO createServiceOffering(long userId, boolean isSystem, VirtualMachine.Type vm_type,
protected ServiceOfferingVO createServiceOffering(long userId, boolean isSystem, VirtualMachine.Type vm_type,
String name, int cpu, int ramSize, int speed, String displayText, boolean localStorageRequired,
boolean offerHA, boolean limitResourceUse, boolean volatileVm, String tags, Long domainId, String hostTag,
Integer networkRate, String deploymentPlanner, Map<String, String> details, Long bytesReadRate, Long bytesWriteRate, Long iopsReadRate, Long iopsWriteRate) {
@ -2182,9 +2181,7 @@ public class ConfigurationManagerImpl extends ManagerBase implements Configurati
}
}
@Override
@ActionEvent(eventType = EventTypes.EVENT_DISK_OFFERING_CREATE, eventDescription = "creating disk offering")
public DiskOfferingVO createDiskOffering(Long domainId, String name, String description, Long numGibibytes, String tags, boolean isCustomized,
protected DiskOfferingVO createDiskOffering(Long domainId, String name, String description, Long numGibibytes, String tags, boolean isCustomized,
boolean localStorageRequired, boolean isDisplayOfferingEnabled, Boolean isCustomizedIops, Long minIops, Long maxIops,
Long bytesReadRate, Long bytesWriteRate, Long iopsReadRate, Long iopsWriteRate) {
long diskSize = 0;// special case for custom disk offerings
@ -2263,6 +2260,7 @@ public class ConfigurationManagerImpl extends ManagerBase implements Configurati
}
@Override
@ActionEvent(eventType = EventTypes.EVENT_DISK_OFFERING_CREATE, eventDescription = "creating disk offering")
public DiskOffering createDiskOffering(CreateDiskOfferingCmd cmd) {
String name = cmd.getOfferingName();
String description = cmd.getDisplayText();

View File

@ -17,15 +17,14 @@
package com.cloud.event;
import java.lang.reflect.Method;
import org.apache.log4j.Logger;
import java.util.ArrayList;
import java.util.List;
import org.apache.cloudstack.context.CallContext;
import com.cloud.utils.component.ComponentMethodInterceptor;
public class ActionEventInterceptor implements ComponentMethodInterceptor {
private static final Logger s_logger = Logger.getLogger(ActionEventInterceptor.class);
public ActionEventInterceptor() {
}
@ -33,19 +32,15 @@ public class ActionEventInterceptor implements ComponentMethodInterceptor {
@Override
public Object interceptStart(Method method, Object target) {
EventVO event = null;
ActionEvent actionEvent = method.getAnnotation(ActionEvent.class);
if (actionEvent != null) {
for ( ActionEvent actionEvent : getActionEvents(method) ) {
boolean async = actionEvent.async();
if(async){
CallContext ctx = CallContext.current();
long userId = ctx.getCallingUserId();
long accountId = ctx.getCallingAccountId();
long startEventId = ctx.getStartEventId();
String eventDescription = actionEvent.eventDescription();
if(ctx.getEventDetails() != null){
eventDescription += ". "+ctx.getEventDetails();
}
ActionEventUtils.onStartedActionEvent(userId, accountId, actionEvent.eventType(), eventDescription, startEventId);
String eventDescription = getEventDescription(actionEvent, ctx);
String eventType = getEventType(actionEvent, ctx);
ActionEventUtils.onStartedActionEventFromContext(eventType, eventDescription);
}
}
return event;
@ -53,43 +48,45 @@ public class ActionEventInterceptor implements ComponentMethodInterceptor {
@Override
public void interceptComplete(Method method, Object target, Object event) {
ActionEvent actionEvent = method.getAnnotation(ActionEvent.class);
if (actionEvent != null) {
for ( ActionEvent actionEvent : getActionEvents(method) ) {
CallContext ctx = CallContext.current();
long userId = ctx.getCallingUserId();
long accountId = ctx.getCallingAccountId();
long startEventId = ctx.getStartEventId();
String eventDescription = actionEvent.eventDescription();
if(ctx.getEventDetails() != null){
eventDescription += ". "+ctx.getEventDetails();
}
String eventDescription = getEventDescription(actionEvent, ctx);
String eventType = getEventType(actionEvent, ctx);
if ( eventType.equals("") )
return;
if(actionEvent.create()){
//This start event has to be used for subsequent events of this action
startEventId = ActionEventUtils.onCreatedActionEvent(userId, accountId, EventVO.LEVEL_INFO, actionEvent.eventType(), "Successfully created entity for "+eventDescription);
startEventId = ActionEventUtils.onCreatedActionEvent(userId, accountId, EventVO.LEVEL_INFO, eventType, "Successfully created entity for "+eventDescription);
ctx.setStartEventId(startEventId);
} else {
ActionEventUtils.onCompletedActionEvent(userId, accountId, EventVO.LEVEL_INFO, actionEvent.eventType(), "Successfully completed "+eventDescription, startEventId);
ActionEventUtils.onCompletedActionEvent(userId, accountId, EventVO.LEVEL_INFO, eventType, "Successfully completed "+eventDescription, startEventId);
}
}
}
@Override
public void interceptException(Method method, Object target, Object event) {
ActionEvent actionEvent = method.getAnnotation(ActionEvent.class);
if (actionEvent != null) {
for ( ActionEvent actionEvent : getActionEvents(method) ) {
CallContext ctx = CallContext.current();
long userId = ctx.getCallingUserId();
long accountId = ctx.getCallingAccountId();
long startEventId = ctx.getStartEventId();
String eventDescription = actionEvent.eventDescription();
if(ctx.getEventDetails() != null){
eventDescription += ". "+ctx.getEventDetails();
}
String eventDescription = getEventDescription(actionEvent, ctx);
String eventType = getEventType(actionEvent, ctx);
if ( eventType.equals("") )
return;
if(actionEvent.create()){
long eventId = ActionEventUtils.onCreatedActionEvent(userId, accountId, EventVO.LEVEL_ERROR, actionEvent.eventType(), "Error while creating entity for "+eventDescription);
long eventId = ActionEventUtils.onCreatedActionEvent(userId, accountId, EventVO.LEVEL_ERROR, eventType, "Error while creating entity for "+eventDescription);
ctx.setStartEventId(eventId);
} else {
ActionEventUtils.onCompletedActionEvent(userId, accountId, EventVO.LEVEL_ERROR, actionEvent.eventType(), "Error while "+eventDescription, startEventId);
ActionEventUtils.onCompletedActionEvent(userId, accountId, EventVO.LEVEL_ERROR, eventType, "Error while "+eventDescription, startEventId);
}
}
}
@ -101,6 +98,49 @@ public class ActionEventInterceptor implements ComponentMethodInterceptor {
return true;
}
ActionEvents events = method.getAnnotation(ActionEvents.class);
if ( events != null ) {
return true;
}
return false;
}
protected List<ActionEvent> getActionEvents(Method m) {
List<ActionEvent> result = new ArrayList<ActionEvent>();
ActionEvents events = m.getAnnotation(ActionEvents.class);
if ( events != null ) {
for ( ActionEvent e : events.value() ) {
result.add(e);
}
}
ActionEvent e = m.getAnnotation(ActionEvent.class);
if ( e != null ) {
result.add(e);
}
return result;
}
protected String getEventType(ActionEvent actionEvent, CallContext ctx) {
String type = ctx.getEventType();
return type == null ? actionEvent.eventType() : type;
}
protected String getEventDescription(ActionEvent actionEvent, CallContext ctx) {
String eventDescription = ctx.getEventDescription();
if ( eventDescription == null ) {
eventDescription = actionEvent.eventDescription();
}
if(ctx.getEventDetails() != null){
eventDescription += ". "+ctx.getEventDetails();
}
return eventDescription;
}
}

View File

@ -27,7 +27,6 @@ import javax.inject.Inject;
import org.apache.log4j.Logger;
import org.springframework.beans.factory.NoSuchBeanDefinitionException;
import org.apache.cloudstack.context.CallContext;
import org.apache.cloudstack.framework.events.EventBus;
import org.apache.cloudstack.framework.events.EventBusException;
@ -95,6 +94,21 @@ public class ActionEventUtils {
return event.getId();
}
public static void startNestedActionEvent(String eventType, String eventDescription) {
CallContext.setActionEventInfo(eventType, eventDescription);
onStartedActionEventFromContext(eventType, eventDescription);
}
public static void onStartedActionEventFromContext(String eventType, String eventDescription) {
CallContext ctx = CallContext.current();
long userId = ctx.getCallingUserId();
long accountId = ctx.getCallingAccountId();
long startEventId = ctx.getStartEventId();
if ( ! eventType.equals("") )
ActionEventUtils.onStartedActionEvent(userId, accountId, eventType, eventDescription, startEventId);
}
/*
* Save event after starting execution of an async job
*/

View File

@ -155,6 +155,7 @@ public class FirewallManagerImpl extends ManagerBase implements FirewallService,
}
@Override
@ActionEvent(eventType = EventTypes.EVENT_FIREWALL_OPEN, eventDescription = "creating firewall rule", create = true)
public FirewallRule createEgressFirewallRule(FirewallRule rule) throws NetworkRuleConflictException {
Account caller = CallContext.current().getCallingAccount();
@ -169,6 +170,7 @@ public class FirewallManagerImpl extends ManagerBase implements FirewallService,
}
@Override
@ActionEvent(eventType = EventTypes.EVENT_FIREWALL_OPEN, eventDescription = "creating firewall rule", create = true)
public FirewallRule createIngressFirewallRule(FirewallRule rule) throws NetworkRuleConflictException {
Account caller = CallContext.current().getCallingAccount();
Long sourceIpAddressId = rule.getSourceIpAddressId();
@ -179,9 +181,7 @@ public class FirewallManagerImpl extends ManagerBase implements FirewallService,
}
@DB
@Override
@ActionEvent(eventType = EventTypes.EVENT_FIREWALL_OPEN, eventDescription = "creating firewall rule", create = true)
public FirewallRule createFirewallRule(Long ipAddrId, Account caller, String xId, Integer portStart,
protected FirewallRule createFirewallRule(Long ipAddrId, Account caller, String xId, Integer portStart,
Integer portEnd, String protocol, List<String> sourceCidrList, Integer icmpCode, Integer icmpType,
Long relatedRuleId, FirewallRule.FirewallRuleType type, Long networkId, FirewallRule.TrafficType trafficType) throws NetworkRuleConflictException {
@ -688,9 +688,7 @@ public class FirewallManagerImpl extends ManagerBase implements FirewallService,
return true;
}
@Override
@ActionEvent(eventType = EventTypes.EVENT_FIREWALL_CLOSE, eventDescription = "revoking firewall rule", async = true)
public boolean revokeFirewallRule(long ruleId, boolean apply, Account caller, long userId) {
protected boolean revokeFirewallRule(long ruleId, boolean apply, Account caller, long userId) {
FirewallRuleVO rule = _firewallDao.findById(ruleId);
if (rule == null || rule.getPurpose() != Purpose.Firewall) {
@ -727,6 +725,7 @@ public class FirewallManagerImpl extends ManagerBase implements FirewallService,
}
@Override
@ActionEvent(eventType = EventTypes.EVENT_FIREWALL_CLOSE, eventDescription = "revoking firewall rule", async = true)
public boolean revokeFirewallRule(long ruleId, boolean apply) {
Account caller = CallContext.current().getCallingAccount();
long userId = CallContext.current().getCallingUserId();
@ -770,6 +769,7 @@ public class FirewallManagerImpl extends ManagerBase implements FirewallService,
}
@Override
@ActionEvent(eventType = EventTypes.EVENT_FIREWALL_CLOSE, eventDescription = "revoking firewall rule", async = true)
public boolean revokeFirewallRulesForIp(long ipId, long userId, Account caller) throws ResourceUnavailableException {
List<FirewallRule> rules = new ArrayList<FirewallRule>();
@ -799,6 +799,7 @@ public class FirewallManagerImpl extends ManagerBase implements FirewallService,
}
@Override
@ActionEvent(eventType = EventTypes.EVENT_FIREWALL_OPEN, eventDescription = "creating firewall rule", create = true)
public FirewallRule createRuleForAllCidrs(long ipAddrId, Account caller,
Integer startPort, Integer endPort, String protocol, Integer icmpCode, Integer icmpType, Long relatedRuleId, long networkId)
throws NetworkRuleConflictException {
@ -817,6 +818,7 @@ public class FirewallManagerImpl extends ManagerBase implements FirewallService,
}
@Override
@ActionEvent(eventType = EventTypes.EVENT_FIREWALL_CLOSE, eventDescription = "revoking firewall rule", async = true)
public boolean revokeAllFirewallRulesForNetwork(long networkId, long userId, Account caller) throws ResourceUnavailableException {
List<FirewallRule> rules = new ArrayList<FirewallRule>();
@ -860,6 +862,7 @@ public class FirewallManagerImpl extends ManagerBase implements FirewallService,
}
@Override
@ActionEvent(eventType = EventTypes.EVENT_FIREWALL_CLOSE, eventDescription = "revoking firewall rule", async = true)
public boolean revokeFirewallRulesForVm(long vmId) {
boolean success = true;
UserVmVO vm = _vmDao.findByIdIncludingRemoved(vmId);
@ -916,6 +919,7 @@ public class FirewallManagerImpl extends ManagerBase implements FirewallService,
}
@Override
@ActionEvent(eventType = EventTypes.EVENT_FIREWALL_OPEN, eventDescription = "creating firewall rule", create = true)
public boolean addSystemFirewallRules(IPAddressVO ip, Account acct) {
List<FirewallRuleVO> systemRules = _firewallDao.listSystemRules();
for (FirewallRuleVO rule : systemRules) {

View File

@ -2107,12 +2107,10 @@ public class ManagementServerImpl extends ManagerBase implements ManagementServe
return _consoleProxyMgr.assignProxy(dataCenterId, userVmId);
}
@ActionEvent(eventType = EventTypes.EVENT_PROXY_START, eventDescription = "starting console proxy Vm", async = true)
private ConsoleProxyVO startConsoleProxy(long instanceId) {
return _consoleProxyMgr.startProxy(instanceId);
}
@ActionEvent(eventType = EventTypes.EVENT_PROXY_STOP, eventDescription = "stopping console proxy Vm", async = true)
private ConsoleProxyVO stopConsoleProxy(VMInstanceVO systemVm, boolean isForced) throws ResourceUnavailableException, OperationTimedoutException,
ConcurrentOperationException {
@ -2120,14 +2118,12 @@ public class ManagementServerImpl extends ManagerBase implements ManagementServe
return _consoleProxyDao.findById(systemVm.getId());
}
@ActionEvent(eventType = EventTypes.EVENT_PROXY_REBOOT, eventDescription = "rebooting console proxy Vm", async = true)
private ConsoleProxyVO rebootConsoleProxy(long instanceId) {
_consoleProxyMgr.rebootProxy(instanceId);
return _consoleProxyDao.findById(instanceId);
}
@ActionEvent(eventType = EventTypes.EVENT_PROXY_DESTROY, eventDescription = "destroying console proxy Vm", async = true)
public ConsoleProxyVO destroyConsoleProxy(long instanceId) {
protected ConsoleProxyVO destroyConsoleProxy(long instanceId) {
ConsoleProxyVO proxy = _consoleProxyDao.findById(instanceId);
if (_consoleProxyMgr.destroyProxy(instanceId)) {
@ -2168,7 +2164,6 @@ public class ManagementServerImpl extends ManagerBase implements ManagementServe
}
@Override
@ActionEvent(eventType = EventTypes.EVENT_DOMAIN_UPDATE, eventDescription = "updating Domain")
@DB
public DomainVO updateDomain(UpdateDomainCmd cmd) {
Long domainId = cmd.getId();
@ -2988,12 +2983,10 @@ public class ManagementServerImpl extends ManagerBase implements ManagementServe
return _poolDao.searchAndCount(sc, searchFilter);
}
@ActionEvent(eventType = EventTypes.EVENT_SSVM_START, eventDescription = "starting secondary storage Vm", async = true)
public SecondaryStorageVmVO startSecondaryStorageVm(long instanceId) {
private SecondaryStorageVmVO startSecondaryStorageVm(long instanceId) {
return _secStorageVmMgr.startSecStorageVm(instanceId);
}
@ActionEvent(eventType = EventTypes.EVENT_SSVM_STOP, eventDescription = "stopping secondary storage Vm", async = true)
private SecondaryStorageVmVO stopSecondaryStorageVm(VMInstanceVO systemVm, boolean isForced) throws ResourceUnavailableException,
OperationTimedoutException, ConcurrentOperationException {
@ -3001,14 +2994,12 @@ public class ManagementServerImpl extends ManagerBase implements ManagementServe
return _secStorageVmDao.findById(systemVm.getId());
}
@ActionEvent(eventType = EventTypes.EVENT_SSVM_REBOOT, eventDescription = "rebooting secondary storage Vm", async = true)
public SecondaryStorageVmVO rebootSecondaryStorageVm(long instanceId) {
_secStorageVmMgr.rebootSecStorageVm(instanceId);
return _secStorageVmDao.findById(instanceId);
}
@ActionEvent(eventType = EventTypes.EVENT_SSVM_DESTROY, eventDescription = "destroying secondary storage Vm", async = true)
public SecondaryStorageVmVO destroySecondaryStorageVm(long instanceId) {
protected SecondaryStorageVmVO destroySecondaryStorageVm(long instanceId) {
SecondaryStorageVmVO secStorageVm = _secStorageVmDao.findById(instanceId);
if (_secStorageVmMgr.destroySecStorageVm(instanceId)) {
return secStorageVm;
@ -3102,6 +3093,7 @@ public class ManagementServerImpl extends ManagerBase implements ManagementServe
}
@Override
@ActionEvent(eventType = "", eventDescription = "", async = true)
public VirtualMachine startSystemVM(long vmId) {
VMInstanceVO systemVm = _vmInstanceDao.findByIdTypes(vmId, VirtualMachine.Type.ConsoleProxy, VirtualMachine.Type.SecondaryStorageVm);
@ -3112,8 +3104,10 @@ public class ManagementServerImpl extends ManagerBase implements ManagementServe
}
if (systemVm.getType() == VirtualMachine.Type.ConsoleProxy) {
ActionEventUtils.startNestedActionEvent(EventTypes.EVENT_PROXY_START, "starting console proxy Vm");
return startConsoleProxy(vmId);
} else if (systemVm.getType() == VirtualMachine.Type.SecondaryStorageVm) {
ActionEventUtils.startNestedActionEvent(EventTypes.EVENT_SSVM_START, "starting secondary storage Vm");
return startSecondaryStorageVm(vmId);
} else {
InvalidParameterValueException ex = new InvalidParameterValueException("Unable to find a system vm with specified vmId");
@ -3123,6 +3117,7 @@ public class ManagementServerImpl extends ManagerBase implements ManagementServe
}
@Override
@ActionEvent(eventType = "", eventDescription = "", async = true)
public VMInstanceVO stopSystemVM(StopSystemVmCmd cmd) throws ResourceUnavailableException, ConcurrentOperationException {
Long id = cmd.getId();
@ -3136,8 +3131,10 @@ public class ManagementServerImpl extends ManagerBase implements ManagementServe
try {
if (systemVm.getType() == VirtualMachine.Type.ConsoleProxy) {
ActionEventUtils.startNestedActionEvent(EventTypes.EVENT_PROXY_STOP, "stopping console proxy Vm");
return stopConsoleProxy(systemVm, cmd.isForced());
} else if (systemVm.getType() == VirtualMachine.Type.SecondaryStorageVm) {
ActionEventUtils.startNestedActionEvent(EventTypes.EVENT_SSVM_STOP, "stopping secondary storage Vm");
return stopSecondaryStorageVm(systemVm, cmd.isForced());
}
return null;
@ -3147,6 +3144,7 @@ public class ManagementServerImpl extends ManagerBase implements ManagementServe
}
@Override
@ActionEvent(eventType = EventTypes.EVENT_PROXY_REBOOT, eventDescription = "", async = true)
public VMInstanceVO rebootSystemVM(RebootSystemVmCmd cmd) {
VMInstanceVO systemVm = _vmInstanceDao.findByIdTypes(cmd.getId(), VirtualMachine.Type.ConsoleProxy, VirtualMachine.Type.SecondaryStorageVm);
@ -3157,13 +3155,16 @@ public class ManagementServerImpl extends ManagerBase implements ManagementServe
}
if (systemVm.getType().equals(VirtualMachine.Type.ConsoleProxy)) {
ActionEventUtils.startNestedActionEvent(EventTypes.EVENT_PROXY_REBOOT, "rebooting console proxy Vm");
return rebootConsoleProxy(cmd.getId());
} else {
ActionEventUtils.startNestedActionEvent(EventTypes.EVENT_SSVM_REBOOT, "rebooting secondary storage Vm");
return rebootSecondaryStorageVm(cmd.getId());
}
}
@Override
@ActionEvent(eventType = "", eventDescription = "", async = true)
public VMInstanceVO destroySystemVM(DestroySystemVmCmd cmd) {
VMInstanceVO systemVm = _vmInstanceDao.findByIdTypes(cmd.getId(), VirtualMachine.Type.ConsoleProxy, VirtualMachine.Type.SecondaryStorageVm);
@ -3174,8 +3175,10 @@ public class ManagementServerImpl extends ManagerBase implements ManagementServe
}
if (systemVm.getType().equals(VirtualMachine.Type.ConsoleProxy)) {
ActionEventUtils.startNestedActionEvent(EventTypes.EVENT_PROXY_DESTROY, "destroying console proxy Vm");
return destroyConsoleProxy(cmd.getId());
} else {
ActionEventUtils.startNestedActionEvent(EventTypes.EVENT_SSVM_DESTROY, "destroying secondary storage Vm");
return destroySecondaryStorageVm(cmd.getId());
}
}

View File

@ -39,7 +39,6 @@ import javax.naming.ConfigurationException;
import org.apache.commons.codec.binary.Base64;
import org.apache.log4j.Logger;
import org.apache.cloudstack.acl.ControlledEntity;
import org.apache.cloudstack.acl.RoleType;
import org.apache.cloudstack.acl.SecurityChecker;
@ -75,6 +74,7 @@ import com.cloud.domain.DomainVO;
import com.cloud.domain.dao.DomainDao;
import com.cloud.event.ActionEvent;
import com.cloud.event.ActionEventUtils;
import com.cloud.event.ActionEvents;
import com.cloud.event.EventTypes;
import com.cloud.exception.AgentUnavailableException;
import com.cloud.exception.CloudAuthenticationException;
@ -855,7 +855,10 @@ public class AccountManagerImpl extends ManagerBase implements AccountManager, M
@Override
@DB
@ActionEvent(eventType = EventTypes.EVENT_ACCOUNT_CREATE, eventDescription = "creating Account")
@ActionEvents({
@ActionEvent(eventType = EventTypes.EVENT_ACCOUNT_CREATE, eventDescription = "creating Account"),
@ActionEvent(eventType = EventTypes.EVENT_USER_CREATE, eventDescription = "creating User"),
})
public UserAccount createUserAccount(String userName, String password, String firstName, String lastName, String email, String timezone, String accountName, short accountType,
Long domainId, String networkDomain, Map<String, String> details, String accountUUID, String userUUID) {
@ -927,6 +930,7 @@ public class AccountManagerImpl extends ManagerBase implements AccountManager, M
}
@Override
@ActionEvent(eventType = EventTypes.EVENT_USER_CREATE, eventDescription = "creating User")
public UserVO createUser(String userName, String password, String firstName, String lastName, String email, String timeZone, String accountName, Long domainId, String userUUID) {
// default domain to ROOT if not specified
@ -1777,7 +1781,6 @@ public class AccountManagerImpl extends ManagerBase implements AccountManager, M
return account;
}
@ActionEvent(eventType = EventTypes.EVENT_USER_CREATE, eventDescription = "creating User")
protected UserVO createUser(long accountId, String userName, String password, String firstName, String lastName, String email, String timezone, String userUUID) {
if (s_logger.isDebugEnabled()) {
s_logger.debug("Creating user: " + userName + ", accountId: " + accountId + " timezone:" + timezone);

View File

@ -2152,6 +2152,7 @@ public class UserVmManagerImpl extends ManagerBase implements UserVmManager, Vir
}
@Override
@ActionEvent(eventType = EventTypes.EVENT_VM_CREATE, eventDescription = "deploying Vm", create = true)
public UserVm createBasicSecurityGroupVirtualMachine(DataCenter zone, ServiceOffering serviceOffering, VirtualMachineTemplate template, List<Long> securityGroupIdList, Account owner,
String hostName, String displayName, Long diskOfferingId, Long diskSize, String group,
HypervisorType hypervisor, HTTPMethod httpmethod, String userData, String sshKeyPair,
@ -2212,6 +2213,7 @@ public class UserVmManagerImpl extends ManagerBase implements UserVmManager, Vir
}
@Override
@ActionEvent(eventType = EventTypes.EVENT_VM_CREATE, eventDescription = "deploying Vm", create = true)
public UserVm createAdvancedSecurityGroupVirtualMachine(DataCenter zone, ServiceOffering serviceOffering, VirtualMachineTemplate template, List<Long> networkIdList,
List<Long> securityGroupIdList, Account owner, String hostName, String displayName, Long diskOfferingId,
Long diskSize, String group, HypervisorType hypervisor, HTTPMethod httpmethod, String userData,
@ -2328,6 +2330,7 @@ public class UserVmManagerImpl extends ManagerBase implements UserVmManager, Vir
}
@Override
@ActionEvent(eventType = EventTypes.EVENT_VM_CREATE, eventDescription = "deploying Vm", create = true)
public UserVm createAdvancedVirtualMachine(DataCenter zone, ServiceOffering serviceOffering, VirtualMachineTemplate template, List<Long> networkIdList, Account owner, String hostName,
String displayName, Long diskOfferingId, Long diskSize, String group, HypervisorType hypervisor,
HTTPMethod httpmethod, String userData, String sshKeyPair, Map<Long, IpAddresses> requestedIps,
@ -2449,7 +2452,7 @@ public class UserVmManagerImpl extends ManagerBase implements UserVmManager, Vir
}
}
@DB @ActionEvent(eventType = EventTypes.EVENT_VM_CREATE, eventDescription = "deploying Vm", create = true)
@DB
protected UserVm createVirtualMachine(DataCenter zone, ServiceOffering serviceOffering, VirtualMachineTemplate template, String hostName, String displayName, Account owner, Long diskOfferingId,
Long diskSize, List<NetworkVO> networkList, List<Long> securityGroupIdList, String group, HTTPMethod httpmethod,
String userData, String sshKeyPair, HypervisorType hypervisor, Account caller, Map<Long, IpAddresses> requestedIps,

View File

@ -127,13 +127,6 @@ public class MockFirewallManagerImpl extends ManagerBase implements FirewallMana
return false;
}
@Override
public boolean revokeFirewallRule(long ruleId, boolean apply,
Account caller, long userId) {
// TODO Auto-generated method stub
return false;
}
@Override
public FirewallRule createRuleForAllCidrs(long ipAddrId, Account caller,
Integer startPort, Integer endPort, String protocol,
@ -173,16 +166,6 @@ public class MockFirewallManagerImpl extends ManagerBase implements FirewallMana
return false; //To change body of implemented methods use File | Settings | File Templates.
}
@Override
public FirewallRule createFirewallRule(Long ipAddrId, Account caller,
String xId, Integer portStart, Integer portEnd, String protocol,
List<String> sourceCidrList, Integer icmpCode, Integer icmpType,
Long relatedRuleId, FirewallRuleType type, Long networkId,
TrafficType traffictype) throws NetworkRuleConflictException {
// TODO Auto-generated method stub
return null;
}
@Override
public void validateFirewallRule(Account caller, IPAddressVO ipAddress,
Integer portStart, Integer portEnd, String proto, Purpose purpose,

View File

@ -390,17 +390,6 @@ public class MockConfigurationManagerImpl extends ManagerBase implements Configu
return null;
}
/* (non-Javadoc)
* @see com.cloud.configuration.ConfigurationManager#createServiceOffering(long, boolean, com.cloud.vm.VirtualMachine.Type, java.lang.String, int, int, int, java.lang.String, boolean, boolean, boolean, java.lang.String, java.lang.Long, java.lang.String, java.lang.Integer)
*/
@Override
public ServiceOfferingVO createServiceOffering(long userId, boolean isSystem, Type vm_typeType, String name, int cpu, int ramSize, int speed, String displayText, boolean localStorageRequired, boolean offerHA,
boolean limitResourceUse, boolean volatileVm, String tags, Long domainId, String hostTag, Integer networkRate, String deploymentPlanner, Map<String, String> details,
Long bytesReadRate, Long bytesWriteRate, Long iopsReadRate, Long iopsWriteRate) {
// TODO Auto-generated method stub
return null;
}
/* (non-Javadoc)
* @see com.cloud.configuration.ConfigurationManager#createPod(long, java.lang.String, long, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, boolean)
*/
@ -512,17 +501,6 @@ public class MockConfigurationManagerImpl extends ManagerBase implements Configu
return null;
}
/* (non-Javadoc)
* @see com.cloud.configuration.ConfigurationManager#createDiskOffering(java.lang.Long, java.lang.String, java.lang.String, java.lang.Long, java.lang.String, boolean, boolean, boolean)
*/
@Override
public DiskOfferingVO createDiskOffering(Long domainId, String name, String description, Long numGibibytes, String tags, boolean isCustomized,
boolean localStorageRequired, boolean isDisplayOfferingEnabled, Boolean isCustomizedIops, Long minIops, Long maxIops,
Long bytesReadRate, Long bytesWriteRate, Long iopsReadRate, Long iopsWriteRate) {
// TODO Auto-generated method stub
return null;
}
/* (non-Javadoc)
* @see com.cloud.configuration.ConfigurationManager#createZone(long, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.Long, com.cloud.dc.DataCenter.NetworkType, java.lang.String, java.lang.String, boolean, boolean)
*/