Revision 6fac9863
b/python/archipelago/archipelago.py | ||
---|---|---|
42 | 42 |
FIRST_COLUMN_WIDTH, |
43 | 43 |
SECOND_COLUMN_WIDTH, |
44 | 44 |
ctext, |
45 |
get_segment, |
|
46 | 45 |
pretty_print, |
47 | 46 |
loaded_module, |
48 | 47 |
load_module, |
49 | 48 |
config, |
50 | 49 |
peers, |
51 | 50 |
Error, |
51 |
XsegSegment |
|
52 | 52 |
) |
53 | 53 |
from vlmc import showmapped as vlmc_showmapped |
54 | 54 |
from vlmc import get_mapped as vlmc_get_mapped |
... | ... | |
148 | 148 |
|
149 | 149 |
|
150 | 150 |
def start(user=False, role=None, cli=False, **kwargs): |
151 |
xseg_segment = XsegSegment(kwargs.get('config')) |
|
151 | 152 |
if role: |
152 | 153 |
try: |
153 | 154 |
p = peers[role] |
... | ... | |
156 | 157 |
return start_peer(p, cli) |
157 | 158 |
|
158 | 159 |
if user: |
159 |
#get_segment().create()
|
|
160 |
#xseg_segment.create()
|
|
160 | 161 |
start_peers(peers, cli) |
161 | 162 |
mapped = vlmc_get_mapped() |
162 | 163 |
if mapped: |
... | ... | |
174 | 175 |
print "====================" |
175 | 176 |
print "" |
176 | 177 |
try: |
177 |
#get_segment().create()
|
|
178 |
#xseg_segment.create()
|
|
178 | 179 |
#time.sleep(0.5) |
179 | 180 |
start_peers(peers, cli) |
180 | 181 |
load_module("blktap", None) |
... | ... | |
185 | 186 |
|
186 | 187 |
|
187 | 188 |
def stop(user=False, role=None, cli=False, **kwargs): |
189 |
xseg_segment = XsegSegment(kwargs.get('config')) |
|
188 | 190 |
if role: |
189 | 191 |
try: |
190 | 192 |
p = peers[role] |
... | ... | |
198 | 200 |
if not VlmcTapdisk.is_paused(m.device): |
199 | 201 |
VlmcTapdisk.pause(m.device) |
200 | 202 |
stop_peers(peers, cli) |
201 |
return get_segment().destroy()
|
|
203 |
return xseg_segment.destroy()
|
|
202 | 204 |
#check devices |
203 | 205 |
if cli: |
204 | 206 |
print "====================" |
... | ... | |
208 | 210 |
if not loaded_module("blktap"): |
209 | 211 |
stop_peers(peers, cli) |
210 | 212 |
time.sleep(0.5) |
211 |
get_segment().destroy()
|
|
213 |
xseg_segment.destroy()
|
|
212 | 214 |
return |
213 | 215 |
|
214 | 216 |
if cli: |
... | ... | |
220 | 222 |
raise Error("Cannot stop archipelago. Mapped volumes exist") |
221 | 223 |
stop_peers(peers, cli) |
222 | 224 |
time.sleep(0.5) |
223 |
get_segment().destroy()
|
|
225 |
xseg_segment.destroy()
|
|
224 | 226 |
|
225 | 227 |
|
226 | 228 |
def status(cli=False, **kwargs): |
227 | 229 |
r = 0 |
230 |
xseg_segment = XsegSegment(kwargs.get('config')) |
|
228 | 231 |
if not loaded_module("blktap"): |
229 | 232 |
for role, _ in reversed(config['roles']): |
230 | 233 |
p = peers[role] |
b/python/archipelago/cli.py | ||
---|---|---|
39 | 39 |
import sys |
40 | 40 |
import argparse |
41 | 41 |
from common import ( |
42 |
loadrc, |
|
43 | 42 |
ctext, |
44 | 43 |
Error, |
45 | 44 |
) |
... | ... | |
218 | 217 |
|
219 | 218 |
try: |
220 | 219 |
args = parser.parse_args() |
221 |
loadrc(args.config) |
|
222 | 220 |
kwargs = vars(args) |
223 | 221 |
# if parser_func == archipelago_parser: |
224 | 222 |
# peers = construct_peers() |
b/python/archipelago/common.py | ||
---|---|---|
77 | 77 |
valid_segment_types = ['posix'] |
78 | 78 |
|
79 | 79 |
peers = dict() |
80 |
segment = None |
|
81 | 80 |
|
82 | 81 |
BIN_DIR = '/usr/bin/' |
83 | 82 |
DEFAULTS = '/etc/archipelago/archipelago.conf' |
... | ... | |
603 | 602 |
return ctx |
604 | 603 |
|
605 | 604 |
|
606 |
def check_conf(): |
|
605 |
def check_conf(segment):
|
|
607 | 606 |
port_ranges = [] |
608 | 607 |
|
609 | 608 |
def isExec(file_path): |
... | ... | |
635 | 634 |
|
636 | 635 |
port_ranges.append((portno_start, portno_end)) |
637 | 636 |
|
638 |
xseg_type = config['SEGMENT_TYPE'] |
|
639 |
xseg_name = config['SEGMENT_NAME'] |
|
640 |
xseg_dynports = config['SEGMENT_DYNPORTS'] |
|
641 |
xseg_ports = config['SEGMENT_PORTS'] |
|
642 |
xseg_size = config['SEGMENT_SIZE'] |
|
643 |
xseg_align = config['SEGMENT_ALIGNMENT'] |
|
644 |
|
|
645 |
global segment |
|
646 |
segment = Segment(xseg_type, xseg_name, xseg_dynports, xseg_ports, |
|
647 |
xseg_size, xseg_align) |
|
648 |
|
|
649 | 637 |
try: |
650 | 638 |
if not config['roles']: |
651 | 639 |
raise Error("Roles setup must be provided") |
... | ... | |
687 | 675 |
else: |
688 | 676 |
raise Error("No valid peer type: %s" % role_type) |
689 | 677 |
validatePortRange(peers[role].portno_start, peers[role].portno_end, |
690 |
xseg_ports)
|
|
678 |
config['SEGMENT_PORTS'])
|
|
691 | 679 |
|
692 |
validatePortRange(config['VTOOL_START'], config['VTOOL_END'], xseg_ports) |
|
680 |
validatePortRange(config['VTOOL_START'], config['VTOOL_END'], |
|
681 |
config['SEGMENT_PORTS']) |
|
693 | 682 |
|
694 | 683 |
return True |
695 | 684 |
|
696 | 685 |
|
697 |
def get_segment(): |
|
698 |
return segment |
|
686 |
class XsegSegment(Segment): |
|
687 |
def __init__(self, arg=None): |
|
688 |
loadrc(arg) |
|
689 |
|
|
690 |
xseg_type = config['SEGMENT_TYPE'] |
|
691 |
xseg_name = config['SEGMENT_NAME'] |
|
692 |
xseg_dynports = config['SEGMENT_DYNPORTS'] |
|
693 |
xseg_ports = config['SEGMENT_PORTS'] |
|
694 |
xseg_size = config['SEGMENT_SIZE'] |
|
695 |
xseg_align = config['SEGMENT_ALIGNMENT'] |
|
696 |
|
|
697 |
super(XsegSegment, self).__init__(xseg_type, xseg_name, xseg_dynports, |
|
698 |
xseg_ports, xseg_size, xseg_align) |
|
699 |
|
|
700 |
if not check_conf(self): |
|
701 |
raise Error("Invalid conf file") |
|
699 | 702 |
|
700 | 703 |
|
701 | 704 |
def construct_peers(): |
... | ... | |
833 | 836 |
for r in roles: |
834 | 837 |
config[r] = createDict(cfg, r) |
835 | 838 |
|
836 |
if not check_conf(): |
|
837 |
raise Error("Invalid conf file") |
|
838 |
|
|
839 | 839 |
|
840 | 840 |
def loaded_modules(): |
841 | 841 |
lines = open("/proc/modules").read().split("\n") |
b/python/archipelago/vlmc.py | ||
---|---|---|
116 | 116 |
size = size << 20 |
117 | 117 |
|
118 | 118 |
ret = False |
119 |
xseg_ctx = Xseg_ctx(get_segment()) |
|
119 |
xseg_segment = XsegSegment(kwargs.get('config')) |
|
120 |
xseg_ctx = Xseg_ctx(xseg_segment) |
|
120 | 121 |
mport = peers['mapperd'].portno_start |
121 | 122 |
req = Request.get_clone_request(xseg_ctx, mport, snap, clone=name, |
122 | 123 |
clone_size=size, cont_addr=cont_addr) |
... | ... | |
133 | 134 |
if len(name) < 6: |
134 | 135 |
raise Error("Name should have at least len 6") |
135 | 136 |
|
136 |
xseg_ctx = Xseg_ctx(get_segment()) |
|
137 |
xseg_segment = XsegSegment(kwargs.get('config')) |
|
138 |
xseg_ctx = Xseg_ctx(xseg_segment) |
|
137 | 139 |
vport = peers['vlmcd'].portno_start |
138 | 140 |
req = Request.get_snapshot_request(xseg_ctx, vport, name, snap=snap_name) |
139 | 141 |
req.submit() |
... | ... | |
152 | 154 |
if len(name) < 6: |
153 | 155 |
raise Error("Name should have at least len 6") |
154 | 156 |
|
155 |
xseg_ctx = Xseg_ctx(get_segment()) |
|
157 |
xseg_segment = XsegSegment(kwargs.get('config')) |
|
158 |
xseg_ctx = Xseg_ctx(xseg_segment) |
|
156 | 159 |
mport = peers['mapperd'].portno_start |
157 | 160 |
req = Request.get_hash_request(xseg_ctx, mport, name) |
158 | 161 |
req.submit() |
... | ... | |
195 | 198 |
device)) |
196 | 199 |
|
197 | 200 |
ret = False |
198 |
xseg_ctx = Xseg_ctx(get_segment()) |
|
201 |
xseg_segment = XsegSegment(kwargs.get('config')) |
|
202 |
xseg_ctx = Xseg_ctx(xseg_segment) |
|
199 | 203 |
mport = peers['mapperd'].portno_start |
200 | 204 |
req = Request.get_delete_request(xseg_ctx, mport, name) |
201 | 205 |
req.submit() |
... | ... | |
260 | 264 |
|
261 | 265 |
name = ARCHIP_PREFIX + name |
262 | 266 |
|
263 |
xseg_ctx = Xseg_ctx(get_segment()) |
|
267 |
xseg_segment = XsegSegment(kwargs.get('config')) |
|
268 |
xseg_ctx = Xseg_ctx(xseg_segment) |
|
264 | 269 |
mbport = peers['blockerm'].portno_start |
265 | 270 |
req = Request.get_acquire_request(xseg_ctx, mbport, name) |
266 | 271 |
req.submit() |
... | ... | |
280 | 285 |
|
281 | 286 |
name = ARCHIP_PREFIX + name |
282 | 287 |
|
283 |
xseg_ctx = Xseg_ctx(get_segment()) |
|
288 |
xseg_segment = XsegSegment(kwargs.get('config')) |
|
289 |
xseg_ctx = Xseg_ctx(xseg_segment) |
|
284 | 290 |
mbport = peers['blockerm'].portno_start |
285 | 291 |
req = Request.get_release_request(xseg_ctx, mbport, name, force=force) |
286 | 292 |
req.submit() |
... | ... | |
299 | 305 |
raise Error("Name should have at least len 6") |
300 | 306 |
|
301 | 307 |
ret = False |
302 |
xseg_ctx = Xseg_ctx(get_segment()) |
|
308 |
xseg_segment = XsegSegment(kwargs.get('config')) |
|
309 |
xseg_ctx = Xseg_ctx(xseg_segment) |
|
303 | 310 |
vport = peers['vlmcd'].portno_start |
304 | 311 |
req = Request.get_open_request(xseg_ctx, vport, name) |
305 | 312 |
req.submit() |
... | ... | |
318 | 325 |
raise Error("Name should have at least len 6") |
319 | 326 |
|
320 | 327 |
ret = False |
321 |
xseg_ctx = Xseg_ctx(get_segment()) |
|
328 |
xseg_segment = XsegSegment(kwargs.get('config')) |
|
329 |
xseg_ctx = Xseg_ctx(xseg_segment) |
|
322 | 330 |
vport = peers['vlmcd'].portno_start |
323 | 331 |
req = Request.get_close_request(xseg_ctx, vport, name) |
324 | 332 |
req.submit() |
... | ... | |
337 | 345 |
raise Error("Name should have at least len 6") |
338 | 346 |
|
339 | 347 |
ret = False |
340 |
xseg_ctx = Xseg_ctx(get_segment()) |
|
348 |
xseg_segment = XsegSegment(kwargs.get('config')) |
|
349 |
xseg_ctx = Xseg_ctx(xseg_segment) |
|
341 | 350 |
mport = peers['mapperd'].portno_start |
342 | 351 |
req = Request.get_info_request(xseg_ctx, mport, name) |
343 | 352 |
req.submit() |
Also available in: Unified diff