Package com.linkedin.databus2.client.util

Source Code of com.linkedin.databus2.client.util.DbusClientClusterUtil

package com.linkedin.databus2.client.util;
/*
*
* Copyright 2013 LinkedIn Corp. All rights reserved
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
*   http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied.  See the License for the
* specific language governing permissions and limitations
* under the License.
*
*/

import java.util.ArrayList;
import java.util.List;

import org.apache.commons.cli.CommandLine;
import org.apache.commons.cli.GnuParser;
import org.apache.commons.cli.Options;
import org.apache.commons.cli.ParseException;

import com.linkedin.databus.client.DatabusClientDSCUpdater;
import com.linkedin.databus.client.pub.DatabusClientGroupMember;
import com.linkedin.databus.client.pub.DatabusClientNode;
import com.linkedin.databus.core.Checkpoint;
import com.linkedin.databus.core.DbusClientMode;
import com.linkedin.databus.core.util.InvalidConfigException;


public class DbusClientClusterUtil {

 
 
 
  /**
   * @param args
   * DbusClientClusterUtil -s <serverList> -n <namespace> -g <group> -d <dir>     members
   *                                     leader
   *                                    keys
   *                                    readSCN <key>
   *                                    writeSCN <key> SCN [OFFSET]
   *                                 remove <key>
   *                                 readLastTS
   *                                 writeLastTS TIMESTAMP       
   */
  public static void main(String[] args) {
    try
    {
      GnuParser cmdLineParser  = new GnuParser();
      Options options = new Options();
      options.addOption("n",true,"Zookeeper namespace  [/DatabusClient")
      .addOption("g",true,"Groupname [default-group-name] ")
      .addOption("d",true,"Shared directory name [shareddata] ")
      .addOption("s",true,"Zookeeper server list [localhost:2181] ")
      .addOption("h",false,"help");
      CommandLine cmdLineArgs  = cmdLineParser.parse(options, args,false);
     
      if (cmdLineArgs.hasOption('h')) {
        usage();
        System.exit(0);
      }
     
      String namespace = cmdLineArgs.getOptionValue('n');
      if (namespace==null || namespace.isEmpty())
      {
        namespace = "/DatabusClient";
      }
      String groupname = cmdLineArgs.getOptionValue('g');
      if (groupname==null || groupname.isEmpty())
      {
        groupname = "default-group-name";
      }
      String sharedDir = cmdLineArgs.getOptionValue('d');
      if (sharedDir==null || sharedDir.isEmpty())
      {
        sharedDir = "shareddata";
      }
      String serverList = cmdLineArgs.getOptionValue('s');
      if (serverList==null || serverList.isEmpty())
      {
        serverList  = "localhost:2181";
      }
      String[] fns =  cmdLineArgs.getArgs();
      if (fns.length < 1)
      {
        usage();
        System.exit(1);
      }
      String function = fns[0];
      String arg1 = (fns.length > 1) ? fns[1] : null;
      String arg2 = (fns.length > 2) ? fns[2] : null;
      try
      {
        String memberName = "cmd-line-tool";
        DatabusClientNode clusterNode = new DatabusClientNode (new DatabusClientNode.StaticConfig(true,serverList,
            2000,
            5000,
            namespace,
            groupname,
            memberName,false,sharedDir));
        DatabusClientGroupMember member = clusterNode.getMember(namespace,groupname,memberName);
        if (member == null  || !member.joinWithoutLeadershipDuties()) 
        {
          System.err.println("Initialization failed for: " +  member);
          System.exit(1);
        }
       
        if (function.equals("members")) {
          List<String> mlist = member.getMembers();
          for (String m: mlist) {
            System.out.println(m);
          }

        } else if (function.equals("leader")) {
          String leader = member.getLeader();
          System.out.println(leader);

        } else if (function.equals("keys")) {
          List<String> keyList = member.getSharedKeys();
          if (keyList != null) {
            for (String m: keyList) {
              System.out.println(m);
            }
          }
        } else if (function.equals("readSCN")) {
          List<String> keyList ;
          if (arg1 == null)
          {
            keyList = member.getSharedKeys();
          } else {
            keyList = new ArrayList<String>();
            keyList.add(arg1);
          }
          if (keyList != null)
          {
            for (String k: keyList)
            {
              if (!k.equals(DatabusClientDSCUpdater.DSCKEY))
              {
                Checkpoint cp = (Checkpoint) member.readSharedData(k);
                if (cp != null)
                {
                  System.out.println(k + " " + cp.getWindowScn() + " "+cp.getWindowOffset());
                }
                else
                {
                  System.err.println(k + " null null");
                }
              }
            }
          }
           
        } else if (function.equals("writeSCN")) {
          if (arg1 != null && arg2 != null)
          {
            Checkpoint cp = new Checkpoint();
            cp.setConsumptionMode(DbusClientMode.ONLINE_CONSUMPTION);
            cp.setWindowScn(Long.parseLong(arg2));
            if (fns.length > 3)
            {
              cp.setWindowOffset(Integer.parseInt(fns[3]));
            } else {
              cp.setWindowOffset(-1);
            }
            if (member.writeSharedData(arg1, cp))
            {
              System.out.println(arg1 + " " + cp.getWindowScn() + " " + cp.getWindowOffset());
            }
            else
            {
              System.err.println("Write failed! " + member +  " couldn't write key=" + arg1);
              System.exit(1);
            }
          }
          else
         
            usage();
            System.exit(1);
          }
        } else if (function.equals("readLastTs")) {
          Long timeInMs = (Long) member.readSharedData(DatabusClientDSCUpdater.DSCKEY);
          if (timeInMs != null)
                  {
                    System.out.println(DatabusClientDSCUpdater.DSCKEY + " " + timeInMs.longValue());
                  }
                  else
                  {
                    System.err.println(DatabusClientDSCUpdater.DSCKEY + " null");
                  }
        } else if (function.equals("writeLastTs")) {
          if (arg1 != null)
          {
            Long ts = Long.parseLong(arg1);
            if (member.writeSharedData(DatabusClientDSCUpdater.DSCKEY, ts))
                    {
                        System.out.println(DatabusClientDSCUpdater.DSCKEY + " " + ts);
                    }
                    else
                    {
                        System.err.println("Write failed! " + member +  " couldn't write key=" + DatabusClientDSCUpdater.DSCKEY);
                        System.exit(1);
                    }
           
          }
          else
          {
            usage();
            System.exit(1);
          }
        } else if (function.equals("remove")) {
          if (!member.removeSharedData(arg1))   
          {
            System.err.println("Remove failed! " + arg1);
            System.exit(1);
          }
        } else if (function.equals("create")) {
          if (!member.createPaths())
          {
            System.err.println("Create path failed!" );
            System.exit(1);
          }
         
        } else {
          usage();
          System.exit(1);
        }
      }
      catch (InvalidConfigException e) {
        e.printStackTrace();
        usage();
        System.exit(1);
      }
   
    }
    catch (ParseException e)
    {
      usage();
      System.exit(1);
    }
   
  }
 
 
  public static void usage()
  {
    System.err.println (" [ -n <namespace>] [-g <groupname>] [-d <shareddir>] [-s <cluster-server-list>] FUNCTION-NAME");
    System.err.println(" FUNCTION-NAME one of: ");
    System.err.println(" members : lists members belonging to the group <groupname> ");
    System.err.println(" leader: lists the leader of the group <groupname> ");
    System.err.println(" keys: lists the keys written to shared directory <shareddir> ");
    System.err.println(" readSCN [<key>] : reads the SCN written to shared directory <shareddir> ");
    System.err.println(" writeSCN <key> <SCN> [offset] : writes the SCN written to shared directory <shareddir> ");
    System.err.println(" remove <[key]> : removes key  ; all keys if none specified in <shareddir>");
    System.err.println(" readLastTs : reads the last TS");
    System.err.println(" create : create the path if none exists ");
    System.err.println(" writeLastTs <TIMESTAMP> : writes latest TS");
  }
 
 
}
TOP

Related Classes of com.linkedin.databus2.client.util.DbusClientClusterUtil

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.