@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()); }
public Group build() { return new Group(groupName, supportTeam); }
@Override public void updateGroup(Group group) { ensureConnected(); ensureGroupExists(group.getGroupName()); logger.info("Updating group {}", group.getGroupName()); overwrite(paths.groupPath(group.getGroupName()), group); }
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(); }
private void migrateTopic(Topic topic, Group group, String sourceName, OwnerExistsStrategy strategy, EntityMigrationCounters topicCounters) { if (topic.getOwner() == null || strategy == OwnerExistsStrategy.OVERRIDE) { migrateEntity(topicCounters, "topic " + topic.getQualifiedName(), () -> topicService.updateTopic(topic.getName(), patchWithOwner(sourceName, group.getSupportTeam()), MIGRATION_USER) ); } else { topicCounters.markSkipped(OWNER_ALREADY_EXISTED_REASON); } }
@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; }
public static Group from(String groupName) { return new Group(groupName, null); }
public Group build() { return new Group(groupName, supportTeam); }
public void createGroup(String group, String supportTeam) { if (endpoints.group().list().contains(group)) { return; } assertThat(endpoints.group().create(new Group(group, supportTeam)).getStatus()).isEqualTo(CREATED.getStatusCode()); wait.untilGroupCreated(group); }
public void createGroup(String group, String supportTeam) { if (endpoints.group().list().contains(group)) { return; } assertThat(endpoints.group().create(new Group(group, supportTeam)).getStatus()).isEqualTo(CREATED.getStatusCode()); wait.untilGroupCreated(group); }