use of org.candlepin.model.Pool in project candlepin by candlepin.
the class RevocationOp method determineExcessEntitlements.
/**
* In the second part, the list of entitlements is compiled from the main pool plus the shared pools
* It is sorted in the order of LIFO. Entitlements are put in the revoke list until the count is
* acceptable for the main pool. Any entitlements that came from a shared pool are also reflected in
* the adjustment for the source entitlement for that shared pool.
*
* @param pool
*/
private void determineExcessEntitlements(Pool pool) {
List<Pool> pools = new ArrayList<>();
pools.add(pool);
if (sharedPools.get(pool) != null) {
pools.addAll(sharedPools.get(pool));
}
List<Entitlement> entitlements = this.poolCurator.retrieveOrderedEntitlementsOf(pools);
long newConsumed = poolNewConsumed.get(pool);
long existing = pool.getQuantity();
for (Entitlement ent : entitlements) {
if (newConsumed > existing) {
ConsumerType ctype = this.consumerTypeCurator.getConsumerType(ent.getConsumer());
if (!ctype.isType(ConsumerTypeEnum.SHARE)) {
if (ent.getPool().isCreatedByShare()) {
Entitlement source = ent.getPool().getSourceEntitlement();
// the source entitlement may have already been adjusted in the shared pool reduction
if (shareEntitlementsToAdjust.get(source) == null) {
addEntitlementToAdjust(source, source.getQuantity());
}
addEntitlementToAdjust(source, shareEntitlementsToAdjust.get(source) - ent.getQuantity());
if (shareEntitlementsToAdjust.get(source) == 0) {
shareEntitlementsToAdjust.remove(source);
addEntitlmentToRevoke(source);
}
}
addEntitlementToRevoke(ent);
newConsumed -= ent.getQuantity();
}
}
}
poolNewConsumed.put(pool, newConsumed);
}
use of org.candlepin.model.Pool in project candlepin by candlepin.
the class EventBuilder method setEventData.
/**
* This method is used with any type of event and any target entity.
* <p>
* Note: For {@link Type#MODIFIED} events, it can be called twice consecutively
* to first pass in the original, and then the updated entity. Alternatively,
* {@link #setEventData(Eventful, Eventful)} can be used in the same use case.
* </p>
* @param entity The target entity of the Event
* @return The builder object
*/
public EventBuilder setEventData(Eventful entity) {
if (entity != null) {
// Be careful to check for null before setting so we don't overwrite anything useful
if (entity instanceof Named && ((Named) entity).getName() != null) {
event.setTargetName(((Named) entity).getName());
}
if (entity instanceof Owned) {
String ownerId = ((Owned) entity).getOwnerId();
if (ownerId != null) {
event.setOwnerId(ownerId);
}
}
if (entity instanceof Entitlement) {
event.setReferenceType(Event.ReferenceType.POOL);
Pool referencedPool = ((Entitlement) entity).getPool();
if (referencedPool != null && referencedPool.getId() != null) {
event.setReferenceId(referencedPool.getId());
}
}
if (entity.getId() != null) {
event.setEntityId((String) entity.getId());
if (entity instanceof ConsumerProperty) {
Consumer owningConsumer = ((ConsumerProperty) entity).getConsumer();
if (owningConsumer != null && owningConsumer.getUuid() != null) {
event.setConsumerUuid(owningConsumer.getUuid());
}
}
}
if (event.getTarget().equals(Target.POOL) && event.getType().equals(Type.CREATED)) {
Map<String, String> eventData = new HashMap<>();
eventData.put("subscriptionId", ((Pool) entity).getSubscriptionId());
try {
event.setEventData(mapper.writeValueAsString(eventData));
} catch (JsonProcessingException e) {
log.error("Error while building JSON for pool.created event.", e);
throw new IseException("Error while building JSON for pool.created event.");
}
}
}
return this;
}
use of org.candlepin.model.Pool in project candlepin by candlepin.
the class DefaultEntitlementCertServiceAdapterTest method setUp.
@Before
public void setUp() {
Injector injector = Guice.createInjector(new TestingModules.MockJpaModule(), new TestingModules.ServletEnvironmentModule(), new TestingModules.StandardTest());
injector.injectMembers(this);
v3extensionUtil = new X509V3ExtensionUtil(config, entCurator);
certServiceAdapter = new DefaultEntitlementCertServiceAdapter(mockedPKI, extensionUtil, v3extensionUtil, mock(EntitlementCertificateCurator.class), keyPairCurator, serialCurator, ownerCurator, entCurator, I18nFactory.getI18n(getClass(), Locale.US, I18nFactory.FALLBACK), config, productCurator, this.mockConsumerTypeCurator, this.mockEnvironmentCurator);
product = TestUtil.createProduct("12345", "a product");
product.setAttribute(Product.Attributes.VERSION, "version");
product.setAttribute(Product.Attributes.VARIANT, "variant");
product.setAttribute(Product.Attributes.TYPE, "SVC");
product.setAttribute(Product.Attributes.ARCHITECTURE, ARCH_LABEL);
largeContentProduct = TestUtil.createProduct("67890", "large content product");
largeContentProduct.setAttribute(Product.Attributes.VERSION, "version");
largeContentProduct.setAttribute(Product.Attributes.VARIANT, "variant");
largeContentProduct.setAttribute(Product.Attributes.TYPE, "SVC");
largeContentProduct.setAttribute(Product.Attributes.ARCHITECTURE, ARCH_LABEL);
content = createContent(CONTENT_NAME, CONTENT_ID, CONTENT_LABEL, CONTENT_TYPE, CONTENT_VENDOR, CONTENT_URL, CONTENT_GPG_URL, ARCH_LABEL);
content.setMetadataExpire(CONTENT_METADATA_EXPIRE);
content.setRequiredTags(REQUIRED_TAGS);
kickstartContent = createContent(CONTENT_NAME, CONTENT_ID_KICKSTART, CONTENT_LABEL, CONTENT_TYPE_KICKSTART, CONTENT_VENDOR, CONTENT_URL, CONTENT_GPG_URL, ARCH_LABEL);
kickstartContent.setMetadataExpire(CONTENT_METADATA_EXPIRE);
kickstartContent.setRequiredTags(REQUIRED_TAGS);
fileContent = createContent(CONTENT_NAME, CONTENT_ID_FILE, CONTENT_LABEL, CONTENT_TYPE_FILE, CONTENT_VENDOR, CONTENT_URL, CONTENT_GPG_URL, ARCH_LABEL);
fileContent.setMetadataExpire(CONTENT_METADATA_EXPIRE);
fileContent.setRequiredTags(REQUIRED_TAGS);
unknownTypeContent = createContent(CONTENT_NAME, CONTENT_ID_UNKNOWN, CONTENT_LABEL, CONTENT_TYPE_UNKNOWN, CONTENT_VENDOR, CONTENT_URL_UNKNOWN_TYPE, CONTENT_GPG_URL, ARCH_LABEL);
unknownTypeContent.setMetadataExpire(CONTENT_METADATA_EXPIRE);
unknownTypeContent.setRequiredTags(REQUIRED_TAGS);
String emptyArches = "";
noArchContent = createContent(CONTENT_NAME, CONTENT_ID, CONTENT_LABEL, CONTENT_TYPE, CONTENT_VENDOR, CONTENT_URL, CONTENT_GPG_URL, emptyArches);
superContent = new HashSet<>();
int index = 0;
for (String url : testUrls) {
++index;
superContent.add(createContent(CONTENT_NAME + "-" + index, CONTENT_ID + "-" + index, CONTENT_LABEL, CONTENT_TYPE, CONTENT_VENDOR, url, CONTENT_GPG_URL, ARCH_LABEL));
}
largeContent = new HashSet<>();
index = 0;
for (String url : largeTestUrls) {
++index;
largeContent.add(createContent(CONTENT_NAME + "-" + index, CONTENT_ID + "-" + index, CONTENT_LABEL, CONTENT_TYPE, CONTENT_VENDOR, url, CONTENT_GPG_URL, ARCH_LABEL));
}
subscription = TestUtil.createSubscription(null, product, new HashSet<>());
subscription.setId("1");
subscription.setQuantity(1L);
largeContentSubscription = TestUtil.createSubscription(null, largeContentProduct, new HashSet<>());
largeContentSubscription.setId("2");
largeContentSubscription.setQuantity(1L);
owner = new Owner();
owner.setId(TestUtil.randomString());
when(ownerCurator.findOwnerById(owner.getId())).thenReturn(owner);
pool = new Pool();
pool.setQuantity(1L);
pool.setProduct(product);
pool.setStartDate(subscription.getStartDate());
pool.setEndDate(subscription.getEndDate());
largeContentPool = new Pool();
largeContentPool.setProduct(largeContentProduct);
ConsumerType type = new ConsumerType(ConsumerType.ConsumerTypeEnum.SYSTEM);
type.setId("test-id");
consumer = new Consumer("Test Consumer", "bob", owner, type);
consumer.setUuid("test-consumer");
when(this.mockConsumerTypeCurator.getConsumerType(eq(consumer))).thenReturn(type);
when(this.mockConsumerTypeCurator.find(eq(type.getId()))).thenReturn(type);
entitlement = new Entitlement();
entitlement.setQuantity(new Integer(ENTITLEMENT_QUANTITY));
entitlement.setConsumer(consumer);
entitlement.setPool(pool);
entitlement.setOwner(owner);
largeContentEntitlement = new Entitlement();
largeContentEntitlement.setQuantity(new Integer(ENTITLEMENT_QUANTITY));
largeContentEntitlement.setConsumer(consumer);
largeContentEntitlement.setPool(largeContentPool);
largeContentEntitlement.setOwner(owner);
product.addContent(content, false);
Set empty = new HashSet<String>();
when(productCurator.getPoolProvidedProductUuids(anyString())).thenReturn(empty);
// when(productAdapter.getProductById(eq(product.getOwner()), eq(product.getId())))
// .thenReturn(product);
// when(productAdapter.getProductById(
// eq(largeContentProduct.getOwner()), eq(largeContentProduct.getId()))
// ).thenReturn(largeContentProduct);
}
use of org.candlepin.model.Pool in project candlepin by candlepin.
the class CalculatedAttributesUtilTest method testQuantityIncrement.
@Test
public void testQuantityIncrement() {
Product product2 = TestUtil.createProduct("blah", "blah");
product2.setAttribute(Product.Attributes.INSTANCE_MULTIPLIER, "12");
productCurator.create(product2);
Pool pool2 = createPool(owner1, product2, 500L, TestUtil.createDate(2000, 1, 1), TestUtil.createDate(3000, 1, 1));
SuggestedQuantity suggested = new SuggestedQuantity();
suggested.setSuggested(1L);
suggested.setIncrement(12L);
Map<String, SuggestedQuantity> suggestedMap = new HashMap<>();
suggestedMap.put(pool2.getId(), suggested);
when(quantityRules.getSuggestedQuantities(any(List.class), any(Consumer.class), any(Date.class))).thenReturn(suggestedMap);
Date date = new Date();
attrUtil.setQuantityAttributes(pool2, consumer, date);
assertEquals("1", pool2.getCalculatedAttributes().get("suggested_quantity"));
assertEquals("12", pool2.getCalculatedAttributes().get("quantity_increment"));
}
use of org.candlepin.model.Pool in project candlepin by candlepin.
the class InstalledProductStatusCalculatorTest method mockEntitlement.
private Entitlement mockEntitlement(Owner owner, Consumer consumer, Product product, DateRange range, Product... providedProducts) {
Set<Product> provided = new HashSet<>();
for (Product pp : providedProducts) {
provided.add(pp);
}
final Pool p = new Pool(owner, product, provided, new Long(1000), range.getStartDate(), range.getEndDate(), "1000", "1000", "1000");
p.setId("" + lastPoolId++);
Entitlement e = new Entitlement(p, consumer, owner, 1);
when(poolCurator.provides(p, product.getId())).thenReturn(true);
for (Product pp : providedProducts) {
when(poolCurator.provides(p, pp.getId())).thenReturn(true);
}
Random gen = new Random();
int id = gen.nextInt(Integer.MAX_VALUE);
e.setId(String.valueOf(id));
return e;
}
Aggregations