public int run()

in hadoop-hdfs-project/hadoop-hdfs-rbf/src/main/java/org/apache/hadoop/hdfs/tools/federation/RouterAdmin.java [329:487]


  public int run(String[] argv) throws Exception {
    if (argv.length < 1) {
      System.err.println("Not enough parameters specified");
      printUsage();
      return -1;
    }

    int exitCode = -1;
    int i = 0;
    String cmd = argv[i++];

    // Verify that we have enough command line parameters
    if (!validateMin(argv)) {
      System.err.println("Not enough parameters specificed for cmd " + cmd);
      printUsage(cmd);
      return exitCode;
    } else if (isLocalCommand(argv[0])) {
      if (DUMP_COMMAND.equals(argv[0])) {
        return dumpStateStore(getConf(), System.out) ? 0 : -1;
      }
    }
    String address = null;
    // Initialize RouterClient
    try {
      address = getConf().getTrimmed(
          RBFConfigKeys.DFS_ROUTER_ADMIN_ADDRESS_KEY,
          RBFConfigKeys.DFS_ROUTER_ADMIN_ADDRESS_DEFAULT);
      InetSocketAddress routerSocket = NetUtils.createSocketAddr(address);
      client = new RouterClient(routerSocket, getConf());
    } catch (RPC.VersionMismatch v) {
      System.err.println(
          "Version mismatch between client and server... command aborted");
      return exitCode;
    } catch (IOException e) {
      System.err.println("Bad connection to Router... command aborted");
      return exitCode;
    }

    Exception debugException = null;
    exitCode = 0;
    try {
      validateMax(argv);
      if ("-add".equals(cmd)) {
        if (addMount(argv, i)) {
          System.out.println("Successfully added mount point " + argv[i]);
        } else {
          exitCode = -1;
        }
      } else if ("-update".equals(cmd)) {
        if (updateMount(argv, i)) {
          System.out.println("Successfully updated mount point " + argv[i]);
          System.out.println(
              "WARN: Changing order/destinations may lead to inconsistencies");
        } else {
          exitCode = -1;
        }
      } else if ("-rm".equals(cmd)) {
        while (i < argv.length) {
          try {
            if (removeMount(argv[i])) {
              System.out.println("Successfully removed mount point " + argv[i]);
            }
          } catch (IOException e) {
            exitCode = -1;
            System.err
                .println(cmd.substring(1) + ": " + e.getLocalizedMessage());
          }
          i++;
        }
      } else if ("-ls".equals(cmd)) {
        listMounts(argv, i);
      } else if ("-getDestination".equals(cmd)) {
        getDestination(argv[i]);
      } else if ("-setQuota".equals(cmd)) {
        if (setQuota(argv, i)) {
          System.out.println(
              "Successfully set quota for mount point " + argv[i]);
        }
      } else if ("-setStorageTypeQuota".equals(cmd)) {
        if (setStorageTypeQuota(argv, i)) {
          System.out.println(
              "Successfully set storage type quota for mount point " + argv[i]);
        }
      } else if ("-clrQuota".equals(cmd)) {
        while (i < argv.length) {
          if (clrQuota(argv[i])) {
            System.out
                .println("Successfully clear quota for mount point " + argv[i]);
            i++;
          }
        }
      } else if ("-clrStorageTypeQuota".equals(cmd)) {
        while (i < argv.length) {
          if (clrStorageTypeQuota(argv[i])) {
            System.out.println("Successfully clear storage type quota for mount"
                + " point " + argv[i]);
            i++;
          }
        }
      } else if ("-safemode".equals(cmd)) {
        manageSafeMode(argv[i]);
      } else if ("-nameservice".equals(cmd)) {
        String subcmd = argv[i];
        String nsId = argv[i + 1];
        manageNameservice(subcmd, nsId);
      } else if ("-getDisabledNameservices".equals(cmd)) {
        getDisabledNameservices();
      } else if ("-refresh".equals(cmd)) {
        refresh(address);
      } else if ("-refreshRouterArgs".equals(cmd)) {
        exitCode = genericRefresh(argv, i);
      } else if ("-refreshSuperUserGroupsConfiguration".equals(cmd)) {
        exitCode = refreshSuperUserGroupsConfiguration();
      } else if ("-refreshCallQueue".equals(cmd)) {
        exitCode = refreshCallQueue();
      } else if (ADD_ALL_COMMAND.equals(cmd)) {
        if (addAllMount(argv, i)) {
          System.out.println("Successfully added all mount points ");
        } else {
          exitCode = -1;
        }
      } else {
        throw new IllegalArgumentException("Unknown Command: " + cmd);
      }
    } catch (IllegalArgumentException arge) {
      debugException = arge;
      exitCode = -1;
      System.err.println(cmd.substring(1) + ": " + arge.getLocalizedMessage());
      printUsage(cmd);
    } catch (RemoteException e) {
      // This is an error returned by the server.
      // Print out the first line of the error message, ignore the stack trace.
      exitCode = -1;
      debugException = e;
      try {
        String[] content;
        content = e.getLocalizedMessage().split("\n");
        System.err.println(cmd.substring(1) + ": " + content[0]);
        e.printStackTrace();
      } catch (Exception ex) {
        System.err.println(cmd.substring(1) + ": " + ex.getLocalizedMessage());
        e.printStackTrace();
        debugException = ex;
      }
    } catch (IOException ioe) {
      exitCode = -1;
      System.err.println(cmd.substring(1) + ": " + ioe.getLocalizedMessage());
      printUsage(cmd);
    } catch (Exception e) {
      exitCode = -1;
      debugException = e;
      System.err.println(cmd.substring(1) + ": " + e.getLocalizedMessage());
      e.printStackTrace();
    }
    if (debugException != null) {
      LOG.debug("Exception encountered", debugException);
    }
    return exitCode;
  }