예제 #1
0
 @Override
 public int execute(BergamotCLI cli, List<String> args) throws Exception {
   if (args.size() < 2) throw new BergamotCLIException("No site name or alias given");
   // site name
   String siteName = args.remove(0);
   // read the UI config and connect to the database
   UICfg config = UICfg.loadConfiguration();
   // setup the data manager
   DataManager.getInstance()
       .registerDefaultServer(
           DatabasePool.Default.with()
               .postgresql()
               .url(config.getDatabase().getUrl())
               .username(config.getDatabase().getUsername())
               .password(config.getDatabase().getPassword())
               .build());
   // setup the queue manager
   QueueManager.getInstance()
       .registerDefaultBroker(
           new RabbitPool(
               config.getBroker().getUrl(),
               config.getBroker().getUsername(),
               config.getBroker().getPassword()));
   // ensure the DB schema is installed
   BergamotDB.install();
   // now actually create the site
   try (BergamotDB db = BergamotDB.connect()) {
     // ge the site
     Site site = db.getSiteByName(siteName);
     if (site == null)
       throw new BergamotCLIException("No site exists with the name: '" + siteName + "'");
     // check the aliases do not already exist
     for (String alias : args) {
       if (db.getSiteByName(alias) != null)
         throw new BergamotCLIException("A site already exists with the alias: '" + alias + "'");
     }
     // add the aliases
     for (String alias : args) {
       site.getAliases().add(alias);
     }
     db.setSite(site);
   }
   // message the UI cluster to setup the site
   try (BergamotClusterManagerQueue queue = BergamotClusterManagerQueue.open()) {
     try (RPCClient<ClusterManagerRequest, ClusterManagerResponse, RoutingKey> client =
         queue.createBergamotClusterManagerRPCClient()) {
       try {
         ClusterManagerResponse response =
             client.publish(new FlushGlobalCaches()).get(5, TimeUnit.SECONDS);
         if (response instanceof FlushedGlobalCaches) {
           System.out.println("Flushed UI cluster global caches");
         }
       } catch (Exception e) {
       }
     }
   }
   // all ok
   return 0;
 }
예제 #2
0
 public static WorkerQueue open() {
   return QueueManager.getInstance().queueAdapter(WorkerQueue.class);
 }