import repository from arizona
[raven.git] / lib / ravenlib / platform / all.py
1 import os
2 import sys
3
4 glo_initialized = False
5
6 glo_platform_modules = {}
7
8 # list of modules whose keys we want to iggore
9 glo_ignore_keys_platforms = []
10
11 def init():
12     global glo_platform_modules
13     global glo_initialized
14
15     try:
16         import platform_unix
17         if platform_unix.init():
18             glo_platform_modules["unix"] = platform_unix
19     except ImportError:
20         print >> sys.stderr, "Failed to import platform module unix"
21         pass
22
23     try:
24         import platform_planetlab
25         if platform_planetlab.init():
26             glo_platform_modules["planetlab"] = platform_planetlab
27     except ImportError:
28         print >> sys.stderr, "Failed to import platform module planetlab"
29         pass
30
31     try:
32         import platform_sfa
33         if platform_sfa.init():
34             glo_platform_modules["sfa"] = platform_sfa
35     except ImportError:
36         print >> sys.stderr, "Failed to import platform module sfa"
37         pass
38
39     try:
40         import platform_protogeni
41         if platform_protogeni.init():
42             glo_platform_modules["protogeni"] = platform_protogeni
43     except ImportError:
44         print >> sys.stderr, "Failed to import platform module protogeni"
45         pass
46
47     glo_initialized = True
48
49 def get_slice_names():
50     if not glo_initialized:
51         init()
52
53     slice_names = []
54     for platform_name in glo_platform_modules.keys():
55         module = glo_platform_modules[platform_name]
56         slice_names = slice_names + module.get_slice_names()
57     return slice_names
58
59 def get_node_names():
60     if not glo_initialized:
61         init()
62
63     node_names = []
64     for platform_name in glo_platform_modules.keys():
65         module = glo_platform_modules[platform_name]
66         node_names = node_names + module.get_node_names()
67     return node_names
68
69 def get_group_names():
70     if not glo_initialized:
71         init()
72
73     group_names = []
74     for platform_name in glo_platform_modules.keys():
75         module = glo_platform_modules[platform_name]
76         group_names = group_names + module.get_group_names()
77     return group_names
78
79 def ignore_keys(name):
80     if not glo_initialized:
81         init()
82
83     global glo_ignore_keys_platforms
84
85     glo_ignore_keys_platforms.append(name)
86
87 def get_keys():
88     if not glo_initialized:
89         init()
90
91     keys = []
92     for platform_name in glo_platform_modules.keys():
93         if platform_name in glo_ignore_keys_platforms:
94             continue
95
96         module = glo_platform_modules[platform_name]
97
98         for new_key in module.get_keys():
99
100             # check to make sure we don't already have the key
101             exists = False
102             for old_key in keys:
103                 if (new_key["kind"] == old_key["kind"]) and (new_key["value"] == old_key["value"]):
104                     exists = True
105
106             if not exists:
107                 keys.append(new_key)
108
109     return keys