Get reviewed and fixed based on comments.
Merged latest version.
This commit is contained in:
@@ -6,8 +6,10 @@ keys
|
|||||||
networks
|
networks
|
||||||
nova.sqlite
|
nova.sqlite
|
||||||
CA/cacert.pem
|
CA/cacert.pem
|
||||||
|
CA/crl.pem
|
||||||
CA/index.txt*
|
CA/index.txt*
|
||||||
CA/openssl.cnf
|
CA/openssl.cnf
|
||||||
CA/serial*
|
CA/serial*
|
||||||
CA/newcerts/*.pem
|
CA/newcerts/*.pem
|
||||||
CA/private/cakey.pem
|
CA/private/cakey.pem
|
||||||
|
nova/vcsversion.py
|
||||||
|
|||||||
1
.mailmap
1
.mailmap
@@ -30,3 +30,4 @@
|
|||||||
<rconradharris@gmail.com> <rick.harris@rackspace.com>
|
<rconradharris@gmail.com> <rick.harris@rackspace.com>
|
||||||
<corywright@gmail.com> <cory.wright@rackspace.com>
|
<corywright@gmail.com> <cory.wright@rackspace.com>
|
||||||
<ant@openstack.org> <amesserl@rackspace.com>
|
<ant@openstack.org> <amesserl@rackspace.com>
|
||||||
|
<chiradeep@cloud.com> <chiradeep@chiradeep-lt2>
|
||||||
|
|||||||
3
Authors
3
Authors
@@ -3,6 +3,7 @@ Anne Gentle <anne@openstack.org>
|
|||||||
Anthony Young <sleepsonthefloor@gmail.com>
|
Anthony Young <sleepsonthefloor@gmail.com>
|
||||||
Antony Messerli <ant@openstack.org>
|
Antony Messerli <ant@openstack.org>
|
||||||
Armando Migliaccio <Armando.Migliaccio@eu.citrix.com>
|
Armando Migliaccio <Armando.Migliaccio@eu.citrix.com>
|
||||||
|
Chiradeep Vittal <chiradeep@cloud.com>
|
||||||
Chris Behrens <cbehrens@codestud.com>
|
Chris Behrens <cbehrens@codestud.com>
|
||||||
Chmouel Boudjnah <chmouel@chmouel.com>
|
Chmouel Boudjnah <chmouel@chmouel.com>
|
||||||
Cory Wright <corywright@gmail.com>
|
Cory Wright <corywright@gmail.com>
|
||||||
@@ -23,6 +24,7 @@ Josh Kearney <josh.kearney@rackspace.com>
|
|||||||
Joshua McKenty <jmckenty@gmail.com>
|
Joshua McKenty <jmckenty@gmail.com>
|
||||||
Justin Santa Barbara <justin@fathomdb.com>
|
Justin Santa Barbara <justin@fathomdb.com>
|
||||||
Kei Masumoto <masumotok@nttdata.co.jp>
|
Kei Masumoto <masumotok@nttdata.co.jp>
|
||||||
|
Ken Pepple <ken.pepple@gmail.com>
|
||||||
Matt Dietz <matt.dietz@rackspace.com>
|
Matt Dietz <matt.dietz@rackspace.com>
|
||||||
Michael Gundlach <michael.gundlach@rackspace.com>
|
Michael Gundlach <michael.gundlach@rackspace.com>
|
||||||
Monty Taylor <mordred@inaugust.com>
|
Monty Taylor <mordred@inaugust.com>
|
||||||
@@ -41,4 +43,3 @@ Trey Morris <trey.morris@rackspace.com>
|
|||||||
Vishvananda Ishaya <vishvananda@gmail.com>
|
Vishvananda Ishaya <vishvananda@gmail.com>
|
||||||
Youcef Laribi <Youcef.Laribi@eu.citrix.com>
|
Youcef Laribi <Youcef.Laribi@eu.citrix.com>
|
||||||
Zhixue Wu <Zhixue.Wu@citrix.com>
|
Zhixue Wu <Zhixue.Wu@citrix.com>
|
||||||
|
|
||||||
|
|||||||
109
bin/nova-api-paste
Executable file
109
bin/nova-api-paste
Executable file
@@ -0,0 +1,109 @@
|
|||||||
|
#!/usr/bin/env python
|
||||||
|
# pylint: disable-msg=C0103
|
||||||
|
# vim: tabstop=4 shiftwidth=4 softtabstop=4
|
||||||
|
|
||||||
|
# Copyright 2010 United States Government as represented by the
|
||||||
|
# Administrator of the National Aeronautics and Space Administration.
|
||||||
|
# All Rights Reserved.
|
||||||
|
#
|
||||||
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
# you may not use this file except in compliance with the License.
|
||||||
|
# You may obtain a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
# See the License for the specific language governing permissions and
|
||||||
|
# limitations under the License.
|
||||||
|
|
||||||
|
"""Starter script for Nova API."""
|
||||||
|
|
||||||
|
import gettext
|
||||||
|
import os
|
||||||
|
import sys
|
||||||
|
|
||||||
|
from paste import deploy
|
||||||
|
|
||||||
|
# If ../nova/__init__.py exists, add ../ to Python search path, so that
|
||||||
|
# it will override what happens to be installed in /usr/(local/)lib/python...
|
||||||
|
possible_topdir = os.path.normpath(os.path.join(os.path.abspath(sys.argv[0]),
|
||||||
|
os.pardir,
|
||||||
|
os.pardir))
|
||||||
|
if os.path.exists(os.path.join(possible_topdir, 'nova', '__init__.py')):
|
||||||
|
sys.path.insert(0, possible_topdir)
|
||||||
|
|
||||||
|
gettext.install('nova', unicode=1)
|
||||||
|
|
||||||
|
from nova import flags
|
||||||
|
from nova import log as logging
|
||||||
|
from nova import wsgi
|
||||||
|
|
||||||
|
LOG = logging.getLogger('nova.api')
|
||||||
|
LOG.setLevel(logging.DEBUG)
|
||||||
|
LOG.addHandler(logging.StreamHandler())
|
||||||
|
|
||||||
|
FLAGS = flags.FLAGS
|
||||||
|
|
||||||
|
API_ENDPOINTS = ['ec2', 'openstack']
|
||||||
|
|
||||||
|
|
||||||
|
def load_configuration(paste_config):
|
||||||
|
"""Load the paste configuration from the config file and return it."""
|
||||||
|
config = None
|
||||||
|
# Try each known name to get the global DEFAULTS, which will give ports
|
||||||
|
for name in API_ENDPOINTS:
|
||||||
|
try:
|
||||||
|
config = deploy.appconfig("config:%s" % paste_config, name=name)
|
||||||
|
except LookupError:
|
||||||
|
pass
|
||||||
|
if config:
|
||||||
|
verbose = config.get('verbose', None)
|
||||||
|
if verbose:
|
||||||
|
FLAGS.verbose = int(verbose) == 1
|
||||||
|
if FLAGS.verbose:
|
||||||
|
logging.getLogger().setLevel(logging.DEBUG)
|
||||||
|
return config
|
||||||
|
LOG.debug(_("Paste config at %s has no secion for known apis"),
|
||||||
|
paste_config)
|
||||||
|
print _("Paste config at %s has no secion for any known apis") % \
|
||||||
|
paste_config
|
||||||
|
os.exit(1)
|
||||||
|
|
||||||
|
|
||||||
|
def launch_api(paste_config_file, section, server, port, host):
|
||||||
|
"""Launch an api server from the specified port and IP."""
|
||||||
|
LOG.debug(_("Launching %s api on %s:%s"), section, host, port)
|
||||||
|
app = deploy.loadapp('config:%s' % paste_config_file, name=section)
|
||||||
|
server.start(app, int(port), host)
|
||||||
|
|
||||||
|
|
||||||
|
def run_app(paste_config_file):
|
||||||
|
LOG.debug(_("Using paste.deploy config at: %s"), configfile)
|
||||||
|
config = load_configuration(paste_config_file)
|
||||||
|
LOG.debug(_("Configuration: %r"), config)
|
||||||
|
server = wsgi.Server()
|
||||||
|
ip = config.get('host', '0.0.0.0')
|
||||||
|
for api in API_ENDPOINTS:
|
||||||
|
port = config.get("%s_port" % api, None)
|
||||||
|
if not port:
|
||||||
|
continue
|
||||||
|
host = config.get("%s_host" % api, ip)
|
||||||
|
launch_api(configfile, api, server, port, host)
|
||||||
|
LOG.debug(_("All api servers launched, now waiting"))
|
||||||
|
server.wait()
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
FLAGS(sys.argv)
|
||||||
|
configfiles = ['/etc/nova/nova-api.conf']
|
||||||
|
if os.path.exists(os.path.join(possible_topdir, 'nova', '__init__.py')):
|
||||||
|
configfiles.insert(0,
|
||||||
|
os.path.join(possible_topdir, 'etc', 'nova-api.conf'))
|
||||||
|
for configfile in configfiles:
|
||||||
|
if os.path.exists(configfile):
|
||||||
|
run_app(configfile)
|
||||||
|
break
|
||||||
|
else:
|
||||||
|
LOG.debug(_("Skipping missing configuration: %s"), configfile)
|
||||||
@@ -22,7 +22,6 @@ Handle lease database updates from DHCP servers.
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
import gettext
|
import gettext
|
||||||
import logging
|
|
||||||
import os
|
import os
|
||||||
import sys
|
import sys
|
||||||
|
|
||||||
@@ -39,6 +38,7 @@ gettext.install('nova', unicode=1)
|
|||||||
from nova import context
|
from nova import context
|
||||||
from nova import db
|
from nova import db
|
||||||
from nova import flags
|
from nova import flags
|
||||||
|
from nova import log as logging
|
||||||
from nova import rpc
|
from nova import rpc
|
||||||
from nova import utils
|
from nova import utils
|
||||||
from nova.network import linux_net
|
from nova.network import linux_net
|
||||||
@@ -49,11 +49,13 @@ flags.DECLARE('network_size', 'nova.network.manager')
|
|||||||
flags.DECLARE('num_networks', 'nova.network.manager')
|
flags.DECLARE('num_networks', 'nova.network.manager')
|
||||||
flags.DECLARE('update_dhcp_on_disassociate', 'nova.network.manager')
|
flags.DECLARE('update_dhcp_on_disassociate', 'nova.network.manager')
|
||||||
|
|
||||||
|
LOG = logging.getLogger('nova.dhcpbridge')
|
||||||
|
|
||||||
|
|
||||||
def add_lease(mac, ip_address, _hostname, _interface):
|
def add_lease(mac, ip_address, _hostname, _interface):
|
||||||
"""Set the IP that was assigned by the DHCP server."""
|
"""Set the IP that was assigned by the DHCP server."""
|
||||||
if FLAGS.fake_rabbit:
|
if FLAGS.fake_rabbit:
|
||||||
logging.debug("leasing ip")
|
LOG.debug(_("leasing ip"))
|
||||||
network_manager = utils.import_object(FLAGS.network_manager)
|
network_manager = utils.import_object(FLAGS.network_manager)
|
||||||
network_manager.lease_fixed_ip(context.get_admin_context(),
|
network_manager.lease_fixed_ip(context.get_admin_context(),
|
||||||
mac,
|
mac,
|
||||||
@@ -68,14 +70,14 @@ def add_lease(mac, ip_address, _hostname, _interface):
|
|||||||
|
|
||||||
def old_lease(mac, ip_address, hostname, interface):
|
def old_lease(mac, ip_address, hostname, interface):
|
||||||
"""Update just as add lease."""
|
"""Update just as add lease."""
|
||||||
logging.debug("Adopted old lease or got a change of mac/hostname")
|
LOG.debug(_("Adopted old lease or got a change of mac/hostname"))
|
||||||
add_lease(mac, ip_address, hostname, interface)
|
add_lease(mac, ip_address, hostname, interface)
|
||||||
|
|
||||||
|
|
||||||
def del_lease(mac, ip_address, _hostname, _interface):
|
def del_lease(mac, ip_address, _hostname, _interface):
|
||||||
"""Called when a lease expires."""
|
"""Called when a lease expires."""
|
||||||
if FLAGS.fake_rabbit:
|
if FLAGS.fake_rabbit:
|
||||||
logging.debug("releasing ip")
|
LOG.debug(_("releasing ip"))
|
||||||
network_manager = utils.import_object(FLAGS.network_manager)
|
network_manager = utils.import_object(FLAGS.network_manager)
|
||||||
network_manager.release_fixed_ip(context.get_admin_context(),
|
network_manager.release_fixed_ip(context.get_admin_context(),
|
||||||
mac,
|
mac,
|
||||||
@@ -100,6 +102,7 @@ def main():
|
|||||||
flagfile = os.environ.get('FLAGFILE', FLAGS.dhcpbridge_flagfile)
|
flagfile = os.environ.get('FLAGFILE', FLAGS.dhcpbridge_flagfile)
|
||||||
utils.default_flagfile(flagfile)
|
utils.default_flagfile(flagfile)
|
||||||
argv = FLAGS(sys.argv)
|
argv = FLAGS(sys.argv)
|
||||||
|
logging.basicConfig()
|
||||||
interface = os.environ.get('DNSMASQ_INTERFACE', 'br0')
|
interface = os.environ.get('DNSMASQ_INTERFACE', 'br0')
|
||||||
if int(os.environ.get('TESTING', '0')):
|
if int(os.environ.get('TESTING', '0')):
|
||||||
FLAGS.fake_rabbit = True
|
FLAGS.fake_rabbit = True
|
||||||
@@ -117,8 +120,8 @@ def main():
|
|||||||
mac = argv[2]
|
mac = argv[2]
|
||||||
ip = argv[3]
|
ip = argv[3]
|
||||||
hostname = argv[4]
|
hostname = argv[4]
|
||||||
logging.debug("Called %s for mac %s with ip %s and "
|
LOG.debug(_("Called %s for mac %s with ip %s and "
|
||||||
"hostname %s on interface %s",
|
"hostname %s on interface %s"),
|
||||||
action, mac, ip, hostname, interface)
|
action, mac, ip, hostname, interface)
|
||||||
globals()[action + '_lease'](mac, ip, hostname, interface)
|
globals()[action + '_lease'](mac, ip, hostname, interface)
|
||||||
else:
|
else:
|
||||||
|
|||||||
@@ -23,7 +23,6 @@
|
|||||||
|
|
||||||
import gettext
|
import gettext
|
||||||
import os
|
import os
|
||||||
import logging
|
|
||||||
import sys
|
import sys
|
||||||
from twisted.application import service
|
from twisted.application import service
|
||||||
|
|
||||||
@@ -37,19 +36,23 @@ if os.path.exists(os.path.join(possible_topdir, 'nova', '__init__.py')):
|
|||||||
|
|
||||||
gettext.install('nova', unicode=1)
|
gettext.install('nova', unicode=1)
|
||||||
|
|
||||||
|
from nova import log as logging
|
||||||
from nova import utils
|
from nova import utils
|
||||||
from nova import twistd
|
from nova import twistd
|
||||||
from nova.compute import monitor
|
from nova.compute import monitor
|
||||||
|
|
||||||
|
# TODO(todd): shouldn't this be done with flags? And what about verbose?
|
||||||
logging.getLogger('boto').setLevel(logging.WARN)
|
logging.getLogger('boto').setLevel(logging.WARN)
|
||||||
|
|
||||||
|
LOG = logging.getLogger('nova.instancemonitor')
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
utils.default_flagfile()
|
utils.default_flagfile()
|
||||||
twistd.serve(__file__)
|
twistd.serve(__file__)
|
||||||
|
|
||||||
if __name__ == '__builtin__':
|
if __name__ == '__builtin__':
|
||||||
logging.warn('Starting instance monitor')
|
LOG.warn(_('Starting instance monitor'))
|
||||||
# pylint: disable-msg=C0103
|
# pylint: disable-msg=C0103
|
||||||
monitor = monitor.InstanceMonitor()
|
monitor = monitor.InstanceMonitor()
|
||||||
|
|
||||||
|
|||||||
156
bin/nova-logspool
Normal file
156
bin/nova-logspool
Normal file
@@ -0,0 +1,156 @@
|
|||||||
|
#!/usr/bin/env python
|
||||||
|
|
||||||
|
# Copyright 2010 United States Government as represented by the
|
||||||
|
# Administrator of the National Aeronautics and Space Administration.
|
||||||
|
# All Rights Reserved.
|
||||||
|
#
|
||||||
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
# you may not use this file except in compliance with the License.
|
||||||
|
# You may obtain a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
# See the License for the specific language governing permissions and
|
||||||
|
# limitations under the License.
|
||||||
|
|
||||||
|
"""
|
||||||
|
Tools for working with logs generated by nova components
|
||||||
|
"""
|
||||||
|
|
||||||
|
|
||||||
|
import json
|
||||||
|
import os
|
||||||
|
import re
|
||||||
|
import sys
|
||||||
|
|
||||||
|
|
||||||
|
class Request(object):
|
||||||
|
def __init__(self):
|
||||||
|
self.time = ""
|
||||||
|
self.host = ""
|
||||||
|
self.logger = ""
|
||||||
|
self.message = ""
|
||||||
|
self.trace = ""
|
||||||
|
self.env = ""
|
||||||
|
self.request_id = ""
|
||||||
|
|
||||||
|
def add_error_line(self, error_line):
|
||||||
|
self.time = " ".join(error_line.split(" ")[:3])
|
||||||
|
self.host = error_line.split(" ")[3]
|
||||||
|
self.logger = error_line.split("(")[1].split(" ")[0]
|
||||||
|
self.request_id = error_line.split("[")[1].split(" ")[0]
|
||||||
|
error_lines = error_line.split("#012")
|
||||||
|
self.message = self.clean_log_line(error_lines.pop(0))
|
||||||
|
self.trace = "\n".join([self.clean_trace(l) for l in error_lines])
|
||||||
|
|
||||||
|
def add_environment_line(self, env_line):
|
||||||
|
self.env = self.clean_env_line(env_line)
|
||||||
|
|
||||||
|
def clean_log_line(self, line):
|
||||||
|
"""Remove log format for time, level, etc: split after context"""
|
||||||
|
return line.split('] ')[-1]
|
||||||
|
|
||||||
|
def clean_env_line(self, line):
|
||||||
|
"""Also has an 'Environment: ' string in the message"""
|
||||||
|
return re.sub(r'^Environment: ', '', self.clean_log_line(line))
|
||||||
|
|
||||||
|
def clean_trace(self, line):
|
||||||
|
"""trace has a different format, so split on TRACE:"""
|
||||||
|
return line.split('TRACE: ')[-1]
|
||||||
|
|
||||||
|
def to_dict(self):
|
||||||
|
return {'traceback': self.trace, 'message': self.message,
|
||||||
|
'host': self.host, 'env': self.env, 'logger': self.logger,
|
||||||
|
'request_id': self.request_id}
|
||||||
|
|
||||||
|
|
||||||
|
class LogReader(object):
|
||||||
|
def __init__(self, filename):
|
||||||
|
self.filename = filename
|
||||||
|
self._errors = {}
|
||||||
|
|
||||||
|
def process(self, spooldir):
|
||||||
|
with open(self.filename) as f:
|
||||||
|
line = f.readline()
|
||||||
|
while len(line) > 0:
|
||||||
|
parts = line.split(" ")
|
||||||
|
level = (len(parts) < 6) or parts[5]
|
||||||
|
if level == 'ERROR':
|
||||||
|
self.handle_logged_error(line)
|
||||||
|
elif level == '[-]' and self.last_error:
|
||||||
|
# twisted stack trace line
|
||||||
|
clean_line = " ".join(line.split(" ")[6:])
|
||||||
|
self.last_error.trace = self.last_error.trace + clean_line
|
||||||
|
else:
|
||||||
|
self.last_error = None
|
||||||
|
line = f.readline()
|
||||||
|
self.update_spool(spooldir)
|
||||||
|
|
||||||
|
def handle_logged_error(self, line):
|
||||||
|
request_id = re.search(r' \[([A-Z0-9\-/]+)', line)
|
||||||
|
if not request_id:
|
||||||
|
raise Exception("Unable to parse request id from %s" % line)
|
||||||
|
request_id = request_id.group(1)
|
||||||
|
data = self._errors.get(request_id, Request())
|
||||||
|
if self.is_env_line(line):
|
||||||
|
data.add_environment_line(line)
|
||||||
|
elif self.is_error_line(line):
|
||||||
|
data.add_error_line(line)
|
||||||
|
else:
|
||||||
|
# possibly error from twsited
|
||||||
|
data.add_error_line(line)
|
||||||
|
self.last_error = data
|
||||||
|
self._errors[request_id] = data
|
||||||
|
|
||||||
|
def is_env_line(self, line):
|
||||||
|
return re.search('Environment: ', line)
|
||||||
|
|
||||||
|
def is_error_line(self, line):
|
||||||
|
return re.search('raised', line)
|
||||||
|
|
||||||
|
def update_spool(self, directory):
|
||||||
|
processed_dir = "%s/processed" % directory
|
||||||
|
self._ensure_dir_exists(processed_dir)
|
||||||
|
for rid, value in self._errors.iteritems():
|
||||||
|
if not self.has_been_processed(processed_dir, rid):
|
||||||
|
with open("%s/%s" % (directory, rid), "w") as spool:
|
||||||
|
spool.write(json.dumps(value.to_dict()))
|
||||||
|
self.flush_old_processed_spool(processed_dir)
|
||||||
|
|
||||||
|
def _ensure_dir_exists(self, d):
|
||||||
|
mkdir = False
|
||||||
|
try:
|
||||||
|
os.stat(d)
|
||||||
|
except:
|
||||||
|
mkdir = True
|
||||||
|
if mkdir:
|
||||||
|
os.mkdir(d)
|
||||||
|
|
||||||
|
def has_been_processed(self, processed_dir, rid):
|
||||||
|
rv = False
|
||||||
|
try:
|
||||||
|
os.stat("%s/%s" % (processed_dir, rid))
|
||||||
|
rv = True
|
||||||
|
except:
|
||||||
|
pass
|
||||||
|
return rv
|
||||||
|
|
||||||
|
def flush_old_processed_spool(self, processed_dir):
|
||||||
|
keys = self._errors.keys()
|
||||||
|
procs = os.listdir(processed_dir)
|
||||||
|
for p in procs:
|
||||||
|
if p not in keys:
|
||||||
|
# log has rotated and the old error won't be seen again
|
||||||
|
os.unlink("%s/%s" % (processed_dir, p))
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
filename = '/var/log/nova.log'
|
||||||
|
spooldir = '/var/spool/nova'
|
||||||
|
if len(sys.argv) > 1:
|
||||||
|
filename = sys.argv[1]
|
||||||
|
if len(sys.argv) > 2:
|
||||||
|
spooldir = sys.argv[2]
|
||||||
|
LogReader(filename).process(spooldir)
|
||||||
@@ -53,9 +53,10 @@
|
|||||||
CLI interface for nova management.
|
CLI interface for nova management.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
import datetime
|
||||||
import gettext
|
import gettext
|
||||||
import logging
|
|
||||||
import os
|
import os
|
||||||
|
import re
|
||||||
import sys
|
import sys
|
||||||
import time
|
import time
|
||||||
|
|
||||||
@@ -76,6 +77,7 @@ from nova import crypto
|
|||||||
from nova import db
|
from nova import db
|
||||||
from nova import exception
|
from nova import exception
|
||||||
from nova import flags
|
from nova import flags
|
||||||
|
from nova import log as logging
|
||||||
from nova import quota
|
from nova import quota
|
||||||
from nova import utils
|
from nova import utils
|
||||||
from nova.auth import manager
|
from nova.auth import manager
|
||||||
@@ -333,6 +335,11 @@ class ProjectCommands(object):
|
|||||||
arguments: name project_manager [description]"""
|
arguments: name project_manager [description]"""
|
||||||
self.manager.create_project(name, project_manager, description)
|
self.manager.create_project(name, project_manager, description)
|
||||||
|
|
||||||
|
def modify(self, name, project_manager, description=None):
|
||||||
|
"""Modifies a project
|
||||||
|
arguments: name project_manager [description]"""
|
||||||
|
self.manager.modify_project(name, project_manager, description)
|
||||||
|
|
||||||
def delete(self, name):
|
def delete(self, name):
|
||||||
"""Deletes an existing project
|
"""Deletes an existing project
|
||||||
arguments: name"""
|
arguments: name"""
|
||||||
@@ -460,34 +467,29 @@ class InstanceCommands(object):
|
|||||||
def live_migration(self, ec2_id, dest):
|
def live_migration(self, ec2_id, dest):
|
||||||
"""live_migration"""
|
"""live_migration"""
|
||||||
|
|
||||||
|
|
||||||
|
if FLAGS.connection_type != 'libvirt':
|
||||||
|
raise exception.Error('Only KVM is supported for now. '
|
||||||
|
'Sorry.')
|
||||||
|
|
||||||
if FLAGS.volume_driver != 'nova.volume.driver.AOEDriver':
|
if FLAGS.volume_driver != 'nova.volume.driver.AOEDriver':
|
||||||
raise exception.Error('Only AOEDriver is supported for now. '
|
raise exception.Error('Only AOEDriver is supported for now. '
|
||||||
'Sorry.')
|
'Sorry.')
|
||||||
|
|
||||||
logging.basicConfig()
|
logging.basicConfig()
|
||||||
ctxt = context.get_admin_context()
|
ctxt = context.get_admin_context()
|
||||||
|
instance_id = cloud.ec2_id_to_id(ec2_id)
|
||||||
|
|
||||||
try:
|
rpc.call(ctxt,
|
||||||
internal_id = cloud.ec2_id_to_internal_id(ec2_id)
|
|
||||||
instance_ref = db.instance_get_by_internal_id(ctxt, internal_id)
|
|
||||||
instance_id = instance_ref['id']
|
|
||||||
except exception.NotFound as e:
|
|
||||||
msg = _('instance(%s) is not found')
|
|
||||||
e.args += (msg % ec2_id,)
|
|
||||||
raise e
|
|
||||||
|
|
||||||
ret = rpc.call(ctxt,
|
|
||||||
FLAGS.scheduler_topic,
|
FLAGS.scheduler_topic,
|
||||||
{"method": "live_migration",
|
{"method": "live_migration",
|
||||||
"args": {"instance_id": instance_id,
|
"args": {"instance_id": instance_id,
|
||||||
"dest": dest,
|
"dest": dest,
|
||||||
"topic": FLAGS.compute_topic}})
|
"topic": FLAGS.compute_topic}})
|
||||||
|
|
||||||
if None != ret:
|
msg = 'Migration of %s initiated. ' % ec2_id
|
||||||
raise ret
|
msg += 'Check its progress using euca-describe-instances.'
|
||||||
|
print msg
|
||||||
print 'Finished all procedure. Check migrating finishes successfully'
|
|
||||||
print 'check status by using euca-describe-instances.'
|
|
||||||
|
|
||||||
|
|
||||||
class HostCommands(object):
|
class HostCommands(object):
|
||||||
@@ -516,7 +518,7 @@ class HostCommands(object):
|
|||||||
|
|
||||||
# Checking result msg format is necessary, that will have done
|
# Checking result msg format is necessary, that will have done
|
||||||
# when this feture is included in API.
|
# when this feture is included in API.
|
||||||
if dict != type(result):
|
if type(result) != dict:
|
||||||
print 'Unexpected error occurs'
|
print 'Unexpected error occurs'
|
||||||
elif not result['ret']:
|
elif not result['ret']:
|
||||||
print '%s' % result['msg']
|
print '%s' % result['msg']
|
||||||
@@ -535,6 +537,60 @@ class HostCommands(object):
|
|||||||
val['local_gb'])
|
val['local_gb'])
|
||||||
|
|
||||||
|
|
||||||
|
class ServiceCommands(object):
|
||||||
|
"""Enable and disable running services"""
|
||||||
|
|
||||||
|
def list(self, host=None, service=None):
|
||||||
|
"""Show a list of all running services. Filter by host & service name.
|
||||||
|
args: [host] [service]"""
|
||||||
|
ctxt = context.get_admin_context()
|
||||||
|
now = datetime.datetime.utcnow()
|
||||||
|
services = db.service_get_all(ctxt)
|
||||||
|
if host:
|
||||||
|
services = [s for s in services if s['host'] == host]
|
||||||
|
if service:
|
||||||
|
services = [s for s in services if s['binary'] == service]
|
||||||
|
for svc in services:
|
||||||
|
delta = now - (svc['updated_at'] or svc['created_at'])
|
||||||
|
alive = (delta.seconds <= 15)
|
||||||
|
art = (alive and ":-)") or "XXX"
|
||||||
|
active = 'enabled'
|
||||||
|
if svc['disabled']:
|
||||||
|
active = 'disabled'
|
||||||
|
print "%-10s %-10s %-8s %s %s" % (svc['host'], svc['binary'],
|
||||||
|
active, art,
|
||||||
|
svc['updated_at'])
|
||||||
|
|
||||||
|
def enable(self, host, service):
|
||||||
|
"""Enable scheduling for a service
|
||||||
|
args: host service"""
|
||||||
|
ctxt = context.get_admin_context()
|
||||||
|
svc = db.service_get_by_args(ctxt, host, service)
|
||||||
|
if not svc:
|
||||||
|
print "Unable to find service"
|
||||||
|
return
|
||||||
|
db.service_update(ctxt, svc['id'], {'disabled': False})
|
||||||
|
|
||||||
|
def disable(self, host, service):
|
||||||
|
"""Disable scheduling for a service
|
||||||
|
args: host service"""
|
||||||
|
ctxt = context.get_admin_context()
|
||||||
|
svc = db.service_get_by_args(ctxt, host, service)
|
||||||
|
if not svc:
|
||||||
|
print "Unable to find service"
|
||||||
|
return
|
||||||
|
db.service_update(ctxt, svc['id'], {'disabled': True})
|
||||||
|
|
||||||
|
|
||||||
|
class LogCommands(object):
|
||||||
|
def request(self, request_id, logfile='/var/log/nova.log'):
|
||||||
|
"""Show all fields in the log for the given request. Assumes you
|
||||||
|
haven't changed the log format too much.
|
||||||
|
ARGS: request_id [logfile]"""
|
||||||
|
lines = utils.execute("cat %s | grep '\[%s '" % (logfile, request_id))
|
||||||
|
print re.sub('#012', "\n", "\n".join(lines))
|
||||||
|
|
||||||
|
|
||||||
CATEGORIES = [
|
CATEGORIES = [
|
||||||
('user', UserCommands),
|
('user', UserCommands),
|
||||||
('project', ProjectCommands),
|
('project', ProjectCommands),
|
||||||
@@ -544,7 +600,9 @@ CATEGORIES = [
|
|||||||
('floating', FloatingIpCommands),
|
('floating', FloatingIpCommands),
|
||||||
('network', NetworkCommands),
|
('network', NetworkCommands),
|
||||||
('instance', InstanceCommands),
|
('instance', InstanceCommands),
|
||||||
('host', HostCommands)]
|
('host', HostCommands),
|
||||||
|
('service', ServiceCommands),
|
||||||
|
('log', LogCommands)]
|
||||||
|
|
||||||
|
|
||||||
def lazy_match(name, key_value_tuples):
|
def lazy_match(name, key_value_tuples):
|
||||||
@@ -583,9 +641,6 @@ def main():
|
|||||||
utils.default_flagfile()
|
utils.default_flagfile()
|
||||||
argv = FLAGS(sys.argv)
|
argv = FLAGS(sys.argv)
|
||||||
|
|
||||||
if FLAGS.verbose:
|
|
||||||
logging.getLogger().setLevel(logging.DEBUG)
|
|
||||||
|
|
||||||
script_name = argv.pop(0)
|
script_name = argv.pop(0)
|
||||||
if len(argv) < 1:
|
if len(argv) < 1:
|
||||||
print script_name + " category action [<args>]"
|
print script_name + " category action [<args>]"
|
||||||
|
|||||||
97
bin/nova-spoolsentry
Normal file
97
bin/nova-spoolsentry
Normal file
@@ -0,0 +1,97 @@
|
|||||||
|
#!/usr/bin/env python
|
||||||
|
# vim: tabstop=4 shiftwidth=4 softtabstop=4
|
||||||
|
|
||||||
|
# Copyright 2010 United States Government as represented by the
|
||||||
|
# Administrator of the National Aeronautics and Space Administration.
|
||||||
|
# All Rights Reserved.
|
||||||
|
#
|
||||||
|
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
||||||
|
# not use this file except in compliance with the License. You may obtain
|
||||||
|
# a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||||
|
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||||
|
# License for the specific language governing permissions and limitations
|
||||||
|
# under the License.
|
||||||
|
|
||||||
|
|
||||||
|
import base64
|
||||||
|
import json
|
||||||
|
import logging
|
||||||
|
import os
|
||||||
|
import shutil
|
||||||
|
import sys
|
||||||
|
import urllib
|
||||||
|
import urllib2
|
||||||
|
try:
|
||||||
|
import cPickle as pickle
|
||||||
|
except:
|
||||||
|
import pickle
|
||||||
|
|
||||||
|
|
||||||
|
class SpoolSentry(object):
|
||||||
|
def __init__(self, spool_dir, sentry_url, key=None):
|
||||||
|
self.spool_dir = spool_dir
|
||||||
|
self.sentry_url = sentry_url
|
||||||
|
self.key = key
|
||||||
|
|
||||||
|
def process(self):
|
||||||
|
for fname in os.listdir(self.spool_dir):
|
||||||
|
if fname == "processed":
|
||||||
|
continue
|
||||||
|
try:
|
||||||
|
sourcefile = "%s/%s" % (self.spool_dir, fname)
|
||||||
|
with open(sourcefile) as f:
|
||||||
|
fdata = f.read()
|
||||||
|
data_from_json = json.loads(fdata)
|
||||||
|
data = self.build_data(data_from_json)
|
||||||
|
self.send_data(data)
|
||||||
|
destfile = "%s/processed/%s" % (self.spool_dir, fname)
|
||||||
|
shutil.move(sourcefile, destfile)
|
||||||
|
except:
|
||||||
|
logging.exception("Unable to upload record %s", fname)
|
||||||
|
raise
|
||||||
|
|
||||||
|
def build_data(self, filejson):
|
||||||
|
env = {'SERVER_NAME': 'unknown', 'SERVER_PORT': '0000',
|
||||||
|
'SCRIPT_NAME': '/unknown/', 'PATH_INFO': 'unknown'}
|
||||||
|
if filejson['env']:
|
||||||
|
env = json.loads(filejson['env'])
|
||||||
|
url = "http://%s:%s%s%s" % (env['SERVER_NAME'], env['SERVER_PORT'],
|
||||||
|
env['SCRIPT_NAME'], env['PATH_INFO'])
|
||||||
|
rv = {'logger': filejson['logger'], 'level': logging.ERROR,
|
||||||
|
'server_name': filejson['host'], 'url': url,
|
||||||
|
'message': filejson['message'],
|
||||||
|
'traceback': filejson['traceback']}
|
||||||
|
rv['data'] = {}
|
||||||
|
if filejson['env']:
|
||||||
|
rv['data']['META'] = env
|
||||||
|
if filejson['request_id']:
|
||||||
|
rv['data']['request_id'] = filejson['request_id']
|
||||||
|
return rv
|
||||||
|
|
||||||
|
def send_data(self, data):
|
||||||
|
data = {
|
||||||
|
'data': base64.b64encode(pickle.dumps(data).encode('zlib')),
|
||||||
|
'key': self.key
|
||||||
|
}
|
||||||
|
req = urllib2.Request(self.sentry_url)
|
||||||
|
res = urllib2.urlopen(req, urllib.urlencode(data))
|
||||||
|
if res.getcode() != 200:
|
||||||
|
raise Exception("Bad HTTP code: %s" % res.getcode())
|
||||||
|
txt = res.read()
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
sentryurl = 'http://127.0.0.1/sentry/store/'
|
||||||
|
key = ''
|
||||||
|
spooldir = '/var/spool/nova'
|
||||||
|
if len(sys.argv) > 1:
|
||||||
|
sentryurl = sys.argv[1]
|
||||||
|
if len(sys.argv) > 2:
|
||||||
|
key = sys.argv[2]
|
||||||
|
if len(sys.argv) > 3:
|
||||||
|
spooldir = sys.argv[3]
|
||||||
|
SpoolSentry(spooldir, sentryurl, key).process()
|
||||||
@@ -1,97 +0,0 @@
|
|||||||
source/api/nova..adminclient.rst
|
|
||||||
source/api/nova..api.cloud.rst
|
|
||||||
source/api/nova..api.ec2.admin.rst
|
|
||||||
source/api/nova..api.ec2.apirequest.rst
|
|
||||||
source/api/nova..api.ec2.cloud.rst
|
|
||||||
source/api/nova..api.ec2.images.rst
|
|
||||||
source/api/nova..api.ec2.metadatarequesthandler.rst
|
|
||||||
source/api/nova..api.openstack.auth.rst
|
|
||||||
source/api/nova..api.openstack.backup_schedules.rst
|
|
||||||
source/api/nova..api.openstack.faults.rst
|
|
||||||
source/api/nova..api.openstack.flavors.rst
|
|
||||||
source/api/nova..api.openstack.images.rst
|
|
||||||
source/api/nova..api.openstack.servers.rst
|
|
||||||
source/api/nova..api.openstack.sharedipgroups.rst
|
|
||||||
source/api/nova..auth.dbdriver.rst
|
|
||||||
source/api/nova..auth.fakeldap.rst
|
|
||||||
source/api/nova..auth.ldapdriver.rst
|
|
||||||
source/api/nova..auth.manager.rst
|
|
||||||
source/api/nova..auth.signer.rst
|
|
||||||
source/api/nova..cloudpipe.pipelib.rst
|
|
||||||
source/api/nova..compute.disk.rst
|
|
||||||
source/api/nova..compute.instance_types.rst
|
|
||||||
source/api/nova..compute.manager.rst
|
|
||||||
source/api/nova..compute.monitor.rst
|
|
||||||
source/api/nova..compute.power_state.rst
|
|
||||||
source/api/nova..context.rst
|
|
||||||
source/api/nova..crypto.rst
|
|
||||||
source/api/nova..db.api.rst
|
|
||||||
source/api/nova..db.sqlalchemy.api.rst
|
|
||||||
source/api/nova..db.sqlalchemy.models.rst
|
|
||||||
source/api/nova..db.sqlalchemy.session.rst
|
|
||||||
source/api/nova..exception.rst
|
|
||||||
source/api/nova..fakerabbit.rst
|
|
||||||
source/api/nova..flags.rst
|
|
||||||
source/api/nova..image.service.rst
|
|
||||||
source/api/nova..manager.rst
|
|
||||||
source/api/nova..network.linux_net.rst
|
|
||||||
source/api/nova..network.manager.rst
|
|
||||||
source/api/nova..objectstore.bucket.rst
|
|
||||||
source/api/nova..objectstore.handler.rst
|
|
||||||
source/api/nova..objectstore.image.rst
|
|
||||||
source/api/nova..objectstore.stored.rst
|
|
||||||
source/api/nova..process.rst
|
|
||||||
source/api/nova..quota.rst
|
|
||||||
source/api/nova..rpc.rst
|
|
||||||
source/api/nova..scheduler.chance.rst
|
|
||||||
source/api/nova..scheduler.driver.rst
|
|
||||||
source/api/nova..scheduler.manager.rst
|
|
||||||
source/api/nova..scheduler.simple.rst
|
|
||||||
source/api/nova..server.rst
|
|
||||||
source/api/nova..service.rst
|
|
||||||
source/api/nova..test.rst
|
|
||||||
source/api/nova..tests.access_unittest.rst
|
|
||||||
source/api/nova..tests.api.fakes.rst
|
|
||||||
source/api/nova..tests.api.openstack.fakes.rst
|
|
||||||
source/api/nova..tests.api.openstack.test_api.rst
|
|
||||||
source/api/nova..tests.api.openstack.test_auth.rst
|
|
||||||
source/api/nova..tests.api.openstack.test_faults.rst
|
|
||||||
source/api/nova..tests.api.openstack.test_flavors.rst
|
|
||||||
source/api/nova..tests.api.openstack.test_images.rst
|
|
||||||
source/api/nova..tests.api.openstack.test_ratelimiting.rst
|
|
||||||
source/api/nova..tests.api.openstack.test_servers.rst
|
|
||||||
source/api/nova..tests.api.openstack.test_sharedipgroups.rst
|
|
||||||
source/api/nova..tests.api.test_wsgi.rst
|
|
||||||
source/api/nova..tests.api_integration.rst
|
|
||||||
source/api/nova..tests.api_unittest.rst
|
|
||||||
source/api/nova..tests.auth_unittest.rst
|
|
||||||
source/api/nova..tests.cloud_unittest.rst
|
|
||||||
source/api/nova..tests.compute_unittest.rst
|
|
||||||
source/api/nova..tests.declare_flags.rst
|
|
||||||
source/api/nova..tests.fake_flags.rst
|
|
||||||
source/api/nova..tests.flags_unittest.rst
|
|
||||||
source/api/nova..tests.network_unittest.rst
|
|
||||||
source/api/nova..tests.objectstore_unittest.rst
|
|
||||||
source/api/nova..tests.process_unittest.rst
|
|
||||||
source/api/nova..tests.quota_unittest.rst
|
|
||||||
source/api/nova..tests.real_flags.rst
|
|
||||||
source/api/nova..tests.rpc_unittest.rst
|
|
||||||
source/api/nova..tests.runtime_flags.rst
|
|
||||||
source/api/nova..tests.scheduler_unittest.rst
|
|
||||||
source/api/nova..tests.service_unittest.rst
|
|
||||||
source/api/nova..tests.twistd_unittest.rst
|
|
||||||
source/api/nova..tests.validator_unittest.rst
|
|
||||||
source/api/nova..tests.virt_unittest.rst
|
|
||||||
source/api/nova..tests.volume_unittest.rst
|
|
||||||
source/api/nova..twistd.rst
|
|
||||||
source/api/nova..utils.rst
|
|
||||||
source/api/nova..validate.rst
|
|
||||||
source/api/nova..virt.connection.rst
|
|
||||||
source/api/nova..virt.fake.rst
|
|
||||||
source/api/nova..virt.images.rst
|
|
||||||
source/api/nova..virt.libvirt_conn.rst
|
|
||||||
source/api/nova..virt.xenapi.rst
|
|
||||||
source/api/nova..volume.driver.rst
|
|
||||||
source/api/nova..volume.manager.rst
|
|
||||||
source/api/nova..wsgi.rst
|
|
||||||
source/api/autoindex.rst
|
|
||||||
@@ -16,13 +16,13 @@ Here's a script you can use to install (and then run) Nova on Ubuntu or Debian (
|
|||||||
Step 2: Install dependencies
|
Step 2: Install dependencies
|
||||||
----------------------------
|
----------------------------
|
||||||
|
|
||||||
Nova requires rabbitmq for messaging and optionally you can use redis for storing state, so install these first.
|
Nova requires rabbitmq for messaging, so install that first.
|
||||||
|
|
||||||
*Note:* You must have sudo installed to run these commands as shown here.
|
*Note:* You must have sudo installed to run these commands as shown here.
|
||||||
|
|
||||||
::
|
::
|
||||||
|
|
||||||
sudo apt-get install rabbitmq-server redis-server
|
sudo apt-get install rabbitmq-server
|
||||||
|
|
||||||
|
|
||||||
You'll see messages starting with "Reading package lists... Done" and you must confirm by typing Y that you want to continue.
|
You'll see messages starting with "Reading package lists... Done" and you must confirm by typing Y that you want to continue.
|
||||||
@@ -31,11 +31,10 @@ If you're running on Ubuntu 10.04, you'll need to install Twisted and python-gfl
|
|||||||
|
|
||||||
::
|
::
|
||||||
|
|
||||||
sudo apt-get install python-twisted
|
sudo add-get install python-software-properties
|
||||||
|
sudo add-apt-repository ppa:nova-core/trunk
|
||||||
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 95C71FE2
|
sudo apt-get update
|
||||||
sudo sh -c 'echo "deb http://ppa.launchpad.net/openstack/openstack-ppa/ubuntu lucid main" > /etc/apt/sources.list.d/openstackppa.list'
|
sudo apt-get install python-twisted python-gflags
|
||||||
sudo apt-get update && sudo apt-get install python-gflags
|
|
||||||
|
|
||||||
|
|
||||||
Once you've done this, continue at Step 3 here: :doc:`../single.node.install`
|
Once you've done this, continue at Step 3 here: :doc:`../single.node.install`
|
||||||
|
|||||||
@@ -76,11 +76,11 @@ External unix tools that are required:
|
|||||||
* aoetools and vblade-persist (if you use aoe-volumes)
|
* aoetools and vblade-persist (if you use aoe-volumes)
|
||||||
|
|
||||||
Nova uses cutting-edge versions of many packages. There are ubuntu packages in
|
Nova uses cutting-edge versions of many packages. There are ubuntu packages in
|
||||||
the nova-core ppa. You can use add this ppa to your sources list on an ubuntu
|
the nova-core trunk ppa. You can use add this ppa to your sources list on an
|
||||||
machine with the following commands::
|
ubuntu machine with the following commands::
|
||||||
|
|
||||||
sudo apt-get install -y python-software-properties
|
sudo apt-get install -y python-software-properties
|
||||||
sudo add-apt-repository ppa:nova-core/ppa
|
sudo add-apt-repository ppa:nova-core/trunk
|
||||||
|
|
||||||
Recommended
|
Recommended
|
||||||
-----------
|
-----------
|
||||||
|
|||||||
@@ -46,12 +46,12 @@ Assumptions
|
|||||||
Step 1 Use apt-get to get the latest code
|
Step 1 Use apt-get to get the latest code
|
||||||
-----------------------------------------
|
-----------------------------------------
|
||||||
|
|
||||||
1. Setup Nova PPA with https://launchpad.net/~nova-core/+archive/ppa.
|
1. Setup Nova PPA with https://launchpad.net/~nova-core/+archive/trunk.
|
||||||
|
|
||||||
::
|
::
|
||||||
|
|
||||||
sudo apt-get install python-software-properties
|
sudo apt-get install python-software-properties
|
||||||
sudo add-apt-repository ppa:nova-core/ppa
|
sudo add-apt-repository ppa:nova-core/trunk
|
||||||
|
|
||||||
2. Run update.
|
2. Run update.
|
||||||
|
|
||||||
@@ -78,14 +78,13 @@ Nova development has consolidated all .conf files to nova.conf as of November 20
|
|||||||
#. These need to be defined in the nova.conf configuration file::
|
#. These need to be defined in the nova.conf configuration file::
|
||||||
|
|
||||||
--sql_connection=mysql://root:nova@$CC_ADDR/nova # location of nova sql db
|
--sql_connection=mysql://root:nova@$CC_ADDR/nova # location of nova sql db
|
||||||
--s3_host=$CC_ADDR # This is where nova is hosting the objectstore service, which
|
--s3_host=$CC_ADDR # This is where Nova is hosting the objectstore service, which
|
||||||
# will contain the VM images and buckets
|
# will contain the VM images and buckets
|
||||||
--rabbit_host=$CC_ADDR # This is where the rabbit AMQP messaging service is hosted
|
--rabbit_host=$CC_ADDR # This is where the rabbit AMQP messaging service is hosted
|
||||||
--cc_host=$CC_ADDR # This is where the the nova-api service lives
|
--cc_host=$CC_ADDR # This is where the the nova-api service lives
|
||||||
--verbose # Optional but very helpful during initial setup
|
--verbose # Optional but very helpful during initial setup
|
||||||
--ec2_url=http://$CC_ADDR:8773/services/Cloud
|
--ec2_url=http://$CC_ADDR:8773/services/Cloud
|
||||||
--network_manager=nova.network.manager.FlatManager # simple, no-vlan networking type
|
--network_manager=nova.network.manager.FlatManager # simple, no-vlan networking type
|
||||||
|
|
||||||
--fixed_range=<network/prefix> # ip network to use for VM guests, ex 192.168.2.64/26
|
--fixed_range=<network/prefix> # ip network to use for VM guests, ex 192.168.2.64/26
|
||||||
--network_size=<# of addrs> # number of ip addrs to use for VM guests, ex 64
|
--network_size=<# of addrs> # number of ip addrs to use for VM guests, ex 64
|
||||||
|
|
||||||
|
|||||||
@@ -1,99 +0,0 @@
|
|||||||
.. toctree::
|
|
||||||
:maxdepth: 1
|
|
||||||
|
|
||||||
nova..adminclient.rst
|
|
||||||
nova..api.cloud.rst
|
|
||||||
nova..api.ec2.admin.rst
|
|
||||||
nova..api.ec2.apirequest.rst
|
|
||||||
nova..api.ec2.cloud.rst
|
|
||||||
nova..api.ec2.images.rst
|
|
||||||
nova..api.ec2.metadatarequesthandler.rst
|
|
||||||
nova..api.openstack.auth.rst
|
|
||||||
nova..api.openstack.backup_schedules.rst
|
|
||||||
nova..api.openstack.faults.rst
|
|
||||||
nova..api.openstack.flavors.rst
|
|
||||||
nova..api.openstack.images.rst
|
|
||||||
nova..api.openstack.servers.rst
|
|
||||||
nova..api.openstack.sharedipgroups.rst
|
|
||||||
nova..auth.dbdriver.rst
|
|
||||||
nova..auth.fakeldap.rst
|
|
||||||
nova..auth.ldapdriver.rst
|
|
||||||
nova..auth.manager.rst
|
|
||||||
nova..auth.signer.rst
|
|
||||||
nova..cloudpipe.pipelib.rst
|
|
||||||
nova..compute.disk.rst
|
|
||||||
nova..compute.instance_types.rst
|
|
||||||
nova..compute.manager.rst
|
|
||||||
nova..compute.monitor.rst
|
|
||||||
nova..compute.power_state.rst
|
|
||||||
nova..context.rst
|
|
||||||
nova..crypto.rst
|
|
||||||
nova..db.api.rst
|
|
||||||
nova..db.sqlalchemy.api.rst
|
|
||||||
nova..db.sqlalchemy.models.rst
|
|
||||||
nova..db.sqlalchemy.session.rst
|
|
||||||
nova..exception.rst
|
|
||||||
nova..fakerabbit.rst
|
|
||||||
nova..flags.rst
|
|
||||||
nova..image.service.rst
|
|
||||||
nova..manager.rst
|
|
||||||
nova..network.linux_net.rst
|
|
||||||
nova..network.manager.rst
|
|
||||||
nova..objectstore.bucket.rst
|
|
||||||
nova..objectstore.handler.rst
|
|
||||||
nova..objectstore.image.rst
|
|
||||||
nova..objectstore.stored.rst
|
|
||||||
nova..process.rst
|
|
||||||
nova..quota.rst
|
|
||||||
nova..rpc.rst
|
|
||||||
nova..scheduler.chance.rst
|
|
||||||
nova..scheduler.driver.rst
|
|
||||||
nova..scheduler.manager.rst
|
|
||||||
nova..scheduler.simple.rst
|
|
||||||
nova..server.rst
|
|
||||||
nova..service.rst
|
|
||||||
nova..test.rst
|
|
||||||
nova..tests.access_unittest.rst
|
|
||||||
nova..tests.api.fakes.rst
|
|
||||||
nova..tests.api.openstack.fakes.rst
|
|
||||||
nova..tests.api.openstack.test_api.rst
|
|
||||||
nova..tests.api.openstack.test_auth.rst
|
|
||||||
nova..tests.api.openstack.test_faults.rst
|
|
||||||
nova..tests.api.openstack.test_flavors.rst
|
|
||||||
nova..tests.api.openstack.test_images.rst
|
|
||||||
nova..tests.api.openstack.test_ratelimiting.rst
|
|
||||||
nova..tests.api.openstack.test_servers.rst
|
|
||||||
nova..tests.api.openstack.test_sharedipgroups.rst
|
|
||||||
nova..tests.api.test_wsgi.rst
|
|
||||||
nova..tests.api_integration.rst
|
|
||||||
nova..tests.api_unittest.rst
|
|
||||||
nova..tests.auth_unittest.rst
|
|
||||||
nova..tests.cloud_unittest.rst
|
|
||||||
nova..tests.compute_unittest.rst
|
|
||||||
nova..tests.declare_flags.rst
|
|
||||||
nova..tests.fake_flags.rst
|
|
||||||
nova..tests.flags_unittest.rst
|
|
||||||
nova..tests.network_unittest.rst
|
|
||||||
nova..tests.objectstore_unittest.rst
|
|
||||||
nova..tests.process_unittest.rst
|
|
||||||
nova..tests.quota_unittest.rst
|
|
||||||
nova..tests.real_flags.rst
|
|
||||||
nova..tests.rpc_unittest.rst
|
|
||||||
nova..tests.runtime_flags.rst
|
|
||||||
nova..tests.scheduler_unittest.rst
|
|
||||||
nova..tests.service_unittest.rst
|
|
||||||
nova..tests.twistd_unittest.rst
|
|
||||||
nova..tests.validator_unittest.rst
|
|
||||||
nova..tests.virt_unittest.rst
|
|
||||||
nova..tests.volume_unittest.rst
|
|
||||||
nova..twistd.rst
|
|
||||||
nova..utils.rst
|
|
||||||
nova..validate.rst
|
|
||||||
nova..virt.connection.rst
|
|
||||||
nova..virt.fake.rst
|
|
||||||
nova..virt.images.rst
|
|
||||||
nova..virt.libvirt_conn.rst
|
|
||||||
nova..virt.xenapi.rst
|
|
||||||
nova..volume.driver.rst
|
|
||||||
nova..volume.manager.rst
|
|
||||||
nova..wsgi.rst
|
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
The :mod:`nova..adminclient` Module
|
|
||||||
==============================================================================
|
|
||||||
.. automodule:: nova..adminclient
|
|
||||||
:members:
|
|
||||||
:undoc-members:
|
|
||||||
:show-inheritance:
|
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
The :mod:`nova..api.cloud` Module
|
|
||||||
==============================================================================
|
|
||||||
.. automodule:: nova..api.cloud
|
|
||||||
:members:
|
|
||||||
:undoc-members:
|
|
||||||
:show-inheritance:
|
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
The :mod:`nova..api.ec2.admin` Module
|
|
||||||
==============================================================================
|
|
||||||
.. automodule:: nova..api.ec2.admin
|
|
||||||
:members:
|
|
||||||
:undoc-members:
|
|
||||||
:show-inheritance:
|
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
The :mod:`nova..api.ec2.apirequest` Module
|
|
||||||
==============================================================================
|
|
||||||
.. automodule:: nova..api.ec2.apirequest
|
|
||||||
:members:
|
|
||||||
:undoc-members:
|
|
||||||
:show-inheritance:
|
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
The :mod:`nova..api.ec2.cloud` Module
|
|
||||||
==============================================================================
|
|
||||||
.. automodule:: nova..api.ec2.cloud
|
|
||||||
:members:
|
|
||||||
:undoc-members:
|
|
||||||
:show-inheritance:
|
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
The :mod:`nova..api.ec2.images` Module
|
|
||||||
==============================================================================
|
|
||||||
.. automodule:: nova..api.ec2.images
|
|
||||||
:members:
|
|
||||||
:undoc-members:
|
|
||||||
:show-inheritance:
|
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
The :mod:`nova..api.ec2.metadatarequesthandler` Module
|
|
||||||
==============================================================================
|
|
||||||
.. automodule:: nova..api.ec2.metadatarequesthandler
|
|
||||||
:members:
|
|
||||||
:undoc-members:
|
|
||||||
:show-inheritance:
|
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
The :mod:`nova..api.openstack.auth` Module
|
|
||||||
==============================================================================
|
|
||||||
.. automodule:: nova..api.openstack.auth
|
|
||||||
:members:
|
|
||||||
:undoc-members:
|
|
||||||
:show-inheritance:
|
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
The :mod:`nova..api.openstack.backup_schedules` Module
|
|
||||||
==============================================================================
|
|
||||||
.. automodule:: nova..api.openstack.backup_schedules
|
|
||||||
:members:
|
|
||||||
:undoc-members:
|
|
||||||
:show-inheritance:
|
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
The :mod:`nova..api.openstack.faults` Module
|
|
||||||
==============================================================================
|
|
||||||
.. automodule:: nova..api.openstack.faults
|
|
||||||
:members:
|
|
||||||
:undoc-members:
|
|
||||||
:show-inheritance:
|
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
The :mod:`nova..api.openstack.flavors` Module
|
|
||||||
==============================================================================
|
|
||||||
.. automodule:: nova..api.openstack.flavors
|
|
||||||
:members:
|
|
||||||
:undoc-members:
|
|
||||||
:show-inheritance:
|
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
The :mod:`nova..api.openstack.images` Module
|
|
||||||
==============================================================================
|
|
||||||
.. automodule:: nova..api.openstack.images
|
|
||||||
:members:
|
|
||||||
:undoc-members:
|
|
||||||
:show-inheritance:
|
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
The :mod:`nova..api.openstack.servers` Module
|
|
||||||
==============================================================================
|
|
||||||
.. automodule:: nova..api.openstack.servers
|
|
||||||
:members:
|
|
||||||
:undoc-members:
|
|
||||||
:show-inheritance:
|
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
The :mod:`nova..api.openstack.sharedipgroups` Module
|
|
||||||
==============================================================================
|
|
||||||
.. automodule:: nova..api.openstack.sharedipgroups
|
|
||||||
:members:
|
|
||||||
:undoc-members:
|
|
||||||
:show-inheritance:
|
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
The :mod:`nova..auth.dbdriver` Module
|
|
||||||
==============================================================================
|
|
||||||
.. automodule:: nova..auth.dbdriver
|
|
||||||
:members:
|
|
||||||
:undoc-members:
|
|
||||||
:show-inheritance:
|
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
The :mod:`nova..auth.fakeldap` Module
|
|
||||||
==============================================================================
|
|
||||||
.. automodule:: nova..auth.fakeldap
|
|
||||||
:members:
|
|
||||||
:undoc-members:
|
|
||||||
:show-inheritance:
|
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
The :mod:`nova..auth.ldapdriver` Module
|
|
||||||
==============================================================================
|
|
||||||
.. automodule:: nova..auth.ldapdriver
|
|
||||||
:members:
|
|
||||||
:undoc-members:
|
|
||||||
:show-inheritance:
|
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
The :mod:`nova..auth.manager` Module
|
|
||||||
==============================================================================
|
|
||||||
.. automodule:: nova..auth.manager
|
|
||||||
:members:
|
|
||||||
:undoc-members:
|
|
||||||
:show-inheritance:
|
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
The :mod:`nova..auth.signer` Module
|
|
||||||
==============================================================================
|
|
||||||
.. automodule:: nova..auth.signer
|
|
||||||
:members:
|
|
||||||
:undoc-members:
|
|
||||||
:show-inheritance:
|
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
The :mod:`nova..cloudpipe.pipelib` Module
|
|
||||||
==============================================================================
|
|
||||||
.. automodule:: nova..cloudpipe.pipelib
|
|
||||||
:members:
|
|
||||||
:undoc-members:
|
|
||||||
:show-inheritance:
|
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
The :mod:`nova..compute.disk` Module
|
|
||||||
==============================================================================
|
|
||||||
.. automodule:: nova..compute.disk
|
|
||||||
:members:
|
|
||||||
:undoc-members:
|
|
||||||
:show-inheritance:
|
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
The :mod:`nova..compute.instance_types` Module
|
|
||||||
==============================================================================
|
|
||||||
.. automodule:: nova..compute.instance_types
|
|
||||||
:members:
|
|
||||||
:undoc-members:
|
|
||||||
:show-inheritance:
|
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
The :mod:`nova..compute.manager` Module
|
|
||||||
==============================================================================
|
|
||||||
.. automodule:: nova..compute.manager
|
|
||||||
:members:
|
|
||||||
:undoc-members:
|
|
||||||
:show-inheritance:
|
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
The :mod:`nova..compute.monitor` Module
|
|
||||||
==============================================================================
|
|
||||||
.. automodule:: nova..compute.monitor
|
|
||||||
:members:
|
|
||||||
:undoc-members:
|
|
||||||
:show-inheritance:
|
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
The :mod:`nova..compute.power_state` Module
|
|
||||||
==============================================================================
|
|
||||||
.. automodule:: nova..compute.power_state
|
|
||||||
:members:
|
|
||||||
:undoc-members:
|
|
||||||
:show-inheritance:
|
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
The :mod:`nova..context` Module
|
|
||||||
==============================================================================
|
|
||||||
.. automodule:: nova..context
|
|
||||||
:members:
|
|
||||||
:undoc-members:
|
|
||||||
:show-inheritance:
|
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
The :mod:`nova..crypto` Module
|
|
||||||
==============================================================================
|
|
||||||
.. automodule:: nova..crypto
|
|
||||||
:members:
|
|
||||||
:undoc-members:
|
|
||||||
:show-inheritance:
|
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
The :mod:`nova..db.api` Module
|
|
||||||
==============================================================================
|
|
||||||
.. automodule:: nova..db.api
|
|
||||||
:members:
|
|
||||||
:undoc-members:
|
|
||||||
:show-inheritance:
|
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
The :mod:`nova..db.sqlalchemy.api` Module
|
|
||||||
==============================================================================
|
|
||||||
.. automodule:: nova..db.sqlalchemy.api
|
|
||||||
:members:
|
|
||||||
:undoc-members:
|
|
||||||
:show-inheritance:
|
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
The :mod:`nova..db.sqlalchemy.models` Module
|
|
||||||
==============================================================================
|
|
||||||
.. automodule:: nova..db.sqlalchemy.models
|
|
||||||
:members:
|
|
||||||
:undoc-members:
|
|
||||||
:show-inheritance:
|
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
The :mod:`nova..db.sqlalchemy.session` Module
|
|
||||||
==============================================================================
|
|
||||||
.. automodule:: nova..db.sqlalchemy.session
|
|
||||||
:members:
|
|
||||||
:undoc-members:
|
|
||||||
:show-inheritance:
|
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
The :mod:`nova..exception` Module
|
|
||||||
==============================================================================
|
|
||||||
.. automodule:: nova..exception
|
|
||||||
:members:
|
|
||||||
:undoc-members:
|
|
||||||
:show-inheritance:
|
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
The :mod:`nova..fakerabbit` Module
|
|
||||||
==============================================================================
|
|
||||||
.. automodule:: nova..fakerabbit
|
|
||||||
:members:
|
|
||||||
:undoc-members:
|
|
||||||
:show-inheritance:
|
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
The :mod:`nova..flags` Module
|
|
||||||
==============================================================================
|
|
||||||
.. automodule:: nova..flags
|
|
||||||
:members:
|
|
||||||
:undoc-members:
|
|
||||||
:show-inheritance:
|
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
The :mod:`nova..image.service` Module
|
|
||||||
==============================================================================
|
|
||||||
.. automodule:: nova..image.service
|
|
||||||
:members:
|
|
||||||
:undoc-members:
|
|
||||||
:show-inheritance:
|
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
The :mod:`nova..manager` Module
|
|
||||||
==============================================================================
|
|
||||||
.. automodule:: nova..manager
|
|
||||||
:members:
|
|
||||||
:undoc-members:
|
|
||||||
:show-inheritance:
|
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
The :mod:`nova..network.linux_net` Module
|
|
||||||
==============================================================================
|
|
||||||
.. automodule:: nova..network.linux_net
|
|
||||||
:members:
|
|
||||||
:undoc-members:
|
|
||||||
:show-inheritance:
|
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
The :mod:`nova..network.manager` Module
|
|
||||||
==============================================================================
|
|
||||||
.. automodule:: nova..network.manager
|
|
||||||
:members:
|
|
||||||
:undoc-members:
|
|
||||||
:show-inheritance:
|
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
The :mod:`nova..objectstore.bucket` Module
|
|
||||||
==============================================================================
|
|
||||||
.. automodule:: nova..objectstore.bucket
|
|
||||||
:members:
|
|
||||||
:undoc-members:
|
|
||||||
:show-inheritance:
|
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
The :mod:`nova..objectstore.handler` Module
|
|
||||||
==============================================================================
|
|
||||||
.. automodule:: nova..objectstore.handler
|
|
||||||
:members:
|
|
||||||
:undoc-members:
|
|
||||||
:show-inheritance:
|
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
The :mod:`nova..objectstore.image` Module
|
|
||||||
==============================================================================
|
|
||||||
.. automodule:: nova..objectstore.image
|
|
||||||
:members:
|
|
||||||
:undoc-members:
|
|
||||||
:show-inheritance:
|
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
The :mod:`nova..objectstore.stored` Module
|
|
||||||
==============================================================================
|
|
||||||
.. automodule:: nova..objectstore.stored
|
|
||||||
:members:
|
|
||||||
:undoc-members:
|
|
||||||
:show-inheritance:
|
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
The :mod:`nova..process` Module
|
|
||||||
==============================================================================
|
|
||||||
.. automodule:: nova..process
|
|
||||||
:members:
|
|
||||||
:undoc-members:
|
|
||||||
:show-inheritance:
|
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
The :mod:`nova..quota` Module
|
|
||||||
==============================================================================
|
|
||||||
.. automodule:: nova..quota
|
|
||||||
:members:
|
|
||||||
:undoc-members:
|
|
||||||
:show-inheritance:
|
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
The :mod:`nova..rpc` Module
|
|
||||||
==============================================================================
|
|
||||||
.. automodule:: nova..rpc
|
|
||||||
:members:
|
|
||||||
:undoc-members:
|
|
||||||
:show-inheritance:
|
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
The :mod:`nova..scheduler.chance` Module
|
|
||||||
==============================================================================
|
|
||||||
.. automodule:: nova..scheduler.chance
|
|
||||||
:members:
|
|
||||||
:undoc-members:
|
|
||||||
:show-inheritance:
|
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
The :mod:`nova..scheduler.driver` Module
|
|
||||||
==============================================================================
|
|
||||||
.. automodule:: nova..scheduler.driver
|
|
||||||
:members:
|
|
||||||
:undoc-members:
|
|
||||||
:show-inheritance:
|
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
The :mod:`nova..scheduler.manager` Module
|
|
||||||
==============================================================================
|
|
||||||
.. automodule:: nova..scheduler.manager
|
|
||||||
:members:
|
|
||||||
:undoc-members:
|
|
||||||
:show-inheritance:
|
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
The :mod:`nova..scheduler.simple` Module
|
|
||||||
==============================================================================
|
|
||||||
.. automodule:: nova..scheduler.simple
|
|
||||||
:members:
|
|
||||||
:undoc-members:
|
|
||||||
:show-inheritance:
|
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
The :mod:`nova..server` Module
|
|
||||||
==============================================================================
|
|
||||||
.. automodule:: nova..server
|
|
||||||
:members:
|
|
||||||
:undoc-members:
|
|
||||||
:show-inheritance:
|
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
The :mod:`nova..service` Module
|
|
||||||
==============================================================================
|
|
||||||
.. automodule:: nova..service
|
|
||||||
:members:
|
|
||||||
:undoc-members:
|
|
||||||
:show-inheritance:
|
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
The :mod:`nova..test` Module
|
|
||||||
==============================================================================
|
|
||||||
.. automodule:: nova..test
|
|
||||||
:members:
|
|
||||||
:undoc-members:
|
|
||||||
:show-inheritance:
|
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
The :mod:`nova..tests.access_unittest` Module
|
|
||||||
==============================================================================
|
|
||||||
.. automodule:: nova..tests.access_unittest
|
|
||||||
:members:
|
|
||||||
:undoc-members:
|
|
||||||
:show-inheritance:
|
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
The :mod:`nova..tests.api.fakes` Module
|
|
||||||
==============================================================================
|
|
||||||
.. automodule:: nova..tests.api.fakes
|
|
||||||
:members:
|
|
||||||
:undoc-members:
|
|
||||||
:show-inheritance:
|
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
The :mod:`nova..tests.api.openstack.fakes` Module
|
|
||||||
==============================================================================
|
|
||||||
.. automodule:: nova..tests.api.openstack.fakes
|
|
||||||
:members:
|
|
||||||
:undoc-members:
|
|
||||||
:show-inheritance:
|
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
The :mod:`nova..tests.api.openstack.test_api` Module
|
|
||||||
==============================================================================
|
|
||||||
.. automodule:: nova..tests.api.openstack.test_api
|
|
||||||
:members:
|
|
||||||
:undoc-members:
|
|
||||||
:show-inheritance:
|
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
The :mod:`nova..tests.api.openstack.test_auth` Module
|
|
||||||
==============================================================================
|
|
||||||
.. automodule:: nova..tests.api.openstack.test_auth
|
|
||||||
:members:
|
|
||||||
:undoc-members:
|
|
||||||
:show-inheritance:
|
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
The :mod:`nova..tests.api.openstack.test_faults` Module
|
|
||||||
==============================================================================
|
|
||||||
.. automodule:: nova..tests.api.openstack.test_faults
|
|
||||||
:members:
|
|
||||||
:undoc-members:
|
|
||||||
:show-inheritance:
|
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
The :mod:`nova..tests.api.openstack.test_flavors` Module
|
|
||||||
==============================================================================
|
|
||||||
.. automodule:: nova..tests.api.openstack.test_flavors
|
|
||||||
:members:
|
|
||||||
:undoc-members:
|
|
||||||
:show-inheritance:
|
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
The :mod:`nova..tests.api.openstack.test_images` Module
|
|
||||||
==============================================================================
|
|
||||||
.. automodule:: nova..tests.api.openstack.test_images
|
|
||||||
:members:
|
|
||||||
:undoc-members:
|
|
||||||
:show-inheritance:
|
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
The :mod:`nova..tests.api.openstack.test_ratelimiting` Module
|
|
||||||
==============================================================================
|
|
||||||
.. automodule:: nova..tests.api.openstack.test_ratelimiting
|
|
||||||
:members:
|
|
||||||
:undoc-members:
|
|
||||||
:show-inheritance:
|
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
The :mod:`nova..tests.api.openstack.test_servers` Module
|
|
||||||
==============================================================================
|
|
||||||
.. automodule:: nova..tests.api.openstack.test_servers
|
|
||||||
:members:
|
|
||||||
:undoc-members:
|
|
||||||
:show-inheritance:
|
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
The :mod:`nova..tests.api.openstack.test_sharedipgroups` Module
|
|
||||||
==============================================================================
|
|
||||||
.. automodule:: nova..tests.api.openstack.test_sharedipgroups
|
|
||||||
:members:
|
|
||||||
:undoc-members:
|
|
||||||
:show-inheritance:
|
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
The :mod:`nova..tests.api.test_wsgi` Module
|
|
||||||
==============================================================================
|
|
||||||
.. automodule:: nova..tests.api.test_wsgi
|
|
||||||
:members:
|
|
||||||
:undoc-members:
|
|
||||||
:show-inheritance:
|
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
The :mod:`nova..tests.api_integration` Module
|
|
||||||
==============================================================================
|
|
||||||
.. automodule:: nova..tests.api_integration
|
|
||||||
:members:
|
|
||||||
:undoc-members:
|
|
||||||
:show-inheritance:
|
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
The :mod:`nova..tests.api_unittest` Module
|
|
||||||
==============================================================================
|
|
||||||
.. automodule:: nova..tests.api_unittest
|
|
||||||
:members:
|
|
||||||
:undoc-members:
|
|
||||||
:show-inheritance:
|
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
The :mod:`nova..tests.auth_unittest` Module
|
|
||||||
==============================================================================
|
|
||||||
.. automodule:: nova..tests.auth_unittest
|
|
||||||
:members:
|
|
||||||
:undoc-members:
|
|
||||||
:show-inheritance:
|
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
The :mod:`nova..tests.cloud_unittest` Module
|
|
||||||
==============================================================================
|
|
||||||
.. automodule:: nova..tests.cloud_unittest
|
|
||||||
:members:
|
|
||||||
:undoc-members:
|
|
||||||
:show-inheritance:
|
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
The :mod:`nova..tests.compute_unittest` Module
|
|
||||||
==============================================================================
|
|
||||||
.. automodule:: nova..tests.compute_unittest
|
|
||||||
:members:
|
|
||||||
:undoc-members:
|
|
||||||
:show-inheritance:
|
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
The :mod:`nova..tests.declare_flags` Module
|
|
||||||
==============================================================================
|
|
||||||
.. automodule:: nova..tests.declare_flags
|
|
||||||
:members:
|
|
||||||
:undoc-members:
|
|
||||||
:show-inheritance:
|
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
The :mod:`nova..tests.fake_flags` Module
|
|
||||||
==============================================================================
|
|
||||||
.. automodule:: nova..tests.fake_flags
|
|
||||||
:members:
|
|
||||||
:undoc-members:
|
|
||||||
:show-inheritance:
|
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
The :mod:`nova..tests.flags_unittest` Module
|
|
||||||
==============================================================================
|
|
||||||
.. automodule:: nova..tests.flags_unittest
|
|
||||||
:members:
|
|
||||||
:undoc-members:
|
|
||||||
:show-inheritance:
|
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
The :mod:`nova..tests.network_unittest` Module
|
|
||||||
==============================================================================
|
|
||||||
.. automodule:: nova..tests.network_unittest
|
|
||||||
:members:
|
|
||||||
:undoc-members:
|
|
||||||
:show-inheritance:
|
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
The :mod:`nova..tests.objectstore_unittest` Module
|
|
||||||
==============================================================================
|
|
||||||
.. automodule:: nova..tests.objectstore_unittest
|
|
||||||
:members:
|
|
||||||
:undoc-members:
|
|
||||||
:show-inheritance:
|
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
The :mod:`nova..tests.process_unittest` Module
|
|
||||||
==============================================================================
|
|
||||||
.. automodule:: nova..tests.process_unittest
|
|
||||||
:members:
|
|
||||||
:undoc-members:
|
|
||||||
:show-inheritance:
|
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
The :mod:`nova..tests.quota_unittest` Module
|
|
||||||
==============================================================================
|
|
||||||
.. automodule:: nova..tests.quota_unittest
|
|
||||||
:members:
|
|
||||||
:undoc-members:
|
|
||||||
:show-inheritance:
|
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
The :mod:`nova..tests.real_flags` Module
|
|
||||||
==============================================================================
|
|
||||||
.. automodule:: nova..tests.real_flags
|
|
||||||
:members:
|
|
||||||
:undoc-members:
|
|
||||||
:show-inheritance:
|
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
The :mod:`nova..tests.rpc_unittest` Module
|
|
||||||
==============================================================================
|
|
||||||
.. automodule:: nova..tests.rpc_unittest
|
|
||||||
:members:
|
|
||||||
:undoc-members:
|
|
||||||
:show-inheritance:
|
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
The :mod:`nova..tests.runtime_flags` Module
|
|
||||||
==============================================================================
|
|
||||||
.. automodule:: nova..tests.runtime_flags
|
|
||||||
:members:
|
|
||||||
:undoc-members:
|
|
||||||
:show-inheritance:
|
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
The :mod:`nova..tests.scheduler_unittest` Module
|
|
||||||
==============================================================================
|
|
||||||
.. automodule:: nova..tests.scheduler_unittest
|
|
||||||
:members:
|
|
||||||
:undoc-members:
|
|
||||||
:show-inheritance:
|
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
The :mod:`nova..tests.service_unittest` Module
|
|
||||||
==============================================================================
|
|
||||||
.. automodule:: nova..tests.service_unittest
|
|
||||||
:members:
|
|
||||||
:undoc-members:
|
|
||||||
:show-inheritance:
|
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
The :mod:`nova..tests.twistd_unittest` Module
|
|
||||||
==============================================================================
|
|
||||||
.. automodule:: nova..tests.twistd_unittest
|
|
||||||
:members:
|
|
||||||
:undoc-members:
|
|
||||||
:show-inheritance:
|
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
The :mod:`nova..tests.validator_unittest` Module
|
|
||||||
==============================================================================
|
|
||||||
.. automodule:: nova..tests.validator_unittest
|
|
||||||
:members:
|
|
||||||
:undoc-members:
|
|
||||||
:show-inheritance:
|
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
The :mod:`nova..tests.virt_unittest` Module
|
|
||||||
==============================================================================
|
|
||||||
.. automodule:: nova..tests.virt_unittest
|
|
||||||
:members:
|
|
||||||
:undoc-members:
|
|
||||||
:show-inheritance:
|
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
The :mod:`nova..tests.volume_unittest` Module
|
|
||||||
==============================================================================
|
|
||||||
.. automodule:: nova..tests.volume_unittest
|
|
||||||
:members:
|
|
||||||
:undoc-members:
|
|
||||||
:show-inheritance:
|
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user