[ 
https://issues.apache.org/jira/browse/COUCHDB-2541?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14282693#comment-14282693
 ] 

Alexander Shorin commented on COUCHDB-2541:
-------------------------------------------

I propose for us to have such and ships with our releases. Don't have such, but 
may be worth to write a one. This is very creative issue with a lot of possible 
solutions and fun.

There are actually a lot of couchdb cli tools over github: in nodejs, ruby, 
python...dozens of them. They all shares more or less the same issues:
- Attempt to provide console interface as a mirror of the HTTP API. That's not 
a good since our HTTP API is simple enough (or, if not, it should be) to use 
curl/httpie etc. console tools to work with it;
- Lack of support or outdated;
- Different target audience. Such tool should focus on CouchDB operators goals 
and needs and care in first place about support, maintenance and health 
diagnostic;
- Uncontrolled deps. For instance, my formerly loved 
[couchup|https://github.com/sreeix/couchup]  brings to you full featured ruby 
couchdb client and iterative json parser which you have to compile from C;
- No one made in Erlang. I don't see any existed ones as candidates for 
contribution since this will eventually cause additional runtime dependency 
from some scripting language. Python has all known sad story. Ruby has a 
problems if you don't keep it up-to-dated. Node.js has now not an easy times. 
Only Perl seems to be a stable one (; However, this point is very arguable.

`couchdb` script is one the made in bash? I don't feel that this will be a 
simple in implementation, but indeed it will be simple in realization (sorry 
Windows).

> couchdbctl
> ----------
>
>                 Key: COUCHDB-2541
>                 URL: https://issues.apache.org/jira/browse/COUCHDB-2541
>             Project: CouchDB
>          Issue Type: New Feature
>      Security Level: public(Regular issues) 
>            Reporter: Alexander Shorin
>
> couchdbctl is CouchDB control service utility that aims to help users manage 
> and inspect their CouchDB instance, keeping it well and health.
> Few ideas what it may do:
> - register users with easy:
> {code}
> $ couchdbctl users add Jan
> Password:
> {code}
> hides routines to create /_users/org.couchdb.users:Jan document with all 
> required fields;
> - run service operations:
> {code}
> $ couchdbctl db compact
> {code}
> - connect to node and provide shell:
> {code}
> $ couchdbctl attach
> {code}
> - run security audit as like as 
> [audit-couchdb|https://github.com/iriscouch/audit_couchdb] or 
> [couchdb-auditor|https://github.com/kxepal/python-couchdb-auditor] does;
> {code}
> $ couchdbctl audit
> {code}
> - see erltop;
> {code}
> $ couchdbctl top
> {code}
> - monitor stats and active tasks in realtime;
> - run replications with single command without worry about JSON and required 
> fields:
> {code}
> $ couchdbctl replicate foo http://example.com/bar --continuous --create-target
> {code}
> - check cluster health, add/remove nodes to it;
> - explain errors in logs:
> {code}
> $ couchdbctl errors
> [error] [<0.125.0>] {error_report,<0.30.0>,
>                      {<0.125.0>,crash_report,
>                       [[{initial_call,{couch_file,init,['Argument__1']}},
>                         {pid,<0.125.0>},
>                         {registered_name,[]},
>                         {error_info,
>                          {exit,
>                           {{badmatch,{error,eacces}},
>                            [{couch_file,init,1,
> ...
> eacess error - insufficient or invalid permissions, please verify that 
> couchdb user has all r permissions to the following paths:
> /var/lib/couchdb - read+write
> /var/log/couchdb - read+write
> /etc/couchdb - read+write
> /usr/lib64/couchdb/erlang/lib/couch-2.0.0/priv/lib - read
> {code}
> And so on and so forth. It's easy to find how this utility may improve users 
> experience with CouchDB by simplifying common maintaining routes.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to