Switch from FLAGS to CONF in nova.api
Use the global CONF variable instead of FLAGS. This is purely a cleanup since FLAGS is already just another reference to CONF. We leave the nova.flags imports until a later cleanup commit since removing them may cause unpredictable problems due to config options not being registered. Change-Id: I11fda86471fbf02eec342b95ec314792388307e3
This commit is contained in:
@@ -21,6 +21,7 @@ Common Auth Middleware.
|
|||||||
import webob.dec
|
import webob.dec
|
||||||
import webob.exc
|
import webob.exc
|
||||||
|
|
||||||
|
from nova import config
|
||||||
from nova import context
|
from nova import context
|
||||||
from nova import flags
|
from nova import flags
|
||||||
from nova.openstack.common import cfg
|
from nova.openstack.common import cfg
|
||||||
@@ -34,16 +35,16 @@ use_forwarded_for_opt = cfg.BoolOpt('use_forwarded_for',
|
|||||||
help='Treat X-Forwarded-For as the canonical remote address. '
|
help='Treat X-Forwarded-For as the canonical remote address. '
|
||||||
'Only enable this if you have a sanitizing proxy.')
|
'Only enable this if you have a sanitizing proxy.')
|
||||||
|
|
||||||
FLAGS = flags.FLAGS
|
CONF = config.CONF
|
||||||
FLAGS.register_opt(use_forwarded_for_opt)
|
CONF.register_opt(use_forwarded_for_opt)
|
||||||
LOG = logging.getLogger(__name__)
|
LOG = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
def pipeline_factory(loader, global_conf, **local_conf):
|
def pipeline_factory(loader, global_conf, **local_conf):
|
||||||
"""A paste pipeline replica that keys off of auth_strategy."""
|
"""A paste pipeline replica that keys off of auth_strategy."""
|
||||||
pipeline = local_conf[FLAGS.auth_strategy]
|
pipeline = local_conf[CONF.auth_strategy]
|
||||||
if not FLAGS.api_rate_limit:
|
if not CONF.api_rate_limit:
|
||||||
limit_name = FLAGS.auth_strategy + '_nolimit'
|
limit_name = CONF.auth_strategy + '_nolimit'
|
||||||
pipeline = local_conf.get(limit_name, pipeline)
|
pipeline = local_conf.get(limit_name, pipeline)
|
||||||
pipeline = pipeline.split()
|
pipeline = pipeline.split()
|
||||||
filters = [loader.get_filter(n) for n in pipeline[:-1]]
|
filters = [loader.get_filter(n) for n in pipeline[:-1]]
|
||||||
@@ -95,7 +96,7 @@ class NovaKeystoneContext(wsgi.Middleware):
|
|||||||
|
|
||||||
# Build a context, including the auth_token...
|
# Build a context, including the auth_token...
|
||||||
remote_address = req.remote_addr
|
remote_address = req.remote_addr
|
||||||
if FLAGS.use_forwarded_for:
|
if CONF.use_forwarded_for:
|
||||||
remote_address = req.headers.get('X-Forwarded-For', remote_address)
|
remote_address = req.headers.get('X-Forwarded-For', remote_address)
|
||||||
|
|
||||||
service_catalog = None
|
service_catalog = None
|
||||||
|
@@ -72,10 +72,8 @@ ec2_opts = [
|
|||||||
help='Time in seconds before ec2 timestamp expires'),
|
help='Time in seconds before ec2 timestamp expires'),
|
||||||
]
|
]
|
||||||
|
|
||||||
FLAGS = flags.FLAGS
|
|
||||||
FLAGS.register_opts(ec2_opts)
|
|
||||||
|
|
||||||
CONF = config.CONF
|
CONF = config.CONF
|
||||||
|
CONF.register_opts(ec2_opts)
|
||||||
CONF.import_opt('use_forwarded_for', 'nova.api.auth')
|
CONF.import_opt('use_forwarded_for', 'nova.api.auth')
|
||||||
|
|
||||||
|
|
||||||
@@ -165,11 +163,11 @@ class Lockout(wsgi.Middleware):
|
|||||||
|
|
||||||
def __init__(self, application):
|
def __init__(self, application):
|
||||||
"""middleware can use fake for testing."""
|
"""middleware can use fake for testing."""
|
||||||
if FLAGS.memcached_servers:
|
if CONF.memcached_servers:
|
||||||
import memcache
|
import memcache
|
||||||
else:
|
else:
|
||||||
from nova.common import memorycache as memcache
|
from nova.common import memorycache as memcache
|
||||||
self.mc = memcache.Client(FLAGS.memcached_servers,
|
self.mc = memcache.Client(CONF.memcached_servers,
|
||||||
debug=0)
|
debug=0)
|
||||||
super(Lockout, self).__init__(application)
|
super(Lockout, self).__init__(application)
|
||||||
|
|
||||||
@@ -178,7 +176,7 @@ class Lockout(wsgi.Middleware):
|
|||||||
access_key = str(req.params['AWSAccessKeyId'])
|
access_key = str(req.params['AWSAccessKeyId'])
|
||||||
failures_key = "authfailures-%s" % access_key
|
failures_key = "authfailures-%s" % access_key
|
||||||
failures = int(self.mc.get(failures_key) or 0)
|
failures = int(self.mc.get(failures_key) or 0)
|
||||||
if failures >= FLAGS.lockout_attempts:
|
if failures >= CONF.lockout_attempts:
|
||||||
detail = _("Too many failed authentications.")
|
detail = _("Too many failed authentications.")
|
||||||
raise webob.exc.HTTPForbidden(detail=detail)
|
raise webob.exc.HTTPForbidden(detail=detail)
|
||||||
res = req.get_response(self.application)
|
res = req.get_response(self.application)
|
||||||
@@ -186,15 +184,15 @@ class Lockout(wsgi.Middleware):
|
|||||||
failures = self.mc.incr(failures_key)
|
failures = self.mc.incr(failures_key)
|
||||||
if failures is None:
|
if failures is None:
|
||||||
# NOTE(vish): To use incr, failures has to be a string.
|
# NOTE(vish): To use incr, failures has to be a string.
|
||||||
self.mc.set(failures_key, '1', time=FLAGS.lockout_window * 60)
|
self.mc.set(failures_key, '1', time=CONF.lockout_window * 60)
|
||||||
elif failures >= FLAGS.lockout_attempts:
|
elif failures >= CONF.lockout_attempts:
|
||||||
lock_mins = FLAGS.lockout_minutes
|
lock_mins = CONF.lockout_minutes
|
||||||
msg = _('Access key %(access_key)s has had %(failures)d'
|
msg = _('Access key %(access_key)s has had %(failures)d'
|
||||||
' failed authentications and will be locked out'
|
' failed authentications and will be locked out'
|
||||||
' for %(lock_mins)d minutes.') % locals()
|
' for %(lock_mins)d minutes.') % locals()
|
||||||
LOG.warn(msg)
|
LOG.warn(msg)
|
||||||
self.mc.set(failures_key, str(failures),
|
self.mc.set(failures_key, str(failures),
|
||||||
time=FLAGS.lockout_minutes * 60)
|
time=CONF.lockout_minutes * 60)
|
||||||
return res
|
return res
|
||||||
|
|
||||||
|
|
||||||
@@ -226,14 +224,14 @@ class EC2KeystoneAuth(wsgi.Middleware):
|
|||||||
'path': req.path,
|
'path': req.path,
|
||||||
'params': auth_params,
|
'params': auth_params,
|
||||||
}
|
}
|
||||||
if "ec2" in FLAGS.keystone_ec2_url:
|
if "ec2" in CONF.keystone_ec2_url:
|
||||||
creds = {'ec2Credentials': cred_dict}
|
creds = {'ec2Credentials': cred_dict}
|
||||||
else:
|
else:
|
||||||
creds = {'auth': {'OS-KSEC2:ec2Credentials': cred_dict}}
|
creds = {'auth': {'OS-KSEC2:ec2Credentials': cred_dict}}
|
||||||
creds_json = jsonutils.dumps(creds)
|
creds_json = jsonutils.dumps(creds)
|
||||||
headers = {'Content-Type': 'application/json'}
|
headers = {'Content-Type': 'application/json'}
|
||||||
|
|
||||||
o = urlparse.urlparse(FLAGS.keystone_ec2_url)
|
o = urlparse.urlparse(CONF.keystone_ec2_url)
|
||||||
if o.scheme == "http":
|
if o.scheme == "http":
|
||||||
conn = httplib.HTTPConnection(o.netloc)
|
conn = httplib.HTTPConnection(o.netloc)
|
||||||
else:
|
else:
|
||||||
@@ -264,7 +262,7 @@ class EC2KeystoneAuth(wsgi.Middleware):
|
|||||||
return ec2_error(req, request_id, "Unauthorized", msg)
|
return ec2_error(req, request_id, "Unauthorized", msg)
|
||||||
|
|
||||||
remote_address = req.remote_addr
|
remote_address = req.remote_addr
|
||||||
if FLAGS.use_forwarded_for:
|
if CONF.use_forwarded_for:
|
||||||
remote_address = req.headers.get('X-Forwarded-For',
|
remote_address = req.headers.get('X-Forwarded-For',
|
||||||
remote_address)
|
remote_address)
|
||||||
|
|
||||||
@@ -293,7 +291,7 @@ class NoAuth(wsgi.Middleware):
|
|||||||
user_id, _sep, project_id = req.params['AWSAccessKeyId'].partition(':')
|
user_id, _sep, project_id = req.params['AWSAccessKeyId'].partition(':')
|
||||||
project_id = project_id or user_id
|
project_id = project_id or user_id
|
||||||
remote_address = req.remote_addr
|
remote_address = req.remote_addr
|
||||||
if FLAGS.use_forwarded_for:
|
if CONF.use_forwarded_for:
|
||||||
remote_address = req.headers.get('X-Forwarded-For', remote_address)
|
remote_address = req.headers.get('X-Forwarded-For', remote_address)
|
||||||
ctx = context.RequestContext(user_id,
|
ctx = context.RequestContext(user_id,
|
||||||
project_id,
|
project_id,
|
||||||
@@ -317,7 +315,7 @@ class Requestify(wsgi.Middleware):
|
|||||||
args = dict(req.params)
|
args = dict(req.params)
|
||||||
try:
|
try:
|
||||||
expired = ec2utils.is_ec2_timestamp_expired(req.params,
|
expired = ec2utils.is_ec2_timestamp_expired(req.params,
|
||||||
expires=FLAGS.ec2_timestamp_expiry)
|
expires=CONF.ec2_timestamp_expiry)
|
||||||
if expired:
|
if expired:
|
||||||
msg = _("Timestamp failed validation.")
|
msg = _("Timestamp failed validation.")
|
||||||
LOG.exception(msg)
|
LOG.exception(msg)
|
||||||
|
@@ -30,7 +30,6 @@ from nova import flags
|
|||||||
from nova.openstack.common import log as logging
|
from nova.openstack.common import log as logging
|
||||||
|
|
||||||
LOG = logging.getLogger(__name__)
|
LOG = logging.getLogger(__name__)
|
||||||
FLAGS = flags.FLAGS
|
|
||||||
|
|
||||||
|
|
||||||
def _underscore_to_camelcase(str):
|
def _underscore_to_camelcase(str):
|
||||||
|
@@ -33,6 +33,7 @@ from nova import compute
|
|||||||
from nova.compute import api as compute_api
|
from nova.compute import api as compute_api
|
||||||
from nova.compute import instance_types
|
from nova.compute import instance_types
|
||||||
from nova.compute import vm_states
|
from nova.compute import vm_states
|
||||||
|
from nova import config
|
||||||
from nova import db
|
from nova import db
|
||||||
from nova import exception
|
from nova import exception
|
||||||
from nova import flags
|
from nova import flags
|
||||||
@@ -45,7 +46,7 @@ from nova import utils
|
|||||||
from nova import volume
|
from nova import volume
|
||||||
|
|
||||||
|
|
||||||
FLAGS = flags.FLAGS
|
CONF = config.CONF
|
||||||
|
|
||||||
LOG = logging.getLogger(__name__)
|
LOG = logging.getLogger(__name__)
|
||||||
|
|
||||||
@@ -283,22 +284,22 @@ class CloudController(object):
|
|||||||
return {'availabilityZoneInfo': result}
|
return {'availabilityZoneInfo': result}
|
||||||
|
|
||||||
def describe_regions(self, context, region_name=None, **kwargs):
|
def describe_regions(self, context, region_name=None, **kwargs):
|
||||||
if FLAGS.region_list:
|
if CONF.region_list:
|
||||||
regions = []
|
regions = []
|
||||||
for region in FLAGS.region_list:
|
for region in CONF.region_list:
|
||||||
name, _sep, host = region.partition('=')
|
name, _sep, host = region.partition('=')
|
||||||
endpoint = '%s://%s:%s%s' % (FLAGS.ec2_scheme,
|
endpoint = '%s://%s:%s%s' % (CONF.ec2_scheme,
|
||||||
host,
|
host,
|
||||||
FLAGS.ec2_port,
|
CONF.ec2_port,
|
||||||
FLAGS.ec2_path)
|
CONF.ec2_path)
|
||||||
regions.append({'regionName': name,
|
regions.append({'regionName': name,
|
||||||
'regionEndpoint': endpoint})
|
'regionEndpoint': endpoint})
|
||||||
else:
|
else:
|
||||||
regions = [{'regionName': 'nova',
|
regions = [{'regionName': 'nova',
|
||||||
'regionEndpoint': '%s://%s:%s%s' % (FLAGS.ec2_scheme,
|
'regionEndpoint': '%s://%s:%s%s' % (CONF.ec2_scheme,
|
||||||
FLAGS.ec2_host,
|
CONF.ec2_host,
|
||||||
FLAGS.ec2_port,
|
CONF.ec2_port,
|
||||||
FLAGS.ec2_path)}]
|
CONF.ec2_path)}]
|
||||||
return {'regionInfo': regions}
|
return {'regionInfo': regions}
|
||||||
|
|
||||||
def describe_snapshots(self,
|
def describe_snapshots(self,
|
||||||
@@ -366,7 +367,7 @@ class CloudController(object):
|
|||||||
result = []
|
result = []
|
||||||
for key_pair in key_pairs:
|
for key_pair in key_pairs:
|
||||||
# filter out the vpn keys
|
# filter out the vpn keys
|
||||||
suffix = FLAGS.vpn_key_suffix
|
suffix = CONF.vpn_key_suffix
|
||||||
if context.is_admin or not key_pair['name'].endswith(suffix):
|
if context.is_admin or not key_pair['name'].endswith(suffix):
|
||||||
result.append({
|
result.append({
|
||||||
'keyName': key_pair['name'],
|
'keyName': key_pair['name'],
|
||||||
@@ -652,7 +653,7 @@ class CloudController(object):
|
|||||||
def create_security_group(self, context, group_name, group_description):
|
def create_security_group(self, context, group_name, group_description):
|
||||||
if isinstance(group_name, unicode):
|
if isinstance(group_name, unicode):
|
||||||
group_name = group_name.encode('utf-8')
|
group_name = group_name.encode('utf-8')
|
||||||
if FLAGS.ec2_strict_validation:
|
if CONF.ec2_strict_validation:
|
||||||
# EC2 specification gives constraints for name and description:
|
# EC2 specification gives constraints for name and description:
|
||||||
# Accepts alphanumeric characters, spaces, dashes, and underscores
|
# Accepts alphanumeric characters, spaces, dashes, and underscores
|
||||||
allowed = '^[a-zA-Z0-9_\- ]+$'
|
allowed = '^[a-zA-Z0-9_\- ]+$'
|
||||||
@@ -1048,7 +1049,7 @@ class CloudController(object):
|
|||||||
instances = []
|
instances = []
|
||||||
for instance in instances:
|
for instance in instances:
|
||||||
if not context.is_admin:
|
if not context.is_admin:
|
||||||
if instance['image_ref'] == str(FLAGS.vpn_image_id):
|
if instance['image_ref'] == str(CONF.vpn_image_id):
|
||||||
continue
|
continue
|
||||||
i = {}
|
i = {}
|
||||||
instance_uuid = instance['uuid']
|
instance_uuid = instance['uuid']
|
||||||
@@ -1070,7 +1071,7 @@ class CloudController(object):
|
|||||||
floating_ip = ip_info['floating_ips'][0]
|
floating_ip = ip_info['floating_ips'][0]
|
||||||
if ip_info['fixed_ip6s']:
|
if ip_info['fixed_ip6s']:
|
||||||
i['dnsNameV6'] = ip_info['fixed_ip6s'][0]
|
i['dnsNameV6'] = ip_info['fixed_ip6s'][0]
|
||||||
if FLAGS.ec2_private_dns_show_ip:
|
if CONF.ec2_private_dns_show_ip:
|
||||||
i['privateDnsName'] = fixed_ip
|
i['privateDnsName'] = fixed_ip
|
||||||
else:
|
else:
|
||||||
i['privateDnsName'] = instance['hostname']
|
i['privateDnsName'] = instance['hostname']
|
||||||
|
@@ -27,8 +27,6 @@ from nova.openstack.common import log as logging
|
|||||||
from nova.openstack.common import timeutils
|
from nova.openstack.common import timeutils
|
||||||
from nova import utils
|
from nova import utils
|
||||||
|
|
||||||
|
|
||||||
FLAGS = flags.FLAGS
|
|
||||||
LOG = logging.getLogger(__name__)
|
LOG = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
|
@@ -15,11 +15,12 @@
|
|||||||
import webob.dec
|
import webob.dec
|
||||||
import webob.exc
|
import webob.exc
|
||||||
|
|
||||||
|
from nova import config
|
||||||
from nova import context
|
from nova import context
|
||||||
from nova import flags
|
from nova import flags
|
||||||
from nova import utils
|
from nova import utils
|
||||||
|
|
||||||
FLAGS = flags.FLAGS
|
CONF = config.CONF
|
||||||
|
|
||||||
|
|
||||||
class Fault(webob.exc.HTTPException):
|
class Fault(webob.exc.HTTPException):
|
||||||
@@ -44,7 +45,7 @@ class Fault(webob.exc.HTTPException):
|
|||||||
user_id, _sep, project_id = req.params['AWSAccessKeyId'].partition(':')
|
user_id, _sep, project_id = req.params['AWSAccessKeyId'].partition(':')
|
||||||
project_id = project_id or user_id
|
project_id = project_id or user_id
|
||||||
remote_address = getattr(req, 'remote_address', '127.0.0.1')
|
remote_address = getattr(req, 'remote_address', '127.0.0.1')
|
||||||
if FLAGS.use_forwarded_for:
|
if CONF.use_forwarded_for:
|
||||||
remote_address = req.headers.get('X-Forwarded-For', remote_address)
|
remote_address = req.headers.get('X-Forwarded-For', remote_address)
|
||||||
|
|
||||||
ctxt = context.RequestContext(user_id,
|
ctxt = context.RequestContext(user_id,
|
||||||
|
@@ -16,11 +16,12 @@
|
|||||||
# License for the specific language governing permissions and limitations
|
# License for the specific language governing permissions and limitations
|
||||||
# under the License.
|
# under the License.
|
||||||
|
|
||||||
|
from nova import config
|
||||||
from nova import flags
|
from nova import flags
|
||||||
from nova import manager
|
from nova import manager
|
||||||
from nova.openstack.common import importutils
|
from nova.openstack.common import importutils
|
||||||
|
|
||||||
FLAGS = flags.FLAGS
|
CONF = config.CONF
|
||||||
|
|
||||||
|
|
||||||
class MetadataManager(manager.Manager):
|
class MetadataManager(manager.Manager):
|
||||||
@@ -31,7 +32,7 @@ class MetadataManager(manager.Manager):
|
|||||||
"""
|
"""
|
||||||
def __init__(self, *args, **kwargs):
|
def __init__(self, *args, **kwargs):
|
||||||
super(MetadataManager, self).__init__(*args, **kwargs)
|
super(MetadataManager, self).__init__(*args, **kwargs)
|
||||||
self.network_driver = importutils.import_module(FLAGS.network_driver)
|
self.network_driver = importutils.import_module(CONF.network_driver)
|
||||||
|
|
||||||
def init_host(self):
|
def init_host(self):
|
||||||
"""Perform any initialization.
|
"""Perform any initialization.
|
||||||
|
@@ -41,9 +41,8 @@ metadata_opts = [
|
|||||||
'config drive')),
|
'config drive')),
|
||||||
]
|
]
|
||||||
|
|
||||||
FLAGS = flags.FLAGS
|
|
||||||
FLAGS.register_opts(metadata_opts)
|
|
||||||
CONF = config.CONF
|
CONF = config.CONF
|
||||||
|
CONF.register_opts(metadata_opts)
|
||||||
CONF.import_opt('dhcp_domain', 'nova.network.manager')
|
CONF.import_opt('dhcp_domain', 'nova.network.manager')
|
||||||
|
|
||||||
|
|
||||||
@@ -310,8 +309,8 @@ class InstanceMetadata():
|
|||||||
|
|
||||||
def _get_hostname(self):
|
def _get_hostname(self):
|
||||||
return "%s%s%s" % (self.instance['hostname'],
|
return "%s%s%s" % (self.instance['hostname'],
|
||||||
'.' if FLAGS.dhcp_domain else '',
|
'.' if CONF.dhcp_domain else '',
|
||||||
FLAGS.dhcp_domain)
|
CONF.dhcp_domain)
|
||||||
|
|
||||||
def lookup(self, path):
|
def lookup(self, path):
|
||||||
if path == "" or path[0] != "/":
|
if path == "" or path[0] != "/":
|
||||||
@@ -353,7 +352,7 @@ class InstanceMetadata():
|
|||||||
"""Yields (path, value) tuples for metadata elements."""
|
"""Yields (path, value) tuples for metadata elements."""
|
||||||
# EC2 style metadata
|
# EC2 style metadata
|
||||||
for version in VERSIONS + ["latest"]:
|
for version in VERSIONS + ["latest"]:
|
||||||
if version in FLAGS.config_drive_skip_versions.split(' '):
|
if version in CONF.config_drive_skip_versions.split(' '):
|
||||||
continue
|
continue
|
||||||
|
|
||||||
data = self.get_ec2_metadata(version)
|
data = self.get_ec2_metadata(version)
|
||||||
|
@@ -29,12 +29,12 @@ from nova import flags
|
|||||||
from nova.openstack.common import log as logging
|
from nova.openstack.common import log as logging
|
||||||
from nova import wsgi
|
from nova import wsgi
|
||||||
|
|
||||||
LOG = logging.getLogger(__name__)
|
|
||||||
FLAGS = flags.FLAGS
|
|
||||||
CONF = config.CONF
|
CONF = config.CONF
|
||||||
CONF.import_opt('use_forwarded_for', 'nova.api.auth')
|
CONF.import_opt('use_forwarded_for', 'nova.api.auth')
|
||||||
|
|
||||||
if FLAGS.memcached_servers:
|
LOG = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
if CONF.memcached_servers:
|
||||||
import memcache
|
import memcache
|
||||||
else:
|
else:
|
||||||
from nova.common import memorycache as memcache
|
from nova.common import memorycache as memcache
|
||||||
@@ -44,7 +44,7 @@ class MetadataRequestHandler(wsgi.Application):
|
|||||||
"""Serve metadata."""
|
"""Serve metadata."""
|
||||||
|
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
self._cache = memcache.Client(FLAGS.memcached_servers, debug=0)
|
self._cache = memcache.Client(CONF.memcached_servers, debug=0)
|
||||||
|
|
||||||
def get_metadata(self, address):
|
def get_metadata(self, address):
|
||||||
if not address:
|
if not address:
|
||||||
@@ -67,7 +67,7 @@ class MetadataRequestHandler(wsgi.Application):
|
|||||||
@webob.dec.wsgify(RequestClass=wsgi.Request)
|
@webob.dec.wsgify(RequestClass=wsgi.Request)
|
||||||
def __call__(self, req):
|
def __call__(self, req):
|
||||||
remote_address = req.remote_addr
|
remote_address = req.remote_addr
|
||||||
if FLAGS.use_forwarded_for:
|
if CONF.use_forwarded_for:
|
||||||
remote_address = req.headers.get('X-Forwarded-For', remote_address)
|
remote_address = req.headers.get('X-Forwarded-For', remote_address)
|
||||||
|
|
||||||
if os.path.normpath("/" + req.path_info) == "/":
|
if os.path.normpath("/" + req.path_info) == "/":
|
||||||
|
@@ -28,7 +28,6 @@ from nova.openstack.common import log as logging
|
|||||||
from nova import wsgi as base_wsgi
|
from nova import wsgi as base_wsgi
|
||||||
|
|
||||||
LOG = logging.getLogger(__name__)
|
LOG = logging.getLogger(__name__)
|
||||||
FLAGS = flags.FLAGS
|
|
||||||
CONF = config.CONF
|
CONF = config.CONF
|
||||||
CONF.import_opt('use_forwarded_for', 'nova.api.auth')
|
CONF.import_opt('use_forwarded_for', 'nova.api.auth')
|
||||||
|
|
||||||
@@ -56,7 +55,7 @@ class NoAuthMiddleware(base_wsgi.Middleware):
|
|||||||
user_id, _sep, project_id = token.partition(':')
|
user_id, _sep, project_id = token.partition(':')
|
||||||
project_id = project_id or user_id
|
project_id = project_id or user_id
|
||||||
remote_address = getattr(req, 'remote_address', '127.0.0.1')
|
remote_address = getattr(req, 'remote_address', '127.0.0.1')
|
||||||
if FLAGS.use_forwarded_for:
|
if CONF.use_forwarded_for:
|
||||||
remote_address = req.headers.get('X-Forwarded-For', remote_address)
|
remote_address = req.headers.get('X-Forwarded-For', remote_address)
|
||||||
ctx = context.RequestContext(user_id,
|
ctx = context.RequestContext(user_id,
|
||||||
project_id,
|
project_id,
|
||||||
|
@@ -28,6 +28,7 @@ from nova.api.openstack import xmlutil
|
|||||||
from nova.compute import task_states
|
from nova.compute import task_states
|
||||||
from nova.compute import utils as compute_utils
|
from nova.compute import utils as compute_utils
|
||||||
from nova.compute import vm_states
|
from nova.compute import vm_states
|
||||||
|
from nova import config
|
||||||
from nova import exception
|
from nova import exception
|
||||||
from nova import flags
|
from nova import flags
|
||||||
from nova.openstack.common import log as logging
|
from nova.openstack.common import log as logging
|
||||||
@@ -35,7 +36,7 @@ from nova import quota
|
|||||||
|
|
||||||
|
|
||||||
LOG = logging.getLogger(__name__)
|
LOG = logging.getLogger(__name__)
|
||||||
FLAGS = flags.FLAGS
|
CONF = config.CONF
|
||||||
QUOTAS = quota.QUOTAS
|
QUOTAS = quota.QUOTAS
|
||||||
|
|
||||||
|
|
||||||
@@ -148,7 +149,7 @@ def _get_marker_param(request):
|
|||||||
return request.GET['marker']
|
return request.GET['marker']
|
||||||
|
|
||||||
|
|
||||||
def limited(items, request, max_limit=FLAGS.osapi_max_limit):
|
def limited(items, request, max_limit=CONF.osapi_max_limit):
|
||||||
"""Return a slice of items according to requested offset and limit.
|
"""Return a slice of items according to requested offset and limit.
|
||||||
|
|
||||||
:param items: A sliceable entity
|
:param items: A sliceable entity
|
||||||
@@ -185,7 +186,7 @@ def limited(items, request, max_limit=FLAGS.osapi_max_limit):
|
|||||||
return items[offset:range_end]
|
return items[offset:range_end]
|
||||||
|
|
||||||
|
|
||||||
def get_limit_and_marker(request, max_limit=FLAGS.osapi_max_limit):
|
def get_limit_and_marker(request, max_limit=CONF.osapi_max_limit):
|
||||||
"""get limited parameter from request"""
|
"""get limited parameter from request"""
|
||||||
params = get_pagination_params(request)
|
params = get_pagination_params(request)
|
||||||
limit = params.get('limit', max_limit)
|
limit = params.get('limit', max_limit)
|
||||||
@@ -195,7 +196,7 @@ def get_limit_and_marker(request, max_limit=FLAGS.osapi_max_limit):
|
|||||||
return limit, marker
|
return limit, marker
|
||||||
|
|
||||||
|
|
||||||
def limited_by_marker(items, request, max_limit=FLAGS.osapi_max_limit):
|
def limited_by_marker(items, request, max_limit=CONF.osapi_max_limit):
|
||||||
"""Return a slice of items according to the requested marker and limit."""
|
"""Return a slice of items according to the requested marker and limit."""
|
||||||
limit, marker = get_limit_and_marker(request, max_limit)
|
limit, marker = get_limit_and_marker(request, max_limit)
|
||||||
|
|
||||||
@@ -414,7 +415,7 @@ class MetadataTemplate(xmlutil.TemplateBuilder):
|
|||||||
def check_snapshots_enabled(f):
|
def check_snapshots_enabled(f):
|
||||||
@functools.wraps(f)
|
@functools.wraps(f)
|
||||||
def inner(*args, **kwargs):
|
def inner(*args, **kwargs):
|
||||||
if not FLAGS.allow_instance_snapshots:
|
if not CONF.allow_instance_snapshots:
|
||||||
LOG.warn(_('Rejecting snapshot request, snapshots currently'
|
LOG.warn(_('Rejecting snapshot request, snapshots currently'
|
||||||
' disabled'))
|
' disabled'))
|
||||||
msg = _("Instance snapshots are not permitted at this time.")
|
msg = _("Instance snapshots are not permitted at this time.")
|
||||||
@@ -443,7 +444,7 @@ class ViewBuilder(object):
|
|||||||
params = request.params.copy()
|
params = request.params.copy()
|
||||||
params["marker"] = identifier
|
params["marker"] = identifier
|
||||||
prefix = self._update_link_prefix(request.application_url,
|
prefix = self._update_link_prefix(request.application_url,
|
||||||
FLAGS.osapi_compute_link_prefix)
|
CONF.osapi_compute_link_prefix)
|
||||||
url = os.path.join(prefix,
|
url = os.path.join(prefix,
|
||||||
request.environ["nova.context"].project_id,
|
request.environ["nova.context"].project_id,
|
||||||
collection_name)
|
collection_name)
|
||||||
@@ -452,7 +453,7 @@ class ViewBuilder(object):
|
|||||||
def _get_href_link(self, request, identifier, collection_name):
|
def _get_href_link(self, request, identifier, collection_name):
|
||||||
"""Return an href string pointing to this object."""
|
"""Return an href string pointing to this object."""
|
||||||
prefix = self._update_link_prefix(request.application_url,
|
prefix = self._update_link_prefix(request.application_url,
|
||||||
FLAGS.osapi_compute_link_prefix)
|
CONF.osapi_compute_link_prefix)
|
||||||
return os.path.join(prefix,
|
return os.path.join(prefix,
|
||||||
request.environ["nova.context"].project_id,
|
request.environ["nova.context"].project_id,
|
||||||
collection_name,
|
collection_name,
|
||||||
@@ -462,7 +463,7 @@ class ViewBuilder(object):
|
|||||||
"""Create a URL that refers to a specific resource."""
|
"""Create a URL that refers to a specific resource."""
|
||||||
base_url = remove_version_from_href(request.application_url)
|
base_url = remove_version_from_href(request.application_url)
|
||||||
base_url = self._update_link_prefix(base_url,
|
base_url = self._update_link_prefix(base_url,
|
||||||
FLAGS.osapi_compute_link_prefix)
|
CONF.osapi_compute_link_prefix)
|
||||||
return os.path.join(base_url,
|
return os.path.join(base_url,
|
||||||
request.environ["nova.context"].project_id,
|
request.environ["nova.context"].project_id,
|
||||||
collection_name,
|
collection_name,
|
||||||
|
@@ -31,6 +31,7 @@ from nova.api.openstack.compute import limits
|
|||||||
from nova.api.openstack.compute import server_metadata
|
from nova.api.openstack.compute import server_metadata
|
||||||
from nova.api.openstack.compute import servers
|
from nova.api.openstack.compute import servers
|
||||||
from nova.api.openstack.compute import versions
|
from nova.api.openstack.compute import versions
|
||||||
|
from nova import config
|
||||||
from nova import flags
|
from nova import flags
|
||||||
from nova.openstack.common import cfg
|
from nova.openstack.common import cfg
|
||||||
from nova.openstack.common import log as logging
|
from nova.openstack.common import log as logging
|
||||||
@@ -42,8 +43,8 @@ allow_instance_snapshots_opt = cfg.BoolOpt('allow_instance_snapshots',
|
|||||||
default=True,
|
default=True,
|
||||||
help='Permit instance snapshot operations.')
|
help='Permit instance snapshot operations.')
|
||||||
|
|
||||||
FLAGS = flags.FLAGS
|
CONF = config.CONF
|
||||||
FLAGS.register_opt(allow_instance_snapshots_opt)
|
CONF.register_opt(allow_instance_snapshots_opt)
|
||||||
|
|
||||||
|
|
||||||
class APIRouter(nova.api.openstack.APIRouter):
|
class APIRouter(nova.api.openstack.APIRouter):
|
||||||
|
@@ -22,11 +22,12 @@ It can't be called 'extensions' because that causes namespacing problems.
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
from nova.api.openstack import extensions
|
from nova.api.openstack import extensions
|
||||||
|
from nova import config
|
||||||
from nova import flags
|
from nova import flags
|
||||||
from nova.openstack.common import log as logging
|
from nova.openstack.common import log as logging
|
||||||
|
|
||||||
|
|
||||||
FLAGS = flags.FLAGS
|
CONF = config.CONF
|
||||||
LOG = logging.getLogger(__name__)
|
LOG = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
@@ -36,4 +37,4 @@ def standard_extensions(ext_mgr):
|
|||||||
|
|
||||||
def select_extensions(ext_mgr):
|
def select_extensions(ext_mgr):
|
||||||
extensions.load_standard_extensions(ext_mgr, LOG, __path__, __package__,
|
extensions.load_standard_extensions(ext_mgr, LOG, __path__, __package__,
|
||||||
FLAGS.osapi_compute_ext_list)
|
CONF.osapi_compute_ext_list)
|
||||||
|
@@ -27,11 +27,8 @@ from nova import exception
|
|||||||
from nova import flags
|
from nova import flags
|
||||||
from nova.openstack.common import log as logging
|
from nova.openstack.common import log as logging
|
||||||
|
|
||||||
|
|
||||||
FLAGS = flags.FLAGS
|
|
||||||
LOG = logging.getLogger(__name__)
|
LOG = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
# States usable in resetState action
|
# States usable in resetState action
|
||||||
state_map = dict(active=vm_states.ACTIVE, error=vm_states.ERROR)
|
state_map = dict(active=vm_states.ACTIVE, error=vm_states.ERROR)
|
||||||
|
|
||||||
|
@@ -24,9 +24,7 @@ from nova import flags
|
|||||||
from nova import network
|
from nova import network
|
||||||
from nova.openstack.common import log as logging
|
from nova.openstack.common import log as logging
|
||||||
|
|
||||||
|
|
||||||
LOG = logging.getLogger(__name__)
|
LOG = logging.getLogger(__name__)
|
||||||
FLAGS = flags.FLAGS
|
|
||||||
authorize = extensions.extension_authorizer('compute', 'certificates')
|
authorize = extensions.extension_authorizer('compute', 'certificates')
|
||||||
|
|
||||||
|
|
||||||
|
@@ -21,6 +21,7 @@ from nova.cloudpipe import pipelib
|
|||||||
from nova import compute
|
from nova import compute
|
||||||
from nova.compute import utils as compute_utils
|
from nova.compute import utils as compute_utils
|
||||||
from nova.compute import vm_states
|
from nova.compute import vm_states
|
||||||
|
from nova import config
|
||||||
from nova import db
|
from nova import db
|
||||||
from nova import exception
|
from nova import exception
|
||||||
from nova import flags
|
from nova import flags
|
||||||
@@ -30,8 +31,7 @@ from nova.openstack.common import log as logging
|
|||||||
from nova.openstack.common import timeutils
|
from nova.openstack.common import timeutils
|
||||||
from nova import utils
|
from nova import utils
|
||||||
|
|
||||||
|
CONF = config.CONF
|
||||||
FLAGS = flags.FLAGS
|
|
||||||
LOG = logging.getLogger(__name__)
|
LOG = logging.getLogger(__name__)
|
||||||
authorize = extensions.extension_authorizer('compute', 'cloudpipe')
|
authorize = extensions.extension_authorizer('compute', 'cloudpipe')
|
||||||
|
|
||||||
@@ -70,12 +70,12 @@ class CloudpipeController(object):
|
|||||||
# NOTE(vish): One of the drawbacks of doing this in the api is
|
# NOTE(vish): One of the drawbacks of doing this in the api is
|
||||||
# the keys will only be on the api node that launched
|
# the keys will only be on the api node that launched
|
||||||
# the cloudpipe.
|
# the cloudpipe.
|
||||||
fileutils.ensure_tree(FLAGS.keys_path)
|
fileutils.ensure_tree(CONF.keys_path)
|
||||||
|
|
||||||
def _get_all_cloudpipes(self, context):
|
def _get_all_cloudpipes(self, context):
|
||||||
"""Get all cloudpipes"""
|
"""Get all cloudpipes"""
|
||||||
return [instance for instance in self.compute_api.get_all(context)
|
return [instance for instance in self.compute_api.get_all(context)
|
||||||
if instance['image_ref'] == str(FLAGS.vpn_image_id)
|
if instance['image_ref'] == str(CONF.vpn_image_id)
|
||||||
and instance['vm_state'] != vm_states.DELETED]
|
and instance['vm_state'] != vm_states.DELETED]
|
||||||
|
|
||||||
def _get_cloudpipe_for_project(self, context, project_id):
|
def _get_cloudpipe_for_project(self, context, project_id):
|
||||||
|
@@ -23,8 +23,6 @@ from nova.api.openstack import wsgi
|
|||||||
from nova.api.openstack import xmlutil
|
from nova.api.openstack import xmlutil
|
||||||
from nova import flags
|
from nova import flags
|
||||||
|
|
||||||
|
|
||||||
FLAGS = flags.FLAGS
|
|
||||||
authorize = extensions.soft_extension_authorizer('compute', 'config_drive')
|
authorize = extensions.soft_extension_authorizer('compute', 'config_drive')
|
||||||
|
|
||||||
|
|
||||||
|
@@ -22,8 +22,6 @@ from nova import db
|
|||||||
from nova import flags
|
from nova import flags
|
||||||
from nova.openstack.common import log as logging
|
from nova.openstack.common import log as logging
|
||||||
|
|
||||||
|
|
||||||
FLAGS = flags.FLAGS
|
|
||||||
LOG = logging.getLogger(__name__)
|
LOG = logging.getLogger(__name__)
|
||||||
authorize = extensions.soft_extension_authorizer('compute',
|
authorize = extensions.soft_extension_authorizer('compute',
|
||||||
'extended_server_attributes')
|
'extended_server_attributes')
|
||||||
|
@@ -21,8 +21,6 @@ from nova import compute
|
|||||||
from nova import flags
|
from nova import flags
|
||||||
from nova.openstack.common import log as logging
|
from nova.openstack.common import log as logging
|
||||||
|
|
||||||
|
|
||||||
FLAGS = flags.FLAGS
|
|
||||||
LOG = logging.getLogger(__name__)
|
LOG = logging.getLogger(__name__)
|
||||||
authorize = extensions.soft_extension_authorizer('compute', 'extended_status')
|
authorize = extensions.soft_extension_authorizer('compute', 'extended_status')
|
||||||
|
|
||||||
|
@@ -28,9 +28,7 @@ from nova import exception
|
|||||||
from nova import flags
|
from nova import flags
|
||||||
from nova.openstack.common import log as logging
|
from nova.openstack.common import log as logging
|
||||||
|
|
||||||
|
|
||||||
LOG = logging.getLogger(__name__)
|
LOG = logging.getLogger(__name__)
|
||||||
FLAGS = flags.FLAGS
|
|
||||||
authorize = extensions.extension_authorizer('compute', 'hosts')
|
authorize = extensions.extension_authorizer('compute', 'hosts')
|
||||||
|
|
||||||
|
|
||||||
|
@@ -21,11 +21,12 @@ import datetime
|
|||||||
import webob.exc
|
import webob.exc
|
||||||
|
|
||||||
from nova.api.openstack import extensions
|
from nova.api.openstack import extensions
|
||||||
|
from nova import config
|
||||||
from nova import db
|
from nova import db
|
||||||
from nova import flags
|
from nova import flags
|
||||||
from nova import utils
|
from nova import utils
|
||||||
|
|
||||||
FLAGS = flags.FLAGS
|
CONF = config.CONF
|
||||||
|
|
||||||
|
|
||||||
authorize = extensions.extension_authorizer('compute',
|
authorize = extensions.extension_authorizer('compute',
|
||||||
@@ -82,7 +83,7 @@ class InstanceUsageAuditLogController(object):
|
|||||||
# We do this this way to include disabled compute services,
|
# We do this this way to include disabled compute services,
|
||||||
# which can have instances on them. (mdragon)
|
# which can have instances on them. (mdragon)
|
||||||
services = [svc for svc in db.service_get_all(context)
|
services = [svc for svc in db.service_get_all(context)
|
||||||
if svc['topic'] == FLAGS.compute_topic]
|
if svc['topic'] == CONF.compute_topic]
|
||||||
hosts = set(serv['host'] for serv in services)
|
hosts = set(serv['host'] for serv in services)
|
||||||
seen_hosts = set()
|
seen_hosts = set()
|
||||||
done_hosts = set()
|
done_hosts = set()
|
||||||
|
@@ -26,8 +26,6 @@ from nova import flags
|
|||||||
from nova import network
|
from nova import network
|
||||||
from nova.openstack.common import log as logging
|
from nova.openstack.common import log as logging
|
||||||
|
|
||||||
|
|
||||||
FLAGS = flags.FLAGS
|
|
||||||
LOG = logging.getLogger(__name__)
|
LOG = logging.getLogger(__name__)
|
||||||
authorize = extensions.extension_authorizer('compute', 'networks')
|
authorize = extensions.extension_authorizer('compute', 'networks')
|
||||||
authorize_view = extensions.extension_authorizer('compute', 'networks:view')
|
authorize_view = extensions.extension_authorizer('compute', 'networks:view')
|
||||||
|
@@ -21,13 +21,14 @@ from nova.api.openstack import common
|
|||||||
from nova.api.openstack import extensions as exts
|
from nova.api.openstack import extensions as exts
|
||||||
from nova.api.openstack import wsgi
|
from nova.api.openstack import wsgi
|
||||||
from nova import compute
|
from nova import compute
|
||||||
|
from nova import config
|
||||||
from nova import exception
|
from nova import exception
|
||||||
from nova import flags
|
from nova import flags
|
||||||
from nova.openstack.common import log as logging
|
from nova.openstack.common import log as logging
|
||||||
from nova import utils
|
from nova import utils
|
||||||
|
|
||||||
|
|
||||||
FLAGS = flags.FLAGS
|
CONF = config.CONF
|
||||||
LOG = logging.getLogger(__name__)
|
LOG = logging.getLogger(__name__)
|
||||||
authorize = exts.extension_authorizer('compute', 'rescue')
|
authorize = exts.extension_authorizer('compute', 'rescue')
|
||||||
|
|
||||||
@@ -54,7 +55,7 @@ class RescueController(wsgi.Controller):
|
|||||||
if body['rescue'] and 'adminPass' in body['rescue']:
|
if body['rescue'] and 'adminPass' in body['rescue']:
|
||||||
password = body['rescue']['adminPass']
|
password = body['rescue']['adminPass']
|
||||||
else:
|
else:
|
||||||
password = utils.generate_password(FLAGS.password_length)
|
password = utils.generate_password(CONF.password_length)
|
||||||
|
|
||||||
instance = self._get_instance(context, id)
|
instance = self._get_instance(context, id)
|
||||||
try:
|
try:
|
||||||
|
@@ -32,9 +32,7 @@ from nova import exception
|
|||||||
from nova import flags
|
from nova import flags
|
||||||
from nova.openstack.common import log as logging
|
from nova.openstack.common import log as logging
|
||||||
|
|
||||||
|
|
||||||
LOG = logging.getLogger(__name__)
|
LOG = logging.getLogger(__name__)
|
||||||
FLAGS = flags.FLAGS
|
|
||||||
authorize = extensions.extension_authorizer('compute', 'security_groups')
|
authorize = extensions.extension_authorizer('compute', 'security_groups')
|
||||||
softauth = extensions.soft_extension_authorizer('compute', 'security_groups')
|
softauth = extensions.soft_extension_authorizer('compute', 'security_groups')
|
||||||
|
|
||||||
|
@@ -26,8 +26,6 @@ from nova import exception
|
|||||||
from nova import flags
|
from nova import flags
|
||||||
from nova.openstack.common import timeutils
|
from nova.openstack.common import timeutils
|
||||||
|
|
||||||
|
|
||||||
FLAGS = flags.FLAGS
|
|
||||||
authorize_show = extensions.extension_authorizer('compute',
|
authorize_show = extensions.extension_authorizer('compute',
|
||||||
'simple_tenant_usage:show')
|
'simple_tenant_usage:show')
|
||||||
authorize_list = extensions.extension_authorizer('compute',
|
authorize_list = extensions.extension_authorizer('compute',
|
||||||
|
@@ -30,9 +30,7 @@ from nova.openstack.common import log as logging
|
|||||||
from nova import utils
|
from nova import utils
|
||||||
from nova import volume
|
from nova import volume
|
||||||
|
|
||||||
|
|
||||||
LOG = logging.getLogger(__name__)
|
LOG = logging.getLogger(__name__)
|
||||||
FLAGS = flags.FLAGS
|
|
||||||
authorize = extensions.extension_authorizer('compute', 'volumes')
|
authorize = extensions.extension_authorizer('compute', 'volumes')
|
||||||
|
|
||||||
|
|
||||||
|
@@ -16,19 +16,20 @@
|
|||||||
# under the License.
|
# under the License.
|
||||||
|
|
||||||
from nova.api.openstack import extensions as base_extensions
|
from nova.api.openstack import extensions as base_extensions
|
||||||
|
from nova import config
|
||||||
from nova import flags
|
from nova import flags
|
||||||
from nova.openstack.common import log as logging
|
from nova.openstack.common import log as logging
|
||||||
from nova.openstack.common.plugin import pluginmanager
|
from nova.openstack.common.plugin import pluginmanager
|
||||||
|
|
||||||
|
|
||||||
LOG = logging.getLogger(__name__)
|
LOG = logging.getLogger(__name__)
|
||||||
FLAGS = flags.FLAGS
|
CONF = config.CONF
|
||||||
|
|
||||||
|
|
||||||
class ExtensionManager(base_extensions.ExtensionManager):
|
class ExtensionManager(base_extensions.ExtensionManager):
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
LOG.audit(_('Initializing extension manager.'))
|
LOG.audit(_('Initializing extension manager.'))
|
||||||
self.cls_list = FLAGS.osapi_compute_extension
|
self.cls_list = CONF.osapi_compute_extension
|
||||||
self.PluginManager = pluginmanager.PluginManager('nova',
|
self.PluginManager = pluginmanager.PluginManager('nova',
|
||||||
'compute-extensions')
|
'compute-extensions')
|
||||||
self.PluginManager.load_plugins()
|
self.PluginManager.load_plugins()
|
||||||
|
@@ -24,9 +24,6 @@ from nova import flags
|
|||||||
from nova.image import glance
|
from nova.image import glance
|
||||||
|
|
||||||
|
|
||||||
FLAGS = flags.FLAGS
|
|
||||||
|
|
||||||
|
|
||||||
class Controller(object):
|
class Controller(object):
|
||||||
"""The image metadata API controller for the OpenStack API"""
|
"""The image metadata API controller for the OpenStack API"""
|
||||||
|
|
||||||
|
@@ -27,7 +27,6 @@ import nova.utils
|
|||||||
|
|
||||||
|
|
||||||
LOG = logging.getLogger(__name__)
|
LOG = logging.getLogger(__name__)
|
||||||
FLAGS = flags.FLAGS
|
|
||||||
|
|
||||||
SUPPORTED_FILTERS = {
|
SUPPORTED_FILTERS = {
|
||||||
'name': 'name',
|
'name': 'name',
|
||||||
|
@@ -25,9 +25,7 @@ from nova.api.openstack import xmlutil
|
|||||||
from nova import flags
|
from nova import flags
|
||||||
from nova.openstack.common import log as logging
|
from nova.openstack.common import log as logging
|
||||||
|
|
||||||
|
|
||||||
LOG = logging.getLogger(__name__)
|
LOG = logging.getLogger(__name__)
|
||||||
FLAGS = flags.FLAGS
|
|
||||||
|
|
||||||
|
|
||||||
def make_network(elem):
|
def make_network(elem):
|
||||||
|
@@ -30,6 +30,7 @@ from nova.api.openstack import wsgi
|
|||||||
from nova.api.openstack import xmlutil
|
from nova.api.openstack import xmlutil
|
||||||
from nova import compute
|
from nova import compute
|
||||||
from nova.compute import instance_types
|
from nova.compute import instance_types
|
||||||
|
from nova import config
|
||||||
from nova import exception
|
from nova import exception
|
||||||
from nova import flags
|
from nova import flags
|
||||||
from nova.openstack.common import importutils
|
from nova.openstack.common import importutils
|
||||||
@@ -40,7 +41,7 @@ from nova import utils
|
|||||||
|
|
||||||
|
|
||||||
LOG = logging.getLogger(__name__)
|
LOG = logging.getLogger(__name__)
|
||||||
FLAGS = flags.FLAGS
|
CONF = config.CONF
|
||||||
|
|
||||||
|
|
||||||
def make_fault(elem):
|
def make_fault(elem):
|
||||||
@@ -602,7 +603,7 @@ class Controller(wsgi.Controller):
|
|||||||
self.quantum_attempted = True
|
self.quantum_attempted = True
|
||||||
from nova.network.quantumv2 import api as quantum_api
|
from nova.network.quantumv2 import api as quantum_api
|
||||||
self.have_quantum = issubclass(
|
self.have_quantum = issubclass(
|
||||||
importutils.import_class(FLAGS.network_api_class),
|
importutils.import_class(CONF.network_api_class),
|
||||||
quantum_api.API)
|
quantum_api.API)
|
||||||
except ImportError:
|
except ImportError:
|
||||||
self.have_quantum = False
|
self.have_quantum = False
|
||||||
@@ -920,7 +921,7 @@ class Controller(wsgi.Controller):
|
|||||||
if '_is_precooked' in server['server'].keys():
|
if '_is_precooked' in server['server'].keys():
|
||||||
del server['server']['_is_precooked']
|
del server['server']['_is_precooked']
|
||||||
else:
|
else:
|
||||||
if FLAGS.enable_instance_password:
|
if CONF.enable_instance_password:
|
||||||
server['server']['adminPass'] = password
|
server['server']['adminPass'] = password
|
||||||
|
|
||||||
robj = wsgi.ResponseObject(server)
|
robj = wsgi.ResponseObject(server)
|
||||||
@@ -929,7 +930,7 @@ class Controller(wsgi.Controller):
|
|||||||
|
|
||||||
def _delete(self, context, req, instance_uuid):
|
def _delete(self, context, req, instance_uuid):
|
||||||
instance = self._get_server(context, req, instance_uuid)
|
instance = self._get_server(context, req, instance_uuid)
|
||||||
if FLAGS.reclaim_instance_interval:
|
if CONF.reclaim_instance_interval:
|
||||||
self.compute_api.soft_delete(context, instance)
|
self.compute_api.soft_delete(context, instance)
|
||||||
else:
|
else:
|
||||||
self.compute_api.delete(context, instance)
|
self.compute_api.delete(context, instance)
|
||||||
@@ -1184,7 +1185,7 @@ class Controller(wsgi.Controller):
|
|||||||
try:
|
try:
|
||||||
password = body['adminPass']
|
password = body['adminPass']
|
||||||
except (KeyError, TypeError):
|
except (KeyError, TypeError):
|
||||||
password = utils.generate_password(FLAGS.password_length)
|
password = utils.generate_password(CONF.password_length)
|
||||||
|
|
||||||
context = req.environ['nova.context']
|
context = req.environ['nova.context']
|
||||||
instance = self._get_server(context, req, id)
|
instance = self._get_server(context, req, id)
|
||||||
@@ -1252,7 +1253,7 @@ class Controller(wsgi.Controller):
|
|||||||
|
|
||||||
# Add on the adminPass attribute since the view doesn't do it
|
# Add on the adminPass attribute since the view doesn't do it
|
||||||
# unless instance passwords are disabled
|
# unless instance passwords are disabled
|
||||||
if FLAGS.enable_instance_password:
|
if CONF.enable_instance_password:
|
||||||
view['server']['adminPass'] = password
|
view['server']['adminPass'] = password
|
||||||
|
|
||||||
robj = wsgi.ResponseObject(view)
|
robj = wsgi.ResponseObject(view)
|
||||||
@@ -1326,7 +1327,7 @@ class Controller(wsgi.Controller):
|
|||||||
password = server['adminPass']
|
password = server['adminPass']
|
||||||
self._validate_admin_password(password)
|
self._validate_admin_password(password)
|
||||||
except KeyError:
|
except KeyError:
|
||||||
password = utils.generate_password(FLAGS.password_length)
|
password = utils.generate_password(CONF.password_length)
|
||||||
except ValueError:
|
except ValueError:
|
||||||
raise exc.HTTPBadRequest(explanation=_("Invalid adminPass"))
|
raise exc.HTTPBadRequest(explanation=_("Invalid adminPass"))
|
||||||
|
|
||||||
|
@@ -21,8 +21,6 @@ from nova.api.openstack import common
|
|||||||
from nova import flags
|
from nova import flags
|
||||||
from nova.openstack.common import log as logging
|
from nova.openstack.common import log as logging
|
||||||
|
|
||||||
|
|
||||||
FLAGS = flags.FLAGS
|
|
||||||
LOG = logging.getLogger(__name__)
|
LOG = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
|
@@ -18,11 +18,11 @@
|
|||||||
import os.path
|
import os.path
|
||||||
|
|
||||||
from nova.api.openstack import common
|
from nova.api.openstack import common
|
||||||
|
from nova import config
|
||||||
from nova import flags
|
from nova import flags
|
||||||
from nova import utils
|
from nova import utils
|
||||||
|
|
||||||
|
CONF = config.CONF
|
||||||
FLAGS = flags.FLAGS
|
|
||||||
|
|
||||||
|
|
||||||
class ViewBuilder(common.ViewBuilder):
|
class ViewBuilder(common.ViewBuilder):
|
||||||
@@ -123,7 +123,7 @@ class ViewBuilder(common.ViewBuilder):
|
|||||||
"""Create an alternate link for a specific image id."""
|
"""Create an alternate link for a specific image id."""
|
||||||
glance_url = utils.generate_glance_url()
|
glance_url = utils.generate_glance_url()
|
||||||
glance_url = self._update_link_prefix(glance_url,
|
glance_url = self._update_link_prefix(glance_url,
|
||||||
FLAGS.osapi_glance_link_prefix)
|
CONF.osapi_glance_link_prefix)
|
||||||
return os.path.join(glance_url,
|
return os.path.join(glance_url,
|
||||||
request.environ["nova.context"].project_id,
|
request.environ["nova.context"].project_id,
|
||||||
self._collection_name,
|
self._collection_name,
|
||||||
|
@@ -19,10 +19,11 @@ import copy
|
|||||||
import os
|
import os
|
||||||
|
|
||||||
from nova.api.openstack import common
|
from nova.api.openstack import common
|
||||||
|
from nova import config
|
||||||
from nova import flags
|
from nova import flags
|
||||||
|
|
||||||
|
|
||||||
FLAGS = flags.FLAGS
|
CONF = config.CONF
|
||||||
|
|
||||||
|
|
||||||
def get_view_builder(req):
|
def get_view_builder(req):
|
||||||
@@ -93,7 +94,7 @@ class ViewBuilder(common.ViewBuilder):
|
|||||||
def generate_href(self, path=None):
|
def generate_href(self, path=None):
|
||||||
"""Create an url that refers to a specific version_number."""
|
"""Create an url that refers to a specific version_number."""
|
||||||
prefix = self._update_link_prefix(self.base_url,
|
prefix = self._update_link_prefix(self.base_url,
|
||||||
FLAGS.osapi_compute_link_prefix)
|
CONF.osapi_compute_link_prefix)
|
||||||
version_number = 'v2'
|
version_number = 'v2'
|
||||||
if path:
|
if path:
|
||||||
path = path.strip('/')
|
path = path.strip('/')
|
||||||
|
@@ -30,9 +30,7 @@ from nova.openstack.common import importutils
|
|||||||
from nova.openstack.common import log as logging
|
from nova.openstack.common import log as logging
|
||||||
import nova.policy
|
import nova.policy
|
||||||
|
|
||||||
|
|
||||||
LOG = logging.getLogger(__name__)
|
LOG = logging.getLogger(__name__)
|
||||||
FLAGS = flags.FLAGS
|
|
||||||
|
|
||||||
|
|
||||||
class ExtensionDescriptor(object):
|
class ExtensionDescriptor(object):
|
||||||
|
@@ -21,6 +21,7 @@ Request Body limiting middleware.
|
|||||||
import webob.dec
|
import webob.dec
|
||||||
import webob.exc
|
import webob.exc
|
||||||
|
|
||||||
|
from nova import config
|
||||||
from nova import flags
|
from nova import flags
|
||||||
from nova.openstack.common import cfg
|
from nova.openstack.common import cfg
|
||||||
from nova.openstack.common import log as logging
|
from nova.openstack.common import log as logging
|
||||||
@@ -33,8 +34,8 @@ max_request_body_size_opt = cfg.IntOpt('osapi_max_request_body_size',
|
|||||||
help='the maximum body size '
|
help='the maximum body size '
|
||||||
'per each osapi request(bytes)')
|
'per each osapi request(bytes)')
|
||||||
|
|
||||||
FLAGS = flags.FLAGS
|
CONF = config.CONF
|
||||||
FLAGS.register_opt(max_request_body_size_opt)
|
CONF.register_opt(max_request_body_size_opt)
|
||||||
LOG = logging.getLogger(__name__)
|
LOG = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
@@ -46,8 +47,8 @@ class RequestBodySizeLimiter(wsgi.Middleware):
|
|||||||
|
|
||||||
@webob.dec.wsgify(RequestClass=wsgi.Request)
|
@webob.dec.wsgify(RequestClass=wsgi.Request)
|
||||||
def __call__(self, req):
|
def __call__(self, req):
|
||||||
if (req.content_length > FLAGS.osapi_max_request_body_size
|
if (req.content_length > CONF.osapi_max_request_body_size
|
||||||
or len(req.body) > FLAGS.osapi_max_request_body_size):
|
or len(req.body) > CONF.osapi_max_request_body_size):
|
||||||
msg = _("Request is too large.")
|
msg = _("Request is too large.")
|
||||||
raise webob.exc.HTTPBadRequest(explanation=msg)
|
raise webob.exc.HTTPBadRequest(explanation=msg)
|
||||||
else:
|
else:
|
||||||
|
Reference in New Issue
Block a user