/* the same as superclass's localTarget, but with the more specfic NN type */
        protected override HAServiceTarget DataToTarget(byte[] data)
        {
            HAZKInfoProtos.ActiveNodeInfo proto;
            try
            {
                proto = HAZKInfoProtos.ActiveNodeInfo.ParseFrom(data);
            }
            catch (InvalidProtocolBufferException)
            {
                throw new RuntimeException("Invalid data in ZK: " + StringUtils.ByteToHexString(data
                                                                                                ));
            }
            NNHAServiceTarget ret = new NNHAServiceTarget(conf, proto.GetNameserviceId(), proto
                                                          .GetNamenodeId());
            IPEndPoint addressFromProtobuf = new IPEndPoint(proto.GetHostname(), proto.GetPort
                                                                ());

            if (!addressFromProtobuf.Equals(ret.GetAddress()))
            {
                throw new RuntimeException("Mismatched address stored in ZK for " + ret + ": Stored protobuf was "
                                           + proto + ", address from our own " + "configuration for this NameNode was " +
                                           ret.GetAddress());
            }
            ret.SetZkfcPort(proto.GetZkfcPort());
            return(ret);
        }
 private DFSZKFailoverController(Configuration conf, NNHAServiceTarget localTarget
                                 )
     : base(conf, localTarget)
 {
     this.localNNTarget = localTarget;
     // Setup ACLs
     adminAcl = new AccessControlList(conf.Get(DFSConfigKeys.DfsAdmin, " "));
     Log.Info("Failover controller configured for NameNode " + localTarget);
 }
        public static Org.Apache.Hadoop.Hdfs.Tools.DFSZKFailoverController Create(Configuration
                                                                                  conf)
        {
            Configuration localNNConf = DFSHAAdmin.AddSecurityConfiguration(conf);
            string        nsId        = DFSUtil.GetNamenodeNameServiceId(conf);

            if (!HAUtil.IsHAEnabled(localNNConf, nsId))
            {
                throw new HadoopIllegalArgumentException("HA is not enabled for this namenode.");
            }
            string nnId = HAUtil.GetNameNodeId(localNNConf, nsId);

            if (nnId == null)
            {
                string msg = "Could not get the namenode ID of this node. " + "You may run zkfc on the node other than namenode.";
                throw new HadoopIllegalArgumentException(msg);
            }
            NameNode.InitializeGenericKeys(localNNConf, nsId, nnId);
            DFSUtil.SetGenericConf(localNNConf, nsId, nnId, ZkfcConfKeys);
            NNHAServiceTarget localTarget = new NNHAServiceTarget(localNNConf, nsId, nnId);

            return(new Org.Apache.Hadoop.Hdfs.Tools.DFSZKFailoverController(localNNConf, localTarget
                                                                            ));
        }