ruby-lxc 1.0.2 → 1.1.0
Sign up to get free protection for your applications and to get access to all the features.
- data/ext/lxc/lxc.c +61 -7
- data/lib/lxc/version.rb +1 -1
- metadata +2 -2
data/ext/lxc/lxc.c
CHANGED
@@ -51,6 +51,20 @@ struct container_data {
|
|
51
51
|
struct lxc_container *container;
|
52
52
|
};
|
53
53
|
|
54
|
+
struct bdev_specs {
|
55
|
+
char *fstype;
|
56
|
+
uint64_t fssize; // fs size in bytes
|
57
|
+
struct {
|
58
|
+
char *zfsroot;
|
59
|
+
} zfs;
|
60
|
+
struct {
|
61
|
+
char *vg;
|
62
|
+
char *lv;
|
63
|
+
char *thinpool; // lvm thin pool to use, if any
|
64
|
+
} lvm;
|
65
|
+
char *dir;
|
66
|
+
};
|
67
|
+
|
54
68
|
static char **
|
55
69
|
ruby_to_c_string_array(VALUE rb_arr)
|
56
70
|
{
|
@@ -1010,6 +1024,7 @@ struct container_create_without_gvl_args {
|
|
1010
1024
|
struct container_data *data;
|
1011
1025
|
char *template;
|
1012
1026
|
char *bdevtype;
|
1027
|
+
struct bdev_specs *bdevspecs;
|
1013
1028
|
int flags;
|
1014
1029
|
char **args;
|
1015
1030
|
};
|
@@ -1021,14 +1036,14 @@ container_create_without_gvl(void *args_void)
|
|
1021
1036
|
(struct container_create_without_gvl_args *)args_void;
|
1022
1037
|
RETURN_WITHOUT_GVL(
|
1023
1038
|
args->data->container->create(args->data->container, args->template,
|
1024
|
-
args->bdevtype,
|
1039
|
+
args->bdevtype, args->bdevspecs, args->flags,
|
1025
1040
|
args->args)
|
1026
1041
|
);
|
1027
1042
|
}
|
1028
1043
|
|
1029
1044
|
/*
|
1030
1045
|
* call-seq:
|
1031
|
-
* container.create(template, bdevtype = nil, flags = 0, args = [])
|
1046
|
+
* container.create(template, bdevtype = nil, bdevspecs = {}, flags = 0, args = [])
|
1032
1047
|
*
|
1033
1048
|
* Creates a structure for the container according to the given template.
|
1034
1049
|
* This usually consists of downloading and installing a Linux distribution
|
@@ -1040,17 +1055,57 @@ static VALUE
|
|
1040
1055
|
container_create(int argc, VALUE *argv, VALUE self)
|
1041
1056
|
{
|
1042
1057
|
int ret;
|
1043
|
-
|
1058
|
+
struct bdev_specs spec;
|
1044
1059
|
struct container_create_without_gvl_args args;
|
1045
1060
|
char **default_args = { NULL };
|
1061
|
+
VALUE rb_template, rb_bdevtype, rb_bdevspecs, rb_flags, rb_args;
|
1062
|
+
VALUE fstype, fssize, zfsroot, lvname, vgname, thinpool, dir;
|
1046
1063
|
|
1047
1064
|
args.args = default_args;
|
1048
|
-
rb_scan_args(argc, argv, "
|
1049
|
-
&rb_template, &rb_bdevtype, &
|
1065
|
+
rb_scan_args(argc, argv, "14",
|
1066
|
+
&rb_template, &rb_bdevtype, &rb_bdevspecs, &rb_flags,
|
1067
|
+
&rb_args);
|
1068
|
+
|
1069
|
+
if (!NIL_P(rb_bdevspecs)) {
|
1070
|
+
memset(&spec, 0, sizeof(spec));
|
1071
|
+
|
1072
|
+
fstype = rb_hash_aref(rb_bdevspecs, SYMBOL("fstype"));
|
1073
|
+
if (!NIL_P(fstype))
|
1074
|
+
spec.fstype = StringValuePtr(fstype);
|
1075
|
+
|
1076
|
+
fssize = rb_hash_aref(rb_bdevspecs, SYMBOL("fssize"));
|
1077
|
+
if (!NIL_P(fssize))
|
1078
|
+
spec.fssize = NUM2ULONG(fssize);
|
1079
|
+
|
1080
|
+
zfsroot = rb_hash_aref(rb_bdevspecs, SYMBOL("zfsroot"));
|
1081
|
+
if (!NIL_P(zfsroot))
|
1082
|
+
spec.zfs.zfsroot = StringValuePtr(zfsroot);
|
1083
|
+
|
1084
|
+
lvname = rb_hash_aref(rb_bdevspecs, SYMBOL("lvname"));
|
1085
|
+
if (!NIL_P(lvname))
|
1086
|
+
spec.lvm.lv = StringValuePtr(lvname);
|
1087
|
+
|
1088
|
+
vgname = rb_hash_aref(rb_bdevspecs, SYMBOL("vgname"));
|
1089
|
+
if (!NIL_P(vgname))
|
1090
|
+
spec.lvm.vg = StringValuePtr(vgname);
|
1091
|
+
|
1092
|
+
thinpool = rb_hash_aref(rb_bdevspecs, SYMBOL("thinpool"));
|
1093
|
+
if (!NIL_P(thinpool))
|
1094
|
+
spec.lvm.thinpool = StringValuePtr(thinpool);
|
1095
|
+
|
1096
|
+
dir = rb_hash_aref(rb_bdevspecs, SYMBOL("dir"));
|
1097
|
+
if (!NIL_P(dir))
|
1098
|
+
spec.dir = StringValuePtr(dir);
|
1099
|
+
|
1100
|
+
args.bdevspecs = &spec;
|
1101
|
+
|
1102
|
+
} else {
|
1103
|
+
args.bdevspecs = NULL;
|
1104
|
+
}
|
1050
1105
|
|
1051
1106
|
args.template = StringValuePtr(rb_template);
|
1052
1107
|
args.bdevtype = NIL_P(rb_bdevtype) ? NULL : StringValuePtr(rb_bdevtype);
|
1053
|
-
args.flags
|
1108
|
+
args.flags = NIL_P(rb_flags) ? 0 : NUM2INT(rb_flags);
|
1054
1109
|
if (!NIL_P(rb_args))
|
1055
1110
|
args.args = ruby_to_c_string_array(rb_args);
|
1056
1111
|
|
@@ -1067,7 +1122,6 @@ container_create(int argc, VALUE *argv, VALUE self)
|
|
1067
1122
|
return self;
|
1068
1123
|
}
|
1069
1124
|
|
1070
|
-
|
1071
1125
|
static RETURN_WITHOUT_GVL_TYPE
|
1072
1126
|
destroy_without_gvl(void *data_void)
|
1073
1127
|
{
|
data/lib/lxc/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ruby-lxc
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0
|
4
|
+
version: 1.1.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2014-
|
12
|
+
date: 2014-05-20 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rake-compiler
|