Search in sources :

Example 91 with DomainVO

use of com.cloud.domain.DomainVO in project cosmic by MissionCriticalCloud.

the class ConfigurationServerImpl method updateResourceCount.

@DB
public void updateResourceCount() {
    final ResourceType[] resourceTypes = Resource.ResourceType.values();
    final List<AccountVO> accounts = _accountDao.listAll();
    final List<DomainVO> domains = _domainDao.listAll();
    final List<ResourceCountVO> domainResourceCount = _resourceCountDao.listResourceCountByOwnerType(ResourceOwnerType.Domain);
    final List<ResourceCountVO> accountResourceCount = _resourceCountDao.listResourceCountByOwnerType(ResourceOwnerType.Account);
    final List<ResourceType> accountSupportedResourceTypes = new ArrayList<>();
    final List<ResourceType> domainSupportedResourceTypes = new ArrayList<>();
    for (final ResourceType resourceType : resourceTypes) {
        if (resourceType.supportsOwner(ResourceOwnerType.Account)) {
            accountSupportedResourceTypes.add(resourceType);
        }
        if (resourceType.supportsOwner(ResourceOwnerType.Domain)) {
            domainSupportedResourceTypes.add(resourceType);
        }
    }
    final int accountExpectedCount = accountSupportedResourceTypes.size();
    final int domainExpectedCount = domainSupportedResourceTypes.size();
    if ((domainResourceCount.size() < domainExpectedCount * domains.size())) {
        s_logger.debug("resource_count table has records missing for some domains...going to insert them");
        for (final DomainVO domain : domains) {
            // Lock domain
            Transaction.execute(new TransactionCallbackNoReturn() {

                @Override
                public void doInTransactionWithoutResult(final TransactionStatus status) {
                    _domainDao.lockRow(domain.getId(), true);
                    final List<ResourceCountVO> domainCounts = _resourceCountDao.listByOwnerId(domain.getId(), ResourceOwnerType.Domain);
                    final List<String> domainCountStr = new ArrayList<>();
                    for (final ResourceCountVO domainCount : domainCounts) {
                        domainCountStr.add(domainCount.getType().toString());
                    }
                    if (domainCountStr.size() < domainExpectedCount) {
                        for (final ResourceType resourceType : domainSupportedResourceTypes) {
                            if (!domainCountStr.contains(resourceType.toString())) {
                                final ResourceCountVO resourceCountVO = new ResourceCountVO(resourceType, 0, domain.getId(), ResourceOwnerType.Domain);
                                s_logger.debug("Inserting resource count of type " + resourceType + " for domain id=" + domain.getId());
                                _resourceCountDao.persist(resourceCountVO);
                            }
                        }
                    }
                }
            });
        }
    }
    if ((accountResourceCount.size() < accountExpectedCount * accounts.size())) {
        s_logger.debug("resource_count table has records missing for some accounts...going to insert them");
        for (final AccountVO account : accounts) {
            // lock account
            Transaction.execute(new TransactionCallbackNoReturn() {

                @Override
                public void doInTransactionWithoutResult(final TransactionStatus status) {
                    _accountDao.lockRow(account.getId(), true);
                    final List<ResourceCountVO> accountCounts = _resourceCountDao.listByOwnerId(account.getId(), ResourceOwnerType.Account);
                    final List<String> accountCountStr = new ArrayList<>();
                    for (final ResourceCountVO accountCount : accountCounts) {
                        accountCountStr.add(accountCount.getType().toString());
                    }
                    if (accountCountStr.size() < accountExpectedCount) {
                        for (final ResourceType resourceType : accountSupportedResourceTypes) {
                            if (!accountCountStr.contains(resourceType.toString())) {
                                final ResourceCountVO resourceCountVO = new ResourceCountVO(resourceType, 0, account.getId(), ResourceOwnerType.Account);
                                s_logger.debug("Inserting resource count of type " + resourceType + " for account id=" + account.getId());
                                _resourceCountDao.persist(resourceCountVO);
                            }
                        }
                    }
                }
            });
        }
    }
}
Also used : ArrayList(java.util.ArrayList) TransactionStatus(com.cloud.utils.db.TransactionStatus) ResourceType(com.cloud.configuration.Resource.ResourceType) TransactionCallbackNoReturn(com.cloud.utils.db.TransactionCallbackNoReturn) AccountVO(com.cloud.user.AccountVO) DomainVO(com.cloud.domain.DomainVO) ResourceCountVO(com.cloud.configuration.ResourceCountVO) List(java.util.List) ArrayList(java.util.ArrayList) DB(com.cloud.utils.db.DB)

Example 92 with DomainVO

use of com.cloud.domain.DomainVO in project cosmic by MissionCriticalCloud.

the class ProjectManagerImpl method addAccountToProject.

@Override
@ActionEvent(eventType = EventTypes.EVENT_PROJECT_ACCOUNT_ADD, eventDescription = "adding account to project", async = true)
public boolean addAccountToProject(final long projectId, final String accountName, final String email) {
    final Account caller = CallContext.current().getCallingAccount();
    // check that the project exists
    final Project project = getProject(projectId);
    if (project == null) {
        final InvalidParameterValueException ex = new InvalidParameterValueException("Unable to find project with specified id");
        ex.addProxyObject(String.valueOf(projectId), "projectId");
        throw ex;
    }
    // User can be added to Active project only
    if (project.getState() != Project.State.Active) {
        final InvalidParameterValueException ex = new InvalidParameterValueException("Can't add account to the specified project id in state=" + project.getState() + " as it's no longer active");
        ex.addProxyObject(project.getUuid(), "projectId");
        throw ex;
    }
    // check that account-to-add exists
    Account account = null;
    if (accountName != null) {
        account = _accountMgr.getActiveAccountByName(accountName, project.getDomainId());
        if (account == null) {
            final InvalidParameterValueException ex = new InvalidParameterValueException("Unable to find account name=" + accountName + " in specified domain id");
            final DomainVO domain = ApiDBUtils.findDomainById(project.getDomainId());
            String domainUuid = String.valueOf(project.getDomainId());
            if (domain != null) {
                domainUuid = domain.getUuid();
            }
            ex.addProxyObject(domainUuid, "domainId");
            throw ex;
        }
        // verify permissions - only project owner can assign
        _accountMgr.checkAccess(caller, AccessType.ModifyProject, true, _accountMgr.getAccount(project.getProjectAccountId()));
        // Check if the account already added to the project
        final ProjectAccount projectAccount = _projectAccountDao.findByProjectIdAccountId(projectId, account.getId());
        if (projectAccount != null) {
            s_logger.debug("Account " + accountName + " already added to the project id=" + projectId);
            return true;
        }
    }
    if (_invitationRequired) {
        return inviteAccountToProject(project, account, email);
    } else {
        if (account == null) {
            throw new InvalidParameterValueException("Account information is required for assigning account to the project");
        }
        if (assignAccountToProject(project, account.getId(), ProjectAccount.Role.Regular) != null) {
            return true;
        } else {
            s_logger.warn("Failed to add account " + accountName + " to project id=" + projectId);
            return false;
        }
    }
}
Also used : Account(com.cloud.user.Account) DomainVO(com.cloud.domain.DomainVO) InvalidParameterValueException(com.cloud.utils.exception.InvalidParameterValueException) ActionEvent(com.cloud.event.ActionEvent)

Example 93 with DomainVO

use of com.cloud.domain.DomainVO in project cloudstack by apache.

the class NuageVspGuestNetworkGuruTest method testDeallocate.

@Test
public void testDeallocate() throws Exception {
    final NetworkVO network = mock(NetworkVO.class);
    when(network.getId()).thenReturn(NETWORK_ID);
    when(network.getUuid()).thenReturn("aaaaaa");
    when(network.getNetworkOfferingId()).thenReturn(NETWORK_ID);
    when(network.getPhysicalNetworkId()).thenReturn(NETWORK_ID);
    when(network.getVpcId()).thenReturn(null);
    when(network.getDomainId()).thenReturn(NETWORK_ID);
    when(_networkDao.acquireInLockTable(NETWORK_ID, 1200)).thenReturn(network);
    final NetworkOfferingVO offering = mock(NetworkOfferingVO.class);
    when(offering.getId()).thenReturn(NETWORK_ID);
    when(offering.getTrafficType()).thenReturn(TrafficType.Guest);
    when(_networkOfferingDao.findById(NETWORK_ID)).thenReturn(offering);
    final DomainVO domain = mock(DomainVO.class);
    when(domain.getUuid()).thenReturn("aaaaaa");
    when(_domainDao.findById(NETWORK_ID)).thenReturn(domain);
    final NicVO nic = mock(NicVO.class);
    when(nic.getId()).thenReturn(NETWORK_ID);
    when(nic.getIPv4Address()).thenReturn("10.10.10.10");
    when(nic.getMacAddress()).thenReturn("c8:60:00:56:e5:58");
    when(_nicDao.findById(NETWORK_ID)).thenReturn(nic);
    final NicProfile nicProfile = mock(NicProfile.class);
    when(nicProfile.getId()).thenReturn(NETWORK_ID);
    when(nicProfile.getIPv4Address()).thenReturn("10.10.10.10");
    when(nicProfile.getMacAddress()).thenReturn("c8:60:00:56:e5:58");
    final VirtualMachine vm = mock(VirtualMachine.class);
    when(vm.getType()).thenReturn(VirtualMachine.Type.User);
    when(vm.getState()).thenReturn(VirtualMachine.State.Expunging);
    final VirtualMachineProfile vmProfile = mock(VirtualMachineProfile.class);
    when(vmProfile.getUuid()).thenReturn("aaaaaa");
    when(vmProfile.getInstanceName()).thenReturn("Test-VM");
    when(vmProfile.getVirtualMachine()).thenReturn(vm);
    _nuageVspGuestNetworkGuru.deallocate(network, nicProfile, vmProfile);
}
Also used : DomainVO(com.cloud.domain.DomainVO) PhysicalNetworkVO(com.cloud.network.dao.PhysicalNetworkVO) NetworkVO(com.cloud.network.dao.NetworkVO) NetworkOfferingVO(com.cloud.offerings.NetworkOfferingVO) NicProfile(com.cloud.vm.NicProfile) VirtualMachineProfile(com.cloud.vm.VirtualMachineProfile) NicVO(com.cloud.vm.NicVO) VirtualMachine(com.cloud.vm.VirtualMachine) NuageTest(com.cloud.NuageTest) Test(org.junit.Test)

Example 94 with DomainVO

use of com.cloud.domain.DomainVO in project cloudstack by apache.

the class IAMApiServiceImpl method createIAMPolicyResponse.

@Override
public IAMPolicyResponse createIAMPolicyResponse(IAMPolicy policy) {
    IAMPolicyResponse response = new IAMPolicyResponse();
    response.setId(policy.getUuid());
    response.setName(policy.getName());
    response.setDescription(policy.getDescription());
    String domainPath = policy.getPath();
    if (domainPath != null) {
        DomainVO domain = _domainDao.findDomainByPath(domainPath);
        if (domain != null) {
            response.setDomainId(domain.getUuid());
            response.setDomainName(domain.getName());
        }
    }
    long accountId = policy.getAccountId();
    AccountVO owner = _accountDao.findById(accountId);
    if (owner != null) {
        response.setAccountName(owner.getAccountName());
    }
    // find permissions associated with this policy
    List<IAMPolicyPermission> permissions = _iamSrv.listPolicyPermissions(policy.getId());
    if (permissions != null && permissions.size() > 0) {
        for (IAMPolicyPermission permission : permissions) {
            IAMPermissionResponse perm = new IAMPermissionResponse();
            perm.setAction(permission.getAction());
            if (permission.getEntityType() != null) {
                perm.setEntityType(permission.getEntityType());
            }
            if (permission.getScope() != null) {
                perm.setScope(PermissionScope.valueOf(permission.getScope()));
            }
            perm.setScopeId(permission.getScopeId());
            perm.setPermission(permission.getPermission());
            response.addPermission(perm);
        }
    }
    response.setObjectName("aclpolicy");
    return response;
}
Also used : DomainVO(com.cloud.domain.DomainVO) IAMPolicyPermission(org.apache.cloudstack.iam.api.IAMPolicyPermission) IAMPermissionResponse(org.apache.cloudstack.api.response.iam.IAMPermissionResponse) AccountVO(com.cloud.user.AccountVO) IAMPolicyResponse(org.apache.cloudstack.api.response.iam.IAMPolicyResponse)

Example 95 with DomainVO

use of com.cloud.domain.DomainVO in project cloudstack by apache.

the class NuageVspManagerImpl method auditDomainsOnVsp.

private boolean auditDomainsOnVsp(HostVO host, boolean add) {
    List<NuageVspDeviceVO> nuageVspDevices = _nuageVspDao.listByHost(host.getId());
    if (CollectionUtils.isEmpty(nuageVspDevices)) {
        return true;
    }
    final SyncDomainCommand.Type action = add ? SyncDomainCommand.Type.ADD : SyncDomainCommand.Type.REMOVE;
    _hostDao.loadDetails(host);
    List<DomainVO> allDomains = _domainDao.listAll();
    for (DomainVO domain : allDomains) {
        if (action == SyncDomainCommand.Type.REMOVE) {
            VspDomainCleanUp vspDomainCleanUp = _nuageVspEntityBuilder.buildVspDomainCleanUp(domain);
            CleanUpDomainCommand cmd = new CleanUpDomainCommand(vspDomainCleanUp);
            Answer answer = _agentMgr.easySend(host.getId(), cmd);
            if (!answer.getResult()) {
                return false;
            }
        }
        VspDomain vspDomain = _nuageVspEntityBuilder.buildVspDomain(domain);
        SyncDomainCommand cmd = new SyncDomainCommand(vspDomain, action);
        Answer answer = _agentMgr.easySend(host.getId(), cmd);
        if (!answer.getResult()) {
            return false;
        }
    }
    return true;
}
Also used : NuageVspDeviceVO(com.cloud.network.NuageVspDeviceVO) VspDomain(net.nuage.vsp.acs.client.api.model.VspDomain) DomainVO(com.cloud.domain.DomainVO) AgentControlAnswer(com.cloud.agent.api.AgentControlAnswer) Answer(com.cloud.agent.api.Answer) GetApiDefaultsAnswer(com.cloud.agent.api.manager.GetApiDefaultsAnswer) SyncNuageVspCmsIdAnswer(com.cloud.agent.api.sync.SyncNuageVspCmsIdAnswer) CleanUpDomainCommand(com.cloud.agent.api.manager.CleanUpDomainCommand) VspDomainCleanUp(net.nuage.vsp.acs.client.api.model.VspDomainCleanUp) SyncDomainCommand(com.cloud.agent.api.sync.SyncDomainCommand)

Aggregations

DomainVO (com.cloud.domain.DomainVO)196 Account (com.cloud.user.Account)85 AccountVO (com.cloud.user.AccountVO)64 Test (org.junit.Test)56 ArrayList (java.util.ArrayList)53 DomainDao (com.cloud.domain.dao.DomainDao)30 Field (java.lang.reflect.Field)30 InvalidParameterValueException (com.cloud.exception.InvalidParameterValueException)29 SslCertDao (com.cloud.network.dao.SslCertDao)29 AccountManager (com.cloud.user.AccountManager)29 SslCertVO (com.cloud.network.dao.SslCertVO)27 List (java.util.List)26 PermissionDeniedException (com.cloud.exception.PermissionDeniedException)24 Pair (com.cloud.utils.Pair)24 Domain (com.cloud.domain.Domain)23 Filter (com.cloud.utils.db.Filter)23 File (java.io.File)23 IOException (java.io.IOException)23 FileUtils.readFileToString (org.apache.commons.io.FileUtils.readFileToString)23 InvalidParameterValueException (com.cloud.utils.exception.InvalidParameterValueException)22