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

Tomaz Muraus edited comment on LIBCLOUD-272 at 12/26/12 2:01 AM:
-----------------------------------------------------------------

Yes, we would definitely love to have something like this. There were already 
some attempts to do something like this in the past and there is Roman's tool, 
but there is nothing which is easily maintainable and supports all the APIs.

As far as the actual distribution and other things go, I think we need to 
discuss this more on the mailing list. Imo it can live in the same SVN 
repository (e.g. libcloud/libcloud_cli), but it should not be tied to the 
Libcloud release cycle and should be released as a separate Python package on 
PyPi. Maybe there is also some merit in this thing being a sub project...

I'm not familiar with cement, but I will have a look.

Also to make the whole thing easy to maintain you should have a look at 
[~islamgulov] Google Summer of Code project - 
https://github.com/islamgulov/libcloud.rest. The idea was to build a framework 
for parsing Libcloud method definitions and docstrings which can also be used 
with other projects such as command line tool.
                
      was (Author: kami):
    Yes, we would definitely love to have something like this. There were 
already some attempts to do something like this in the past and there is 
Roman's tool, but there is nothing which is easily maintainable and supports 
all the APIs.

As far as the actual distribution and other things go, I think we need to 
discuss this more on the mailing list. Imo it can live in the same SVN 
repository (e.g. libcloud/libcloud_cli), but it should not be tied to the 
Libcloud release cycle and should be released as a separate Python package on 
PyPi. Maybe there is also some merit in this thing being a sub project...

I'm not familiar with cement, but I will have a look.

Also to make the whole thing easy to maintain you should have a look at 
[~islamgulov]'s Google Summer of Code project - 
https://github.com/islamgulov/libcloud.rest. The idea was to build a framework 
for parsing Libcloud method definitions and docstrings which can also be used 
with other projects such as command line tool.
                  
> Implement CLI tools for libcloud
> --------------------------------
>
>                 Key: LIBCLOUD-272
>                 URL: https://issues.apache.org/jira/browse/LIBCLOUD-272
>             Project: Libcloud
>          Issue Type: New Feature
>          Components: Core, Storage
>            Reporter: Mahendra M
>
> This ticket is for implementing a CLI framework for libcloud. Libcloud does a 
> good job of abstracting cloud operations. If this functionality can be made 
> available via command line tools, it will be an added advantage for libcloud 
> usage. Some other cloud libraries provide such functionality (Like Boto).
> Design goals are to provide
> * Command line tools for all of libcloud's functionality
> * Command line options to control auth information
> * Ability to use config files (/etc/libcloud.conf, ~/.libcloud.conf) etc. 
> These options can be over-written via command line arguments
> * Support for logging (controlled via config files).
> * Provide different commands for each functionality
>   * cloud_compute
>   * cloud_dns
>   * cloud_storage
>   * cloud_lb (load balancing)
> * A hierarchical command structure within each command
>   $ cloud_storage providers - list storage providers
>   $ cloud_storage container <list>/<create>/<delete>
>   $ cloud_storage object <list>/<put>/<get>/...
> * Provide simpler to remember aliases for sub-commands
>   $ cloud_storage container list/ls
> Implementation
> * For providing most of the functionality mentioned in design goals, the 
> python cement library was used. (http://builtoncement.com/). This provides an 
> excellent framework for solving our design goals. 
> It is tested for Python 2.6, 2.7, 3.1, and 3.2. However, I am not sure of 
> it's support for Python 2.5.
> * As of now only the cloud_storage command is implemented.
> Config file structure
> [base]
> storage_provider=s3_us_west
> username=*******
> access_key=********
> [log]
> level=NONE
> file=/tmp/cli1.log
> to_console=False
> rotate=False
> max_bytes=512000
> max_file=5
> cloud_storage command
> $ cloud_storage providers - Lists the available storage providers
> Container operations
> $ cloud_storage container <list|ls> - Lists available containers
> $ cloud_storage container create <container_name>
> $ cloud_storage container delete -r -f -v <container_name>
>   By default container is not deleted if it is not empty
>   If -r is provided, all objects are recursively deleted after being prompted 
> for each object
>   If -f is provided, all objects are recursively deleted without user prompt
>   If -rfv is mentioned, each deleted object is mentioned in the output
> Object operations
> List objects in a container
> $ cloud_storage object <list|ls> -v <container_name>
>   List all objects in the container
>   If -v is mentioned, object size is also listed out
> Delete an object
> $ cloud_storage object <delete|rm|del|remove> -f <container_name> 
> <object_name>
>   Deletes the object in the container after prompting user for confirmation
>   If -f is specified, user is not prompted
> Upload an object from a local file or Unix pipe
> $ cloud_storage object <put|upload|store|create> <container_name> 
> <object_name> <local_file>
> $ cat /path/to/file | cloud_storage object put <container_name> <object_name> 
> $ cat /path/to/file | cloud_storage object put <container_name> <object_name> 
> -
> Download an object ot a local file or unix pipe
> $ cloud_storage object <get|download|stream> <container_name> <object_name> 
> <local_file>
> $ cloud_storage object get <container_name> <object_name> > /path/to/file
> $ cloud_storage object get <container_name> <object_name> - > /path/to/file
> Other changes
> -------------
> * Minor bug fix in S3
> * setup.py was modified to install the cloud_storage command

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to