@Override public boolean equals(Object o) { if (this == o) { return true; } if (!(o instanceof Group)) { return false; } Group group = (Group) o; return Objects.equals(this.getGroupName(), group.getGroupName()) && Objects.equals(this.getSupportTeam(), group.getSupportTeam()); }
@Override public void updateGroup(Group group) { ensureConnected(); ensureGroupExists(group.getGroupName()); logger.info("Updating group {}", group.getGroupName()); overwrite(paths.groupPath(group.getGroupName()), group); }
@Override public void createGroup(Group group) { ensureConnected(); String groupPath = paths.groupPath(group.getGroupName()); logger.info("Creating group {} for path {}", group.getGroupName(), groupPath); try { zookeeper.inTransaction() .create().forPath(groupPath, mapper.writeValueAsBytes(group)) .and() .create().forPath(paths.topicsPath(group.getGroupName())) .and().commit(); } catch (KeeperException.NodeExistsException ex) { throw new GroupAlreadyExistsException(group.getGroupName(), ex); } catch (Exception ex) { throw new InternalProcessingException(ex); } }
public ExecutionStats execute(String sourceName, OwnerExistsStrategy strategy) { logger.info("Migrating support teams to owners..."); EntityMigrationCounters topicCounters = new EntityMigrationCounters(); EntityMigrationCounters subscriptionCounters = new EntityMigrationCounters(); for (Group group : groupService.listGroups()) { for (Topic topic : topicService.listTopics(group.getGroupName())) { migrateTopic(topic, group, sourceName, strategy, topicCounters); for (Subscription subscription : subscriptionService.listSubscriptions(topic.getName())) { migrateSubscription(subscription, sourceName, strategy, subscriptionCounters); } } } ExecutionStats stats = new ExecutionStats(topicCounters.toStats(), subscriptionCounters.toStats()); logger.info("Done migrating support teams to owners: {}", stats); return stats; }
private SubscriptionName createSubscription(SubscriptionName subscriptionName) { Subscription subscription = subscription(subscriptionName).build(); Group group = Group.from(subscription.getTopicName().getGroupName()); if (!groupRepository.groupExists(group.getGroupName())) { groupRepository.createGroup(group); } if (!topicRepository.topicExists(subscription.getTopicName())) { topicRepository.createTopic(topic(subscription.getTopicName()).build()); } subscriptionRepository.createSubscription(subscription); await().atMost(adjust(ONE_SECOND)).until( () -> { subscriptionRepository.subscriptionExists(subscription.getTopicName(), subscription.getName()); subscriptionsCaches.forEach(subscriptionsCache -> subscriptionsCache.listActiveSubscriptionNames().contains(subscriptionName)); } ); return subscription.getQualifiedName(); }