Search in sources :

Example 1 with ResourceInstanceEntity

use of com.peterphi.servicemanager.service.db.entity.ResourceInstanceEntity in project stdlib by petergeneric.

the class AzureInstanceActionDaemon method handle.

@Transactional
public void handle(final int id) {
    ResourceInstanceEntity instance = dao.getById(id);
    handle(instance);
    dao.update(instance);
}
Also used : ResourceInstanceEntity(com.peterphi.servicemanager.service.db.entity.ResourceInstanceEntity) Transactional(com.peterphi.std.guice.database.annotation.Transactional)

Example 2 with ResourceInstanceEntity

use of com.peterphi.servicemanager.service.db.entity.ResourceInstanceEntity in project stdlib by petergeneric.

the class ServiceManagerResourceRestServiceImpl method provision.

/**
 * N.B. no {@link Transactional} annotation because the inner service does transaction management
 *
 * @param templateName
 * @param parameters
 *
 * @return
 */
@Override
public ResourceInstanceDTO provision(final String templateName, final ProvisionResourceParametersDTO parameters) {
    final Map<String, String> metadata = ResourceKVP.toMap(parameters.metadata);
    ResourceInstanceEntity entity = service.newInstance(templateName, metadata);
    return getInstanceById(entity.getId());
}
Also used : ResourceInstanceEntity(com.peterphi.servicemanager.service.db.entity.ResourceInstanceEntity)

Example 3 with ResourceInstanceEntity

use of com.peterphi.servicemanager.service.db.entity.ResourceInstanceEntity in project stdlib by petergeneric.

the class ResourceProvisionService method newInstance.

@Transactional
public ResourceInstanceEntity newInstance(final ResourceTemplateEntity dbTemplate, final ResourceTemplateDefinition definition, Map<String, String> metadata) {
    log.info("Provision new instance of template:" + dbTemplate.getId());
    final AzureExistingVM azureVM = definition.azureExistingVM;
    // TODO when adding a second provider make this generic so providers can be easily plugged in
    List<ResourceInstanceEntity> running = getAllRunning(dbTemplate);
    if (running.isEmpty()) {
        log.info("Provision new instance of template: ");
        ResourceInstanceEntity instance = new ResourceInstanceEntity();
        instance.setTemplate(dbTemplate);
        instance.setTemplateRevision(dbTemplate.getLatestRevision());
        instance.setTemplateRevisionCounter(dbTemplate.getRevisions());
        instance.setMetadata(metadata);
        instance.setProvider(AzureExistingVMProvider.PROVIDER);
        instance.setProviderInstanceId(azureVM.id);
        // TODO in the future when making generic this should be TO_PROVISION and we should make the provision call asynchronously
        instance.setState(ResourceInstanceState.PROVISIONING);
        instance.setId(instanceDao.save(instance));
        // Create a new instance
        azureExistingVMProvider.start(azureVM, metadata);
        return instance;
    } else {
        throw new IllegalArgumentException("Cannot create a new instance: provider is " + AzureExistingVMProvider.PROVIDER + " but an instance already appears to be running: " + running.stream().map(e -> e.getProviderInstanceId()).collect(Collectors.toList()));
    }
}
Also used : ResourceInstanceEntity(com.peterphi.servicemanager.service.db.entity.ResourceInstanceEntity) ResourceInstanceState(com.peterphi.servicemanager.service.rest.resource.type.ResourceInstanceState) StringUtils(org.apache.commons.lang.StringUtils) HibernateDao(com.peterphi.std.guice.hibernate.dao.HibernateDao) Inject(com.google.inject.Inject) Transactional(com.peterphi.std.guice.database.annotation.Transactional) ResourceNetworkConfig(com.peterphi.servicemanager.service.guice.ResourceNetworkConfig) ResourceTemplateDefinition(com.peterphi.servicemanager.service.rest.resource.jaxb.ResourceTemplateDefinition) Collectors(java.util.stream.Collectors) ArrayList(java.util.ArrayList) Logger(org.apache.log4j.Logger) List(java.util.List) JAXBSerialiserFactory(com.peterphi.std.util.jaxb.JAXBSerialiserFactory) Map(java.util.Map) AzureExistingVM(com.peterphi.servicemanager.service.rest.resource.jaxb.AzureExistingVM) ResourceTemplateEntity(com.peterphi.servicemanager.service.db.entity.ResourceTemplateEntity) Singleton(com.google.inject.Singleton) AzureExistingVM(com.peterphi.servicemanager.service.rest.resource.jaxb.AzureExistingVM) ResourceInstanceEntity(com.peterphi.servicemanager.service.db.entity.ResourceInstanceEntity) Transactional(com.peterphi.std.guice.database.annotation.Transactional)

Example 4 with ResourceInstanceEntity

use of com.peterphi.servicemanager.service.db.entity.ResourceInstanceEntity in project stdlib by petergeneric.

the class ServiceManagerResourceUIServiceImpl method doDiscard.

@Override
@Transactional
public Response doDiscard(final int id, final String nonce) {
    nonceStore.validate(nonce);
    final ResourceInstanceEntity instance = resourceProvisionService.discardInstance(id);
    return Response.seeOther(URI.create("/resources/template/" + instance.getTemplate().getId())).build();
}
Also used : ResourceInstanceEntity(com.peterphi.servicemanager.service.db.entity.ResourceInstanceEntity) Transactional(com.peterphi.std.guice.database.annotation.Transactional)

Aggregations

ResourceInstanceEntity (com.peterphi.servicemanager.service.db.entity.ResourceInstanceEntity)4 Transactional (com.peterphi.std.guice.database.annotation.Transactional)3 Inject (com.google.inject.Inject)1 Singleton (com.google.inject.Singleton)1 ResourceTemplateEntity (com.peterphi.servicemanager.service.db.entity.ResourceTemplateEntity)1 ResourceNetworkConfig (com.peterphi.servicemanager.service.guice.ResourceNetworkConfig)1 AzureExistingVM (com.peterphi.servicemanager.service.rest.resource.jaxb.AzureExistingVM)1 ResourceTemplateDefinition (com.peterphi.servicemanager.service.rest.resource.jaxb.ResourceTemplateDefinition)1 ResourceInstanceState (com.peterphi.servicemanager.service.rest.resource.type.ResourceInstanceState)1 HibernateDao (com.peterphi.std.guice.hibernate.dao.HibernateDao)1 JAXBSerialiserFactory (com.peterphi.std.util.jaxb.JAXBSerialiserFactory)1 ArrayList (java.util.ArrayList)1 List (java.util.List)1 Map (java.util.Map)1 Collectors (java.util.stream.Collectors)1 StringUtils (org.apache.commons.lang.StringUtils)1 Logger (org.apache.log4j.Logger)1