function AdminClient(conf) {
  if (!(this instanceof AdminClient)) {
    return new AdminClient(conf);
  }

  conf = shallowCopy(conf);

  /**
   * NewTopic model.
   *
   * This is the representation of a new message that is requested to be made
   * using the Admin client.
   *
   * @typedef {object} AdminClient~NewTopic
   * @property {string} topic - the topic name to create
   * @property {number} num_partitions - the number of partitions to give the topic
   * @property {number} replication_factor - the replication factor of the topic
   * @property {object} config - a list of key values to be passed as configuration
   * for the topic.
   */

  this._client = new Kafka.AdminClient(conf);
  this._isConnected = false;
  this.globalConfig = conf;
}
AdminClient class for administering Kafka

This client is the way you can interface with the Kafka Admin APIs.
This class should not be made using the constructor, but instead
should be made using the factory method.

<code>
var client = AdminClient.create({ ... });
</code>

Once you instantiate this object, it will have a handle to the kafka broker.
Unlike the other node-rdkafka classes, this class does not ensure that
it is connected to the upstream broker. Instead, making an action will
validate that.

@param {object} conf - Key value pairs to configure the admin client
topic configuration
@constructor