#include #include #include "bindings.lxc.container.h" ----------------------------------------------------------------------------- -- | -- Module : Bindings.LXC.Container -- Copyright : (c) Nickolay Kudasov 2014 -- License : BSD-style (see the file LICENSE) -- -- Maintainer : nickolay.kudasov@gmail.com -- -- This module provides a set of functions to create, control and manage LXC containers. -- You can get more info about LXC at and . -- ----------------------------------------------------------------------------- module Bindings.LXC.Container ( -- * Flags -- ** Clone flags c'LXC_CLONE_KEEPNAME, c'LXC_CLONE_KEEPMACADDR, c'LXC_CLONE_SNAPSHOT, c'LXC_CLONE_KEEPBDEVTYPE, c'LXC_CLONE_MAYBE_SNAPSHOT, c'LXC_CLONE_MAXFLAGS, -- ** Create flags c'LXC_CREATE_QUIET, c'LXC_CREATE_MAXFLAGS, -- * Data types and fields -- ** Container C'lxc_container(..), p'lxc_container'error_string, p'lxc_container'error_num, p'lxc_container'daemonize, p'lxc_container'config_path, -- ** Snapshot C'lxc_snapshot(..), p'lxc_snapshot'name, p'lxc_snapshot'comment_pathname, p'lxc_snapshot'timestamp, p'lxc_snapshot'lxcpath, p'lxc_snapshot'free, -- ** Back store device specs C'bdev_specs(..), p'bdev_specs'fstype, p'bdev_specs'fssize, p'bdev_specs'zfs, p'bdev_specs'lvm, p'bdev_specs'dir, C'zfs_t(..), p'zfs_t'zfsroot, C'lvm_t(..), p'lvm_t'vg, p'lvm_t'lv, p'lvm_t'thinpool, -- * Container methods -- ** Query container state p'lxc_container'is_defined, p'lxc_container'is_running, p'lxc_container'state, p'lxc_container'init_pid, p'lxc_container'get_interfaces, p'lxc_container'get_ips, -- ** Container config p'lxc_container'config_file_name, p'lxc_container'get_config_path, p'lxc_container'set_config_path, p'lxc_container'load_config, p'lxc_container'save_config, p'lxc_container'get_keys, p'lxc_container'set_config_item, p'lxc_container'get_config_item, p'lxc_container'get_running_config_item, p'lxc_container'clear_config, p'lxc_container'clear_config_item, -- ** Control container state p'lxc_container'start, p'lxc_container'stop, p'lxc_container'reboot, p'lxc_container'shutdown, p'lxc_container'freeze, p'lxc_container'unfreeze, p'lxc_container'wait, -- ** Manage containers p'lxc_container'create, p'lxc_container'clone, p'lxc_container'rename, p'lxc_container'destroy, -- ** Console p'lxc_container'console_getfd, p'lxc_container'console, -- ** Attach p'lxc_container'attach, p'lxc_container'attach_run_wait, -- ** Snapshots p'lxc_container'snapshot, p'lxc_container'snapshot_list, p'lxc_container'snapshot_restore, p'lxc_container'snapshot_destroy, -- ** Misc p'lxc_container'want_daemonize, p'lxc_container'want_close_all_fds, p'lxc_container'get_cgroup_item, p'lxc_container'set_cgroup_item, p'lxc_container'may_control, p'lxc_container'add_device_node, p'lxc_container'remove_device_node, -- * Global LXC functions -- ** Allocate and manage containers c'lxc_container_new, c'lxc_container_get, c'lxc_container_put, -- ** List containers c'list_defined_containers, c'list_active_containers, c'list_all_containers, -- ** Misc c'lxc_get_wait_states, c'lxc_get_global_config_item, c'lxc_get_version, c'lxc_log_close, ) where #strict_import import Bindings.LXC.Sys.Types import Bindings.LXC.AttachOptions #num LXC_CLONE_KEEPNAME #num LXC_CLONE_KEEPMACADDR #num LXC_CLONE_SNAPSHOT #num LXC_CLONE_KEEPBDEVTYPE #num LXC_CLONE_MAYBE_SNAPSHOT #num LXC_CLONE_MAXFLAGS #num LXC_CREATE_QUIET #num LXC_CREATE_MAXFLAGS #starttype zfs_t #field zfsroot, CString #stoptype #starttype lvm_t #field vg , CString #field lv , CString #field thinpool , CString #stoptype #starttype struct bdev_specs #field fstype , CString #field fssize , #field zfs , #field lvm , #field dir , CString #stoptype #starttype struct lxc_snapshot #field name , CString #field comment_pathname , CString #field timestamp , CString #field lxcpath , CString #field free , FunPtr (Ptr -> IO ()) #stoptype #starttype struct lxc_container #field error_string , CString #field error_num , CInt #field daemonize , CBool #field config_path , CString #field is_defined , FunPtr (Ptr -> IO CBool) #field state , FunPtr (Ptr -> IO CString) #field is_running , FunPtr (Ptr -> IO CBool) #field freeze , FunPtr (Ptr -> IO CBool) #field unfreeze , FunPtr (Ptr -> IO CBool) #field init_pid , FunPtr (Ptr -> IO ) #field load_config , FunPtr (Ptr -> CString -> IO CBool) #field start , FunPtr (Ptr -> CInt -> Ptr CString -> IO CBool) #field stop , FunPtr (Ptr -> IO CBool) #field want_daemonize , FunPtr (Ptr -> CBool -> IO CBool) #field want_close_all_fds , FunPtr (Ptr -> CBool -> IO CBool) #field config_file_name , FunPtr (Ptr -> IO CString) #field wait , FunPtr (Ptr -> CString -> CInt -> IO CBool) #field set_config_item , FunPtr (Ptr -> CString -> CString -> IO CBool) #field destroy , FunPtr (Ptr -> IO CBool) #field save_config , FunPtr (Ptr -> CString -> IO CBool) #field create , FunPtr (Ptr -> CString -> CString -> Ptr -> CInt -> Ptr CString -> IO CBool) #field rename , FunPtr (Ptr -> CString -> IO CBool) #field reboot , FunPtr (Ptr -> IO CBool) #field shutdown , FunPtr (Ptr -> CInt -> IO CBool) #field clear_config , FunPtr (Ptr -> IO ()) #field clear_config_item , FunPtr (Ptr -> CString -> IO CBool) #field get_config_item , FunPtr (Ptr -> CString -> CString -> CInt -> IO CInt) #field get_running_config_item , FunPtr (Ptr -> CString -> IO CString) #field get_keys , FunPtr (Ptr -> CString -> CString -> CInt -> IO CInt) #field get_interfaces , FunPtr (Ptr -> IO (Ptr CString)) #field get_ips , FunPtr (Ptr -> CString -> CString -> CInt -> IO (Ptr CString)) #field get_cgroup_item , FunPtr (Ptr -> CString -> CString -> CInt -> IO CInt) #field set_cgroup_item , FunPtr (Ptr -> CString -> CString -> IO CBool) #field get_config_path , FunPtr (Ptr -> IO CString) #field set_config_path , FunPtr (Ptr -> CString -> IO CBool) #field clone , FunPtr (Ptr -> CString -> CString -> CInt -> CString -> CString -> -> Ptr CString -> IO (Ptr )) #field console_getfd , FunPtr (Ptr -> Ptr CInt -> Ptr CInt -> IO CInt) #field console , FunPtr (Ptr -> CInt -> CInt -> CInt -> CInt -> CInt -> IO CInt) #field attach , FunPtr (Ptr -> C_lxc_attach_exec_t -> Ptr () -> Ptr -> Ptr -> IO CInt) #field attach_run_wait , FunPtr (Ptr -> Ptr -> CString -> Ptr CString -> IO CInt) #field snapshot , FunPtr (Ptr -> CString -> IO CInt) #field snapshot_list , FunPtr (Ptr -> Ptr (Ptr ) -> IO CInt) #field snapshot_restore , FunPtr (Ptr -> CString -> CString -> IO CBool) #field snapshot_destroy , FunPtr (Ptr -> CString -> IO CBool) #field may_control , FunPtr (Ptr -> IO CBool) #field add_device_node , FunPtr (Ptr -> CString -> CString -> IO CBool) #field remove_device_node , FunPtr (Ptr -> CString -> CString -> IO CBool) #stoptype #ccall lxc_container_new , CString -> CString -> IO (Ptr ) #ccall lxc_container_get , Ptr -> IO CInt #ccall lxc_container_put , Ptr -> IO CInt #ccall lxc_get_wait_states , Ptr CString -> IO CInt #ccall lxc_get_global_config_item , CString -> IO CString #ccall lxc_get_version , IO CString #ccall list_defined_containers , CString -> Ptr (Ptr CString) -> Ptr (Ptr (Ptr )) -> IO CInt #ccall list_active_containers , CString -> Ptr (Ptr CString) -> Ptr (Ptr (Ptr )) -> IO CInt #ccall list_all_containers , CString -> Ptr (Ptr CString) -> Ptr (Ptr (Ptr )) -> IO CInt #ccall lxc_log_close , IO ()