public void updateFeedClusters(
      List<org.apache.falcon.entity.v0.feed.Cluster> oldClusters,
      List<org.apache.falcon.entity.v0.feed.Cluster> newClusters,
      Vertex feedEntityVertex) {
    if (areFeedClustersSame(oldClusters, newClusters)) {
      return;
    }

    // remove edges to old clusters
    for (org.apache.falcon.entity.v0.feed.Cluster oldCuster : oldClusters) {
      if (ClusterType.TARGET != oldCuster.getType()) {
        removeEdge(
            feedEntityVertex, oldCuster.getName(), RelationshipLabel.FEED_CLUSTER_EDGE.getName());
      }
    }

    // add edges to new clusters
    for (org.apache.falcon.entity.v0.feed.Cluster newCluster : newClusters) {
      if (ClusterType.TARGET != newCluster.getType()) {
        addRelationToCluster(
            feedEntityVertex, newCluster.getName(), RelationshipLabel.FEED_CLUSTER_EDGE);
      }
    }
  }
  public void addFeedEntity(Feed feed) {
    LOG.info("Adding feed entity: {}", feed.getName());
    Vertex feedVertex = addVertex(feed.getName(), RelationshipType.FEED_ENTITY);

    addUserRelation(feedVertex);
    addDataClassification(feed.getTags(), feedVertex);
    addGroups(feed.getGroups(), feedVertex);

    for (org.apache.falcon.entity.v0.feed.Cluster feedCluster : feed.getClusters().getClusters()) {
      if (ClusterType.TARGET != feedCluster.getType()) {
        addRelationToCluster(
            feedVertex, feedCluster.getName(), RelationshipLabel.FEED_CLUSTER_EDGE);
      }
    }

    for (org.apache.falcon.entity.v0.feed.Cluster feedCluster : feed.getClusters().getClusters()) {
      if (FeedHelper.isImportEnabled(feedCluster)) {
        addRelationToDatasource(
            feedVertex,
            FeedHelper.getImportDatasourceName(feedCluster),
            RelationshipLabel.DATASOURCE_IMPORT_EDGE);
      }
    }
  }