ruby-lxc 1.0.2 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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
|