summaryrefslogtreecommitdiffstats
path: root/.gitmodules
blob: fa3effe134f3e4885c3de72ad5f9127572f3b235 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
[submodule "docs/submodules/apex"]
	path = docs/submodules/apex
	url = ../apex
	branch = .
	ignore = dirty
[submodule "docs/submodules/armband"]
	path = docs/submodules/armband
	url = ../armband
	branch = .
	ignore = dirty
[submodule "docs/submodules/bottlenecks"]
	path = docs/submodules/bottlenecks
	url = ../bottlenecks
	branch = .
	ignore = dirty
[submodule "docs/submodules/compass4nfv"]
	path = docs/submodules/compass4nfv
	url = ../compass4nfv
	branch = .
	ignore = dirty
[submodule "docs/submodules/container4nfv"]
	path = docs/submodules/container4nfv
	url = https://gerrit.opnfv.org/gerrit/container4nfv
	branch = .
	ignore = dirty
[submodule "docs/submodules/copper"]
	path = docs/submodules/copper
	url = ../copper
	branch = .
	ignore = dirty
[submodule "docs/submodules/daisy"]
	path = docs/submodules/daisy
	url = ../daisy
	branch = .
	ignore = dirty
[submodule "docs/submodules/domino"]
	path = docs/submodules/domino
	url = ../domino
	branch = .
	ignore = dirty
[submodule "docs/submodules/dovetail"]
	path = docs/submodules/dovetail
	url = ../dovetail
	branch = .
	ignore = dirty
[submodule "docs/submodules/escalator"]
	path = docs/submodules/escalator
	url = ../escalator
	branch = .
	ignore = dirty
[submodule "docs/submodules/fastpathmetrics"]
	path = docs/submodules/fastpathmetrics
	url = ../fastpathmetrics
	branch = .
	ignore = dirty
[submodule "docs/submodules/fds"]
	path = docs/submodules/fds
	url = ../fds
	branch = .
	ignore = dirty
[submodule "docs/submodules/fuel"]
	path = docs/submodules/fuel
	url = ../fuel
	branch = .
	ignore = dirty
[submodule "docs/submodules/functest"]
	path = docs/submodules/functest
	url = ../functest
	branch = .
	ignore = dirty
[submodule "docs/submodules/ipv6"]
	path = docs/submodules/ipv6
	url = ../ipv6
	branch = .
	ignore = dirty
[submodule "docs/submodules/joid"]
	path = docs/submodules/joid
	url = ../joid
	branch = .
	ignore = dirty
[submodule "docs/submodules/kvmfornfv"]
	path = docs/submodules/kvmfornfv
	url = ../kvmfornfv
	branch = .
	ignore = dirty
[submodule "docs/submodules/multisite"]
	path = docs/submodules/multisite
	url = ../multisite
	branch = .
	ignore = dirty
[submodule "docs/submodules/netready"]
	path = docs/submodules/netready
	url = ../netready
	branch = .
	ignore = dirty
[submodule "docs/submodules/nfvbench"]
	path = docs/submodules/nfvbench
	url = https://gerrit.opnfv.org/gerrit/nfvbench
	branch = .
	ignore = dirty
[submodule "docs/submodules/octopus"]
	path = docs/submodules/octopus
	url = ../octopus
	branch = .
	ignore = dirty
[submodule "docs/submodules/onosfw"]
	path = docs/submodules/onosfw
	url = ../onosfw
	branch = .
	ignore = dirty
[submodule "docs/submodules/orchestra"]
	path = docs/submodules/orchestra
	url = https://gerrit.opnfv.org/gerrit/orchestra
	branch = .
	ignore = dirty
[submodule "docs/submodules/ovn4nfv"]
	path = docs/submodules/ovn4nfv
	url = https://gerrit.opnfv.org/gerrit/ovn4nfv
	branch = .
	ignore = dirty
[submodule "docs/submodules/ovsnfv"]
	path = docs/submodules/ovsnfv
	url = ../ovsnfv
	branch = .
	ignore = dirty
[submodule "docs/submodules/parser"]
	path = docs/submodules/parser
	url = ../parser
	branch = .
	ignore = dirty
[submodule "docs/submodules/pharos"]
	path = docs/submodules/pharos
	url = ../pharos
	branch = .
	ignore = dirty
[submodule "docs/submodules/promise"]
	path = docs/submodules/promise
	url = ../promise
	branch = .
	ignore = dirty
[submodule "docs/submodules/qtip"]
	path = docs/submodules/qtip
	url = ../qtip
	branch = .
	ignore = dirty
[submodule "docs/submodules/releng"]
	path = docs/submodules/releng
	url = ../releng
	branch = master
[submodule "docs/submodules/sdnvpn"]
	path = docs/submodules/sdnvpn
	url = ../sdnvpn
	branch = .
	ignore = dirty
[submodule "docs/submodules/sfc"]
	path = docs/submodules/sfc
	url = ../sfc
	branch = .
	ignore = dirty
[submodule "docs/submodules/storperf"]
	path = docs/submodules/storperf
	url = ../storperf
	branch = .
	ignore = dirty
[submodule "docs/submodules/ves"]
	path = docs/submodules/ves
	url = ../ves
	branch = .
	ignore = dirty
[submodule "docs/submodules/vnf_forwarding_graph"]
	path = docs/submodules/vnf_forwarding_graph
	url = ../vnf_forwarding_graph
	branch = .
	ignore = dirty
[submodule "docs/submodules/vswitchperf"]
	path = docs/submodules/vswitchperf
	url = ../vswitchperf
	branch = .
	ignore = dirty
[submodule "docs/submodules/yardstick"]
	path = docs/submodules/yardstick
	url = ../yardstick
	branch = .
	ignore = dirty
[submodule "docs/submodules/doctor"]
	path = docs/submodules/doctor
	url = ../doctor
	branch = .
	ignore = dirty
[submodule "docs/submodules/availability"]
	path = docs/submodules/availability
	url = ../availability
	branch = .
	ignore = dirty
[submodule "docs/submodules/opera"]
	path = docs/submodules/opera
	url = ../opera
	branch = .
	ignore = dirty
[submodule "docs/submodules/samplevnf"]
	path = docs/submodules/samplevnf
	url = ../samplevnf
	branch = .
	ignore = dirty
[submodule "docs/submodules/snaps"]
	path = docs/submodules/snaps
	url = ../snaps
	branch = .
	ignore = dirty
[submodule "docs/submodules/barometer"]
	path = docs/submodules/barometer
	url = ../barometer
	branch = .
	ignore = dirty
[submodule "docs/submodules/infra"]
	path = docs/submodules/infra
	url = ../infra
	branch = .
	ignore = dirty
[submodule "docs/submodules/releng-xci"]
	path = docs/submodules/releng-xci
	url = ../releng-xci
	branch = .
	ignore = dirty
[submodule "docs/submodules/ovno"]
	path = docs/submodules/ovno
	url = https://gerrit.opnfv.org/gerrit/ovno
	branch = .
	ignore = dirty
[submodule "docs/submodules/moon"]
	path = docs/submodules/moon
	url = ../moon
	branch = .
	ignore = dirty
[submodule "docs/submodules/calipso"]
	path = docs/submodules/calipso
	url = https://gerrit.opnfv.org/gerrit/calipso
	branch = .
	ignore = dirty
'setup.py', 'install', *install_args): log.warn('Something went wrong during the installation.') log.warn('See the error message above.') # exitcode will be 2 return 2 def _build_egg(egg, archive_filename, to_dir): with archive_context(archive_filename): # building an egg log.warn('Building a Setuptools egg in %s', to_dir) _python_cmd('setup.py', '-q', 'bdist_egg', '--dist-dir', to_dir) # returning the result log.warn(egg) if not os.path.exists(egg): raise IOError('Could not build the egg.') class ContextualZipFile(zipfile.ZipFile): """ Supplement ZipFile class to support context manager for Python 2.6 """ def __enter__(self): return self def __exit__(self, type, value, traceback): self.close() def __new__(cls, *args, **kwargs): """ Construct a ZipFile or ContextualZipFile as appropriate """ if hasattr(zipfile.ZipFile, '__exit__'): return zipfile.ZipFile(*args, **kwargs) return super(ContextualZipFile, cls).__new__(cls) @contextlib.contextmanager def archive_context(filename): # extracting the archive tmpdir = tempfile.mkdtemp() log.warn('Extracting in %s', tmpdir) old_wd = os.getcwd() try: os.chdir(tmpdir) with ContextualZipFile(filename) as archive: archive.extractall() # going in the directory subdir = os.path.join(tmpdir, os.listdir(tmpdir)[0]) os.chdir(subdir) log.warn('Now working in %s', subdir) yield finally: os.chdir(old_wd) shutil.rmtree(tmpdir) def _do_download(version, download_base, to_dir, download_delay): egg = os.path.join(to_dir, 'setuptools-%s-py%d.%d.egg' % (version, sys.version_info[0], sys.version_info[1])) if not os.path.exists(egg): archive = download_setuptools(version, download_base, to_dir, download_delay) _build_egg(egg, archive, to_dir) sys.path.insert(0, egg) # Remove previously-imported pkg_resources if present (see # https://bitbucket.org/pypa/setuptools/pull-request/7/ for details). if 'pkg_resources' in sys.modules: del sys.modules['pkg_resources'] import setuptools setuptools.bootstrap_install_from = egg def use_setuptools(version=DEFAULT_VERSION, download_base=DEFAULT_URL, to_dir=os.curdir, download_delay=15): to_dir = os.path.abspath(to_dir) rep_modules = 'pkg_resources', 'setuptools' imported = set(sys.modules).intersection(rep_modules) try: import pkg_resources except ImportError: return _do_download(version, download_base, to_dir, download_delay) try: pkg_resources.require("setuptools>=" + version) return except pkg_resources.DistributionNotFound: return _do_download(version, download_base, to_dir, download_delay) except pkg_resources.VersionConflict as VC_err: if imported: msg = """\ The required version of setuptools (>={version}) is not available, and can't be installed while this script is running. Please install a more recent version first, using 'easy_install -U setuptools'. (Currently using {VC_err.args[0]!r}) """.format(VC_err=VC_err, version=version) sys.stderr.write(msg) sys.exit(2) # otherwise, reload ok del pkg_resources, sys.modules['pkg_resources'] return _do_download(version, download_base, to_dir, download_delay) def _clean_check(cmd, target): """ Run the command to download target. If the command fails, clean up before re-raising the error. """ try: subprocess.check_call(cmd) except subprocess.CalledProcessError: if os.access(target, os.F_OK): os.unlink(target) raise def download_file_powershell(url, target): """ Download the file at url to target using Powershell (which will validate trust). Raise an exception if the command cannot complete. """ target = os.path.abspath(target) ps_cmd = ( "[System.Net.WebRequest]::DefaultWebProxy.Credentials = " "[System.Net.CredentialCache]::DefaultCredentials; " "(new-object System.Net.WebClient).DownloadFile(%(url)r, %(target)r)" % vars() ) cmd = [ 'powershell', '-Command', ps_cmd, ] _clean_check(cmd, target) def has_powershell(): if platform.system() != 'Windows': return False cmd = ['powershell', '-Command', 'echo test'] with open(os.path.devnull, 'wb') as devnull: try: subprocess.check_call(cmd, stdout=devnull, stderr=devnull) except Exception: return False return True download_file_powershell.viable = has_powershell def download_file_curl(url, target): cmd = ['curl', url, '--silent', '--output', target] _clean_check(cmd, target) def has_curl(): cmd = ['curl', '--version'] with open(os.path.devnull, 'wb') as devnull: try: subprocess.check_call(cmd, stdout=devnull, stderr=devnull) except Exception: return False return True download_file_curl.viable = has_curl def download_file_wget(url, target): cmd = ['wget', url, '--quiet', '--output-document', target] _clean_check(cmd, target) def has_wget(): cmd = ['wget', '--version'] with open(os.path.devnull, 'wb') as devnull: try: subprocess.check_call(cmd, stdout=devnull, stderr=devnull) except Exception: return False return True download_file_wget.viable = has_wget def download_file_insecure(url, target): """ Use Python to download the file, even though it cannot authenticate the connection. """ src = urlopen(url) try: # Read all the data in one block. data = src.read() finally: src.close() # Write all the data in one block to avoid creating a partial file. with open(target, "wb") as dst: dst.write(data) download_file_insecure.viable = lambda: True def get_best_downloader(): downloaders = ( download_file_powershell, download_file_curl, download_file_wget, download_file_insecure, ) viable_downloaders = (dl for dl in downloaders if dl.viable()) return next(viable_downloaders, None) def download_setuptools(version=DEFAULT_VERSION, download_base=DEFAULT_URL, to_dir=os.curdir, delay=15, downloader_factory=get_best_downloader): """ Download setuptools from a specified location and return its filename `version` should be a valid setuptools version number that is available as an sdist for download under the `download_base` URL (which should end with a '/'). `to_dir` is the directory where the egg will be downloaded. `delay` is the number of seconds to pause before an actual download attempt. ``downloader_factory`` should be a function taking no arguments and returning a function for downloading a URL to a target. """ # making sure we use the absolute path to_dir = os.path.abspath(to_dir) zip_name = "setuptools-%s.zip" % version url = download_base + zip_name saveto = os.path.join(to_dir, zip_name) if not os.path.exists(saveto): # Avoid repeated downloads log.warn("Downloading %s", url) downloader = downloader_factory() downloader(url, saveto) return os.path.realpath(saveto) def _build_install_args(options): """ Build the arguments to 'python setup.py install' on the setuptools package """ return ['--user'] if options.user_install else [] def _parse_args(): """ Parse the command line for options """ parser = optparse.OptionParser() parser.add_option( '--user', dest='user_install', action='store_true', default=False, help='install in user site package (requires Python 2.6 or later)') parser.add_option( '--download-base', dest='download_base', metavar="URL", default=DEFAULT_URL, help='alternative URL from where to download the setuptools package') parser.add_option( '--insecure', dest='downloader_factory', action='store_const', const=lambda: download_file_insecure, default=get_best_downloader, help='Use internal, non-validating downloader' ) parser.add_option( '--version', help="Specify which version to download", default=DEFAULT_VERSION, ) options, args = parser.parse_args() # positional arguments are ignored return options def main(): """Install or upgrade setuptools and EasyInstall""" options = _parse_args() archive = download_setuptools( version=options.version, download_base=options.download_base, downloader_factory=options.downloader_factory, ) return _install(archive, _build_install_args(options)) if __name__ == '__main__': sys.exit(main())