List of commands
================
-The commands described bellow are grouped by service. The examples showcase a sample set of group commands. The kamaki interactive shell (check `Usage section <usage.html#interactive-shell>`_ for details) is chosen as the execution environment.
+Kamaki commands follow this scheme::
+ [kamaki] <object> <action> [identifiers] [non-positional arguments]
-user (Identity Manager)
+In this context, objects are not services, but virtual objects like a server, a
+file or an image. The action concerns objects of the specified type. Some
+actions (e.g. "delete" or "info") need to operate on an existing object. The
+identifiers strictly identify this object and they should have the form of an id
+(e.g., `server delete <SERVER_ID>`).
+
+The examples bellow showcase some commands. The kamaki-shell (check
+`Usage section <usage.html#interactive-shell>`_ for details) is chosen as the
+execution environment.
+
+
+user (Identity/Astakos)
-----------------------
.. code-block:: text
- authenticate: Authenticate a user
+ info Get info for (current) session user
+ uuid2name Get user name(s) from uuid(s)
+ authenticate Authenticate a user and get all authentication information
+ list List (cached) session users
+ add Authenticate user by token and add to kamaki session (cache)
+ name2uuid Get user uuid(s) from name(s)
+ select Select user from the (cached) list as current session user
+ delete Delete user (token) from the (cached) list of session users
Showcase: get user information
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-In the following, the token has been set in a previous step (see `setup section <setup.html>`_ or the `quick setup guide <usage.html#quick-setup>`_)
+In the following, cloud URL and TOKEN were set in a previous step (see
+`setup section <setup.html>`_ or the
+`quick setup guide <usage.html#quick-setup>`_)
.. code-block:: console
:emphasize-lines: 1,4
[kamaki]: user
* Authenticate user *
- [user]: authenticate
- auth_token_created: 2012-11-13T14:12:40.917034
- auth_token_expires: 2012-12-13T14:12:40.917035
- email :
- myaccount@grnet.gr
- myotheraccount@grnet.gr
- name : My Real Name
- username : usually@an.email.org
- uuid : ab1cde23-45fg-6h7i-8j9k-10l1m11no2pq
+ [user]: info
+ ...
+ name: My Real Name
+ id: ab1cde23-45fg-6h7i-8j9k-10l1m11no2pq
+
+ [user]: exit
+ [kamaki]:
+
+project (Astakos)
+-----------------
+
+.. code-block:: text
+
+ info Get details for a project
+ unsuspend Resume a suspended project (special privileges needed)
+ suspend Suspend a project (special privileges needed)
+ list List all projects
+ create Apply for a new project
+ modify Modify a project
+ terminate Terminate a project (special privileges needed)
+ application Application management commands
+ reinstate Reinstate a terminated project (special privileges needed)
+
+membership (Astakos)
+--------------------
+
+.. code-block:: text
+
+ info Details on a membership
+ enroll Enroll somebody to a project you manage
+ join Join a project
+ list List all memberships
+ accept Accept a membership for a project you manage
+ leave Leave a project you have membership to
+ remove Remove a membership for a project you manage
+ reject Reject a membership for a project you manage
+ cancel Cancel your (probably pending) membership to a project
+
+quota (Account/Astakos)
+-----------------------
+
+.. code-block:: text
+
+ list Get user quotas
+ info Get quota for a service (cyclades, pithos, astakos)
+
+resource (Astakos)
+------------------
+
+.. code-block:: text
+
+ list List user resources
flavor (Compute/Cyclades)
-------------------------
* Get details about flavor with id 43 *
[flavor]: info 43
SNF:disk_template: drbd
- cpu : 4
- disk : 10
- id : 43
- name : C4R2048D10
- ram : 2048
+ cpu: 4
+ disk: 10
+ id: 43
+ name: C4R2048D10
+ ram: 2048
-image (Plankton commands + Compute Image subcommands)
------------------------------------------------------
+image (Image/Plankton)
+----------------------
.. code-block:: text
- addmember : Add a member to an image
- addproperty: Add an image property
- delmember : Remove a member from an image
- list : List images accessible by user
- members : Get image members
- meta : Get image metadata
- register : (Re)Register an image
- setmembers : Set the members of an image
- shared : List shared images
- compute : Compute Image API commands
- list : List images
- delete : Delete image
- info : Get image details
- properties : Get image properties
- delproperty: Delete an image property
- setproperty: Update an image property
+ info Get image metadata
+ list List images accessible by user
+ register (Re)Register an image file to an Image service
+ modify Add / update metadata and properties for an image
+ unregister Unregister an image (does not delete the image file)
Showcase: Pick an image and list the properties
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
* list all available images *
[image]: list
- 1. Windows Server 2008
+ 926ab1c5-2d85-49d4-aebe-0fce712789b9 Windows Server 2008
container_format: bare
- disk_format : diskdump
- id : 926ab1c5-2d85-49d4-aebe-0fce712789b9
- size : 11917066240
- status : available
- 2. Windows Server 2012
+ disk_format: diskdump
+ id: 926ab1c5-2d85-49d4-aebe-0fce712789b9
+ size: 11917066240
+ status: available
+ 78262ee7-949e-4d70-af3a-85360c3de57a Windows Server 2012
container_format: bare
- disk_format : diskdump
- id : 78262ee7-949e-4d70-af3a-85360c3de57a
- size : 11697913856
- status : available
- 3. ubuntu
+ disk_format: diskdump
+ id: 78262ee7-949e-4d70-af3a-85360c3de57a
+ size: 11697913856
+ status: available
+ 5ed5a29b-292c-4fe0-b32c-2e2b65628635 ubuntu
container_format: bare
- disk_format : diskdump
- id : 5ed5a29b-292c-4fe0-b32c-2e2b65628635
- size : 2578100224
- status : available
- 4. Debian_Wheezy_Base
+ disk_format: diskdump
+ id: 5ed5a29b-292c-4fe0-b32c-2e2b65628635
+ size: 2578100224
+ status: available
+ 1f8454f0-8e3e-4b6c-ab8e-5236b728dffe Debian_Wheezy_Base
container_format: bare
- disk_format : diskdump
- id : 1f8454f0-8e3e-4b6c-ab8e-5236b728dffe
- size : 795107328
- status : available
-
- * Get properties of image with id 1f8454f0-8e3e-4b6c-ab8e-5236b728dffe *
- [image]: compute properties 1f8454f0-8e3e-4b6c-ab8e-5236b728dffe
- description : Debian 6.0.6 (Squeeze) Base System
- gui : No GUI
- kernel : 2.6.32
- os : debian
- osfamily : linux
- root_partition: 1
- sortorder : 1
- users : root
+ disk_format: diskdump
+ id: 1f8454f0-8e3e-4b6c-ab8e-5236b728dffe
+ size: 795107328
+ status: available
+
+ * Get details for image with id 1f8454f0-8e3e-4b6c-ab8e-5236b728dffe *
+ [image]: info 1f8454f0-8e3e-4b6c-ab8e-5236b728dffe
+ name: Debian_Wheezy_Base
+ container_format: bare
+ disk_format: diskdump
+ id: 1f8454f0-8e3e-4b6c-ab8e-5236b728dffe
+ size: 795107328
+ status: available
+ owner: s0m3-u53r-1d (user@example.com)
+ DESCRIPTION: Debian Wheezy Base (Stable)
+ GUI: No GUI
+ KERNEL: 2.6.32
+ OS: debian
+ OSFAMILY: linux
+ ROOT_PARTITION: 1
+ SORTORDER: 1
+ USERS: root
+
+imagecompute (Compute/Cyclades)
+-------------------------------
+
+.. code-block:: text
+
+ info Get detailed information on an image
+ list List images
+ modify Modify image properties (metadata)
+ delete Delete an image (WARNING: image file is also removed)
server (Compute/Cyclades)
-------------------------
.. code-block:: text
- addmeta : Add server metadata
- addr : List a server's nic address
- console : Get a VNC console
- create : Create a server
- delete : Delete a server
- delmeta : Delete server metadata
- firewall: Set the server's firewall profile
- info : Get server details
- list : List servers
- meta : Get a server's metadata
- reboot : Reboot a server
- rename : Update a server's name
- setmeta : Update server's metadata
- shutdown: Shutdown a server
- start : Start a server
- stats : Get server statistics
- wait : Wait for server to finish
+ info Detailed information on a Virtual Machine
+ modify Modify attributes of a virtual server
+ create Create a server (aka Virtual Machine)
+ list List virtual servers accessible by user
+ reboot Reboot a virtual server
+ start Start an existing virtual server
+ shutdown Shutdown an active virtual server
+ delete Delete a virtual server
+ console Create a VMC console and show connection information
+ wait Wait for server to finish [BUILD, STOPPED, REBOOT, ACTIVE]
Showcase: Create a server
^^^^^^^^^^^^^^^^^^^^^^^^^
.. code-block:: console
:emphasize-lines: 1,4,21,35,44,62
- * Enter server context *
[kamaki]: server
- * See server-create help *
[server]: create -h
- usage: create <name> <flavor id> <image id>
- [--personality PERSONALITY] [-h] [--config CONFIG]
+ usage: create --name NAME --flavor-id FLAVOR_ID --image-id IMAGE_ID
+ [--personality PERSONALITY] [-h] [--config CONFIG] [--cloud CLOUD]
Create a server
-i, --include Include protocol headers in the output
--config CONFIG Path to configuration file
-s, --silent Do not output anything
+ --cloud CLOUD Chose a cloud to connect to
* List all available images *
[server]: /image compute list
ram : 1024
* Create a debian server named 'My Small Debian Server'
- [server]: create 'My Small Debian Server' 1 b2dffe52-64a4-48c3-8a4c-8214cc3165cf
+ [server]: create --name='My Small Debian Server' --flavor-id=1 --image-id=b2dffe52-64a4-48c3-8a4c-8214cc3165cf
adminPass: L8gu2wbZ94
created : 2012-11-23T16:56:04.190813+00:00
flavorRef: 1
id : 11687
imageRef : b2dffe52-64a4-48c3-8a4c-8214cc3165cf
metadata :
- values:
- os : debian
- users: root
+ os : debian
+ users: root
name : My Small Debian Server
progress : 0
status : BUILD
Server 11687 still in BUILD mode ||||||||||||||||| | 80%
Server 11687 is now in ACTIVE mode
-.. Note:: In kamaki shell, / is used to access top-level command groups while working in command group contexts
+.. Note:: In kamaki shell, / is used to access commands from top-level
+
+ip (Network/Cyclades)
+---------------------
+
+.. code-block:: text
+
+ info Get details on a floating IP
+ create Reserve an IP on a network
+ list List reserved floating IPs
+ delete Unreserve an IP (also delete the port, if attached)
+ attach Attach an IP on a virtual server
+ detach Detach an IP from a virtual server
+
+port (Network/Cyclades)
+-----------------------
+
+.. code-block:: text
+
+ info Get details about a port
+ list List all ports
+ create Create a new port (== connect server to network)
+ modify Modify the attributes of a port
+ delete Delete a port (== disconnect server from network)
+ wait Wait for port to finish [ACTIVE, DOWN, BUILD, ERROR]
+
+Showcase: Reserve and attach IP to server
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-network (Compute/Cyclades)
+.. code-block:: text
+
+ * Enter port context *
+ [kamaki]: port
+
+ * Reserve an IP and see servers and networks*
+ [port]: /ip create
+ 123.456.78.9
+ [port]: /server list
+ 42 My Windows Server
+ 43 My Linux Server
+ [port]: /network list
+ 101 My Network 1
+ 102 My Network 2
+
+ * Attach IP to server
+ [port]: port create --device-id=43 --network-id=101 --ip-address=123.456.78.9 --wait
+ Creating new port 7 between server 43 and network 101
+ Port 7 still in BUILD mode ||||||||||||||||| | 80%
+ Port 7 is now in ACTIVE mode
+
+.. Note:: In kamaki shell, / is used to access top-level command groups while
+ working in command group contexts
+
+network (Network/Cyclades)
--------------------------
.. code-block:: text
- connect : Connect a server to a network
- create : Create a network
- delete : Delete a network
- disconnect: Disconnect a nic of a server to a network
- info : Get network details
- list : List networks
- rename : Update network name
+ info Get details about a network
+ disconnect Disconnect a network from a device
+ modify Modify network attributes
+ create Create a new network
+ list List networks
+ connect Connect a network with a device (server or router)
+ delete Delete a network
Showcase: Connect a network to a VM
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
* Try network-connect (to get help) *
[network]: connect
Syntax error
- usage: connect <server id> <network id> [-s] [-h] [-i] [--config CONFIG]
+ usage: connect <network id> --device-id <DEVICE_ID> [-s] [-h] [-i] [--config CONFIG]
Connect a server to a network
-v,--verbose: More info at response
* Connect VM with id 11687 to network with id 1409
- [network]: connect 11687 1409
+ [network]: connect 11687 --device-id=1409 --wait
+ Creating port between network 1409 and server 11687
+ New port: 8
* Get details on network with id 1409
[network]: info 1409
- attachments:
- nic-11687-1
- cidr : 192.168.1.0/24
- cidr6 : None
- created : 2012-11-23T17:17:20.560098+00:00
- dhcp : True
- gateway : None
- gateway6 : None
- id : 1409
- name : my network
- public : False
- status : ACTIVE
- type : PRIVATE_MAC_FILTERED
- updated : 2012-11-23T17:18:25.095225+00:00
+ attachments:
+ 8
+ cidr : 192.168.1.0/24
+ cidr6 : None
+ created : 2012-11-23T17:17:20.560098+00:00
+ dhcp : True
+ gateway : None
+ gateway6: None
+ id : 1409
+ name : my network
+ public : False
+ status : ACTIVE
+ type : MAC_FILTERED
+ updated : 2012-11-23T17:18:25.095225+00:00
* Get connectivity details on VM with id 11687 *
- [network]: /server addr 11687
- id: nic-11687-1
+ [network]: /server info 11687 --nics
+ nic-11687-1
ipv4 : 192.168.1.1
ipv6 : None
mac_address: aa:0f:c2:0b:0e:85
network_id : 1409
firewallProfile: DISABLED
- id: nic-11687-0
+ nic-11687-0
ipv4 : 83.212.106.111
ipv6 : 2001:648:2ffc:1116:a80c:f2ff:fe12:a9e
mac_address : aa:0c:f2:12:0a:9e
.. Note:: In kamaki shell, / is used to access top-level command groups while working in command group contexts
+container (Storage/Pithos+)
+---------------------------
+
+.. code-block:: text
+
+ info Get information about a container
+ modify Modify the properties of a container
+ create Create a new container
+ list List all containers, or their contents
+ empty Empty a container
+ delete Delete a container
+
+group (Storage/Pithos+)
+-----------------------
+
+.. code-block:: text
+
+ create Create a group of users
+ list List all groups and group members
+ delete Delete a user group
+
+sharer (Storage/Pithos+)
+------------------------
+
+.. code-block:: text
+
+ info Details on a Pithos+ sharer account (default: current account)
+ list List accounts who share file objects with current user
+
file (Storage/Pithos+)
----------------------
.. code-block:: text
- append : Append local file to remote
- cat : Print a file to console
- copy : Copy an object
- create : Create a container
- delete : Delete a container [or an object]
- delgroup : Delete a user group
- delmeta : Delete an existing metadatum for an account [, container [or object]]
- delpermissions: Delete all sharing permissions
- download : Download a file
- group : Get user groups details
- hashmap : Get the hashmap of an object
- info : Get information for account [, container [or object]]
- list : List containers, object trees or objects in a directory
- manifest : Create a remote file with uploaded parts by manifestation
- meta : Get custom meta-content for account [, container [or object]]
- mkdir : Create a directory
- move : Copy an object
- overwrite : Overwrite part (from start to end) of a remote file
- permissions : Get object read/write permissions
- publish : Publish an object
- purge : Purge a container
- quota : Get quota for account
- setgroup : Create/update a new user group
- setmeta : Set a new metadatum for account [, container [or object]]
- setpermissions: Set sharing permissions
- containerlimit: Container size limit commands
- set : Set container data limit
- get : Get container data limit
- setversioning : Set new versioning (auto, none) for account [or container]
- sharers : List the accounts that share objects with default account
- touch : Create an empty object (file)
- truncate : Truncate remote file up to a size
- unpublish : Unpublish an object
- upload : Upload a file
- versioning : Get versioning for account [or container ]
- versions : Get the version list of an object
+ info Get information/details about a file
+ truncate Truncate remote file up to size
+ mkdir Create a directory
+ create Create an empty file
+ move Move objects, even between different accounts or containers
+ list List all objects in a container or a directory object
+ upload Upload a file
+ cat Fetch remote file contents
+ modify Modify the attributes of a file or directory object
+ append Append local file to (existing) remote object
+ download Download a remove file or directory object to local file system
+ copy Copy objects, even between different accounts or containers
+ overwrite Overwrite part of a remote file
+ delete Delete a file or directory object
Showcase: Upload and download a file
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
* Create two containers *
- [file]: create mycont1
- [file]: create mycont2
+ [file]: /container create mycont1
+ [file]: /container create mycont2
* List accessible containers *
- [file]: list
+ [file]: /container list
1. mycont1 (0B, 0 objects)
2. mycont2 (0B, 0 objects)
3. pithos (0B, 0 objects)
* Upload local file to 1st container *
- [file]: upload rndm_local.file mycont1
+ [file]: upload /mycont1/rndm_local.file
* Check if file has been uploaded *
- [file]: list mycont1
+ [file]: list /mycont1
1. 20M rndm_local.file
* Create directory mydir on second container *
- [file]: mkdir mycont2:mydir
-
+ [file]: mkdir /mycont2/mydir
* Move file from 1st to 2nd container (and in the directory) *
- [file]: move mycont1:rndm_local.file mycont2:mydir/rndm_local.file
+ [file]: move /mycont1/rndm_local.file /mycont2/mydir/rndm_local.file
* Check contents of both containers *
- [file]: list mycont1
- [file]: list mycont2
+ [file]: list /mycont1
+ [file]: list /mycont2
1. D mydir/
2. 20M mydir/rndm_local.file
-
* Copy file from 2nd to 1st container, with a new name *
- [file]: copy mycont2:mydir/rndm_local.file mycont1:rndm_remote.file
-
+ [file]: copy /mycont2/mydir/rndm_local.file /mycont1/rndm_remote.file
* Check pasted file *
- [file]: list mycont1
+ [file]: list /mycont1
1. 20M rndm_remote.file
-
* Download pasted file to local file system *
- [file]: download mycont1:rndm_remote.file rndm_remote.file
-
+ [file]: download /mycont1/rndm_remote.file
+ Downloading: ||||||||||||||||| | 72%
* Check if file is downloaded and if it is the same to original *
[file]: !ls -lh *.file
-rw-rw-r-- 1 ******** ******** 20M Nov 26 15:42 rndm_remote.file
[file]: !diff rndm_local.file rndm_remote.file
-.. Note:: In kamaki shell, ! is used to execute OS shell commands (bash in the above)
-
-.. warning:: The container:object/path syntax does not function if the container and / or the object path contain one or more : characters. To use containers and objects with : use the --container and --dst-container arguments, e.g. to copy test.py object from grnet:dev container to grnet:deploy ::
-
- $ kamaki file copy --container=grnet:dev test.py --dst-container=grnet:deploy
+.. Note:: In kamaki shell, ! is used to execute OS shell commands (e.g., bash)