create_parser.add_argument('-s', '--size', type=int, nargs='?', help='requested size in MB for create')
create_parser.add_argument('--snap', type=str, nargs='?', help='create from snapshot')
create_parser.add_argument('-p', '--pool', type=str, nargs='?', help='for backwards compatiblity with rbd')
- create_parser.add_argument('name', type=str, nargs=1, help='volume/device name')
+ create_parser.add_argument('name', type=str, help='volume/device name')
create_parser.set_defaults(func=vlmc.create)
remove_parser = subparsers.add_parser('remove', help='Delete volume')
- remove_parser.add_argument('name', type=str, nargs=1, help='volume/device name')
+ remove_parser.add_argument('name', type=str, help='volume/device name')
remove_parser.set_defaults(func=vlmc.remove)
remove_parser.add_argument('-p', '--pool', type=str, nargs='?', help='for backwards compatiblity with rbd')
rm_parser = subparsers.add_parser('rm', help='Delete volume')
- rm_parser.add_argument('name', type=str, nargs=1, help='volume/device name')
+ rm_parser.add_argument('name', type=str, help='volume/device name')
rm_parser.set_defaults(func=vlmc.remove)
rm_parser.add_argument('-p', '--pool', type=str, nargs='?', help='for backwards compatiblity with rbd')
map_parser = subparsers.add_parser('map', help='Map volume')
- map_parser.add_argument('name', type=str, nargs=1, help='volume/device name')
+ map_parser.add_argument('name', type=str, help='volume/device name')
map_parser.set_defaults(func=vlmc.map_volume)
map_parser.add_argument('-p', '--pool', type=str, nargs='?', help='for backwards compatiblity with rbd')
unmap_parser = subparsers.add_parser('unmap', help='Unmap volume')
- unmap_parser.add_argument('name', type=str, nargs=1, help='volume/device name')
+ unmap_parser.add_argument('name', type=str, help='volume/device name')
unmap_parser.set_defaults(func=vlmc.unmap_volume)
unmap_parser.add_argument('-p', '--pool', type=str, nargs='?', help='for backwards compatiblity with rbd')
snapshot_parser = subparsers.add_parser('snapshot', help='snapshot volume')
#group = snapshot_parser.add_mutually_exclusive_group(required=True)
snapshot_parser.add_argument('-p', '--pool', type=str, nargs='?', help='for backwards compatiblity with rbd')
- snapshot_parser.add_argument('name', type=str, nargs=1, help='volume/device name')
+ snapshot_parser.add_argument('name', type=str, help='volume/device name')
snapshot_parser.set_defaults(func=vlmc.snapshot)
ls_parser = subparsers.add_parser('ls', help='List volumes')
ls_parser.add_argument('-p', '--pool', type=str, nargs='?', help='for backwards compatiblity with rbd')
resize_parser = subparsers.add_parser('resize', help='Resize volume')
- resize_parser.add_argument('-s', '--size', type=int, nargs=1, help='requested size in MB for resize')
- resize_parser.add_argument('name', type=str, nargs=1, help='volume/device name')
+ resize_parser.add_argument('-s', '--size', type=int, help='requested size in MB for resize')
+ resize_parser.add_argument('name', type=str, help='volume/device name')
resize_parser.set_defaults(func=vlmc.resize)
resize_parser.add_argument('-p', '--pool', type=str, nargs='?', help='for backwards compatiblity with rbd')
open_parser = subparsers.add_parser('open', help='open volume')
- open_parser.add_argument('name', type=str, nargs=1, help='volume/device name')
+ open_parser.add_argument('name', type=str, help='volume/device name')
open_parser.set_defaults(func=vlmc.open_volume)
open_parser.add_argument('-p', '--pool', type=str, nargs='?', help='for backwards compatiblity with rbd')
close_parser = subparsers.add_parser('close', help='close volume')
- close_parser.add_argument('name', type=str, nargs=1, help='volume/device name')
+ close_parser.add_argument('name', type=str, help='volume/device name')
close_parser.set_defaults(func=vlmc.close_volume)
close_parser.add_argument('-p', '--pool', type=str, nargs='?', help='for backwards compatiblity with rbd')
lock_parser = subparsers.add_parser('lock', help='lock volume')
- lock_parser.add_argument('name', type=str, nargs=1, help='volume/device name')
+ lock_parser.add_argument('name', type=str, help='volume/device name')
lock_parser.set_defaults(func=vlmc.lock)
lock_parser.add_argument('-p', '--pool', type=str, nargs='?', help='for backwards compatiblity with rbd')
unlock_parser = subparsers.add_parser('unlock', help='unlock volume')
- unlock_parser.add_argument('name', type=str, nargs=1, help='volume/device name')
+ unlock_parser.add_argument('name', type=str, help='volume/device name')
unlock_parser.add_argument('-f', '--force', action='store_true', default=False , help='break lock')
unlock_parser.set_defaults(func=vlmc.unlock)
unlock_parser.add_argument('-p', '--pool', type=str, nargs='?', help='for backwards compatiblity with rbd')
info_parser = subparsers.add_parser('info', help='Show volume info')
- info_parser.add_argument('name', type=str, nargs=1, help='volume name')
+ info_parser.add_argument('name', type=str, help='volume name')
info_parser.set_defaults(func=vlmc.info)
info_parser.add_argument('-p', '--pool', type=str, nargs='?', help='for backwards compatiblity with rbd')
map_info_parser = subparsers.add_parser('mapinfo', help='Show volume map_info')
- map_info_parser.add_argument('name', type=str, nargs=1, help='volume name')
+ map_info_parser.add_argument('name', type=str, help='volume name')
map_info_parser.set_defaults(func=vlmc.mapinfo)
map_info_parser.add_argument('-p', '--pool', type=str, nargs='?', help='for backwards compatiblity with rbd')
map_info_parser.add_argument('-v', '--verbose', action='store_true', default=False , help='')
args = parser.parse_args()
loadrc(args.config)
+ kwargs=vars(args)
if parser_func == archipelago_parser:
peers = construct_peers()
xsegbd_args = [('start_portno', str(config['XSEGBD_START'])), ('end_portno',
str(config['XSEGBD_END']))]
- kwargs=vars(args)
- try:
- args.func(**kwargs)
- return 0
- except Error as e:
- print red(e)
- return -1
-
try:
- args.func(args)
+ args.func(**kwargs)
return 0
except Error as e:
print red(e)
from .common import *
@exclusive
-def showmapped(args):
+def showmapped():
try:
devices = os.listdir(os.path.join(XSEGBD_SYSFS, "devices/"))
except:
raise Error(reason)
return len(devices)
-def showmapped_wrapper(args):
- showmapped(args)
+def showmapped_wrapper(**kwargs):
+ showmapped()
@exclusive
-def create(args):
- name = args.name[0]
- size = args.size
- snap = args.snap
-
+def create(name, size=None, snap=None, **kwargs):
if len(name) < 6:
raise Error("Name should have at least len 6")
if size == None and snap == None:
raise Error("vlmc creation failed")
@exclusive
-def snapshot(args):
- # snapshot
- name = args.name[0]
-
+def snapshot(name, **kwargs):
if len(name) < 6:
raise Error("Name should have at least len 6")
sys.stdout.write("Snapshot name: %s\n" % reply)
-def list_volumes(args):
+def list_volumes(**kwargs):
if config['STORAGE'] == "rados":
import rados
cluster = rados.Rados(conffile=config['CEPH_CONF_FILE'])
@exclusive
-def remove(args):
- name = args.name[0]
-
+def remove(name, **kwargs):
try:
for f in os.listdir(XSEGBD_SYSFS + "devices/"):
d_id = open(XSEGBD_SYSFS + "devices/" + f + "/id").read().strip()
@exclusive
-def map_volume(args):
+def map_volume(name, **kwargs):
if not loaded_module(xsegbd):
raise Error("Xsegbd module not loaded")
- name = args.name[0]
prev = config['XSEGBD_START']
try:
result = [int(open(XSEGBD_SYSFS + "devices/" + f + "/srcport").read().strip()) for f in os.listdir(XSEGBD_SYSFS + "devices/")]
raise Error(name + ': ' + str(reason))
@exclusive
-def unmap_volume(args):
+def unmap_volume(name, **kwargs):
if not loaded_module(xsegbd):
raise Error("Xsegbd module not loaded")
- device = args.name[0]
+ device = name
try:
for f in os.listdir(XSEGBD_SYSFS + "devices/"):
d_id = open(XSEGBD_SYSFS + "devices/" + f + "/id").read().strip()
raise Error(device + ': ' + str(reason))
# FIXME:
-def resize(args):
+def resize(name, size, **kwargs):
if not loaded_module(xsegbd):
raise Error("Xsegbd module not loaded")
- name = args.name[0]
- size = args.size[0]
-
try:
for f in os.listdir(XSEGBD_SYSFS + "devices/"):
raise Error(name + ': ' + str(reason))
@exclusive
-def lock(args):
- name = args.name[0]
-
+def lock(name, **kwargs):
if len(name) < 6:
raise Error("Name should have at least len 6")
sys.stdout.write("Volume locked\n")
@exclusive
-def unlock(args):
- name = args.name[0]
- force = args.force
-
+def unlock(name, force=False, **kwargs):
if len(name) < 6:
raise Error("Name should have at least len 6")
sys.stdout.write("Volume unlocked\n")
@exclusive
-def open_volume(args):
- name = args.name[0]
-
+def open_volume(name, **kwargs):
if len(name) < 6:
raise Error("Name should have at least len 6")
sys.stdout.write("Volume opened\n")
@exclusive
-def close_volume(args):
- name = args.name[0]
-
+def close_volume(name, **kwargs):
if len(name) < 6:
raise Error("Name should have at least len 6")
sys.stdout.write("Volume closed\n")
@exclusive
-def info(args):
- name = args.name[0]
-
+def info(name, **kwargs):
if len(name) < 6:
raise Error("Name should have at least len 6")
else:
sys.stdout.write("Volume %s: size: %d\n" % (name, size) )
-def mapinfo(args):
- name = args.name[0]
-
+def mapinfo(name, verbose=False, **kwargs):
if len(name) < 6:
raise Error("Name should have at least len 6")
pos += 1
block = hexlify(mapdata[pos:pos+32])
pos += 32
- if args.verbose:
+ if verbose:
print block, exists
print "Actual disk usage: " + str(nr_exists * BLOCKSIZE),
print '(' + str(nr_exists) + '/' + str(blocks) + ' blocks)'