Search in sources :

Example 56 with ActionEvent

use of com.cloud.event.ActionEvent in project cloudstack by apache.

the class AccountManagerImpl method createApiKeyAndSecretKey.

@Override
@DB
@ActionEvent(eventType = EventTypes.EVENT_REGISTER_FOR_SECRET_API_KEY, eventDescription = "register for the developer API keys")
public String[] createApiKeyAndSecretKey(final long userId) {
    User user = getUserIncludingRemoved(userId);
    if (user == null) {
        throw new InvalidParameterValueException("Unable to find user by id");
    }
    final String[] keys = new String[2];
    Transaction.execute(new TransactionCallbackNoReturn() {

        @Override
        public void doInTransactionWithoutResult(TransactionStatus status) {
            keys[0] = AccountManagerImpl.this.createUserApiKey(userId);
            keys[1] = AccountManagerImpl.this.createUserSecretKey(userId);
        }
    });
    return keys;
}
Also used : InvalidParameterValueException(com.cloud.exception.InvalidParameterValueException) TransactionStatus(com.cloud.utils.db.TransactionStatus) TransactionCallbackNoReturn(com.cloud.utils.db.TransactionCallbackNoReturn) ActionEvent(com.cloud.event.ActionEvent) DB(com.cloud.utils.db.DB)

Example 57 with ActionEvent

use of com.cloud.event.ActionEvent in project cloudstack by apache.

the class UserVmManagerImpl method updateDefaultNicForVirtualMachine.

@Override
@ActionEvent(eventType = EventTypes.EVENT_NIC_UPDATE, eventDescription = "Creating Nic", async = true)
public UserVm updateDefaultNicForVirtualMachine(UpdateDefaultNicForVMCmd cmd) throws InvalidParameterValueException, CloudRuntimeException {
    Long vmId = cmd.getVmId();
    Long nicId = cmd.getNicId();
    Account caller = CallContext.current().getCallingAccount();
    UserVmVO vmInstance = _vmDao.findById(vmId);
    if (vmInstance == null) {
        throw new InvalidParameterValueException("unable to find a virtual machine with id " + vmId);
    }
    // Check that Vm does not have VM Snapshots
    if (_vmSnapshotDao.findByVm(vmId).size() > 0) {
        throw new InvalidParameterValueException("NIC cannot be updated for VM with VM Snapshots");
    }
    NicVO nic = _nicDao.findById(nicId);
    if (nic == null) {
        throw new InvalidParameterValueException("unable to find a nic with id " + nicId);
    }
    NetworkVO network = _networkDao.findById(nic.getNetworkId());
    if (network == null) {
        throw new InvalidParameterValueException("unable to find a network with id " + nic.getNetworkId());
    }
    // Perform permission check on VM
    _accountMgr.checkAccess(caller, null, true, vmInstance);
    // Verify that zone is not Basic
    DataCenterVO dc = _dcDao.findById(vmInstance.getDataCenterId());
    if (dc.getNetworkType() == DataCenter.NetworkType.Basic) {
        throw new CloudRuntimeException("Zone " + vmInstance.getDataCenterId() + ", has a NetworkType of Basic. Can't change default NIC on a Basic Network");
    }
    // no need to check permissions for network, we'll enumerate the ones they already have access to
    Network existingdefaultnet = _networkModel.getDefaultNetworkForVm(vmId);
    //check to see if nic is attached to VM
    if (nic.getInstanceId() != vmId) {
        throw new InvalidParameterValueException(nic + " is not a nic on  " + vmInstance);
    }
    // if current default equals chosen new default, Throw an exception
    if (nic.isDefaultNic()) {
        throw new CloudRuntimeException("refusing to set default nic because chosen nic is already the default");
    }
    //make sure the VM is Running or Stopped
    if ((vmInstance.getState() != State.Running) && (vmInstance.getState() != State.Stopped)) {
        throw new CloudRuntimeException("refusing to set default " + vmInstance + " is not Running or Stopped");
    }
    NicProfile existing = null;
    List<NicProfile> nicProfiles = _networkMgr.getNicProfiles(vmInstance);
    for (NicProfile nicProfile : nicProfiles) {
        if (nicProfile.isDefaultNic() && existingdefaultnet != null && nicProfile.getNetworkId() == existingdefaultnet.getId()) {
            existing = nicProfile;
        }
    }
    if (existing == null) {
        s_logger.warn("Failed to update default nic, no nic profile found for existing default network");
        throw new CloudRuntimeException("Failed to find a nic profile for the existing default network. This is bad and probably means some sort of configuration corruption");
    }
    Network oldDefaultNetwork = null;
    oldDefaultNetwork = _networkModel.getDefaultNetworkForVm(vmId);
    String oldNicIdString = Long.toString(_networkModel.getDefaultNic(vmId).getId());
    long oldNetworkOfferingId = -1L;
    if (oldDefaultNetwork != null) {
        oldNetworkOfferingId = oldDefaultNetwork.getNetworkOfferingId();
    }
    NicVO existingVO = _nicDao.findById(existing.id);
    Integer chosenID = nic.getDeviceId();
    Integer existingID = existing.getDeviceId();
    nic.setDefaultNic(true);
    nic.setDeviceId(existingID);
    existingVO.setDefaultNic(false);
    existingVO.setDeviceId(chosenID);
    nic = _nicDao.persist(nic);
    existingVO = _nicDao.persist(existingVO);
    Network newdefault = null;
    newdefault = _networkModel.getDefaultNetworkForVm(vmId);
    if (newdefault == null) {
        nic.setDefaultNic(false);
        nic.setDeviceId(chosenID);
        existingVO.setDefaultNic(true);
        existingVO.setDeviceId(existingID);
        nic = _nicDao.persist(nic);
        _nicDao.persist(existingVO);
        newdefault = _networkModel.getDefaultNetworkForVm(vmId);
        if (newdefault.getId() == existingdefaultnet.getId()) {
            throw new CloudRuntimeException("Setting a default nic failed, and we had no default nic, but we were able to set it back to the original");
        }
        throw new CloudRuntimeException("Failed to change default nic to " + nic + " and now we have no default");
    } else if (newdefault.getId() == nic.getNetworkId()) {
        s_logger.debug("successfully set default network to " + network + " for " + vmInstance);
        String nicIdString = Long.toString(nic.getId());
        long newNetworkOfferingId = network.getNetworkOfferingId();
        UsageEventUtils.publishUsageEvent(EventTypes.EVENT_NETWORK_OFFERING_REMOVE, vmInstance.getAccountId(), vmInstance.getDataCenterId(), vmInstance.getId(), oldNicIdString, oldNetworkOfferingId, null, 1L, VirtualMachine.class.getName(), vmInstance.getUuid(), vmInstance.isDisplay());
        UsageEventUtils.publishUsageEvent(EventTypes.EVENT_NETWORK_OFFERING_ASSIGN, vmInstance.getAccountId(), vmInstance.getDataCenterId(), vmInstance.getId(), nicIdString, newNetworkOfferingId, null, 1L, VirtualMachine.class.getName(), vmInstance.getUuid(), vmInstance.isDisplay());
        UsageEventUtils.publishUsageEvent(EventTypes.EVENT_NETWORK_OFFERING_REMOVE, vmInstance.getAccountId(), vmInstance.getDataCenterId(), vmInstance.getId(), nicIdString, newNetworkOfferingId, null, 0L, VirtualMachine.class.getName(), vmInstance.getUuid(), vmInstance.isDisplay());
        UsageEventUtils.publishUsageEvent(EventTypes.EVENT_NETWORK_OFFERING_ASSIGN, vmInstance.getAccountId(), vmInstance.getDataCenterId(), vmInstance.getId(), oldNicIdString, oldNetworkOfferingId, null, 0L, VirtualMachine.class.getName(), vmInstance.getUuid(), vmInstance.isDisplay());
        return _vmDao.findById(vmInstance.getId());
    }
    throw new CloudRuntimeException("something strange happened, new default network(" + newdefault.getId() + ") is not null, and is not equal to the network(" + nic.getNetworkId() + ") of the chosen nic");
}
Also used : DataCenterVO(com.cloud.dc.DataCenterVO) Account(com.cloud.user.Account) NetworkVO(com.cloud.network.dao.NetworkVO) InvalidParameterValueException(com.cloud.exception.InvalidParameterValueException) CloudRuntimeException(com.cloud.utils.exception.CloudRuntimeException) Network(com.cloud.network.Network) PhysicalNetwork(com.cloud.network.PhysicalNetwork) ActionEvent(com.cloud.event.ActionEvent)

Example 58 with ActionEvent

use of com.cloud.event.ActionEvent in project cloudstack by apache.

the class CiscoNexusVSMElement method disableCiscoNexusVSM.

@Override
@ActionEvent(eventType = EventTypes.EVENT_EXTERNAL_SWITCH_MGMT_DEVICE_DISABLE, eventDescription = "deleting VSM", async = true)
public CiscoNexusVSMDeviceVO disableCiscoNexusVSM(DisableCiscoNexusVSMCmd cmd) {
    CiscoNexusVSMDeviceVO result;
    result = disableCiscoNexusVSM(cmd.getCiscoNexusVSMDeviceId());
    return result;
}
Also used : CiscoNexusVSMDeviceVO(com.cloud.network.CiscoNexusVSMDeviceVO) ActionEvent(com.cloud.event.ActionEvent)

Example 59 with ActionEvent

use of com.cloud.event.ActionEvent in project cloudstack by apache.

the class CiscoNexusVSMElement method enableCiscoNexusVSM.

@Override
@ActionEvent(eventType = EventTypes.EVENT_EXTERNAL_SWITCH_MGMT_DEVICE_ENABLE, eventDescription = "deleting VSM", async = true)
public CiscoNexusVSMDeviceVO enableCiscoNexusVSM(EnableCiscoNexusVSMCmd cmd) {
    CiscoNexusVSMDeviceVO result;
    result = enableCiscoNexusVSM(cmd.getCiscoNexusVSMDeviceId());
    return result;
}
Also used : CiscoNexusVSMDeviceVO(com.cloud.network.CiscoNexusVSMDeviceVO) ActionEvent(com.cloud.event.ActionEvent)

Example 60 with ActionEvent

use of com.cloud.event.ActionEvent in project cloudstack by apache.

the class ConfigurationManagerImpl method markDefaultZone.

@Override
@ActionEvent(eventType = EventTypes.EVENT_ACCOUNT_MARK_DEFAULT_ZONE, eventDescription = "Marking account with the " + "default zone", async = true)
public AccountVO markDefaultZone(final String accountName, final long domainId, final long defaultZoneId) {
    // Check if the account exists
    final Account account = _accountDao.findEnabledAccount(accountName, domainId);
    if (account == null) {
        s_logger.error("Unable to find account by name: " + accountName + " in domain " + domainId);
        throw new InvalidParameterValueException("Account by name: " + accountName + " doesn't exist in domain " + domainId);
    }
    // Don't allow modification of system account
    if (account.getId() == Account.ACCOUNT_ID_SYSTEM) {
        throw new InvalidParameterValueException("Can not modify system account");
    }
    final AccountVO acctForUpdate = _accountDao.findById(account.getId());
    acctForUpdate.setDefaultZoneId(defaultZoneId);
    if (_accountDao.update(account.getId(), acctForUpdate)) {
        CallContext.current().setEventDetails("Default zone id= " + defaultZoneId);
        return _accountDao.findById(account.getId());
    } else {
        return null;
    }
}
Also used : Account(com.cloud.user.Account) InvalidParameterValueException(com.cloud.exception.InvalidParameterValueException) AccountVO(com.cloud.user.AccountVO) ActionEvent(com.cloud.event.ActionEvent)

Aggregations

ActionEvent (com.cloud.event.ActionEvent)209 InvalidParameterValueException (com.cloud.exception.InvalidParameterValueException)174 Account (com.cloud.user.Account)114 CloudRuntimeException (com.cloud.utils.exception.CloudRuntimeException)80 DB (com.cloud.utils.db.DB)79 TransactionStatus (com.cloud.utils.db.TransactionStatus)40 PermissionDeniedException (com.cloud.exception.PermissionDeniedException)32 ResourceUnavailableException (com.cloud.exception.ResourceUnavailableException)32 ArrayList (java.util.ArrayList)31 CallContext (org.apache.cloudstack.context.CallContext)22 ConcurrentOperationException (com.cloud.exception.ConcurrentOperationException)20 TransactionCallbackNoReturn (com.cloud.utils.db.TransactionCallbackNoReturn)20 DataCenterVO (com.cloud.dc.DataCenterVO)18 Network (com.cloud.network.Network)18 LoadBalancerVO (com.cloud.network.dao.LoadBalancerVO)17 InvalidParameterException (java.security.InvalidParameterException)16 List (java.util.List)16 NetworkVO (com.cloud.network.dao.NetworkVO)15 ConfigurationException (javax.naming.ConfigurationException)15 ResourceAllocationException (com.cloud.exception.ResourceAllocationException)14