mirror of https://github.com/apache/cloudstack.git
CLOUDSTACK-6530: Populate the first class entities in the context to be available for publishing more information for the event bus, checking the displayable property etc.
(cherry picked from commit 3e7ea4e8d9)
This commit is contained in:
parent
fc68922286
commit
dd55095fd5
|
|
@ -19,6 +19,9 @@ package com.cloud.event;
|
|||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
import com.cloud.server.ResourceTag;
|
||||
import com.cloud.vm.ConsoleProxy;
|
||||
import com.cloud.vm.SecondaryStorageVm;
|
||||
import org.apache.cloudstack.config.Configuration;
|
||||
|
||||
import com.cloud.dc.DataCenter;
|
||||
|
|
@ -62,7 +65,7 @@ import com.cloud.vm.VirtualMachine;
|
|||
public class EventTypes {
|
||||
|
||||
//map of Event and corresponding entity for which Event is applicable
|
||||
private static Map<String, String> entityEventDetails = null;
|
||||
private static Map<String, Object> entityEventDetails = null;
|
||||
|
||||
// VM Events
|
||||
public static final String EVENT_VM_CREATE = "VM.CREATE";
|
||||
|
|
@ -492,122 +495,120 @@ public class EventTypes {
|
|||
static {
|
||||
|
||||
// TODO: need a way to force author adding event types to declare the entity details as well, with out braking
|
||||
// current ActionEvent annotation semantics
|
||||
// TODO #2 - The map should be from event type to class.
|
||||
|
||||
entityEventDetails = new HashMap<String, String>();
|
||||
entityEventDetails = new HashMap<String, Object>();
|
||||
|
||||
entityEventDetails.put(EVENT_VM_CREATE, VirtualMachine.class.getName());
|
||||
entityEventDetails.put(EVENT_VM_DESTROY, VirtualMachine.class.getName());
|
||||
entityEventDetails.put(EVENT_VM_START, VirtualMachine.class.getName());
|
||||
entityEventDetails.put(EVENT_VM_STOP, VirtualMachine.class.getName());
|
||||
entityEventDetails.put(EVENT_VM_REBOOT, VirtualMachine.class.getName());
|
||||
entityEventDetails.put(EVENT_VM_UPDATE, VirtualMachine.class.getName());
|
||||
entityEventDetails.put(EVENT_VM_UPGRADE, VirtualMachine.class.getName());
|
||||
entityEventDetails.put(EVENT_VM_DYNAMIC_SCALE, VirtualMachine.class.getName());
|
||||
entityEventDetails.put(EVENT_VM_RESETPASSWORD, VirtualMachine.class.getName());
|
||||
entityEventDetails.put(EVENT_VM_RESETSSHKEY, VirtualMachine.class.getName());
|
||||
entityEventDetails.put(EVENT_VM_MIGRATE, VirtualMachine.class.getName());
|
||||
entityEventDetails.put(EVENT_VM_MOVE, VirtualMachine.class.getName());
|
||||
entityEventDetails.put(EVENT_VM_RESTORE, VirtualMachine.class.getName());
|
||||
entityEventDetails.put(EVENT_VM_EXPUNGE, VirtualMachine.class.getName());
|
||||
entityEventDetails.put(EVENT_VM_CREATE, VirtualMachine.class);
|
||||
entityEventDetails.put(EVENT_VM_DESTROY, VirtualMachine.class);
|
||||
entityEventDetails.put(EVENT_VM_START, VirtualMachine.class);
|
||||
entityEventDetails.put(EVENT_VM_STOP, VirtualMachine.class);
|
||||
entityEventDetails.put(EVENT_VM_REBOOT, VirtualMachine.class);
|
||||
entityEventDetails.put(EVENT_VM_UPDATE, VirtualMachine.class);
|
||||
entityEventDetails.put(EVENT_VM_UPGRADE, VirtualMachine.class);
|
||||
entityEventDetails.put(EVENT_VM_DYNAMIC_SCALE, VirtualMachine.class);
|
||||
entityEventDetails.put(EVENT_VM_RESETPASSWORD, VirtualMachine.class);
|
||||
entityEventDetails.put(EVENT_VM_RESETSSHKEY, VirtualMachine.class);
|
||||
entityEventDetails.put(EVENT_VM_MIGRATE, VirtualMachine.class);
|
||||
entityEventDetails.put(EVENT_VM_MOVE, VirtualMachine.class);
|
||||
entityEventDetails.put(EVENT_VM_RESTORE, VirtualMachine.class);
|
||||
entityEventDetails.put(EVENT_VM_EXPUNGE, VirtualMachine.class);
|
||||
|
||||
entityEventDetails.put(EVENT_ROUTER_CREATE, VirtualRouter.class.getName());
|
||||
entityEventDetails.put(EVENT_ROUTER_DESTROY, VirtualRouter.class.getName());
|
||||
entityEventDetails.put(EVENT_ROUTER_START, VirtualRouter.class.getName());
|
||||
entityEventDetails.put(EVENT_ROUTER_STOP, VirtualRouter.class.getName());
|
||||
entityEventDetails.put(EVENT_ROUTER_REBOOT, VirtualRouter.class.getName());
|
||||
entityEventDetails.put(EVENT_ROUTER_HA, VirtualRouter.class.getName());
|
||||
entityEventDetails.put(EVENT_ROUTER_UPGRADE, VirtualRouter.class.getName());
|
||||
entityEventDetails.put(EVENT_ROUTER_CREATE, VirtualRouter.class);
|
||||
entityEventDetails.put(EVENT_ROUTER_DESTROY, VirtualRouter.class);
|
||||
entityEventDetails.put(EVENT_ROUTER_START, VirtualRouter.class);
|
||||
entityEventDetails.put(EVENT_ROUTER_STOP, VirtualRouter.class);
|
||||
entityEventDetails.put(EVENT_ROUTER_REBOOT, VirtualRouter.class);
|
||||
entityEventDetails.put(EVENT_ROUTER_HA, VirtualRouter.class);
|
||||
entityEventDetails.put(EVENT_ROUTER_UPGRADE, VirtualRouter.class);
|
||||
|
||||
entityEventDetails.put(EVENT_PROXY_CREATE, "ConsoleProxy");
|
||||
entityEventDetails.put(EVENT_PROXY_DESTROY, "ConsoleProxy");
|
||||
entityEventDetails.put(EVENT_PROXY_START, "ConsoleProxy");
|
||||
entityEventDetails.put(EVENT_PROXY_STOP, "ConsoleProxy");
|
||||
entityEventDetails.put(EVENT_PROXY_REBOOT, "ConsoleProxy");
|
||||
entityEventDetails.put(EVENT_ROUTER_HA, "ConsoleProxy");
|
||||
entityEventDetails.put(EVENT_PROXY_HA, "ConsoleProxy");
|
||||
entityEventDetails.put(EVENT_PROXY_CREATE, ConsoleProxy.class);
|
||||
entityEventDetails.put(EVENT_PROXY_DESTROY, ConsoleProxy.class);
|
||||
entityEventDetails.put(EVENT_PROXY_START, ConsoleProxy.class);
|
||||
entityEventDetails.put(EVENT_PROXY_STOP, ConsoleProxy.class);
|
||||
entityEventDetails.put(EVENT_PROXY_REBOOT, ConsoleProxy.class);
|
||||
entityEventDetails.put(EVENT_ROUTER_HA, ConsoleProxy.class);
|
||||
entityEventDetails.put(EVENT_PROXY_HA, ConsoleProxy.class);
|
||||
|
||||
entityEventDetails.put(EVENT_VNC_CONNECT, "VNC");
|
||||
entityEventDetails.put(EVENT_VNC_DISCONNECT, "VNC");
|
||||
|
||||
// Network Events
|
||||
entityEventDetails.put(EVENT_NETWORK_CREATE, Network.class.getName());
|
||||
entityEventDetails.put(EVENT_NETWORK_DELETE, Network.class.getName());
|
||||
entityEventDetails.put(EVENT_NETWORK_UPDATE, Network.class.getName());
|
||||
entityEventDetails.put(EVENT_NETWORK_RESTART, Network.class.getName());
|
||||
entityEventDetails.put(EVENT_NET_IP_ASSIGN, PublicIpAddress.class.getName());
|
||||
entityEventDetails.put(EVENT_NET_IP_RELEASE, PublicIpAddress.class.getName());
|
||||
entityEventDetails.put(EVENT_NET_RULE_ADD, Network.class.getName());
|
||||
entityEventDetails.put(EVENT_NET_RULE_DELETE, Network.class.getName());
|
||||
entityEventDetails.put(EVENT_NET_RULE_MODIFY, Network.class.getName());
|
||||
entityEventDetails.put(EVENT_FIREWALL_OPEN, Network.class.getName());
|
||||
entityEventDetails.put(EVENT_FIREWALL_CLOSE, Network.class.getName());
|
||||
entityEventDetails.put(EVENT_NETWORK_CREATE, Network.class);
|
||||
entityEventDetails.put(EVENT_NETWORK_DELETE, Network.class);
|
||||
entityEventDetails.put(EVENT_NETWORK_UPDATE, Network.class);
|
||||
entityEventDetails.put(EVENT_NETWORK_RESTART, Network.class);
|
||||
entityEventDetails.put(EVENT_NET_IP_ASSIGN, PublicIpAddress.class);
|
||||
entityEventDetails.put(EVENT_NET_IP_RELEASE, PublicIpAddress.class);
|
||||
entityEventDetails.put(EVENT_NET_RULE_ADD, Network.class);
|
||||
entityEventDetails.put(EVENT_NET_RULE_DELETE, Network.class);
|
||||
entityEventDetails.put(EVENT_NET_RULE_MODIFY, Network.class);
|
||||
entityEventDetails.put(EVENT_FIREWALL_OPEN, Network.class);
|
||||
entityEventDetails.put(EVENT_FIREWALL_CLOSE, Network.class);
|
||||
|
||||
// Load Balancers
|
||||
entityEventDetails.put(EVENT_ASSIGN_TO_LOAD_BALANCER_RULE, LoadBalancer.class.getName());
|
||||
entityEventDetails.put(EVENT_REMOVE_FROM_LOAD_BALANCER_RULE, LoadBalancer.class.getName());
|
||||
entityEventDetails.put(EVENT_LOAD_BALANCER_CREATE, LoadBalancer.class.getName());
|
||||
entityEventDetails.put(EVENT_LOAD_BALANCER_DELETE, LoadBalancer.class.getName());
|
||||
entityEventDetails.put(EVENT_LB_STICKINESSPOLICY_CREATE, LoadBalancer.class.getName());
|
||||
entityEventDetails.put(EVENT_LB_STICKINESSPOLICY_DELETE, LoadBalancer.class.getName());
|
||||
entityEventDetails.put(EVENT_LOAD_BALANCER_UPDATE, LoadBalancer.class.getName());
|
||||
entityEventDetails.put(EVENT_LB_CERT_UPLOAD, LoadBalancer.class.getName());
|
||||
entityEventDetails.put(EVENT_LB_CERT_DELETE, LoadBalancer.class.getName());
|
||||
entityEventDetails.put(EVENT_LB_CERT_ASSIGN, LoadBalancer.class.getName());
|
||||
entityEventDetails.put(EVENT_LB_CERT_REMOVE, LoadBalancer.class.getName());
|
||||
entityEventDetails.put(EVENT_ASSIGN_TO_LOAD_BALANCER_RULE, LoadBalancer.class);
|
||||
entityEventDetails.put(EVENT_REMOVE_FROM_LOAD_BALANCER_RULE, LoadBalancer.class);
|
||||
entityEventDetails.put(EVENT_LOAD_BALANCER_CREATE, LoadBalancer.class);
|
||||
entityEventDetails.put(EVENT_LOAD_BALANCER_DELETE, LoadBalancer.class);
|
||||
entityEventDetails.put(EVENT_LB_STICKINESSPOLICY_CREATE, LoadBalancer.class);
|
||||
entityEventDetails.put(EVENT_LB_STICKINESSPOLICY_DELETE, LoadBalancer.class);
|
||||
entityEventDetails.put(EVENT_LOAD_BALANCER_UPDATE, LoadBalancer.class);
|
||||
entityEventDetails.put(EVENT_LB_CERT_UPLOAD, LoadBalancer.class);
|
||||
entityEventDetails.put(EVENT_LB_CERT_DELETE, LoadBalancer.class);
|
||||
entityEventDetails.put(EVENT_LB_CERT_ASSIGN, LoadBalancer.class);
|
||||
entityEventDetails.put(EVENT_LB_CERT_REMOVE, LoadBalancer.class);
|
||||
|
||||
// Account events
|
||||
entityEventDetails.put(EVENT_ACCOUNT_ENABLE, Account.class.getName());
|
||||
entityEventDetails.put(EVENT_ACCOUNT_DISABLE, Account.class.getName());
|
||||
entityEventDetails.put(EVENT_ACCOUNT_CREATE, Account.class.getName());
|
||||
entityEventDetails.put(EVENT_ACCOUNT_DELETE, Account.class.getName());
|
||||
entityEventDetails.put(EVENT_ACCOUNT_UPDATE, Account.class.getName());
|
||||
entityEventDetails.put(EVENT_ACCOUNT_MARK_DEFAULT_ZONE, Account.class.getName());
|
||||
entityEventDetails.put(EVENT_ACCOUNT_ENABLE, Account.class);
|
||||
entityEventDetails.put(EVENT_ACCOUNT_DISABLE, Account.class);
|
||||
entityEventDetails.put(EVENT_ACCOUNT_CREATE, Account.class);
|
||||
entityEventDetails.put(EVENT_ACCOUNT_DELETE, Account.class);
|
||||
entityEventDetails.put(EVENT_ACCOUNT_UPDATE, Account.class);
|
||||
entityEventDetails.put(EVENT_ACCOUNT_MARK_DEFAULT_ZONE, Account.class);
|
||||
|
||||
// UserVO Events
|
||||
entityEventDetails.put(EVENT_USER_LOGIN, User.class.getName());
|
||||
entityEventDetails.put(EVENT_USER_LOGOUT, User.class.getName());
|
||||
entityEventDetails.put(EVENT_USER_CREATE, User.class.getName());
|
||||
entityEventDetails.put(EVENT_USER_DELETE, User.class.getName());
|
||||
entityEventDetails.put(EVENT_USER_DISABLE, User.class.getName());
|
||||
entityEventDetails.put(EVENT_USER_UPDATE, User.class.getName());
|
||||
entityEventDetails.put(EVENT_USER_ENABLE, User.class.getName());
|
||||
entityEventDetails.put(EVENT_USER_LOCK, User.class.getName());
|
||||
entityEventDetails.put(EVENT_USER_LOGIN, User.class);
|
||||
entityEventDetails.put(EVENT_USER_LOGOUT, User.class);
|
||||
entityEventDetails.put(EVENT_USER_CREATE, User.class);
|
||||
entityEventDetails.put(EVENT_USER_DELETE, User.class);
|
||||
entityEventDetails.put(EVENT_USER_DISABLE, User.class);
|
||||
entityEventDetails.put(EVENT_USER_UPDATE, User.class);
|
||||
entityEventDetails.put(EVENT_USER_ENABLE, User.class);
|
||||
entityEventDetails.put(EVENT_USER_LOCK, User.class);
|
||||
|
||||
// Template Events
|
||||
entityEventDetails.put(EVENT_TEMPLATE_CREATE, VirtualMachineTemplate.class.getName());
|
||||
entityEventDetails.put(EVENT_TEMPLATE_DELETE, VirtualMachineTemplate.class.getName());
|
||||
entityEventDetails.put(EVENT_TEMPLATE_UPDATE, VirtualMachineTemplate.class.getName());
|
||||
entityEventDetails.put(EVENT_TEMPLATE_DOWNLOAD_START, VirtualMachineTemplate.class.getName());
|
||||
entityEventDetails.put(EVENT_TEMPLATE_DOWNLOAD_SUCCESS, VirtualMachineTemplate.class.getName());
|
||||
entityEventDetails.put(EVENT_TEMPLATE_DOWNLOAD_FAILED, VirtualMachineTemplate.class.getName());
|
||||
entityEventDetails.put(EVENT_TEMPLATE_COPY, VirtualMachineTemplate.class.getName());
|
||||
entityEventDetails.put(EVENT_TEMPLATE_EXTRACT, VirtualMachineTemplate.class.getName());
|
||||
entityEventDetails.put(EVENT_TEMPLATE_UPLOAD, VirtualMachineTemplate.class.getName());
|
||||
entityEventDetails.put(EVENT_TEMPLATE_CLEANUP, VirtualMachineTemplate.class.getName());
|
||||
entityEventDetails.put(EVENT_TEMPLATE_CREATE, VirtualMachineTemplate.class);
|
||||
entityEventDetails.put(EVENT_TEMPLATE_DELETE, VirtualMachineTemplate.class);
|
||||
entityEventDetails.put(EVENT_TEMPLATE_UPDATE, VirtualMachineTemplate.class);
|
||||
entityEventDetails.put(EVENT_TEMPLATE_DOWNLOAD_START, VirtualMachineTemplate.class);
|
||||
entityEventDetails.put(EVENT_TEMPLATE_DOWNLOAD_SUCCESS, VirtualMachineTemplate.class);
|
||||
entityEventDetails.put(EVENT_TEMPLATE_DOWNLOAD_FAILED, VirtualMachineTemplate.class);
|
||||
entityEventDetails.put(EVENT_TEMPLATE_COPY, VirtualMachineTemplate.class);
|
||||
entityEventDetails.put(EVENT_TEMPLATE_EXTRACT, VirtualMachineTemplate.class);
|
||||
entityEventDetails.put(EVENT_TEMPLATE_UPLOAD, VirtualMachineTemplate.class);
|
||||
entityEventDetails.put(EVENT_TEMPLATE_CLEANUP, VirtualMachineTemplate.class);
|
||||
|
||||
// Volume Events
|
||||
entityEventDetails.put(EVENT_VOLUME_CREATE, Volume.class.getName());
|
||||
entityEventDetails.put(EVENT_VOLUME_DELETE, Volume.class.getName());
|
||||
entityEventDetails.put(EVENT_VOLUME_ATTACH, Volume.class.getName());
|
||||
entityEventDetails.put(EVENT_VOLUME_DETACH, Volume.class.getName());
|
||||
entityEventDetails.put(EVENT_VOLUME_EXTRACT, Volume.class.getName());
|
||||
entityEventDetails.put(EVENT_VOLUME_UPLOAD, Volume.class.getName());
|
||||
entityEventDetails.put(EVENT_VOLUME_MIGRATE, Volume.class.getName());
|
||||
entityEventDetails.put(EVENT_VOLUME_RESIZE, Volume.class.getName());
|
||||
entityEventDetails.put(EVENT_VOLUME_CREATE, Volume.class);
|
||||
entityEventDetails.put(EVENT_VOLUME_DELETE, Volume.class);
|
||||
entityEventDetails.put(EVENT_VOLUME_ATTACH, Volume.class);
|
||||
entityEventDetails.put(EVENT_VOLUME_DETACH, Volume.class);
|
||||
entityEventDetails.put(EVENT_VOLUME_EXTRACT, Volume.class);
|
||||
entityEventDetails.put(EVENT_VOLUME_UPLOAD, Volume.class);
|
||||
entityEventDetails.put(EVENT_VOLUME_MIGRATE, Volume.class);
|
||||
entityEventDetails.put(EVENT_VOLUME_RESIZE, Volume.class);
|
||||
|
||||
// Domains
|
||||
entityEventDetails.put(EVENT_DOMAIN_CREATE, Domain.class.getName());
|
||||
entityEventDetails.put(EVENT_DOMAIN_DELETE, Domain.class.getName());
|
||||
entityEventDetails.put(EVENT_DOMAIN_UPDATE, Domain.class.getName());
|
||||
entityEventDetails.put(EVENT_DOMAIN_CREATE, Domain.class);
|
||||
entityEventDetails.put(EVENT_DOMAIN_DELETE, Domain.class);
|
||||
entityEventDetails.put(EVENT_DOMAIN_UPDATE, Domain.class);
|
||||
|
||||
// Snapshots
|
||||
entityEventDetails.put(EVENT_SNAPSHOT_CREATE, Snapshot.class.getName());
|
||||
entityEventDetails.put(EVENT_SNAPSHOT_DELETE, Snapshot.class.getName());
|
||||
entityEventDetails.put(EVENT_SNAPSHOT_POLICY_CREATE, Snapshot.class.getName());
|
||||
entityEventDetails.put(EVENT_SNAPSHOT_POLICY_UPDATE, Snapshot.class.getName());
|
||||
entityEventDetails.put(EVENT_SNAPSHOT_POLICY_DELETE, Snapshot.class.getName());
|
||||
entityEventDetails.put(EVENT_SNAPSHOT_CREATE, Snapshot.class);
|
||||
entityEventDetails.put(EVENT_SNAPSHOT_DELETE, Snapshot.class);
|
||||
entityEventDetails.put(EVENT_SNAPSHOT_POLICY_CREATE, Snapshot.class);
|
||||
entityEventDetails.put(EVENT_SNAPSHOT_POLICY_UPDATE, Snapshot.class);
|
||||
entityEventDetails.put(EVENT_SNAPSHOT_POLICY_DELETE, Snapshot.class);
|
||||
|
||||
// ISO
|
||||
entityEventDetails.put(EVENT_ISO_CREATE, "Iso");
|
||||
|
|
@ -619,129 +620,129 @@ public class EventTypes {
|
|||
entityEventDetails.put(EVENT_ISO_UPLOAD, "Iso");
|
||||
|
||||
// SSVM
|
||||
entityEventDetails.put(EVENT_SSVM_CREATE, "SecondaryStorageVm");
|
||||
entityEventDetails.put(EVENT_SSVM_DESTROY, "SecondaryStorageVm");
|
||||
entityEventDetails.put(EVENT_SSVM_START, "SecondaryStorageVm");
|
||||
entityEventDetails.put(EVENT_SSVM_STOP, "SecondaryStorageVm");
|
||||
entityEventDetails.put(EVENT_SSVM_REBOOT, "SecondaryStorageVm");
|
||||
entityEventDetails.put(EVENT_SSVM_HA, "SecondaryStorageVm");
|
||||
entityEventDetails.put(EVENT_SSVM_CREATE, SecondaryStorageVm.class);
|
||||
entityEventDetails.put(EVENT_SSVM_DESTROY, SecondaryStorageVm.class);
|
||||
entityEventDetails.put(EVENT_SSVM_START, SecondaryStorageVm.class);
|
||||
entityEventDetails.put(EVENT_SSVM_STOP, SecondaryStorageVm.class);
|
||||
entityEventDetails.put(EVENT_SSVM_REBOOT, SecondaryStorageVm.class);
|
||||
entityEventDetails.put(EVENT_SSVM_HA, SecondaryStorageVm.class);
|
||||
|
||||
// Service Offerings
|
||||
entityEventDetails.put(EVENT_SERVICE_OFFERING_CREATE, ServiceOffering.class.getName());
|
||||
entityEventDetails.put(EVENT_SERVICE_OFFERING_EDIT, ServiceOffering.class.getName());
|
||||
entityEventDetails.put(EVENT_SERVICE_OFFERING_DELETE, ServiceOffering.class.getName());
|
||||
entityEventDetails.put(EVENT_SERVICE_OFFERING_CREATE, ServiceOffering.class);
|
||||
entityEventDetails.put(EVENT_SERVICE_OFFERING_EDIT, ServiceOffering.class);
|
||||
entityEventDetails.put(EVENT_SERVICE_OFFERING_DELETE, ServiceOffering.class);
|
||||
|
||||
// Disk Offerings
|
||||
entityEventDetails.put(EVENT_DISK_OFFERING_CREATE, DiskOffering.class.getName());
|
||||
entityEventDetails.put(EVENT_DISK_OFFERING_EDIT, DiskOffering.class.getName());
|
||||
entityEventDetails.put(EVENT_DISK_OFFERING_DELETE, DiskOffering.class.getName());
|
||||
entityEventDetails.put(EVENT_DISK_OFFERING_CREATE, DiskOffering.class);
|
||||
entityEventDetails.put(EVENT_DISK_OFFERING_EDIT, DiskOffering.class);
|
||||
entityEventDetails.put(EVENT_DISK_OFFERING_DELETE, DiskOffering.class);
|
||||
|
||||
// Network offerings
|
||||
entityEventDetails.put(EVENT_NETWORK_OFFERING_CREATE, NetworkOffering.class.getName());
|
||||
entityEventDetails.put(EVENT_NETWORK_OFFERING_ASSIGN, NetworkOffering.class.getName());
|
||||
entityEventDetails.put(EVENT_NETWORK_OFFERING_EDIT, NetworkOffering.class.getName());
|
||||
entityEventDetails.put(EVENT_NETWORK_OFFERING_REMOVE, NetworkOffering.class.getName());
|
||||
entityEventDetails.put(EVENT_NETWORK_OFFERING_DELETE, NetworkOffering.class.getName());
|
||||
entityEventDetails.put(EVENT_NETWORK_OFFERING_CREATE, NetworkOffering.class);
|
||||
entityEventDetails.put(EVENT_NETWORK_OFFERING_ASSIGN, NetworkOffering.class);
|
||||
entityEventDetails.put(EVENT_NETWORK_OFFERING_EDIT, NetworkOffering.class);
|
||||
entityEventDetails.put(EVENT_NETWORK_OFFERING_REMOVE, NetworkOffering.class);
|
||||
entityEventDetails.put(EVENT_NETWORK_OFFERING_DELETE, NetworkOffering.class);
|
||||
|
||||
// Pods
|
||||
entityEventDetails.put(EVENT_POD_CREATE, Pod.class.getName());
|
||||
entityEventDetails.put(EVENT_POD_EDIT, Pod.class.getName());
|
||||
entityEventDetails.put(EVENT_POD_DELETE, Pod.class.getName());
|
||||
entityEventDetails.put(EVENT_POD_CREATE, Pod.class);
|
||||
entityEventDetails.put(EVENT_POD_EDIT, Pod.class);
|
||||
entityEventDetails.put(EVENT_POD_DELETE, Pod.class);
|
||||
|
||||
// Zones
|
||||
entityEventDetails.put(EVENT_ZONE_CREATE, DataCenter.class.getName());
|
||||
entityEventDetails.put(EVENT_ZONE_EDIT, DataCenter.class.getName());
|
||||
entityEventDetails.put(EVENT_ZONE_DELETE, DataCenter.class.getName());
|
||||
entityEventDetails.put(EVENT_ZONE_CREATE, DataCenter.class);
|
||||
entityEventDetails.put(EVENT_ZONE_EDIT, DataCenter.class);
|
||||
entityEventDetails.put(EVENT_ZONE_DELETE, DataCenter.class);
|
||||
|
||||
// VLANs/IP ranges
|
||||
entityEventDetails.put(EVENT_VLAN_IP_RANGE_CREATE, Vlan.class.getName());
|
||||
entityEventDetails.put(EVENT_VLAN_IP_RANGE_DELETE, Vlan.class.getName());
|
||||
entityEventDetails.put(EVENT_VLAN_IP_RANGE_DEDICATE, Vlan.class.getName());
|
||||
entityEventDetails.put(EVENT_VLAN_IP_RANGE_RELEASE, Vlan.class.getName());
|
||||
entityEventDetails.put(EVENT_VLAN_IP_RANGE_CREATE, Vlan.class);
|
||||
entityEventDetails.put(EVENT_VLAN_IP_RANGE_DELETE, Vlan.class);
|
||||
entityEventDetails.put(EVENT_VLAN_IP_RANGE_DEDICATE, Vlan.class);
|
||||
entityEventDetails.put(EVENT_VLAN_IP_RANGE_RELEASE, Vlan.class);
|
||||
|
||||
entityEventDetails.put(EVENT_STORAGE_IP_RANGE_CREATE, StorageNetworkIpRange.class.getName());
|
||||
entityEventDetails.put(EVENT_STORAGE_IP_RANGE_DELETE, StorageNetworkIpRange.class.getName());
|
||||
entityEventDetails.put(EVENT_STORAGE_IP_RANGE_UPDATE, StorageNetworkIpRange.class.getName());
|
||||
entityEventDetails.put(EVENT_STORAGE_IP_RANGE_CREATE, StorageNetworkIpRange.class);
|
||||
entityEventDetails.put(EVENT_STORAGE_IP_RANGE_DELETE, StorageNetworkIpRange.class);
|
||||
entityEventDetails.put(EVENT_STORAGE_IP_RANGE_UPDATE, StorageNetworkIpRange.class);
|
||||
|
||||
// Configuration Table
|
||||
entityEventDetails.put(EVENT_CONFIGURATION_VALUE_EDIT, Configuration.class.getName());
|
||||
entityEventDetails.put(EVENT_CONFIGURATION_VALUE_EDIT, Configuration.class);
|
||||
|
||||
// Security Groups
|
||||
entityEventDetails.put(EVENT_SECURITY_GROUP_AUTHORIZE_INGRESS, SecurityGroup.class.getName());
|
||||
entityEventDetails.put(EVENT_SECURITY_GROUP_REVOKE_INGRESS, SecurityGroup.class.getName());
|
||||
entityEventDetails.put(EVENT_SECURITY_GROUP_AUTHORIZE_EGRESS, SecurityGroup.class.getName());
|
||||
entityEventDetails.put(EVENT_SECURITY_GROUP_REVOKE_EGRESS, SecurityGroup.class.getName());
|
||||
entityEventDetails.put(EVENT_SECURITY_GROUP_CREATE, SecurityGroup.class.getName());
|
||||
entityEventDetails.put(EVENT_SECURITY_GROUP_DELETE, SecurityGroup.class.getName());
|
||||
entityEventDetails.put(EVENT_SECURITY_GROUP_ASSIGN, SecurityGroup.class.getName());
|
||||
entityEventDetails.put(EVENT_SECURITY_GROUP_REMOVE, SecurityGroup.class.getName());
|
||||
entityEventDetails.put(EVENT_SECURITY_GROUP_AUTHORIZE_INGRESS, SecurityGroup.class);
|
||||
entityEventDetails.put(EVENT_SECURITY_GROUP_REVOKE_INGRESS, SecurityGroup.class);
|
||||
entityEventDetails.put(EVENT_SECURITY_GROUP_AUTHORIZE_EGRESS, SecurityGroup.class);
|
||||
entityEventDetails.put(EVENT_SECURITY_GROUP_REVOKE_EGRESS, SecurityGroup.class);
|
||||
entityEventDetails.put(EVENT_SECURITY_GROUP_CREATE, SecurityGroup.class);
|
||||
entityEventDetails.put(EVENT_SECURITY_GROUP_DELETE, SecurityGroup.class);
|
||||
entityEventDetails.put(EVENT_SECURITY_GROUP_ASSIGN, SecurityGroup.class);
|
||||
entityEventDetails.put(EVENT_SECURITY_GROUP_REMOVE, SecurityGroup.class);
|
||||
|
||||
// Host
|
||||
entityEventDetails.put(EVENT_HOST_RECONNECT, Host.class.getName());
|
||||
entityEventDetails.put(EVENT_HOST_RECONNECT, Host.class);
|
||||
|
||||
// Maintenance
|
||||
entityEventDetails.put(EVENT_MAINTENANCE_CANCEL, Host.class.getName());
|
||||
entityEventDetails.put(EVENT_MAINTENANCE_CANCEL_PRIMARY_STORAGE, Host.class.getName());
|
||||
entityEventDetails.put(EVENT_MAINTENANCE_PREPARE, Host.class.getName());
|
||||
entityEventDetails.put(EVENT_MAINTENANCE_PREPARE_PRIMARY_STORAGE, Host.class.getName());
|
||||
entityEventDetails.put(EVENT_MAINTENANCE_CANCEL, Host.class);
|
||||
entityEventDetails.put(EVENT_MAINTENANCE_CANCEL_PRIMARY_STORAGE, Host.class);
|
||||
entityEventDetails.put(EVENT_MAINTENANCE_PREPARE, Host.class);
|
||||
entityEventDetails.put(EVENT_MAINTENANCE_PREPARE_PRIMARY_STORAGE, Host.class);
|
||||
|
||||
// VPN
|
||||
entityEventDetails.put(EVENT_REMOTE_ACCESS_VPN_CREATE, RemoteAccessVpn.class.getName());
|
||||
entityEventDetails.put(EVENT_REMOTE_ACCESS_VPN_DESTROY, RemoteAccessVpn.class.getName());
|
||||
entityEventDetails.put(EVENT_VPN_USER_ADD, RemoteAccessVpn.class.getName());
|
||||
entityEventDetails.put(EVENT_VPN_USER_REMOVE, RemoteAccessVpn.class.getName());
|
||||
entityEventDetails.put(EVENT_S2S_VPN_GATEWAY_CREATE, RemoteAccessVpn.class.getName());
|
||||
entityEventDetails.put(EVENT_S2S_VPN_GATEWAY_DELETE, RemoteAccessVpn.class.getName());
|
||||
entityEventDetails.put(EVENT_S2S_VPN_CUSTOMER_GATEWAY_CREATE, RemoteAccessVpn.class.getName());
|
||||
entityEventDetails.put(EVENT_S2S_VPN_CUSTOMER_GATEWAY_DELETE, RemoteAccessVpn.class.getName());
|
||||
entityEventDetails.put(EVENT_S2S_VPN_CUSTOMER_GATEWAY_UPDATE, RemoteAccessVpn.class.getName());
|
||||
entityEventDetails.put(EVENT_S2S_VPN_CONNECTION_CREATE, RemoteAccessVpn.class.getName());
|
||||
entityEventDetails.put(EVENT_S2S_VPN_CONNECTION_DELETE, RemoteAccessVpn.class.getName());
|
||||
entityEventDetails.put(EVENT_S2S_VPN_CONNECTION_RESET, RemoteAccessVpn.class.getName());
|
||||
entityEventDetails.put(EVENT_REMOTE_ACCESS_VPN_CREATE, RemoteAccessVpn.class);
|
||||
entityEventDetails.put(EVENT_REMOTE_ACCESS_VPN_DESTROY, RemoteAccessVpn.class);
|
||||
entityEventDetails.put(EVENT_VPN_USER_ADD, RemoteAccessVpn.class);
|
||||
entityEventDetails.put(EVENT_VPN_USER_REMOVE, RemoteAccessVpn.class);
|
||||
entityEventDetails.put(EVENT_S2S_VPN_GATEWAY_CREATE, RemoteAccessVpn.class);
|
||||
entityEventDetails.put(EVENT_S2S_VPN_GATEWAY_DELETE, RemoteAccessVpn.class);
|
||||
entityEventDetails.put(EVENT_S2S_VPN_CUSTOMER_GATEWAY_CREATE, RemoteAccessVpn.class);
|
||||
entityEventDetails.put(EVENT_S2S_VPN_CUSTOMER_GATEWAY_DELETE, RemoteAccessVpn.class);
|
||||
entityEventDetails.put(EVENT_S2S_VPN_CUSTOMER_GATEWAY_UPDATE, RemoteAccessVpn.class);
|
||||
entityEventDetails.put(EVENT_S2S_VPN_CONNECTION_CREATE, RemoteAccessVpn.class);
|
||||
entityEventDetails.put(EVENT_S2S_VPN_CONNECTION_DELETE, RemoteAccessVpn.class);
|
||||
entityEventDetails.put(EVENT_S2S_VPN_CONNECTION_RESET, RemoteAccessVpn.class);
|
||||
|
||||
// Custom certificates
|
||||
entityEventDetails.put(EVENT_UPLOAD_CUSTOM_CERTIFICATE, "Certificate");
|
||||
|
||||
// OneToOnenat
|
||||
entityEventDetails.put(EVENT_ENABLE_STATIC_NAT, StaticNat.class.getName());
|
||||
entityEventDetails.put(EVENT_DISABLE_STATIC_NAT, StaticNat.class.getName());
|
||||
entityEventDetails.put(EVENT_ENABLE_STATIC_NAT, StaticNat.class);
|
||||
entityEventDetails.put(EVENT_DISABLE_STATIC_NAT, StaticNat.class);
|
||||
|
||||
entityEventDetails.put(EVENT_ZONE_VLAN_ASSIGN, Vlan.class.getName());
|
||||
entityEventDetails.put(EVENT_ZONE_VLAN_RELEASE, Vlan.class.getName());
|
||||
entityEventDetails.put(EVENT_ZONE_VLAN_ASSIGN, Vlan.class);
|
||||
entityEventDetails.put(EVENT_ZONE_VLAN_RELEASE, Vlan.class);
|
||||
|
||||
// Projects
|
||||
entityEventDetails.put(EVENT_PROJECT_CREATE, Project.class.getName());
|
||||
entityEventDetails.put(EVENT_PROJECT_UPDATE, Project.class.getName());
|
||||
entityEventDetails.put(EVENT_PROJECT_DELETE, Project.class.getName());
|
||||
entityEventDetails.put(EVENT_PROJECT_ACTIVATE, Project.class.getName());
|
||||
entityEventDetails.put(EVENT_PROJECT_SUSPEND, Project.class.getName());
|
||||
entityEventDetails.put(EVENT_PROJECT_ACCOUNT_ADD, Project.class.getName());
|
||||
entityEventDetails.put(EVENT_PROJECT_INVITATION_UPDATE, Project.class.getName());
|
||||
entityEventDetails.put(EVENT_PROJECT_INVITATION_REMOVE, Project.class.getName());
|
||||
entityEventDetails.put(EVENT_PROJECT_ACCOUNT_REMOVE, Project.class.getName());
|
||||
entityEventDetails.put(EVENT_PROJECT_CREATE, Project.class);
|
||||
entityEventDetails.put(EVENT_PROJECT_UPDATE, Project.class);
|
||||
entityEventDetails.put(EVENT_PROJECT_DELETE, Project.class);
|
||||
entityEventDetails.put(EVENT_PROJECT_ACTIVATE, Project.class);
|
||||
entityEventDetails.put(EVENT_PROJECT_SUSPEND, Project.class);
|
||||
entityEventDetails.put(EVENT_PROJECT_ACCOUNT_ADD, Project.class);
|
||||
entityEventDetails.put(EVENT_PROJECT_INVITATION_UPDATE, Project.class);
|
||||
entityEventDetails.put(EVENT_PROJECT_INVITATION_REMOVE, Project.class);
|
||||
entityEventDetails.put(EVENT_PROJECT_ACCOUNT_REMOVE, Project.class);
|
||||
|
||||
// Network as a Service
|
||||
entityEventDetails.put(EVENT_NETWORK_ELEMENT_CONFIGURE, Network.class.getName());
|
||||
entityEventDetails.put(EVENT_NETWORK_ELEMENT_CONFIGURE, Network.class);
|
||||
|
||||
// Physical Network Events
|
||||
entityEventDetails.put(EVENT_PHYSICAL_NETWORK_CREATE, PhysicalNetwork.class.getName());
|
||||
entityEventDetails.put(EVENT_PHYSICAL_NETWORK_DELETE, PhysicalNetwork.class.getName());
|
||||
entityEventDetails.put(EVENT_PHYSICAL_NETWORK_UPDATE, PhysicalNetwork.class.getName());
|
||||
entityEventDetails.put(EVENT_PHYSICAL_NETWORK_CREATE, PhysicalNetwork.class);
|
||||
entityEventDetails.put(EVENT_PHYSICAL_NETWORK_DELETE, PhysicalNetwork.class);
|
||||
entityEventDetails.put(EVENT_PHYSICAL_NETWORK_UPDATE, PhysicalNetwork.class);
|
||||
|
||||
// Physical Network Service Provider Events
|
||||
entityEventDetails.put(EVENT_SERVICE_PROVIDER_CREATE, PhysicalNetworkServiceProvider.class.getName());
|
||||
entityEventDetails.put(EVENT_SERVICE_PROVIDER_DELETE, PhysicalNetworkServiceProvider.class.getName());
|
||||
entityEventDetails.put(EVENT_SERVICE_PROVIDER_UPDATE, PhysicalNetworkServiceProvider.class.getName());
|
||||
entityEventDetails.put(EVENT_SERVICE_PROVIDER_CREATE, PhysicalNetworkServiceProvider.class);
|
||||
entityEventDetails.put(EVENT_SERVICE_PROVIDER_DELETE, PhysicalNetworkServiceProvider.class);
|
||||
entityEventDetails.put(EVENT_SERVICE_PROVIDER_UPDATE, PhysicalNetworkServiceProvider.class);
|
||||
|
||||
// Physical Network TrafficType Events
|
||||
entityEventDetails.put(EVENT_TRAFFIC_TYPE_CREATE, PhysicalNetworkTrafficType.class.getName());
|
||||
entityEventDetails.put(EVENT_TRAFFIC_TYPE_DELETE, PhysicalNetworkTrafficType.class.getName());
|
||||
entityEventDetails.put(EVENT_TRAFFIC_TYPE_UPDATE, PhysicalNetworkTrafficType.class.getName());
|
||||
entityEventDetails.put(EVENT_TRAFFIC_TYPE_CREATE, PhysicalNetworkTrafficType.class);
|
||||
entityEventDetails.put(EVENT_TRAFFIC_TYPE_DELETE, PhysicalNetworkTrafficType.class);
|
||||
entityEventDetails.put(EVENT_TRAFFIC_TYPE_UPDATE, PhysicalNetworkTrafficType.class);
|
||||
|
||||
// external network device events
|
||||
entityEventDetails.put(EVENT_EXTERNAL_LB_DEVICE_ADD, PhysicalNetwork.class.getName());
|
||||
entityEventDetails.put(EVENT_EXTERNAL_LB_DEVICE_DELETE, PhysicalNetwork.class.getName());
|
||||
entityEventDetails.put(EVENT_EXTERNAL_LB_DEVICE_CONFIGURE, PhysicalNetwork.class.getName());
|
||||
entityEventDetails.put(EVENT_EXTERNAL_LB_DEVICE_ADD, PhysicalNetwork.class);
|
||||
entityEventDetails.put(EVENT_EXTERNAL_LB_DEVICE_DELETE, PhysicalNetwork.class);
|
||||
entityEventDetails.put(EVENT_EXTERNAL_LB_DEVICE_CONFIGURE, PhysicalNetwork.class);
|
||||
|
||||
// external switch management device events (E.g.: Cisco Nexus 1000v Virtual Supervisor Module.
|
||||
entityEventDetails.put(EVENT_EXTERNAL_SWITCH_MGMT_DEVICE_ADD, "Nexus1000v");
|
||||
|
|
@ -750,32 +751,32 @@ public class EventTypes {
|
|||
entityEventDetails.put(EVENT_EXTERNAL_SWITCH_MGMT_DEVICE_ENABLE, "Nexus1000v");
|
||||
entityEventDetails.put(EVENT_EXTERNAL_SWITCH_MGMT_DEVICE_DISABLE, "Nexus1000v");
|
||||
|
||||
entityEventDetails.put(EVENT_EXTERNAL_FIREWALL_DEVICE_ADD, PhysicalNetwork.class.getName());
|
||||
entityEventDetails.put(EVENT_EXTERNAL_FIREWALL_DEVICE_DELETE, PhysicalNetwork.class.getName());
|
||||
entityEventDetails.put(EVENT_EXTERNAL_FIREWALL_DEVICE_CONFIGURE, PhysicalNetwork.class.getName());
|
||||
entityEventDetails.put(EVENT_EXTERNAL_FIREWALL_DEVICE_ADD, PhysicalNetwork.class);
|
||||
entityEventDetails.put(EVENT_EXTERNAL_FIREWALL_DEVICE_DELETE, PhysicalNetwork.class);
|
||||
entityEventDetails.put(EVENT_EXTERNAL_FIREWALL_DEVICE_CONFIGURE, PhysicalNetwork.class);
|
||||
|
||||
// VPC
|
||||
entityEventDetails.put(EVENT_VPC_CREATE, Vpc.class.getName());
|
||||
entityEventDetails.put(EVENT_VPC_UPDATE, Vpc.class.getName());
|
||||
entityEventDetails.put(EVENT_VPC_DELETE, Vpc.class.getName());
|
||||
entityEventDetails.put(EVENT_VPC_RESTART, Vpc.class.getName());
|
||||
entityEventDetails.put(EVENT_VPC_CREATE, Vpc.class);
|
||||
entityEventDetails.put(EVENT_VPC_UPDATE, Vpc.class);
|
||||
entityEventDetails.put(EVENT_VPC_DELETE, Vpc.class);
|
||||
entityEventDetails.put(EVENT_VPC_RESTART, Vpc.class);
|
||||
|
||||
// VPC offerings
|
||||
entityEventDetails.put(EVENT_VPC_OFFERING_CREATE, Vpc.class.getName());
|
||||
entityEventDetails.put(EVENT_VPC_OFFERING_UPDATE, Vpc.class.getName());
|
||||
entityEventDetails.put(EVENT_VPC_OFFERING_DELETE, Vpc.class.getName());
|
||||
entityEventDetails.put(EVENT_VPC_OFFERING_CREATE, Vpc.class);
|
||||
entityEventDetails.put(EVENT_VPC_OFFERING_UPDATE, Vpc.class);
|
||||
entityEventDetails.put(EVENT_VPC_OFFERING_DELETE, Vpc.class);
|
||||
|
||||
// Private gateway
|
||||
entityEventDetails.put(EVENT_PRIVATE_GATEWAY_CREATE, PrivateGateway.class.getName());
|
||||
entityEventDetails.put(EVENT_PRIVATE_GATEWAY_DELETE, PrivateGateway.class.getName());
|
||||
entityEventDetails.put(EVENT_PRIVATE_GATEWAY_CREATE, PrivateGateway.class);
|
||||
entityEventDetails.put(EVENT_PRIVATE_GATEWAY_DELETE, PrivateGateway.class);
|
||||
|
||||
// Static routes
|
||||
entityEventDetails.put(EVENT_STATIC_ROUTE_CREATE, StaticRoute.class.getName());
|
||||
entityEventDetails.put(EVENT_STATIC_ROUTE_DELETE, StaticRoute.class.getName());
|
||||
entityEventDetails.put(EVENT_STATIC_ROUTE_CREATE, StaticRoute.class);
|
||||
entityEventDetails.put(EVENT_STATIC_ROUTE_DELETE, StaticRoute.class);
|
||||
|
||||
// tag related events
|
||||
entityEventDetails.put(EVENT_TAGS_CREATE, "Tag");
|
||||
entityEventDetails.put(EVENT_TAGS_DELETE, "tag");
|
||||
entityEventDetails.put(EVENT_TAGS_CREATE, ResourceTag.class);
|
||||
entityEventDetails.put(EVENT_TAGS_DELETE, ResourceTag.class);
|
||||
|
||||
// external network device events
|
||||
entityEventDetails.put(EVENT_EXTERNAL_NVP_CONTROLLER_ADD, "NvpController");
|
||||
|
|
@ -783,23 +784,23 @@ public class EventTypes {
|
|||
entityEventDetails.put(EVENT_EXTERNAL_NVP_CONTROLLER_CONFIGURE, "NvpController");
|
||||
|
||||
// AutoScale
|
||||
entityEventDetails.put(EVENT_COUNTER_CREATE, AutoScaleCounter.class.getName());
|
||||
entityEventDetails.put(EVENT_COUNTER_DELETE, AutoScaleCounter.class.getName());
|
||||
entityEventDetails.put(EVENT_CONDITION_CREATE, Condition.class.getName());
|
||||
entityEventDetails.put(EVENT_CONDITION_DELETE, Condition.class.getName());
|
||||
entityEventDetails.put(EVENT_AUTOSCALEPOLICY_CREATE, AutoScalePolicy.class.getName());
|
||||
entityEventDetails.put(EVENT_AUTOSCALEPOLICY_UPDATE, AutoScalePolicy.class.getName());
|
||||
entityEventDetails.put(EVENT_AUTOSCALEPOLICY_DELETE, AutoScalePolicy.class.getName());
|
||||
entityEventDetails.put(EVENT_AUTOSCALEVMPROFILE_CREATE, AutoScaleVmProfile.class.getName());
|
||||
entityEventDetails.put(EVENT_AUTOSCALEVMPROFILE_DELETE, AutoScaleVmProfile.class.getName());
|
||||
entityEventDetails.put(EVENT_AUTOSCALEVMPROFILE_UPDATE, AutoScaleVmProfile.class.getName());
|
||||
entityEventDetails.put(EVENT_AUTOSCALEVMGROUP_CREATE, AutoScaleVmGroup.class.getName());
|
||||
entityEventDetails.put(EVENT_AUTOSCALEVMGROUP_DELETE, AutoScaleVmGroup.class.getName());
|
||||
entityEventDetails.put(EVENT_AUTOSCALEVMGROUP_UPDATE, AutoScaleVmGroup.class.getName());
|
||||
entityEventDetails.put(EVENT_AUTOSCALEVMGROUP_ENABLE, AutoScaleVmGroup.class.getName());
|
||||
entityEventDetails.put(EVENT_AUTOSCALEVMGROUP_DISABLE, AutoScaleVmGroup.class.getName());
|
||||
entityEventDetails.put(EVENT_GUEST_VLAN_RANGE_DEDICATE, GuestVlan.class.getName());
|
||||
entityEventDetails.put(EVENT_DEDICATED_GUEST_VLAN_RANGE_RELEASE, GuestVlan.class.getName());
|
||||
entityEventDetails.put(EVENT_COUNTER_CREATE, AutoScaleCounter.class);
|
||||
entityEventDetails.put(EVENT_COUNTER_DELETE, AutoScaleCounter.class);
|
||||
entityEventDetails.put(EVENT_CONDITION_CREATE, Condition.class);
|
||||
entityEventDetails.put(EVENT_CONDITION_DELETE, Condition.class);
|
||||
entityEventDetails.put(EVENT_AUTOSCALEPOLICY_CREATE, AutoScalePolicy.class);
|
||||
entityEventDetails.put(EVENT_AUTOSCALEPOLICY_UPDATE, AutoScalePolicy.class);
|
||||
entityEventDetails.put(EVENT_AUTOSCALEPOLICY_DELETE, AutoScalePolicy.class);
|
||||
entityEventDetails.put(EVENT_AUTOSCALEVMPROFILE_CREATE, AutoScaleVmProfile.class);
|
||||
entityEventDetails.put(EVENT_AUTOSCALEVMPROFILE_DELETE, AutoScaleVmProfile.class);
|
||||
entityEventDetails.put(EVENT_AUTOSCALEVMPROFILE_UPDATE, AutoScaleVmProfile.class);
|
||||
entityEventDetails.put(EVENT_AUTOSCALEVMGROUP_CREATE, AutoScaleVmGroup.class);
|
||||
entityEventDetails.put(EVENT_AUTOSCALEVMGROUP_DELETE, AutoScaleVmGroup.class);
|
||||
entityEventDetails.put(EVENT_AUTOSCALEVMGROUP_UPDATE, AutoScaleVmGroup.class);
|
||||
entityEventDetails.put(EVENT_AUTOSCALEVMGROUP_ENABLE, AutoScaleVmGroup.class);
|
||||
entityEventDetails.put(EVENT_AUTOSCALEVMGROUP_DISABLE, AutoScaleVmGroup.class);
|
||||
entityEventDetails.put(EVENT_GUEST_VLAN_RANGE_DEDICATE, GuestVlan.class);
|
||||
entityEventDetails.put(EVENT_DEDICATED_GUEST_VLAN_RANGE_RELEASE, GuestVlan.class);
|
||||
|
||||
// OpenDaylight
|
||||
entityEventDetails.put(EVENT_EXTERNAL_OPENDAYLIGHT_ADD_CONTROLLER, "OpenDaylightController");
|
||||
|
|
@ -807,24 +808,40 @@ public class EventTypes {
|
|||
entityEventDetails.put(EVENT_EXTERNAL_OPENDAYLIGHT_CONFIGURE_CONTROLLER, "OpenDaylightController");
|
||||
|
||||
//Guest OS
|
||||
entityEventDetails.put(EVENT_GUEST_OS_ADD, GuestOS.class.getName());
|
||||
entityEventDetails.put(EVENT_GUEST_OS_REMOVE, GuestOS.class.getName());
|
||||
entityEventDetails.put(EVENT_GUEST_OS_UPDATE, GuestOS.class.getName());
|
||||
entityEventDetails.put(EVENT_GUEST_OS_MAPPING_ADD, GuestOSHypervisor.class.getName());
|
||||
entityEventDetails.put(EVENT_GUEST_OS_MAPPING_REMOVE, GuestOSHypervisor.class.getName());
|
||||
entityEventDetails.put(EVENT_GUEST_OS_MAPPING_UPDATE, GuestOSHypervisor.class.getName());
|
||||
entityEventDetails.put(EVENT_GUEST_OS_ADD, GuestOS.class);
|
||||
entityEventDetails.put(EVENT_GUEST_OS_REMOVE, GuestOS.class);
|
||||
entityEventDetails.put(EVENT_GUEST_OS_UPDATE, GuestOS.class);
|
||||
entityEventDetails.put(EVENT_GUEST_OS_MAPPING_ADD, GuestOSHypervisor.class);
|
||||
entityEventDetails.put(EVENT_GUEST_OS_MAPPING_REMOVE, GuestOSHypervisor.class);
|
||||
entityEventDetails.put(EVENT_GUEST_OS_MAPPING_UPDATE, GuestOSHypervisor.class);
|
||||
}
|
||||
|
||||
public static String getEntityForEvent(String eventName) {
|
||||
String entityClassName = entityEventDetails.get(eventName);
|
||||
if (entityClassName == null || entityClassName.isEmpty()) {
|
||||
Object entityClass = entityEventDetails.get(eventName);
|
||||
if (entityClass == null) {
|
||||
return null;
|
||||
} else if (entityClass instanceof String){
|
||||
return (String)entityClass;
|
||||
} else if (entityClass instanceof Class){
|
||||
String entityClassName = ((Class)entityClass).getName();
|
||||
int index = entityClassName.lastIndexOf(".");
|
||||
String entityName = entityClassName;
|
||||
if (index != -1) {
|
||||
entityName = entityClassName.substring(index + 1);
|
||||
}
|
||||
return entityName;
|
||||
}
|
||||
int index = entityClassName.lastIndexOf(".");
|
||||
String entityName = entityClassName;
|
||||
if (index != -1) {
|
||||
entityName = entityClassName.substring(index + 1);
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
public static Class getEntityClassForEvent(String eventName) {
|
||||
Object clz = entityEventDetails.get(eventName);
|
||||
|
||||
if(clz instanceof Class){
|
||||
return (Class)entityEventDetails.get(eventName);
|
||||
}
|
||||
return entityName;
|
||||
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -20,6 +20,7 @@ import java.util.Date;
|
|||
import java.util.Map;
|
||||
|
||||
import org.apache.cloudstack.acl.ControlledEntity;
|
||||
import org.apache.cloudstack.api.Displayable;
|
||||
import org.apache.cloudstack.api.Identity;
|
||||
import org.apache.cloudstack.api.InternalIdentity;
|
||||
|
||||
|
|
@ -31,7 +32,7 @@ import com.cloud.utils.fsm.StateObject;
|
|||
* VirtualMachine describes the properties held by a virtual machine
|
||||
*
|
||||
*/
|
||||
public interface VirtualMachine extends RunningOn, ControlledEntity, Identity, InternalIdentity, StateObject<VirtualMachine.State> {
|
||||
public interface VirtualMachine extends RunningOn, ControlledEntity, Identity, InternalIdentity, Displayable, StateObject<VirtualMachine.State> {
|
||||
|
||||
public enum PowerState {
|
||||
PowerUnknown,
|
||||
|
|
@ -321,6 +322,7 @@ public interface VirtualMachine extends RunningOn, ControlledEntity, Identity, I
|
|||
|
||||
long getUpdated();
|
||||
|
||||
@Override
|
||||
boolean isDisplay();
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -17,6 +17,10 @@
|
|||
package org.apache.cloudstack.api;
|
||||
|
||||
|
||||
import com.cloud.event.EventTypes;
|
||||
import org.apache.cloudstack.context.CallContext;
|
||||
import org.apache.log4j.Logger;
|
||||
|
||||
/**
|
||||
* queryAsyncJobResult API command.
|
||||
*/
|
||||
|
|
@ -27,6 +31,7 @@ public abstract class BaseAsyncCmd extends BaseCmd {
|
|||
public static final String vpcSyncObject = "vpc";
|
||||
public static final String snapshotHostSyncObject = "snapshothost";
|
||||
public static final String gslbSyncObject = "globalserverloadbalacner";
|
||||
private static final Logger s_logger = Logger.getLogger(BaseAsyncCmd.class.getName());
|
||||
|
||||
private Object job;
|
||||
|
||||
|
|
@ -89,4 +94,27 @@ public abstract class BaseAsyncCmd extends BaseCmd {
|
|||
public Object getJob() {
|
||||
return job;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isDisplay(){
|
||||
|
||||
// Get entity Class from the event name. Eg. - Volume.class
|
||||
final CallContext ctx = CallContext.current();
|
||||
Class entityClass = EventTypes.getEntityClassForEvent(getEventType());
|
||||
boolean isDisplay = true;
|
||||
|
||||
try{
|
||||
// If the entity Class implements Displayable interface then see the flag from VO
|
||||
if (entityClass != null && Displayable.class.isAssignableFrom(entityClass)){
|
||||
Object objVO =_entityMgr.findById(entityClass, (Long)ctx.getContextParameter(entityClass.getName()));
|
||||
isDisplay = ((Displayable)objVO).isDisplay();
|
||||
ctx.setEventDisplayEnabled(isDisplay);
|
||||
}
|
||||
}catch (Exception e){
|
||||
s_logger.trace("Caught exception while finding the display property, defaulting to true and moving on " +e);
|
||||
}
|
||||
|
||||
return isDisplay;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -360,7 +360,7 @@ public abstract class BaseCmd {
|
|||
* display flag is used to control the display of the resource only to the end user. It doesnt affect Root Admin.
|
||||
* @return display flag
|
||||
*/
|
||||
public boolean isDisplayResourceEnabled(){
|
||||
public boolean isDisplay(){
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,21 @@
|
|||
// 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 org.apache.cloudstack.api;
|
||||
|
||||
public interface Displayable {
|
||||
boolean isDisplay();
|
||||
}
|
||||
|
|
@ -250,6 +250,14 @@ public class DeployVMCmd extends BaseAsyncCreateCustomIdCmd {
|
|||
return displayVm;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isDisplay() {
|
||||
if(displayVm == null)
|
||||
return true;
|
||||
else
|
||||
return displayVm;
|
||||
}
|
||||
|
||||
public List<Long> getSecurityGroupIdList() {
|
||||
if (securityGroupNameList != null && securityGroupIdList != null) {
|
||||
throw new InvalidParameterValueException("securitygroupids parameter is mutually exclusive with securitygroupnames parameter");
|
||||
|
|
@ -408,16 +416,6 @@ public class DeployVMCmd extends BaseAsyncCreateCustomIdCmd {
|
|||
return accountId;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isDisplayResourceEnabled(){
|
||||
Boolean display = getDisplayVm();
|
||||
if(display == null){
|
||||
return true;
|
||||
} else {
|
||||
return display;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getEventType() {
|
||||
return EventTypes.EVENT_VM_CREATE;
|
||||
|
|
|
|||
|
|
@ -151,7 +151,7 @@ public class UpdateVMCmd extends BaseCustomIdCmd {
|
|||
}
|
||||
|
||||
@Override
|
||||
public boolean isDisplayResourceEnabled(){
|
||||
public boolean isDisplay(){
|
||||
UserVm userVm = _entityMgr.findById(UserVm.class, getId());
|
||||
if (userVm != null) {
|
||||
return userVm.isDisplayVm();
|
||||
|
|
|
|||
|
|
@ -118,7 +118,7 @@ public class UpgradeVMCmd extends BaseCmd {
|
|||
}
|
||||
|
||||
@Override
|
||||
public boolean isDisplayResourceEnabled(){
|
||||
public boolean isDisplay(){
|
||||
return _userVmService.isDisplayResourceEnabled(getId());
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -194,16 +194,6 @@ public class CreateVolumeCmd extends BaseAsyncCreateCustomIdCmd {
|
|||
return EventTypes.EVENT_VOLUME_CREATE;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isDisplayResourceEnabled(){
|
||||
Boolean display = getDisplayVolume();
|
||||
if(display == null){
|
||||
return true;
|
||||
} else {
|
||||
return display;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getEventDescription() {
|
||||
return "creating volume: " + getVolumeName() + ((getSnapshotId() == null) ? "" : " from snapshot: " + getSnapshotId());
|
||||
|
|
|
|||
|
|
@ -80,7 +80,7 @@ public class DeleteVolumeCmd extends BaseCmd {
|
|||
}
|
||||
|
||||
@Override
|
||||
public boolean isDisplayResourceEnabled(){
|
||||
public boolean isDisplay(){
|
||||
return _volumeService.isDisplayResourceEnabled(getId());
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -130,11 +130,6 @@ public class UpdateVolumeCmd extends BaseAsyncCustomIdCmd {
|
|||
return volume.getAccountId();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isDisplayResourceEnabled(){
|
||||
return _volumeService.isDisplayResourceEnabled(getId());
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getEventType() {
|
||||
return EventTypes.EVENT_VOLUME_UPDATE;
|
||||
|
|
|
|||
|
|
@ -316,6 +316,17 @@ public class CallContext {
|
|||
isEventDisplayEnabled = eventDisplayEnabled;
|
||||
}
|
||||
|
||||
public Map<Object, Object> getContextParameters() {
|
||||
return context;
|
||||
}
|
||||
|
||||
public void putContextParameters(Map<Object, Object> details){
|
||||
if (details == null) return;
|
||||
for(Object key : details.keySet()){
|
||||
putContextParameter(key, details.get(key));
|
||||
}
|
||||
}
|
||||
|
||||
public static void setActionEventInfo(String eventType, String description) {
|
||||
CallContext context = CallContext.current();
|
||||
if (context != null) {
|
||||
|
|
|
|||
|
|
@ -75,6 +75,9 @@ public class ApiAsyncJobDispatcher extends AdapterBase implements AsyncJobDispat
|
|||
// whenever we deserialize, the UserContext needs to be updated
|
||||
String userIdStr = params.get("ctxUserId");
|
||||
String acctIdStr = params.get("ctxAccountId");
|
||||
String contextDetails = params.get("ctxDetails");
|
||||
|
||||
|
||||
Long userId = null;
|
||||
Account accountObject = null;
|
||||
|
||||
|
|
@ -94,7 +97,12 @@ public class ApiAsyncJobDispatcher extends AdapterBase implements AsyncJobDispat
|
|||
accountObject = _entityMgr.findById(Account.class, Long.parseLong(acctIdStr));
|
||||
}
|
||||
|
||||
CallContext.register(user, accountObject);
|
||||
CallContext ctx = CallContext.register(user, accountObject);
|
||||
if(contextDetails != null){
|
||||
Type objectMapType = new TypeToken<Map<Object, Object>>() {}.getType();
|
||||
ctx.putContextParameters((Map<Object, Object>) gson.fromJson(contextDetails, objectMapType));
|
||||
}
|
||||
|
||||
try {
|
||||
// dispatch could ultimately queue the job
|
||||
_dispatcher.dispatch(cmdObj, params, true);
|
||||
|
|
|
|||
|
|
@ -36,10 +36,7 @@ import org.apache.cloudstack.framework.jobs.AsyncJobManager;
|
|||
import com.cloud.api.dispatch.DispatchChain;
|
||||
import com.cloud.api.dispatch.DispatchChainFactory;
|
||||
import com.cloud.api.dispatch.DispatchTask;
|
||||
import com.cloud.event.EventTypes;
|
||||
import com.cloud.user.AccountManager;
|
||||
import com.cloud.utils.ReflectUtil;
|
||||
import com.cloud.vm.VirtualMachine;
|
||||
|
||||
public class ApiDispatcher {
|
||||
private static final Logger s_logger = Logger.getLogger(ApiDispatcher.class.getName());
|
||||
|
|
@ -75,7 +72,6 @@ public class ApiDispatcher {
|
|||
|
||||
public void dispatchCreateCmd(final BaseAsyncCreateCmd cmd, final Map<String, String> params) throws Exception {
|
||||
asyncCreationDispatchChain.dispatch(new DispatchTask(cmd, params));
|
||||
CallContext.current().setEventDisplayEnabled(cmd.isDisplayResourceEnabled());
|
||||
}
|
||||
|
||||
public void dispatch(final BaseCmd cmd, final Map<String, String> params, final boolean execute) throws Exception {
|
||||
|
|
@ -83,26 +79,15 @@ public class ApiDispatcher {
|
|||
standardDispatchChain.dispatch(new DispatchTask(cmd, params));
|
||||
|
||||
final CallContext ctx = CallContext.current();
|
||||
ctx.setEventDisplayEnabled(cmd.isDisplayResourceEnabled());
|
||||
ctx.setEventDisplayEnabled(cmd.isDisplay());
|
||||
|
||||
// TODO This if shouldn't be here. Use polymorphism and move it to validateSpecificParameters
|
||||
if (cmd instanceof BaseAsyncCmd) {
|
||||
|
||||
final BaseAsyncCmd asyncCmd = (BaseAsyncCmd)cmd;
|
||||
final String startEventId = params.get(ApiConstants.CTX_START_EVENT_ID);
|
||||
String uuid = params.get(ApiConstants.UUID);
|
||||
ctx.setStartEventId(Long.valueOf(startEventId));
|
||||
|
||||
// Fow now use the key from EventTypes.java rather than getInstanceType bcz the later doesn't refer to the interfaces
|
||||
// Add the resource id in the call context, also add some other first class object ids (for now vm) if available.
|
||||
// TODO - this should be done for all the uuids passed in the cmd - so should be moved where uuid to id conversion happens.
|
||||
if(EventTypes.getEntityForEvent(asyncCmd.getEventType()) != null){
|
||||
ctx.putContextParameter(EventTypes.getEntityForEvent(asyncCmd.getEventType()), uuid);
|
||||
}
|
||||
if(params.get(ApiConstants.VIRTUAL_MACHINE_ID) != null){
|
||||
ctx.putContextParameter(ReflectUtil.getEntityName(VirtualMachine.class), params.get(ApiConstants.VIRTUAL_MACHINE_ID));
|
||||
}
|
||||
|
||||
// Synchronise job on the object if needed
|
||||
if (asyncCmd.getJob() != null && asyncCmd.getSyncObjId() != null && asyncCmd.getSyncObjType() != null) {
|
||||
Long queueSizeLimit = null;
|
||||
|
|
|
|||
|
|
@ -148,7 +148,6 @@ import com.cloud.user.UserAccount;
|
|||
import com.cloud.user.UserVO;
|
||||
import com.cloud.utils.NumbersUtil;
|
||||
import com.cloud.utils.Pair;
|
||||
import com.cloud.utils.ReflectUtil;
|
||||
import com.cloud.utils.StringUtils;
|
||||
import com.cloud.utils.component.ComponentContext;
|
||||
import com.cloud.utils.component.ManagerBase;
|
||||
|
|
@ -159,7 +158,6 @@ import com.cloud.utils.db.SearchCriteria;
|
|||
import com.cloud.utils.db.TransactionLegacy;
|
||||
import com.cloud.utils.exception.CloudRuntimeException;
|
||||
import com.cloud.utils.exception.ExceptionProxyObject;
|
||||
import com.cloud.vm.VirtualMachine;
|
||||
|
||||
@Component
|
||||
public class ApiServer extends ManagerBase implements HttpRequestHandler, ApiServerService {
|
||||
|
|
@ -511,7 +509,6 @@ public class ApiServer extends ManagerBase implements HttpRequestHandler, ApiSer
|
|||
final CallContext ctx = CallContext.current();
|
||||
final Long callerUserId = ctx.getCallingUserId();
|
||||
final Account caller = ctx.getCallingAccount();
|
||||
String vmUUID = params.get(ApiConstants.VIRTUAL_MACHINE_ID);
|
||||
|
||||
// Queue command based on Cmd super class:
|
||||
// BaseCmd: cmd is dispatched to ApiDispatcher, executed, serialized and returned.
|
||||
|
|
@ -526,6 +523,9 @@ public class ApiServer extends ManagerBase implements HttpRequestHandler, ApiSer
|
|||
objectId = createCmd.getEntityId();
|
||||
objectUuid = createCmd.getEntityUuid();
|
||||
params.put("id", objectId.toString());
|
||||
Class entityClass = EventTypes.getEntityClassForEvent(createCmd.getEventType());
|
||||
if(entityClass != null)
|
||||
ctx.putContextParameter(entityClass.getName(), objectId);
|
||||
} else {
|
||||
// Extract the uuid before params are processed and id reflects internal db id
|
||||
objectUuid = params.get(ApiConstants.ID);
|
||||
|
|
@ -552,14 +552,11 @@ public class ApiServer extends ManagerBase implements HttpRequestHandler, ApiSer
|
|||
if(EventTypes.getEntityForEvent(asyncCmd.getEventType()) != null){
|
||||
ctx.putContextParameter(EventTypes.getEntityForEvent(asyncCmd.getEventType()), objectUuid);
|
||||
}
|
||||
if(vmUUID != null){
|
||||
ctx.putContextParameter(ReflectUtil.getEntityName(VirtualMachine.class), vmUUID);
|
||||
}
|
||||
|
||||
// save the scheduled event
|
||||
final Long eventId =
|
||||
ActionEventUtils.onScheduledActionEvent((callerUserId == null) ? User.UID_SYSTEM : callerUserId, asyncCmd.getEntityOwnerId(), asyncCmd.getEventType(),
|
||||
asyncCmd.getEventDescription(), asyncCmd.isDisplayResourceEnabled(), startEventId);
|
||||
asyncCmd.getEventDescription(), asyncCmd.isDisplay(), startEventId);
|
||||
if (startEventId == 0) {
|
||||
// There was no create event before, set current event id as start eventId
|
||||
startEventId = eventId;
|
||||
|
|
@ -567,6 +564,7 @@ public class ApiServer extends ManagerBase implements HttpRequestHandler, ApiSer
|
|||
|
||||
params.put("ctxStartEventId", String.valueOf(startEventId));
|
||||
params.put("cmdEventType", asyncCmd.getEventType().toString());
|
||||
params.put("ctxDetails", ApiGsonHelper.getBuilder().create().toJson(ctx.getContextParameters()));
|
||||
|
||||
Long instanceId = (objectId == null) ? asyncCmd.getInstanceId() : objectId;
|
||||
AsyncJobVO job = new AsyncJobVO("", callerUserId, caller.getId(), cmdObj.getClass().getName(),
|
||||
|
|
|
|||
|
|
@ -23,6 +23,7 @@ import org.apache.cloudstack.api.BaseCmd;
|
|||
import org.apache.cloudstack.api.ServerApiException;
|
||||
|
||||
import com.cloud.exception.ResourceAllocationException;
|
||||
import org.apache.cloudstack.context.CallContext;
|
||||
|
||||
|
||||
/**
|
||||
|
|
@ -42,6 +43,7 @@ public class CommandCreationWorker implements DispatchWorker {
|
|||
|
||||
if (cmd instanceof BaseAsyncCreateCmd) {
|
||||
try {
|
||||
CallContext.current().setEventDisplayEnabled(cmd.isDisplay());
|
||||
((BaseAsyncCreateCmd)cmd).create();
|
||||
} catch (final ResourceAllocationException e) {
|
||||
throw new ServerApiException(ApiErrorCode.RESOURCE_ALLOCATION_ERROR,
|
||||
|
|
|
|||
|
|
@ -464,6 +464,11 @@ public class ParamProcessWorker implements DispatchWorker {
|
|||
// Enforce that it's uuid for newly added apis from version 3.x
|
||||
if (!isPre3x && !isUuid)
|
||||
return null;
|
||||
|
||||
// There may be multiple entities defined on the @EntityReference of a Response.class
|
||||
// UUID CommandType would expect only one entityType, so use the first entityType
|
||||
final Class<?>[] entities = annotation.entityType()[0].getAnnotation(EntityReference.class).value();
|
||||
|
||||
// Allow both uuid and internal id for pre3x apis
|
||||
if (isPre3x && !isUuid) {
|
||||
try {
|
||||
|
|
@ -471,12 +476,15 @@ public class ParamProcessWorker implements DispatchWorker {
|
|||
} catch (final NumberFormatException e) {
|
||||
internalId = null;
|
||||
}
|
||||
if (internalId != null)
|
||||
if (internalId != null){
|
||||
// Populate CallContext for each of the entity.
|
||||
for (final Class<?> entity : entities) {
|
||||
CallContext.current().putContextParameter(entity.getName(), internalId);
|
||||
}
|
||||
return internalId;
|
||||
}
|
||||
}
|
||||
// There may be multiple entities defined on the @EntityReference of a Response.class
|
||||
// UUID CommandType would expect only one entityType, so use the first entityType
|
||||
final Class<?>[] entities = annotation.entityType()[0].getAnnotation(EntityReference.class).value();
|
||||
|
||||
// Go through each entity which is an interface to a VO class and get a VO object
|
||||
// Try to getId() for the object using reflection, break on first non-null value
|
||||
for (final Class<?> entity : entities) {
|
||||
|
|
@ -487,15 +495,17 @@ public class ParamProcessWorker implements DispatchWorker {
|
|||
continue;
|
||||
}
|
||||
// Invoke the getId method, get the internal long ID
|
||||
// If that fails hide exceptions as the uuid may not exist
|
||||
// If that fails hide exceptions as the uuid may not exist s
|
||||
try {
|
||||
internalId = ((InternalIdentity)objVO).getId();
|
||||
} catch (final IllegalArgumentException e) {
|
||||
} catch (final NullPointerException e) {
|
||||
}
|
||||
// Return on first non-null Id for the uuid entity
|
||||
if (internalId != null)
|
||||
if (internalId != null){
|
||||
CallContext.current().putContextParameter(entity.getName(), internalId);
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (internalId == null) {
|
||||
if (s_logger.isDebugEnabled())
|
||||
|
|
|
|||
|
|
@ -26,7 +26,8 @@ import javax.annotation.PostConstruct;
|
|||
import javax.inject.Inject;
|
||||
|
||||
import com.cloud.utils.ReflectUtil;
|
||||
import com.cloud.vm.VirtualMachine;
|
||||
import com.cloud.utils.db.EntityManager;
|
||||
import org.apache.cloudstack.api.Identity;
|
||||
import org.apache.log4j.Logger;
|
||||
import org.springframework.beans.factory.NoSuchBeanDefinitionException;
|
||||
|
||||
|
|
@ -54,6 +55,7 @@ public class ActionEventUtils {
|
|||
private static ProjectDao s_projectDao;
|
||||
protected static UserDao s_userDao;
|
||||
protected static EventBus s_eventBus = null;
|
||||
protected static EntityManager s_entityMgr;
|
||||
|
||||
public static final String EventDetails = "event_details";
|
||||
public static final String EventId = "event_id";
|
||||
|
|
@ -69,6 +71,8 @@ public class ActionEventUtils {
|
|||
UserDao userDao;
|
||||
@Inject
|
||||
ProjectDao projectDao;
|
||||
@Inject
|
||||
EntityManager entityMgr;
|
||||
|
||||
public ActionEventUtils() {
|
||||
}
|
||||
|
|
@ -79,6 +83,7 @@ public class ActionEventUtils {
|
|||
s_accountDao = accountDao;
|
||||
s_userDao = userDao;
|
||||
s_projectDao = projectDao;
|
||||
s_entityMgr = entityMgr;
|
||||
}
|
||||
|
||||
public static Long onActionEvent(Long userId, Long accountId, Long domainId, String type, String description) {
|
||||
|
|
@ -188,19 +193,24 @@ public class ActionEventUtils {
|
|||
String entityType = null;
|
||||
String entityUuid = null;
|
||||
CallContext context = CallContext.current();
|
||||
String vmEntityName = ReflectUtil.getEntityName(VirtualMachine.class);
|
||||
String vmuuid = (String) context.getContextParameter(vmEntityName);
|
||||
Class entityKey = getEntityKey(eventType);
|
||||
if (entityKey != null)
|
||||
{
|
||||
if (entityKey != null){
|
||||
//FIXME - Remove this since it should be covered by the else if condition below.
|
||||
entityUuid = (String)context.getContextParameter(entityKey);
|
||||
if (entityUuid != null)
|
||||
entityType = entityKey.getName();
|
||||
}else if (EventTypes.getEntityForEvent(eventType) != null){
|
||||
entityType = EventTypes.getEntityForEvent(eventType);
|
||||
if (entityType != null){
|
||||
entityUuid = (String)context.getContextParameter(entityType);
|
||||
}else if (EventTypes.getEntityClassForEvent(eventType) != null){
|
||||
//Get entity Class(Example - VirtualMachine.class) from the event Type eg. - VM.CREATE
|
||||
Class entityClass = EventTypes.getEntityClassForEvent(eventType);
|
||||
|
||||
//Get uuid from id
|
||||
if(context.getContextParameter(entityClass.getName()) != null){
|
||||
try {
|
||||
final Object objVO = s_entityMgr.findByIdIncludingRemoved(entityClass, getInternalId(context.getContextParameter(entityClass.getName())));
|
||||
entityUuid = ((Identity)objVO).getUuid();
|
||||
} catch (Exception e){
|
||||
s_logger.debug("Caught exception while finding entityUUID, moving on");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -225,7 +235,7 @@ public class ActionEventUtils {
|
|||
eventDescription.put("entity", entityType);
|
||||
eventDescription.put("entityuuid", entityUuid);
|
||||
//Put all the first class entities that are touched during the action. For now atleast put in the vmid.
|
||||
eventDescription.put(vmEntityName, vmuuid);
|
||||
populateFirstClassEntities(eventDescription);
|
||||
eventDescription.put("description", description);
|
||||
|
||||
String eventDate = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss Z").format(new Date());
|
||||
|
|
@ -240,6 +250,19 @@ public class ActionEventUtils {
|
|||
}
|
||||
}
|
||||
|
||||
private static Long getInternalId(Object internalIdObj){
|
||||
Long internalId = null;
|
||||
|
||||
// In case its an async job the value would be a string because of json deserialization
|
||||
if(internalIdObj instanceof String){
|
||||
internalId = Long.valueOf((String) internalIdObj);
|
||||
}else if (internalIdObj instanceof Long){
|
||||
internalId = (Long) internalIdObj;
|
||||
}
|
||||
|
||||
return internalId;
|
||||
}
|
||||
|
||||
private static long getDomainId(long accountId) {
|
||||
AccountVO account = s_accountDao.findByIdIncludingRemoved(accountId);
|
||||
if (account == null) {
|
||||
|
|
@ -249,6 +272,27 @@ public class ActionEventUtils {
|
|||
return account.getDomainId();
|
||||
}
|
||||
|
||||
private static void populateFirstClassEntities(Map<String, String> eventDescription){
|
||||
|
||||
CallContext context = CallContext.current();
|
||||
Map<Object, Object> contextMap = context.getContextParameters();
|
||||
|
||||
try{
|
||||
for(Map.Entry<Object, Object> entry : contextMap.entrySet()){
|
||||
Object key = entry.getKey();
|
||||
Class clz = Class.forName((String)key);
|
||||
if(clz instanceof Class && Identity.class.isAssignableFrom(clz)){
|
||||
final Object objVO = s_entityMgr.findById(clz, getInternalId(entry.getValue()));
|
||||
String uuid = ((Identity) objVO).getUuid();
|
||||
eventDescription.put(ReflectUtil.getEntityName(clz), uuid);
|
||||
}
|
||||
}
|
||||
}catch (Exception e){
|
||||
s_logger.debug("Caught exception while populating first class entities for event bus, moving on", e);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private static Class getEntityKey(String eventType)
|
||||
{
|
||||
// FIXME - Remove this
|
||||
|
|
|
|||
|
|
@ -1862,15 +1862,6 @@ public class UserVmManagerImpl extends ManagerBase implements UserVmManager, Vir
|
|||
return updateVirtualMachine(id, displayName, group, ha, isDisplayVm, osTypeId, userData, isDynamicallyScalable, cmd.getHttpMethod(), cmd.getCustomId(), hostName);
|
||||
}
|
||||
|
||||
private void usage(VirtualMachine vm){
|
||||
List<NicVO> nics = _nicDao.listByVmId(vm.getId());
|
||||
for (NicVO nic : nics) {
|
||||
NetworkVO network = _networkDao.findById(nic.getNetworkId());
|
||||
UsageEventUtils.publishUsageEvent(EventTypes.EVENT_NETWORK_OFFERING_REMOVE, vm.getAccountId(), vm.getDataCenterId(), vm.getId(),
|
||||
Long.toString(nic.getId()), network.getNetworkOfferingId(), null, 0L, vm.getClass().getName(), vm.getUuid(), vm.isDisplay());
|
||||
}
|
||||
}
|
||||
|
||||
private void saveUsageEvent(UserVmVO vm) {
|
||||
|
||||
// If vm not destroyed
|
||||
|
|
|
|||
|
|
@ -18,7 +18,12 @@ package com.cloud.api.dispatch;
|
|||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.util.UUID;
|
||||
|
||||
import com.cloud.user.Account;
|
||||
import com.cloud.user.AccountVO;
|
||||
import com.cloud.user.UserVO;
|
||||
import org.apache.cloudstack.context.CallContext;
|
||||
import org.junit.Test;
|
||||
|
||||
import static org.mockito.Mockito.mock;
|
||||
|
|
@ -36,6 +41,9 @@ public class CommandCreationWorkerTest {
|
|||
// Prepare
|
||||
final BaseAsyncCreateCmd asyncCreateCmd = mock(BaseAsyncCreateCmd.class);
|
||||
final Map<String, String> params = new HashMap<String, String>();
|
||||
Account account = new AccountVO("testaccount", 1L, "networkdomain", (short) 0, "uuid");
|
||||
UserVO user = new UserVO(1, "testuser", "password", "firstname", "lastName", "email", "timezone", UUID.randomUUID().toString());
|
||||
CallContext.register(user, account);
|
||||
|
||||
// Execute
|
||||
final CommandCreationWorker creationWorker = new CommandCreationWorker();
|
||||
|
|
|
|||
|
|
@ -32,6 +32,7 @@ import java.util.UUID;
|
|||
import javax.inject.Inject;
|
||||
import javax.naming.ConfigurationException;
|
||||
|
||||
import com.cloud.utils.db.EntityManager;
|
||||
import org.junit.After;
|
||||
import org.junit.Before;
|
||||
import org.junit.BeforeClass;
|
||||
|
|
@ -282,6 +283,11 @@ public class AffinityApiUnitTest {
|
|||
return Mockito.mock(AffinityGroupDomainMapDao.class);
|
||||
}
|
||||
|
||||
@Bean
|
||||
public EntityManager entityManager() {
|
||||
return Mockito.mock(EntityManager.class);
|
||||
}
|
||||
|
||||
@Bean
|
||||
public DomainDao domainDao() {
|
||||
return Mockito.mock(DomainDao.class);
|
||||
|
|
|
|||
Loading…
Reference in New Issue