Merge "Replacing variable logger on LOG"
This commit is contained in:
commit
8d080373e4
@ -20,7 +20,7 @@ from heat.engine import resource
|
||||
from heat.openstack.common.gettextutils import _
|
||||
from heat.openstack.common import log as logging
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
LOG = logging.getLogger(__name__)
|
||||
|
||||
DOCKER_INSTALLED = False
|
||||
# conditionally import so tests can work without having the dependency
|
||||
@ -329,5 +329,5 @@ def available_resource_mapping():
|
||||
if DOCKER_INSTALLED:
|
||||
return resource_mapping()
|
||||
else:
|
||||
logger.warn(_("Docker plug-in loaded, but docker lib not installed."))
|
||||
LOG.warn(_("Docker plug-in loaded, but docker lib not installed."))
|
||||
return {}
|
||||
|
@ -23,8 +23,8 @@ from heat.openstack.common.gettextutils import _
|
||||
from heat.openstack.common import importutils
|
||||
from heat.openstack.common import log as logging
|
||||
|
||||
logger = logging.getLogger('heat.common.keystoneclient')
|
||||
logger.info(_("Keystone V2 loaded"))
|
||||
LOG = logging.getLogger('heat.common.keystoneclient')
|
||||
LOG.info(_("Keystone V2 loaded"))
|
||||
|
||||
|
||||
class KeystoneClientV2(object):
|
||||
@ -86,8 +86,8 @@ class KeystoneClientV2(object):
|
||||
kwargs['tenant_name'] = self.context.tenant
|
||||
kwargs['tenant_id'] = self.context.tenant_id
|
||||
else:
|
||||
logger.error(_("Keystone v2 API connection failed, no password "
|
||||
"or auth_token!"))
|
||||
LOG.error(_("Keystone v2 API connection failed, no password "
|
||||
"or auth_token!"))
|
||||
raise exception.AuthorizationFailure()
|
||||
kwargs['cacert'] = self._get_client_option('ca_file')
|
||||
kwargs['insecure'] = self._get_client_option('insecure')
|
||||
@ -101,7 +101,7 @@ class KeystoneClientV2(object):
|
||||
if auth_kwargs:
|
||||
# Sanity check
|
||||
if not client.auth_ref.trust_scoped:
|
||||
logger.error(_("v2 trust token re-scoping failed!"))
|
||||
LOG.error(_("v2 trust token re-scoping failed!"))
|
||||
raise exception.AuthorizationFailure()
|
||||
# All OK so update the context with the token
|
||||
self.context.auth_token = client.auth_ref.auth_token
|
||||
@ -109,8 +109,8 @@ class KeystoneClientV2(object):
|
||||
# Ensure the v2 API we're using is not impacted by keystone
|
||||
# bug #1239303, otherwise we can't trust the user_id
|
||||
if self.context.trustor_user_id != client.auth_ref.user_id:
|
||||
logger.error("Trust impersonation failed, bug #1239303 "
|
||||
"suspected, you may need a newer keystone")
|
||||
LOG.error("Trust impersonation failed, bug #1239303 "
|
||||
"suspected, you may need a newer keystone")
|
||||
raise exception.AuthorizationFailure()
|
||||
|
||||
return client
|
||||
@ -146,8 +146,8 @@ class KeystoneClientV2(object):
|
||||
Returns the keystone ID of the resulting user
|
||||
"""
|
||||
if(len(username) > 64):
|
||||
logger.warning(_("Truncating the username %s to the last 64 "
|
||||
"characters.") % username)
|
||||
LOG.warning(_("Truncating the username %s to the last 64 "
|
||||
"characters.") % username)
|
||||
#get the last 64 characters of the username
|
||||
username = username[-64:]
|
||||
user = self.client.users.create(username,
|
||||
@ -165,13 +165,14 @@ class KeystoneClientV2(object):
|
||||
if r.name == cfg.CONF.heat_stack_user_role]
|
||||
if len(stack_user_role) == 1:
|
||||
role_id = stack_user_role[0]
|
||||
logger.debug("Adding user %(user)s to role %(role)s" % {
|
||||
'user': user.id, 'role': role_id})
|
||||
LOG.debug("Adding user %(user)s to role %(role)s"
|
||||
% {'user': user.id, 'role': role_id})
|
||||
self.client.roles.add_user_role(user.id, role_id,
|
||||
self.context.tenant_id)
|
||||
else:
|
||||
logger.error(_("Failed to add user %(user)s to role %(role)s, "
|
||||
"check role exists!") % {'user': username,
|
||||
LOG.error(_("Failed to add user %(user)s to role %(role)s, "
|
||||
"check role exists!")
|
||||
% {'user': username,
|
||||
'role': cfg.CONF.heat_stack_user_role})
|
||||
|
||||
return user.id
|
||||
|
@ -16,13 +16,13 @@
|
||||
from heat.engine import clients
|
||||
from heat.openstack.common import log as logging
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
LOG = logging.getLogger(__name__)
|
||||
|
||||
try:
|
||||
from marconiclient.queues.v1 import client as marconiclient
|
||||
except ImportError:
|
||||
marconiclient = None
|
||||
logger.info(_('marconiclient not available'))
|
||||
LOG.info(_('marconiclient not available'))
|
||||
|
||||
|
||||
class Clients(clients.OpenStackClients):
|
||||
@ -39,7 +39,7 @@ class Clients(clients.OpenStackClients):
|
||||
|
||||
con = self.context
|
||||
if self.auth_token is None:
|
||||
logger.error(_("Marconi connection failed, no auth_token!"))
|
||||
LOG.error(_("Marconi connection failed, no auth_token!"))
|
||||
return None
|
||||
|
||||
opts = {
|
||||
|
@ -18,7 +18,7 @@ from heat.engine import resource
|
||||
from heat.openstack.common.gettextutils import _
|
||||
from heat.openstack.common import log as logging
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
LOG = logging.getLogger(__name__)
|
||||
|
||||
|
||||
class NovaFlavor(resource.Resource):
|
||||
@ -102,7 +102,7 @@ class NovaFlavor(resource.Resource):
|
||||
try:
|
||||
self.nova().flavors.delete(self.resource_id)
|
||||
except nova_exceptions.NotFound:
|
||||
logger.debug(
|
||||
LOG.debug(
|
||||
_('Could not find flavor %s.') % self.resource_id)
|
||||
|
||||
self.resource_id_set(None)
|
||||
|
@ -20,23 +20,23 @@ from heat.engine import clients
|
||||
from heat.openstack.common.gettextutils import _
|
||||
from heat.openstack.common import log as logging
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
LOG = logging.getLogger(__name__)
|
||||
|
||||
try:
|
||||
import pyrax
|
||||
except ImportError:
|
||||
logger.info(_('pyrax not available'))
|
||||
LOG.info(_('pyrax not available'))
|
||||
|
||||
try:
|
||||
from swiftclient import client as swiftclient
|
||||
except ImportError:
|
||||
swiftclient = None
|
||||
logger.info(_('swiftclient not available'))
|
||||
LOG.info(_('swiftclient not available'))
|
||||
try:
|
||||
from ceilometerclient import client as ceilometerclient
|
||||
except ImportError:
|
||||
ceilometerclient = None
|
||||
logger.info(_('ceilometerclient not available'))
|
||||
LOG.info(_('ceilometerclient not available'))
|
||||
|
||||
cloud_opts = [
|
||||
cfg.StrOpt('region_name',
|
||||
@ -111,8 +111,7 @@ class Clients(clients.OpenStackClients):
|
||||
def __authenticate(self):
|
||||
pyrax.set_setting("identity_type", "keystone")
|
||||
pyrax.set_setting("auth_endpoint", self.context.auth_url)
|
||||
logger.info(_("Authenticating username:%s") %
|
||||
self.context.username)
|
||||
LOG.info(_("Authenticating username:%s") % self.context.username)
|
||||
self.pyrax = pyrax.auth_with_token(self.context.auth_token,
|
||||
tenant_id=self.context.tenant_id,
|
||||
tenant_name=self.context.tenant,
|
||||
@ -120,5 +119,5 @@ class Clients(clients.OpenStackClients):
|
||||
or None))
|
||||
if not self.pyrax:
|
||||
raise exception.AuthorizationFailure("No services available.")
|
||||
logger.info(_("User %s authenticated successfully.")
|
||||
% self.context.username)
|
||||
LOG.info(_("User %s authenticated successfully.")
|
||||
% self.context.username)
|
||||
|
@ -30,7 +30,7 @@ except ImportError:
|
||||
|
||||
PYRAX_INSTALLED = False
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
LOG = logging.getLogger(__name__)
|
||||
|
||||
|
||||
class CloudDns(resource.Resource):
|
||||
@ -153,7 +153,7 @@ class CloudDns(resource.Resource):
|
||||
"""Create a Rackspace CloudDns Instance."""
|
||||
# There is no check_create_complete as the pyrax create for DNS is
|
||||
# synchronous.
|
||||
logger.debug("CloudDns handle_create called.")
|
||||
LOG.debug("CloudDns handle_create called.")
|
||||
args = dict((k, v) for k, v in self.properties.items())
|
||||
for rec in args[self.RECORDS] or {}:
|
||||
# only pop the priority for the correct types
|
||||
@ -165,7 +165,7 @@ class CloudDns(resource.Resource):
|
||||
|
||||
def handle_update(self, json_snippet, tmpl_diff, prop_diff):
|
||||
"""Update a Rackspace CloudDns Instance."""
|
||||
logger.debug("CloudDns handle_update called.")
|
||||
LOG.debug("CloudDns handle_update called.")
|
||||
if not self.resource_id:
|
||||
raise exception.Error(_('Update called on a non-existent domain'))
|
||||
if prop_diff:
|
||||
@ -188,7 +188,7 @@ class CloudDns(resource.Resource):
|
||||
|
||||
def handle_delete(self):
|
||||
"""Delete a Rackspace CloudDns Instance."""
|
||||
logger.debug("CloudDns handle_delete called.")
|
||||
LOG.debug("CloudDns handle_delete called.")
|
||||
if self.resource_id:
|
||||
try:
|
||||
dom = self.cloud_dns().get(self.resource_id)
|
||||
|
@ -35,7 +35,7 @@ except ImportError:
|
||||
|
||||
PYRAX_INSTALLED = False
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
LOG = logging.getLogger(__name__)
|
||||
|
||||
|
||||
class LoadbalancerBuildError(exception.HeatException):
|
||||
@ -493,7 +493,7 @@ class CloudLoadBalancer(resource.Resource):
|
||||
|
||||
lb_name = (self.properties.get(self.NAME) or
|
||||
self.physical_resource_name())
|
||||
logger.debug("Creating loadbalancer: %s" % {lb_name: lb_body})
|
||||
LOG.debug("Creating loadbalancer: %s" % {lb_name: lb_body})
|
||||
loadbalancer = self.clb.create(lb_name, **lb_body)
|
||||
self.resource_id_set(str(loadbalancer.id))
|
||||
|
||||
@ -621,8 +621,8 @@ class CloudLoadBalancer(resource.Resource):
|
||||
raise exception.InvalidTemplateAttribute(resource=self.name,
|
||||
key=key)
|
||||
function = attribute_function[key]
|
||||
logger.info(_('%(name)s.GetAtt(%(key)s) == %(function)s'),
|
||||
{'name': self.name, 'key': key, 'function': function})
|
||||
LOG.info(_('%(name)s.GetAtt(%(key)s) == %(function)s'),
|
||||
{'name': self.name, 'key': key, 'function': function})
|
||||
return unicode(function)
|
||||
|
||||
|
||||
|
@ -28,7 +28,7 @@ try:
|
||||
except ImportError:
|
||||
PYRAX_INSTALLED = False
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
LOG = logging.getLogger(__name__)
|
||||
|
||||
|
||||
class CloudServer(server.Server):
|
||||
@ -131,12 +131,12 @@ class CloudServer(server.Server):
|
||||
self._managed_cloud_started_event_sent = True
|
||||
|
||||
if 'rax_service_level_automation' not in server.metadata:
|
||||
logger.debug("Managed Cloud server does not have the "
|
||||
"rax_service_level_automation metadata tag yet")
|
||||
LOG.debug("Managed Cloud server does not have the "
|
||||
"rax_service_level_automation metadata tag yet")
|
||||
return False
|
||||
|
||||
mc_status = server.metadata['rax_service_level_automation']
|
||||
logger.debug("Managed Cloud automation status: %s" % mc_status)
|
||||
LOG.debug("Managed Cloud automation status: %s" % mc_status)
|
||||
|
||||
if mc_status == self.MC_STATUS_IN_PROGRESS:
|
||||
return False
|
||||
@ -160,12 +160,12 @@ class CloudServer(server.Server):
|
||||
self._rack_connect_started_event_sent = True
|
||||
|
||||
if 'rackconnect_automation_status' not in server.metadata:
|
||||
logger.debug("RackConnect server does not have the "
|
||||
"rackconnect_automation_status metadata tag yet")
|
||||
LOG.debug("RackConnect server does not have the "
|
||||
"rackconnect_automation_status metadata tag yet")
|
||||
return False
|
||||
|
||||
rc_status = server.metadata['rackconnect_automation_status']
|
||||
logger.debug("RackConnect automation status: %s" % rc_status)
|
||||
LOG.debug("RackConnect automation status: %s" % rc_status)
|
||||
|
||||
if rc_status == self.RC_STATUS_DEPLOYING:
|
||||
return False
|
||||
@ -182,8 +182,7 @@ class CloudServer(server.Server):
|
||||
reason = server.metadata.get('rackconnect_unprocessable_reason',
|
||||
None)
|
||||
if reason is not None:
|
||||
logger.warning(_("RackConnect unprocessable reason: %s") %
|
||||
reason)
|
||||
LOG.warning(_("RackConnect unprocessable reason: %s") % reason)
|
||||
|
||||
msg = _("RackConnect automation has completed")
|
||||
self._add_event(self.action, self.status, msg)
|
||||
|
@ -35,7 +35,7 @@ else:
|
||||
def resource_mapping():
|
||||
return {'Rackspace::Cloud::Network': CloudNetwork}
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
LOG = logging.getLogger(__name__)
|
||||
|
||||
|
||||
class CloudNetwork(resource.Resource):
|
||||
@ -93,8 +93,8 @@ class CloudNetwork(resource.Resource):
|
||||
try:
|
||||
self._network = self.cloud_networks().get(self.resource_id)
|
||||
except NotFound:
|
||||
logger.warn(_("Could not find network %s but resource id "
|
||||
"is set.") % self.resource_id)
|
||||
LOG.warn(_("Could not find network %s but resource id is set.")
|
||||
% self.resource_id)
|
||||
return self._network
|
||||
|
||||
def cloud_networks(self):
|
||||
|
@ -28,7 +28,7 @@ from heat.openstack.common import log as logging
|
||||
|
||||
gettextutils.install('heat')
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
LOG = logging.getLogger(__name__)
|
||||
|
||||
|
||||
opts = [
|
||||
@ -125,10 +125,10 @@ class EC2Token(wsgi.Middleware):
|
||||
last_failure = None
|
||||
for auth_uri in self._conf_get('allowed_auth_uris'):
|
||||
try:
|
||||
logger.debug("Attempt authorize on %s" % auth_uri)
|
||||
LOG.debug("Attempt authorize on %s" % auth_uri)
|
||||
return self._authorize(req, auth_uri)
|
||||
except HeatAPIException as e:
|
||||
logger.debug("Authorize failed: %s" % e.__class__)
|
||||
LOG.debug("Authorize failed: %s" % e.__class__)
|
||||
last_failure = e
|
||||
raise last_failure or exception.HeatAccessDeniedError()
|
||||
|
||||
@ -138,14 +138,14 @@ class EC2Token(wsgi.Middleware):
|
||||
# here so that we can use both authentication methods.
|
||||
# Returning here just means the user didn't supply AWS
|
||||
# authentication and we'll let the app try native keystone next.
|
||||
logger.info(_("Checking AWS credentials.."))
|
||||
LOG.info(_("Checking AWS credentials.."))
|
||||
|
||||
signature = self._get_signature(req)
|
||||
if not signature:
|
||||
if 'X-Auth-User' in req.headers:
|
||||
return self.application
|
||||
else:
|
||||
logger.info(_("No AWS Signature found."))
|
||||
LOG.info(_("No AWS Signature found."))
|
||||
raise exception.HeatIncompleteSignatureError()
|
||||
|
||||
access = self._get_access(req)
|
||||
@ -153,14 +153,14 @@ class EC2Token(wsgi.Middleware):
|
||||
if 'X-Auth-User' in req.headers:
|
||||
return self.application
|
||||
else:
|
||||
logger.info(_("No AWSAccessKeyId/Authorization Credential"))
|
||||
LOG.info(_("No AWSAccessKeyId/Authorization Credential"))
|
||||
raise exception.HeatMissingAuthenticationTokenError()
|
||||
|
||||
logger.info(_("AWS credentials found, checking against keystone."))
|
||||
LOG.info(_("AWS credentials found, checking against keystone."))
|
||||
|
||||
if not auth_uri:
|
||||
logger.error(_("Ec2Token authorization failed, no auth_uri "
|
||||
"specified in config file"))
|
||||
LOG.error(_("Ec2Token authorization failed, no auth_uri "
|
||||
"specified in config file"))
|
||||
raise exception.HeatInternalFailureError(_('Service '
|
||||
'misconfigured'))
|
||||
# Make a copy of args for authentication and signature verification.
|
||||
@ -184,7 +184,7 @@ class EC2Token(wsgi.Middleware):
|
||||
headers = {'Content-Type': 'application/json'}
|
||||
|
||||
keystone_ec2_uri = self._conf_get_keystone_ec2_uri(auth_uri)
|
||||
logger.info(_('Authenticating with %s') % keystone_ec2_uri)
|
||||
LOG.info(_('Authenticating with %s') % keystone_ec2_uri)
|
||||
response = requests.post(keystone_ec2_uri, data=creds_json,
|
||||
headers=headers)
|
||||
result = response.json()
|
||||
@ -192,9 +192,9 @@ class EC2Token(wsgi.Middleware):
|
||||
token_id = result['access']['token']['id']
|
||||
tenant = result['access']['token']['tenant']['name']
|
||||
tenant_id = result['access']['token']['tenant']['id']
|
||||
logger.info(_("AWS authentication successful."))
|
||||
LOG.info(_("AWS authentication successful."))
|
||||
except (AttributeError, KeyError):
|
||||
logger.info(_("AWS authentication failure."))
|
||||
LOG.info(_("AWS authentication failure."))
|
||||
# Try to extract the reason for failure so we can return the
|
||||
# appropriate AWS error via raising an exception
|
||||
try:
|
||||
|
@ -31,7 +31,7 @@ from heat.openstack.common import log as logging
|
||||
from heat.rpc import api as engine_api
|
||||
from heat.rpc import client as rpc_client
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
LOG = logging.getLogger(__name__)
|
||||
|
||||
|
||||
class StackController(object):
|
||||
@ -246,11 +246,11 @@ class StackController(object):
|
||||
Get template file contents, either from local file or URL
|
||||
"""
|
||||
if 'TemplateBody' in req.params:
|
||||
logger.debug('TemplateBody ...')
|
||||
LOG.debug('TemplateBody ...')
|
||||
return req.params['TemplateBody']
|
||||
elif 'TemplateUrl' in req.params:
|
||||
url = req.params['TemplateUrl']
|
||||
logger.debug('TemplateUrl %s' % url)
|
||||
LOG.debug('TemplateUrl %s' % url)
|
||||
try:
|
||||
return urlfetch.get(url)
|
||||
except IOError as exc:
|
||||
@ -421,7 +421,7 @@ class StackController(object):
|
||||
msg = _("The Template must be a JSON or YAML document.")
|
||||
return exception.HeatInvalidParameterValueError(detail=msg)
|
||||
|
||||
logger.info('validate_template')
|
||||
LOG.info('validate_template')
|
||||
|
||||
def format_validate_parameter(key, value):
|
||||
"""
|
||||
|
@ -25,7 +25,7 @@ from heat.openstack.common.rpc import common as rpc_common
|
||||
from heat.rpc import api as engine_api
|
||||
from heat.rpc import client as rpc_client
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
LOG = logging.getLogger(__name__)
|
||||
|
||||
|
||||
class WatchController(object):
|
||||
@ -211,7 +211,7 @@ class WatchController(object):
|
||||
# Filter criteria not met, return None
|
||||
return
|
||||
except KeyError:
|
||||
logger.warning(_("Invalid filter key %s, ignoring") % f)
|
||||
LOG.warning(_("Invalid filter key %s, ignoring") % f)
|
||||
|
||||
return result
|
||||
|
||||
@ -220,7 +220,7 @@ class WatchController(object):
|
||||
# FIXME : Don't yet handle filtering by Dimensions
|
||||
filter_result = dict((k, v) for (k, v) in parms.iteritems() if k in
|
||||
("MetricName", "Namespace"))
|
||||
logger.debug("filter parameters : %s" % filter_result)
|
||||
LOG.debug("filter parameters : %s" % filter_result)
|
||||
|
||||
try:
|
||||
# Engine does not currently support query by namespace/metric
|
||||
@ -266,7 +266,7 @@ class WatchController(object):
|
||||
# need to process (each dict) for dimensions
|
||||
metric_data = api_utils.extract_param_list(parms, prefix='MetricData')
|
||||
if not len(metric_data):
|
||||
logger.error(_("Request does not contain required MetricData"))
|
||||
LOG.error(_("Request does not contain required MetricData"))
|
||||
return exception.HeatMissingParameterError("MetricData list")
|
||||
|
||||
watch_name = None
|
||||
@ -321,11 +321,11 @@ class WatchController(object):
|
||||
'expecting one of %(expect)s') % {
|
||||
'state': state,
|
||||
'expect': state_map.keys()}
|
||||
logger.error(msg)
|
||||
LOG.error(msg)
|
||||
return exception.HeatInvalidParameterValueError(msg)
|
||||
|
||||
logger.debug("setting %(name)s to %(state)s" % {
|
||||
'name': name, 'state': state_map[state]})
|
||||
LOG.debug("setting %(name)s to %(state)s" % {
|
||||
'name': name, 'state': state_map[state]})
|
||||
try:
|
||||
self.rpc_client.set_watch_state(con, watch_name=name,
|
||||
state=state_map[state])
|
||||
|
@ -25,7 +25,7 @@ from heat.common import wsgi
|
||||
from heat.openstack.common import log as logging
|
||||
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
LOG = logging.getLogger(__name__)
|
||||
|
||||
|
||||
class VersionNegotiationFilter(wsgi.Middleware):
|
||||
@ -48,7 +48,7 @@ class VersionNegotiationFilter(wsgi.Middleware):
|
||||
msg = ("Processing request: %(method)s %(path)s Accept: "
|
||||
"%(accept)s" % {'method': req.method,
|
||||
'path': req.path, 'accept': req.accept})
|
||||
logger.debug(msg)
|
||||
LOG.debug(msg)
|
||||
|
||||
# If the request is for /versions, just return the versions container
|
||||
if req.path_info_peek() in ("versions", ""):
|
||||
@ -60,19 +60,19 @@ class VersionNegotiationFilter(wsgi.Middleware):
|
||||
minor_version = req.environ['api.minor_version']
|
||||
|
||||
if (major_version == 1 and minor_version == 0):
|
||||
logger.debug("Matched versioned URI. "
|
||||
"Version: %(major_version)d.%(minor_version)d"
|
||||
% {'major_version': major_version,
|
||||
'minor_version': minor_version})
|
||||
LOG.debug("Matched versioned URI. "
|
||||
"Version: %(major_version)d.%(minor_version)d"
|
||||
% {'major_version': major_version,
|
||||
'minor_version': minor_version})
|
||||
# Strip the version from the path
|
||||
req.path_info_pop()
|
||||
return None
|
||||
else:
|
||||
logger.debug("Unknown version in versioned URI: "
|
||||
"%(major_version)d.%(minor_version)d. "
|
||||
"Returning version choices."
|
||||
% {'major_version': major_version,
|
||||
'minor_version': minor_version})
|
||||
LOG.debug("Unknown version in versioned URI: "
|
||||
"%(major_version)d.%(minor_version)d. "
|
||||
"Returning version choices."
|
||||
% {'major_version': major_version,
|
||||
'minor_version': minor_version})
|
||||
return self.versions_app
|
||||
|
||||
accept = str(req.accept)
|
||||
@ -84,22 +84,22 @@ class VersionNegotiationFilter(wsgi.Middleware):
|
||||
major_version = req.environ['api.major_version']
|
||||
minor_version = req.environ['api.minor_version']
|
||||
if (major_version == 1 and minor_version == 0):
|
||||
logger.debug("Matched versioned media type. Version: "
|
||||
"%(major_version)d.%(minor_version)d"
|
||||
% {'major_version': major_version,
|
||||
'minor_version': minor_version})
|
||||
LOG.debug("Matched versioned media type. Version: "
|
||||
"%(major_version)d.%(minor_version)d"
|
||||
% {'major_version': major_version,
|
||||
'minor_version': minor_version})
|
||||
return None
|
||||
else:
|
||||
logger.debug("Unknown version in accept header: "
|
||||
"%(major_version)d.%(minor_version)d..."
|
||||
"returning version choices."
|
||||
% {'major_version': major_version,
|
||||
'minor_version': minor_version})
|
||||
LOG.debug("Unknown version in accept header: "
|
||||
"%(major_version)d.%(minor_version)d..."
|
||||
"returning version choices."
|
||||
% {'major_version': major_version,
|
||||
'minor_version': minor_version})
|
||||
return self.versions_app
|
||||
else:
|
||||
if req.accept not in ('*/*', ''):
|
||||
logger.debug("Unknown accept header: %s..."
|
||||
"returning HTTP not found.", req.accept)
|
||||
LOG.debug("Unknown accept header: %s..."
|
||||
"returning HTTP not found.", req.accept)
|
||||
return webob.exc.HTTPNotFound()
|
||||
return None
|
||||
|
||||
|
@ -30,7 +30,7 @@ from heat.openstack.common import log as logging
|
||||
from heat.rpc import api as engine_api
|
||||
from heat.rpc import client as rpc_client
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
LOG = logging.getLogger(__name__)
|
||||
|
||||
|
||||
class InstantiationData(object):
|
||||
@ -94,7 +94,7 @@ class InstantiationData(object):
|
||||
return template_data
|
||||
elif self.PARAM_TEMPLATE_URL in self.data:
|
||||
url = self.data[self.PARAM_TEMPLATE_URL]
|
||||
logger.debug('TemplateUrl %s' % url)
|
||||
LOG.debug('TemplateUrl %s' % url)
|
||||
try:
|
||||
template_data = urlfetch.get(url)
|
||||
except IOError as ex:
|
||||
@ -188,7 +188,7 @@ class StackController(object):
|
||||
filters=filter_params,
|
||||
tenant_safe=tenant_safe)
|
||||
except AttributeError as exc:
|
||||
logger.warning(_("Old Engine Version: %s") % exc)
|
||||
LOG.warning(_("Old Engine Version: %s") % exc)
|
||||
|
||||
return stacks_view.collection(req, stacks=stacks, count=count,
|
||||
tenant_safe=tenant_safe)
|
||||
|
@ -25,7 +25,7 @@ from heat.common import wsgi
|
||||
from heat.openstack.common import log as logging
|
||||
from heat.openstack.common import rpc
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
LOG = logging.getLogger(__name__)
|
||||
|
||||
paste_deploy_group = cfg.OptGroup('paste_deploy')
|
||||
paste_deploy_opts = [
|
||||
@ -224,8 +224,8 @@ cfg.CONF.set_default(name='allowed_rpc_exception_modules',
|
||||
default=allowed_rpc_exception_modules)
|
||||
|
||||
if cfg.CONF.instance_user:
|
||||
logger.warn(_('The "instance_user" option in heat.conf is deprecated and '
|
||||
'will be removed in the Juno release.'))
|
||||
LOG.warn(_('The "instance_user" option in heat.conf is deprecated and '
|
||||
'will be removed in the Juno release.'))
|
||||
|
||||
|
||||
def _get_deployment_flavor():
|
||||
|
@ -29,7 +29,7 @@ from heat.openstack.common import log as logging
|
||||
_FATAL_EXCEPTION_FORMAT_ERRORS = False
|
||||
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
LOG = logging.getLogger(__name__)
|
||||
|
||||
|
||||
class RedirectException(Exception):
|
||||
@ -112,9 +112,9 @@ class HeatException(Exception):
|
||||
exc_info = sys.exc_info()
|
||||
#kwargs doesn't match a variable in the message
|
||||
#log the issue and the kwargs
|
||||
logger.exception(_('Exception in string format operation'))
|
||||
LOG.exception(_('Exception in string format operation'))
|
||||
for name, value in kwargs.iteritems():
|
||||
logger.error("%s: %s" % (name, value))
|
||||
LOG.error("%s: %s" % (name, value))
|
||||
|
||||
if _FATAL_EXCEPTION_FORMAT_ERRORS:
|
||||
raise exc_info[0], exc_info[1], exc_info[2]
|
||||
|
@ -27,7 +27,7 @@ from heat.openstack.common.gettextutils import _
|
||||
from heat.openstack.common import importutils
|
||||
from heat.openstack.common import log as logging
|
||||
|
||||
logger = logging.getLogger('heat.common.keystoneclient')
|
||||
LOG = logging.getLogger('heat.common.keystoneclient')
|
||||
|
||||
AccessKey = namedtuple('AccessKey', ['id', 'access', 'secret'])
|
||||
|
||||
@ -98,9 +98,9 @@ class KeystoneClientV3(object):
|
||||
' stack_domain_admin and'
|
||||
' stack_domain_admin_password'))
|
||||
else:
|
||||
logger.warning(_('stack_user_domain ID not set in heat.conf '
|
||||
'falling back to using default'))
|
||||
logger.debug('Using stack domain %s' % self.stack_domain_id)
|
||||
LOG.warning(_('stack_user_domain ID not set in heat.conf '
|
||||
'falling back to using default'))
|
||||
LOG.debug('Using stack domain %s' % self.stack_domain_id)
|
||||
|
||||
@property
|
||||
def client(self):
|
||||
@ -119,7 +119,7 @@ class KeystoneClientV3(object):
|
||||
if c.authenticate():
|
||||
self._admin_client = c
|
||||
else:
|
||||
logger.error("Admin client authentication failed")
|
||||
LOG.error("Admin client authentication failed")
|
||||
raise exception.AuthorizationFailure()
|
||||
return self._admin_client
|
||||
|
||||
@ -135,7 +135,7 @@ class KeystoneClientV3(object):
|
||||
if c.authenticate(domain_id=self.stack_domain_id):
|
||||
self._domain_admin_client = c
|
||||
else:
|
||||
logger.error("Domain admin client authentication failed")
|
||||
LOG.error("Domain admin client authentication failed")
|
||||
raise exception.AuthorizationFailure()
|
||||
return self._domain_admin_client
|
||||
|
||||
@ -160,8 +160,8 @@ class KeystoneClientV3(object):
|
||||
kwargs['password'] = self.context.password
|
||||
kwargs['project_id'] = self.context.tenant_id
|
||||
else:
|
||||
logger.error(_("Keystone v3 API connection failed, no password "
|
||||
"trust or auth_token!"))
|
||||
LOG.error(_("Keystone v3 API connection failed, no password "
|
||||
"trust or auth_token!"))
|
||||
raise exception.AuthorizationFailure()
|
||||
kwargs.update(self._ssl_options())
|
||||
client = kc_v3.Client(**kwargs)
|
||||
@ -171,14 +171,14 @@ class KeystoneClientV3(object):
|
||||
if 'trust_id' in kwargs:
|
||||
# Sanity check
|
||||
if not client.auth_ref.trust_scoped:
|
||||
logger.error(_("trust token re-scoping failed!"))
|
||||
LOG.error(_("trust token re-scoping failed!"))
|
||||
raise exception.AuthorizationFailure()
|
||||
# All OK so update the context with the token
|
||||
self.context.auth_token = client.auth_ref.auth_token
|
||||
self.context.auth_url = kwargs.get('auth_url')
|
||||
# Sanity check that impersonation is effective
|
||||
if self.context.trustor_user_id != client.auth_ref.user_id:
|
||||
logger.error("Trust impersonation failed")
|
||||
LOG.error("Trust impersonation failed")
|
||||
raise exception.AuthorizationFailure()
|
||||
|
||||
return client
|
||||
@ -260,8 +260,8 @@ class KeystoneClientV3(object):
|
||||
|
||||
def _get_username(self, username):
|
||||
if(len(username) > 64):
|
||||
logger.warning(_("Truncating the username %s to the last 64 "
|
||||
"characters.") % username)
|
||||
LOG.warning(_("Truncating the username %s to the last 64 "
|
||||
"characters.") % username)
|
||||
#get the last 64 characters of the username
|
||||
return username[-64:]
|
||||
|
||||
@ -296,15 +296,15 @@ class KeystoneClientV3(object):
|
||||
name=self._get_username(username), password=password,
|
||||
default_project=self.context.tenant_id)
|
||||
# Add user to heat_stack_user_role
|
||||
logger.debug("Adding user %(user)s to role %(role)s" % {
|
||||
'user': user.id, 'role': role_id})
|
||||
LOG.debug("Adding user %(user)s to role %(role)s" % {
|
||||
'user': user.id, 'role': role_id})
|
||||
self.client.roles.grant(role=role_id, user=user.id,
|
||||
project=self.context.tenant_id)
|
||||
else:
|
||||
logger.error(_("Failed to add user %(user)s to role %(role)s, "
|
||||
"check role exists!") % {
|
||||
'user': username,
|
||||
'role': cfg.CONF.heat_stack_user_role})
|
||||
LOG.error(_("Failed to add user %(user)s to role %(role)s, "
|
||||
"check role exists!") % {
|
||||
'user': username,
|
||||
'role': cfg.CONF.heat_stack_user_role})
|
||||
raise exception.Error(_("Can't find role %s")
|
||||
% cfg.CONF.heat_stack_user_role)
|
||||
|
||||
@ -323,8 +323,8 @@ class KeystoneClientV3(object):
|
||||
if not self.stack_domain_id:
|
||||
# FIXME(shardy): Legacy fallback for folks using old heat.conf
|
||||
# files which lack domain configuration
|
||||
logger.warning(_('Falling back to legacy non-domain user create, '
|
||||
'configure domain in heat.conf'))
|
||||
LOG.warning(_('Falling back to legacy non-domain user create, '
|
||||
'configure domain in heat.conf'))
|
||||
return self.create_stack_user(username=username, password=password)
|
||||
# We add the new user to a special keystone role
|
||||
# This role is designed to allow easier differentiation of the
|
||||
@ -338,13 +338,14 @@ class KeystoneClientV3(object):
|
||||
name=self._get_username(username), password=password,
|
||||
default_project=project_id, domain=self.stack_domain_id)
|
||||
# Add to stack user role
|
||||
logger.debug("Adding user %(user)s to role %(role)s" % {
|
||||
'user': user.id, 'role': role_id})
|
||||
LOG.debug("Adding user %(user)s to role %(role)s" % {
|
||||
'user': user.id, 'role': role_id})
|
||||
self.domain_admin_client.roles.grant(role=role_id, user=user.id,
|
||||
project=project_id)
|
||||
else:
|
||||
logger.error(_("Failed to add user %(user)s to role %(role)s, "
|
||||
"check role exists!") % {'user': username,
|
||||
LOG.error(_("Failed to add user %(user)s to role %(role)s, "
|
||||
"check role exists!")
|
||||
% {'user': username,
|
||||
'role': cfg.CONF.heat_stack_user_role})
|
||||
raise exception.Error(_("Can't find role %s")
|
||||
% cfg.CONF.heat_stack_user_role)
|
||||
@ -363,8 +364,8 @@ class KeystoneClientV3(object):
|
||||
if not self.stack_domain_id:
|
||||
# FIXME(shardy): Legacy fallback for folks using old heat.conf
|
||||
# files which lack domain configuration
|
||||
logger.warning(_('Falling back to legacy non-domain user delete, '
|
||||
'configure domain in heat.conf'))
|
||||
LOG.warning(_('Falling back to legacy non-domain user delete, '
|
||||
'configure domain in heat.conf'))
|
||||
return self.delete_stack_user(user_id)
|
||||
|
||||
try:
|
||||
@ -384,8 +385,8 @@ class KeystoneClientV3(object):
|
||||
if not self.stack_domain_id:
|
||||
# FIXME(shardy): Legacy fallback for folks using old heat.conf
|
||||
# files which lack domain configuration
|
||||
logger.warning(_('Falling back to legacy non-domain project, '
|
||||
'configure domain in heat.conf'))
|
||||
LOG.warning(_('Falling back to legacy non-domain project, '
|
||||
'configure domain in heat.conf'))
|
||||
return self.context.tenant_id
|
||||
# Note we use the tenant ID not name to ensure uniqueness in a multi-
|
||||
# domain environment (where the tenant name may not be globally unique)
|
||||
@ -401,8 +402,8 @@ class KeystoneClientV3(object):
|
||||
if not self.stack_domain_id:
|
||||
# FIXME(shardy): Legacy fallback for folks using old heat.conf
|
||||
# files which lack domain configuration
|
||||
logger.warning(_('Falling back to legacy non-domain project, '
|
||||
'configure domain in heat.conf'))
|
||||
LOG.warning(_('Falling back to legacy non-domain project, '
|
||||
'configure domain in heat.conf'))
|
||||
return
|
||||
try:
|
||||
self.domain_admin_client.projects.delete(project=project_id)
|
||||
@ -475,8 +476,8 @@ class KeystoneClientV3(object):
|
||||
if not self.stack_domain_id:
|
||||
# FIXME(shardy): Legacy fallback for folks using old heat.conf
|
||||
# files which lack domain configuration
|
||||
logger.warning(_('Falling back to legacy non-domain keypair, '
|
||||
'configure domain in heat.conf'))
|
||||
LOG.warning(_('Falling back to legacy non-domain keypair, '
|
||||
'configure domain in heat.conf'))
|
||||
return self.create_ec2_keypair(user_id)
|
||||
data_blob = {'access': uuid.uuid4().hex,
|
||||
'secret': uuid.uuid4().hex}
|
||||
@ -492,8 +493,8 @@ class KeystoneClientV3(object):
|
||||
if not self.stack_domain_id:
|
||||
# FIXME(shardy): Legacy fallback for folks using old heat.conf
|
||||
# files which lack domain configuration
|
||||
logger.warning(_('Falling back to legacy non-domain keypair, '
|
||||
'configure domain in heat.conf'))
|
||||
LOG.warning(_('Falling back to legacy non-domain keypair, '
|
||||
'configure domain in heat.conf'))
|
||||
return self.delete_ec2_keypair(credential_id=credential_id)
|
||||
self._check_stack_domain_user(user_id, project_id, 'delete_keypair')
|
||||
try:
|
||||
@ -511,8 +512,8 @@ class KeystoneClientV3(object):
|
||||
if not self.stack_domain_id:
|
||||
# FIXME(shardy): Legacy fallback for folks using old heat.conf
|
||||
# files which lack domain configuration
|
||||
logger.warning(_('Falling back to legacy non-domain disable, '
|
||||
'configure domain in heat.conf'))
|
||||
LOG.warning(_('Falling back to legacy non-domain disable, '
|
||||
'configure domain in heat.conf'))
|
||||
return self.disable_stack_user(user_id)
|
||||
self._check_stack_domain_user(user_id, project_id, 'disable')
|
||||
self.domain_admin_client.users.update(user=user_id, enabled=False)
|
||||
@ -521,8 +522,8 @@ class KeystoneClientV3(object):
|
||||
if not self.stack_domain_id:
|
||||
# FIXME(shardy): Legacy fallback for folks using old heat.conf
|
||||
# files which lack domain configuration
|
||||
logger.warning(_('Falling back to legacy non-domain enable, '
|
||||
'configure domain in heat.conf'))
|
||||
LOG.warning(_('Falling back to legacy non-domain enable, '
|
||||
'configure domain in heat.conf'))
|
||||
return self.enable_stack_user(user_id)
|
||||
self._check_stack_domain_user(user_id, project_id, 'enable')
|
||||
self.domain_admin_client.users.update(user=user_id, enabled=True)
|
||||
|
@ -23,7 +23,7 @@ from heat.openstack.common import importutils
|
||||
from heat.openstack.common import log as logging
|
||||
from heat.openstack.common import processutils
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
LOG = logging.getLogger(__name__)
|
||||
|
||||
|
||||
def startup_notify(notify_param):
|
||||
@ -35,6 +35,6 @@ def startup_notify(notify_param):
|
||||
try:
|
||||
processutils.execute(notify_param, shell=True)
|
||||
except Exception as e:
|
||||
logger.error(_('Failed to execute onready command: %s') % e)
|
||||
LOG.error(_('Failed to execute onready command: %s') % e)
|
||||
else:
|
||||
notifier.notify()
|
||||
|
@ -26,7 +26,7 @@ import types
|
||||
from heat.openstack.common.gettextutils import _
|
||||
from heat.openstack.common import log as logging
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
LOG = logging.getLogger(__name__)
|
||||
|
||||
|
||||
def _module_name(*components):
|
||||
@ -94,7 +94,7 @@ def load_modules(package, ignore_error=False):
|
||||
try:
|
||||
module = _import_module(importer, module_name, package)
|
||||
except ImportError:
|
||||
logger.error(_('Failed to import module %s') % module_name)
|
||||
LOG.error(_('Failed to import module %s') % module_name)
|
||||
if not ignore_error:
|
||||
raise
|
||||
else:
|
||||
|
@ -28,7 +28,7 @@ import six
|
||||
|
||||
from heat.openstack.common import log as logging
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
LOG = logging.getLogger(__name__)
|
||||
|
||||
|
||||
class JSONResponseSerializer(object):
|
||||
@ -40,7 +40,7 @@ class JSONResponseSerializer(object):
|
||||
return obj
|
||||
|
||||
response = json.dumps(data, default=sanitizer)
|
||||
logger.debug("JSON response : %s" % response)
|
||||
LOG.debug("JSON response : %s" % response)
|
||||
return response
|
||||
|
||||
def default(self, response, result):
|
||||
|
@ -23,7 +23,7 @@ import socket
|
||||
|
||||
from heat.openstack.common import log as logging
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
LOG = logging.getLogger(__name__)
|
||||
|
||||
|
||||
def _sd_notify(msg):
|
||||
@ -37,8 +37,8 @@ def _sd_notify(msg):
|
||||
sock.sendall(msg)
|
||||
sock.close()
|
||||
else:
|
||||
logger.warning(_('Unable to notify systemd of startup completion:'
|
||||
' NOTIFY_SOCKET not set'))
|
||||
LOG.warning(_('Unable to notify systemd of startup completion:'
|
||||
' NOTIFY_SOCKET not set'))
|
||||
|
||||
|
||||
def notify():
|
||||
|
@ -25,7 +25,7 @@ from heat.openstack.common import log as logging
|
||||
|
||||
cfg.CONF.import_opt('max_template_size', 'heat.common.config')
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
LOG = logging.getLogger(__name__)
|
||||
|
||||
|
||||
class URLFetchError(exception.Error, IOError):
|
||||
@ -40,7 +40,7 @@ def get(url, allowed_schemes=('http', 'https')):
|
||||
the allowed_schemes argument.
|
||||
Raise an IOError if getting the data fails.
|
||||
"""
|
||||
logger.info(_('Fetching data from %s') % url)
|
||||
LOG.info(_('Fetching data from %s') % url)
|
||||
|
||||
components = urllib.parse.urlparse(url)
|
||||
|
||||
|
@ -164,12 +164,12 @@ cfg.CONF.register_opt(json_size_opt)
|
||||
class WritableLogger(object):
|
||||
"""A thin wrapper that responds to `write` and logs."""
|
||||
|
||||
def __init__(self, logger, level=logging.DEBUG):
|
||||
self.logger = logger
|
||||
def __init__(self, LOG, level=logging.DEBUG):
|
||||
self.LOG = LOG
|
||||
self.level = level
|
||||
|
||||
def write(self, msg):
|
||||
self.logger.log(self.level, msg.strip("\n"))
|
||||
self.LOG.log(self.level, msg.strip("\n"))
|
||||
|
||||
|
||||
def get_bind_addr(conf, default_port=None):
|
||||
@ -252,7 +252,7 @@ class Server(object):
|
||||
"""
|
||||
def kill_children(*args):
|
||||
"""Kills the entire process group."""
|
||||
self.logger.error(_('SIGTERM received'))
|
||||
self.LOG.error(_('SIGTERM received'))
|
||||
signal.signal(signal.SIGTERM, signal.SIG_IGN)
|
||||
self.running = False
|
||||
os.killpg(0, signal.SIGTERM)
|
||||
@ -261,7 +261,7 @@ class Server(object):
|
||||
"""
|
||||
Shuts down the server, but allows running requests to complete
|
||||
"""
|
||||
self.logger.error(_('SIGHUP received'))
|
||||
self.LOG.error(_('SIGHUP received'))
|
||||
signal.signal(signal.SIGHUP, signal.SIG_IGN)
|
||||
self.running = False
|
||||
|
||||
@ -269,7 +269,7 @@ class Server(object):
|
||||
self.application = application
|
||||
self.sock = get_socket(conf, default_port)
|
||||
|
||||
self.logger = logging.getLogger('eventlet.wsgi.server')
|
||||
self.LOG = logging.getLogger('eventlet.wsgi.server')
|
||||
|
||||
if conf.workers == 0:
|
||||
# Useful for profiling, test, debug etc.
|
||||
@ -277,7 +277,7 @@ class Server(object):
|
||||
self.pool.spawn_n(self._single_run, application, self.sock)
|
||||
return
|
||||
|
||||
self.logger.info(_("Starting %d workers") % conf.workers)
|
||||
self.LOG.info(_("Starting %d workers") % conf.workers)
|
||||
signal.signal(signal.SIGTERM, kill_children)
|
||||
signal.signal(signal.SIGHUP, hup)
|
||||
while len(self.children) < conf.workers:
|
||||
@ -288,18 +288,18 @@ class Server(object):
|
||||
try:
|
||||
pid, status = os.wait()
|
||||
if os.WIFEXITED(status) or os.WIFSIGNALED(status):
|
||||
self.logger.error(_('Removing dead child %s') % pid)
|
||||
self.LOG.error(_('Removing dead child %s') % pid)
|
||||
self.children.remove(pid)
|
||||
self.run_child()
|
||||
except OSError as err:
|
||||
if err.errno not in (errno.EINTR, errno.ECHILD):
|
||||
raise
|
||||
except KeyboardInterrupt:
|
||||
self.logger.info(_('Caught keyboard interrupt. Exiting.'))
|
||||
self.LOG.info(_('Caught keyboard interrupt. Exiting.'))
|
||||
break
|
||||
eventlet.greenio.shutdown_safe(self.sock)
|
||||
self.sock.close()
|
||||
self.logger.debug('Exited')
|
||||
self.LOG.debug('Exited')
|
||||
|
||||
def wait(self):
|
||||
"""Wait until all servers have completed running."""
|
||||
@ -317,10 +317,10 @@ class Server(object):
|
||||
signal.signal(signal.SIGHUP, signal.SIG_DFL)
|
||||
signal.signal(signal.SIGTERM, signal.SIG_DFL)
|
||||
self.run_server()
|
||||
self.logger.info(_('Child %d exiting normally') % os.getpid())
|
||||
self.LOG.info(_('Child %d exiting normally') % os.getpid())
|
||||
return
|
||||
else:
|
||||
self.logger.info(_('Started child %s') % pid)
|
||||
self.LOG.info(_('Started child %s') % pid)
|
||||
self.children.append(pid)
|
||||
|
||||
def run_server(self):
|
||||
@ -334,7 +334,7 @@ class Server(object):
|
||||
self.application,
|
||||
custom_pool=self.pool,
|
||||
url_length_limit=URL_LENGTH_LIMIT,
|
||||
log=WritableLogger(self.logger),
|
||||
log=WritableLogger(self.LOG),
|
||||
debug=cfg.CONF.debug)
|
||||
except socket.error as err:
|
||||
if err[0] != errno.EINVAL:
|
||||
@ -343,11 +343,11 @@ class Server(object):
|
||||
|
||||
def _single_run(self, application, sock):
|
||||
"""Start a WSGI server in a new green thread."""
|
||||
self.logger.info(_("Starting single process server"))
|
||||
self.LOG.info(_("Starting single process server"))
|
||||
eventlet.wsgi.server(sock, application,
|
||||
custom_pool=self.pool,
|
||||
url_length_limit=URL_LENGTH_LIMIT,
|
||||
log=WritableLogger(self.logger))
|
||||
log=WritableLogger(self.LOG))
|
||||
|
||||
|
||||
class Middleware(object):
|
||||
|
@ -19,7 +19,7 @@ from heat.openstack.common import log as logging
|
||||
from heat.openstack.common import timeutils
|
||||
from heat.rpc import api
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
LOG = logging.getLogger(__name__)
|
||||
|
||||
|
||||
def extract_args(params):
|
||||
@ -34,7 +34,7 @@ def extract_args(params):
|
||||
try:
|
||||
timeout = int(timeout_mins)
|
||||
except (ValueError, TypeError):
|
||||
logger.exception(_('Timeout conversion failed'))
|
||||
LOG.exception(_('Timeout conversion failed'))
|
||||
else:
|
||||
if timeout > 0:
|
||||
kwargs[api.PARAM_TIMEOUT] = timeout
|
||||
@ -234,7 +234,7 @@ def format_watch_data(wd):
|
||||
if len(metric) == 1:
|
||||
metric_name, metric_data = metric[0]
|
||||
else:
|
||||
logger.error(_("Unexpected number of keys in watch_data.data!"))
|
||||
LOG.error(_("Unexpected number of keys in watch_data.data!"))
|
||||
return
|
||||
|
||||
result = {
|
||||
|
@ -21,42 +21,42 @@ from heat.openstack.common.gettextutils import _
|
||||
from heat.openstack.common import importutils
|
||||
from heat.openstack.common import log as logging
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
LOG = logging.getLogger(__name__)
|
||||
|
||||
|
||||
try:
|
||||
from swiftclient import client as swiftclient
|
||||
except ImportError:
|
||||
swiftclient = None
|
||||
logger.info(_('swiftclient not available'))
|
||||
LOG.info(_('swiftclient not available'))
|
||||
try:
|
||||
from neutronclient.v2_0 import client as neutronclient
|
||||
except ImportError:
|
||||
neutronclient = None
|
||||
logger.info(_('neutronclient not available'))
|
||||
LOG.info(_('neutronclient not available'))
|
||||
try:
|
||||
from cinderclient import client as cinderclient
|
||||
except ImportError:
|
||||
cinderclient = None
|
||||
logger.info(_('cinderclient not available'))
|
||||
LOG.info(_('cinderclient not available'))
|
||||
|
||||
try:
|
||||
from troveclient import client as troveclient
|
||||
except ImportError:
|
||||
troveclient = None
|
||||
logger.info(_('troveclient not available'))
|
||||
LOG.info(_('troveclient not available'))
|
||||
|
||||
try:
|
||||
from ceilometerclient import client as ceilometerclient
|
||||
except ImportError:
|
||||
ceilometerclient = None
|
||||
logger.info(_('ceilometerclient not available'))
|
||||
LOG.info(_('ceilometerclient not available'))
|
||||
|
||||
try:
|
||||
from glanceclient import client as glanceclient
|
||||
except ImportError:
|
||||
glanceclient = None
|
||||
logger.info(_('glanceclient not available'))
|
||||
LOG.info(_('glanceclient not available'))
|
||||
|
||||
_default_backend = "heat.engine.clients.OpenStackClients"
|
||||
|
||||
@ -188,7 +188,7 @@ class OpenStackClients(object):
|
||||
|
||||
con = self.context
|
||||
if self.auth_token is None:
|
||||
logger.error(_("Neutron connection failed, no auth_token!"))
|
||||
LOG.error(_("Neutron connection failed, no auth_token!"))
|
||||
return None
|
||||
|
||||
endpoint_type = self._get_client_option('neutron', 'endpoint_type')
|
||||
|
@ -19,7 +19,7 @@ from heat.db import api as db_api
|
||||
from heat.openstack.common.gettextutils import _
|
||||
from heat.openstack.common import log as logging
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
LOG = logging.getLogger(__name__)
|
||||
|
||||
|
||||
class Event(object):
|
||||
@ -88,7 +88,7 @@ class Event(object):
|
||||
ev['created_at'] = self.timestamp
|
||||
|
||||
if self.id is not None:
|
||||
logger.warning(_('Duplicating event'))
|
||||
LOG.warning(_('Duplicating event'))
|
||||
|
||||
new_ev = db_api.event_create(self.context, ev)
|
||||
self.id = new_ev.id
|
||||
|
@ -15,7 +15,7 @@ from heat.common.exception import StackValidationFailed
|
||||
from heat.openstack.common.gettextutils import _
|
||||
from heat.openstack.common import log as logging
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
LOG = logging.getLogger(__name__)
|
||||
|
||||
PARAMETER_GROUPS = 'parameter_groups'
|
||||
PARAMETERS = 'parameters'
|
||||
@ -28,8 +28,8 @@ class ParameterGroups(object):
|
||||
def __init__(self, tmpl):
|
||||
self.tmpl = tmpl
|
||||
self.parameters = tmpl.parameters(None, {})
|
||||
logger.debug(self.tmpl)
|
||||
logger.debug(self.parameters)
|
||||
LOG.debug(self.tmpl)
|
||||
LOG.debug(self.parameters)
|
||||
self.parameter_names = []
|
||||
if self.parameters:
|
||||
self.parameter_names = [param for param in self.parameters]
|
||||
@ -40,8 +40,8 @@ class ParameterGroups(object):
|
||||
Validate that a parameter belongs to only one Parameter Group
|
||||
and that each parameter name references a valid parameter.
|
||||
'''
|
||||
logger.debug('Validating Parameter Groups.')
|
||||
logger.debug(self.parameter_names)
|
||||
LOG.debug('Validating Parameter Groups.')
|
||||
LOG.debug(self.parameter_names)
|
||||
if self.parameter_groups is not None:
|
||||
#Loop through groups and validate parameters
|
||||
grouped_parameters = []
|
||||
|
@ -39,7 +39,7 @@ from heat.openstack.common.gettextutils import _
|
||||
from heat.openstack.common import log as logging
|
||||
from heat.openstack.common import strutils
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
LOG = logging.getLogger(__name__)
|
||||
|
||||
|
||||
class Stack(collections.Mapping):
|
||||
@ -176,7 +176,7 @@ class Stack(collections.Mapping):
|
||||
via the Parameters class as the StackId pseudo parameter
|
||||
'''
|
||||
if not self.parameters.set_stack_id(self.identifier()):
|
||||
logger.warning(_("Unable to set parameters StackId identifier"))
|
||||
LOG.warning(_("Unable to set parameters StackId identifier"))
|
||||
|
||||
@staticmethod
|
||||
def _get_dependencies(resources):
|
||||
@ -363,7 +363,7 @@ class Stack(collections.Mapping):
|
||||
dup_names = set(self.parameters.keys()) & set(self.keys())
|
||||
|
||||
if dup_names:
|
||||
logger.debug("Duplicate names %s" % dup_names)
|
||||
LOG.debug("Duplicate names %s" % dup_names)
|
||||
raise StackValidationFailed(message=_("Duplicate names %s") %
|
||||
dup_names)
|
||||
|
||||
@ -371,10 +371,10 @@ class Stack(collections.Mapping):
|
||||
try:
|
||||
result = res.validate()
|
||||
except exception.HeatException as ex:
|
||||
logger.exception(ex)
|
||||
LOG.exception(ex)
|
||||
raise ex
|
||||
except Exception as ex:
|
||||
logger.exception(ex)
|
||||
LOG.exception(ex)
|
||||
raise StackValidationFailed(message=strutils.safe_decode(
|
||||
six.text_type(ex)))
|
||||
if result:
|
||||
@ -417,10 +417,10 @@ class Stack(collections.Mapping):
|
||||
'status': status,
|
||||
'status_reason': reason})
|
||||
msg = _('Stack %(action)s %(status)s (%(name)s): %(reason)s')
|
||||
logger.info(msg % {'action': action,
|
||||
'status': status,
|
||||
'name': self.name,
|
||||
'reason': reason})
|
||||
LOG.info(msg % {'action': action,
|
||||
'status': status,
|
||||
'name': self.name,
|
||||
'reason': reason})
|
||||
notification.send(self)
|
||||
|
||||
@property
|
||||
@ -516,7 +516,7 @@ class Stack(collections.Mapping):
|
||||
self._backup_name(),
|
||||
owner_id=self.id)
|
||||
if s is not None:
|
||||
logger.debug('Loaded existing backup stack')
|
||||
LOG.debug('Loaded existing backup stack')
|
||||
return self.load(self.context, stack=s)
|
||||
elif create_if_missing:
|
||||
templ = Template.load(self.context, self.t.id)
|
||||
@ -524,7 +524,7 @@ class Stack(collections.Mapping):
|
||||
prev = type(self)(self.context, self.name, templ, self.env,
|
||||
owner_id=self.id)
|
||||
prev.store(backup=True)
|
||||
logger.debug('Created new backup stack')
|
||||
LOG.debug('Created new backup stack')
|
||||
return prev
|
||||
else:
|
||||
return None
|
||||
@ -564,8 +564,7 @@ class Stack(collections.Mapping):
|
||||
@scheduler.wrappertask
|
||||
def update_task(self, newstack, action=UPDATE):
|
||||
if action not in (self.UPDATE, self.ROLLBACK):
|
||||
logger.error(_("Unexpected action %s passed to update!") %
|
||||
action)
|
||||
LOG.error(_("Unexpected action %s passed to update!") % action)
|
||||
self.state_set(self.UPDATE, self.FAILED,
|
||||
"Invalid action %s" % action)
|
||||
return
|
||||
@ -573,7 +572,7 @@ class Stack(collections.Mapping):
|
||||
if self.status != self.COMPLETE:
|
||||
if (action == self.ROLLBACK and
|
||||
self.state == (self.UPDATE, self.IN_PROGRESS)):
|
||||
logger.debug("Starting update rollback for %s" % self.name)
|
||||
LOG.debug("Starting update rollback for %s" % self.name)
|
||||
else:
|
||||
self.state_set(action, self.FAILED,
|
||||
'State invalid for %s' % action)
|
||||
@ -624,7 +623,7 @@ class Stack(collections.Mapping):
|
||||
yield self.update_task(oldstack, action=self.ROLLBACK)
|
||||
return
|
||||
else:
|
||||
logger.debug('Deleting backup stack')
|
||||
LOG.debug('Deleting backup stack')
|
||||
backup_stack.delete(backup=True)
|
||||
|
||||
# flip the template to the newstack values
|
||||
@ -653,7 +652,7 @@ class Stack(collections.Mapping):
|
||||
differently.
|
||||
'''
|
||||
if action not in (self.DELETE, self.ROLLBACK):
|
||||
logger.error(_("Unexpected action %s passed to delete!") % action)
|
||||
LOG.error(_("Unexpected action %s passed to delete!") % action)
|
||||
self.state_set(self.DELETE, self.FAILED,
|
||||
"Invalid action %s" % action)
|
||||
return
|
||||
@ -729,7 +728,7 @@ class Stack(collections.Mapping):
|
||||
try:
|
||||
self.clients.keystone().delete_trust(trust_id)
|
||||
except Exception as ex:
|
||||
logger.exception(ex)
|
||||
LOG.exception(ex)
|
||||
stack_status = self.FAILED
|
||||
reason = "Error deleting trust: %s" % six.text_type(ex)
|
||||
|
||||
@ -744,7 +743,7 @@ class Stack(collections.Mapping):
|
||||
self.clients.keystone().delete_stack_domain_project(
|
||||
project_id=self.stack_user_project_id)
|
||||
except Exception as ex:
|
||||
logger.exception(ex)
|
||||
LOG.exception(ex)
|
||||
stack_status = self.FAILED
|
||||
reason = "Error deleting project: %s" % six.text_type(ex)
|
||||
|
||||
@ -766,7 +765,7 @@ class Stack(collections.Mapping):
|
||||
'''
|
||||
# No need to suspend if the stack has been suspended
|
||||
if self.state == (self.SUSPEND, self.COMPLETE):
|
||||
logger.info(_('%s is already suspended') % str(self))
|
||||
LOG.info(_('%s is already suspended') % str(self))
|
||||
return
|
||||
|
||||
sus_task = scheduler.TaskRunner(self.stack_task,
|
||||
@ -785,7 +784,7 @@ class Stack(collections.Mapping):
|
||||
'''
|
||||
# No need to resume if the stack has been resumed
|
||||
if self.state == (self.RESUME, self.COMPLETE):
|
||||
logger.info(_('%s is already resumed') % str(self))
|
||||
LOG.info(_('%s is already resumed') % str(self))
|
||||
return
|
||||
|
||||
sus_task = scheduler.TaskRunner(self.stack_task,
|
||||
@ -816,7 +815,7 @@ class Stack(collections.Mapping):
|
||||
scheduler.TaskRunner(res.destroy)()
|
||||
except exception.ResourceFailure as ex:
|
||||
failed = True
|
||||
logger.error(_('delete: %s') % ex)
|
||||
LOG.error(_('delete: %s') % ex)
|
||||
|
||||
for res in deps:
|
||||
if not failed:
|
||||
@ -824,7 +823,7 @@ class Stack(collections.Mapping):
|
||||
res.state_reset()
|
||||
scheduler.TaskRunner(res.create)()
|
||||
except exception.ResourceFailure as ex:
|
||||
logger.exception(_('create'))
|
||||
LOG.exception(_('create'))
|
||||
failed = True
|
||||
else:
|
||||
res.state_set(res.CREATE, res.FAILED,
|
||||
|
@ -21,7 +21,7 @@ from oslo.config import cfg
|
||||
from heat.common import plugin_loader
|
||||
from heat.openstack.common import log
|
||||
|
||||
logger = log.getLogger(__name__)
|
||||
LOG = log.getLogger(__name__)
|
||||
|
||||
|
||||
class PluginManager(object):
|
||||
@ -93,15 +93,15 @@ class PluginMapping(object):
|
||||
try:
|
||||
mapping_dict = mapping_func(*self.args, **self.kwargs)
|
||||
except Exception:
|
||||
logger.error(_('Failed to load %(mapping_name)s '
|
||||
'from %(module)s') % fmt_data)
|
||||
LOG.error(_('Failed to load %(mapping_name)s '
|
||||
'from %(module)s') % fmt_data)
|
||||
raise
|
||||
else:
|
||||
if isinstance(mapping_dict, collections.Mapping):
|
||||
return mapping_dict
|
||||
elif mapping_dict is not None:
|
||||
logger.error(_('Invalid type for %(mapping_name)s '
|
||||
'from %(module)s') % fmt_data)
|
||||
LOG.error(_('Invalid type for %(mapping_name)s '
|
||||
'from %(module)s') % fmt_data)
|
||||
|
||||
return {}
|
||||
|
||||
|
@ -32,7 +32,7 @@ from heat.openstack.common import excutils
|
||||
from heat.openstack.common.gettextutils import _
|
||||
from heat.openstack.common import log as logging
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
LOG = logging.getLogger(__name__)
|
||||
|
||||
DELETION_POLICY = (DELETE, RETAIN, SNAPSHOT) = ('Delete', 'Retain', 'Snapshot')
|
||||
|
||||
@ -386,7 +386,7 @@ class Resource(object):
|
||||
while not check(handle_data):
|
||||
yield
|
||||
except Exception as ex:
|
||||
logger.exception('%s : %s' % (action, str(self)))
|
||||
LOG.exception('%s : %s' % (action, str(self)))
|
||||
failure = exception.ResourceFailure(ex, self, action)
|
||||
self.state_set(action, self.FAILED, six.text_type(failure))
|
||||
raise failure
|
||||
@ -396,7 +396,7 @@ class Resource(object):
|
||||
self.state_set(action, self.FAILED,
|
||||
'%s aborted' % action)
|
||||
except Exception:
|
||||
logger.exception(_('Error marking resource as failed'))
|
||||
LOG.exception(_('Error marking resource as failed'))
|
||||
else:
|
||||
self.state_set(action, self.COMPLETE)
|
||||
|
||||
@ -420,7 +420,7 @@ class Resource(object):
|
||||
% str(self.state))
|
||||
raise exception.ResourceFailure(exc, self, action)
|
||||
|
||||
logger.info('creating %s' % str(self))
|
||||
LOG.info('creating %s' % str(self))
|
||||
|
||||
# Re-resolve the template, since if the resource Ref's
|
||||
# the StackId pseudo parameter, it will change after
|
||||
@ -501,7 +501,7 @@ class Resource(object):
|
||||
exc = Exception(_('Resource update already requested'))
|
||||
raise exception.ResourceFailure(exc, self, action)
|
||||
|
||||
logger.info('updating %s' % str(self))
|
||||
LOG.info('updating %s' % str(self))
|
||||
|
||||
try:
|
||||
self.updated_time = datetime.utcnow()
|
||||
@ -529,11 +529,11 @@ class Resource(object):
|
||||
yield
|
||||
except UpdateReplace:
|
||||
with excutils.save_and_reraise_exception():
|
||||
logger.debug("Resource %s update requires replacement" %
|
||||
self.name)
|
||||
LOG.debug("Resource %s update requires replacement" %
|
||||
self.name)
|
||||
except Exception as ex:
|
||||
logger.exception(_('update %(resource)s : %(err)s') %
|
||||
{'resource': str(self), 'err': ex})
|
||||
LOG.exception(_('update %(resource)s : %(err)s') %
|
||||
{'resource': str(self), 'err': ex})
|
||||
failure = exception.ResourceFailure(ex, self, action)
|
||||
self.state_set(action, self.FAILED, six.text_type(failure))
|
||||
raise failure
|
||||
@ -555,7 +555,7 @@ class Resource(object):
|
||||
% str(self.state))
|
||||
raise exception.ResourceFailure(exc, self, action)
|
||||
|
||||
logger.info(_('suspending %s') % str(self))
|
||||
LOG.info(_('suspending %s') % str(self))
|
||||
return self._do_action(action)
|
||||
|
||||
def resume(self):
|
||||
@ -571,7 +571,7 @@ class Resource(object):
|
||||
% str(self.state))
|
||||
raise exception.ResourceFailure(exc, self, action)
|
||||
|
||||
logger.info(_('resuming %s') % str(self))
|
||||
LOG.info(_('resuming %s') % str(self))
|
||||
return self._do_action(action)
|
||||
|
||||
def physical_resource_name(self):
|
||||
@ -613,7 +613,7 @@ class Resource(object):
|
||||
return name[0:2] + '-' + name[-postfix_length:]
|
||||
|
||||
def validate(self):
|
||||
logger.info(_('Validating %s') % str(self))
|
||||
LOG.info(_('Validating %s') % str(self))
|
||||
|
||||
function.validate(self.t)
|
||||
self.validate_deletion_policy(self.t)
|
||||
@ -645,7 +645,7 @@ class Resource(object):
|
||||
|
||||
initial_state = self.state
|
||||
|
||||
logger.info(_('deleting %s') % str(self))
|
||||
LOG.info(_('deleting %s') % str(self))
|
||||
|
||||
try:
|
||||
self.state_set(action, self.IN_PROGRESS)
|
||||
@ -670,7 +670,7 @@ class Resource(object):
|
||||
yield
|
||||
|
||||
except Exception as ex:
|
||||
logger.exception(_('Delete %s') % str(self))
|
||||
LOG.exception(_('Delete %s') % str(self))
|
||||
failure = exception.ResourceFailure(ex, self, self.action)
|
||||
self.state_set(action, self.FAILED, six.text_type(failure))
|
||||
raise failure
|
||||
@ -680,8 +680,7 @@ class Resource(object):
|
||||
self.state_set(action, self.FAILED,
|
||||
'Deletion aborted')
|
||||
except Exception:
|
||||
logger.exception(_('Error marking resource deletion '
|
||||
'failed'))
|
||||
LOG.exception(_('Error marking resource deletion failed'))
|
||||
else:
|
||||
self.state_set(action, self.COMPLETE)
|
||||
|
||||
@ -711,7 +710,7 @@ class Resource(object):
|
||||
rs = db_api.resource_get(self.context, self.id)
|
||||
rs.update_and_save({'nova_instance': self.resource_id})
|
||||
except Exception as ex:
|
||||
logger.warn(_('db error %s') % ex)
|
||||
LOG.warn(_('db error %s') % ex)
|
||||
|
||||
def _store(self):
|
||||
'''Create the resource in the database.'''
|
||||
@ -731,7 +730,7 @@ class Resource(object):
|
||||
self.created_time = new_rs.created_at
|
||||
self._rsrc_metadata = metadata
|
||||
except Exception as ex:
|
||||
logger.error(_('DB error %s') % ex)
|
||||
LOG.error(_('DB error %s') % ex)
|
||||
|
||||
def _add_event(self, action, status, reason):
|
||||
'''Add a state change event to the database.'''
|
||||
@ -756,7 +755,7 @@ class Resource(object):
|
||||
'updated_at': self.updated_time,
|
||||
'nova_instance': self.resource_id})
|
||||
except Exception as ex:
|
||||
logger.error(_('DB error %s') % ex)
|
||||
LOG.error(_('DB error %s') % ex)
|
||||
|
||||
# store resource in DB on transition to CREATE_IN_PROGRESS
|
||||
# all other transitions (other than to DELETE_COMPLETE)
|
||||
@ -874,8 +873,8 @@ class Resource(object):
|
||||
self._add_event('signal', self.status, get_string_details())
|
||||
self.handle_signal(details)
|
||||
except Exception as ex:
|
||||
logger.exception(_('signal %(name)s : %(msg)s') %
|
||||
{'name': str(self), 'msg': ex})
|
||||
LOG.exception(_('signal %(name)s : %(msg)s') % {'name': str(self),
|
||||
'msg': ex})
|
||||
failure = exception.ResourceFailure(ex, self)
|
||||
raise failure
|
||||
|
||||
@ -888,8 +887,8 @@ class Resource(object):
|
||||
No-op for resources which don't explicitly override this method
|
||||
'''
|
||||
if new_metadata:
|
||||
logger.warning(_("Resource %s does not implement metadata update")
|
||||
% self.name)
|
||||
LOG.warning(_("Resource %s does not implement metadata update")
|
||||
% self.name)
|
||||
|
||||
@classmethod
|
||||
def resource_to_template(cls, resource_type):
|
||||
|
@ -35,7 +35,7 @@ from heat.openstack.common import log as logging
|
||||
from heat.openstack.common import timeutils
|
||||
from heat.scaling import template
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
LOG = logging.getLogger(__name__)
|
||||
|
||||
|
||||
(SCALED_RESOURCE_TYPE,) = ('OS::Heat::ScaledResource',)
|
||||
@ -632,10 +632,10 @@ class AutoScalingGroup(InstanceGroup, CooldownMixin):
|
||||
Adjust the size of the scaling group if the cooldown permits.
|
||||
"""
|
||||
if self._cooldown_inprogress():
|
||||
logger.info(_("%(name)s NOT performing scaling adjustment, "
|
||||
"cooldown %(cooldown)s") % {
|
||||
'name': self.name,
|
||||
'cooldown': self.properties[self.COOLDOWN]})
|
||||
LOG.info(_("%(name)s NOT performing scaling adjustment, "
|
||||
"cooldown %(cooldown)s")
|
||||
% {'name': self.name,
|
||||
'cooldown': self.properties[self.COOLDOWN]})
|
||||
return
|
||||
|
||||
capacity = len(self.get_instances())
|
||||
@ -659,21 +659,21 @@ class AutoScalingGroup(InstanceGroup, CooldownMixin):
|
||||
|
||||
if new_capacity > upper:
|
||||
if upper > capacity:
|
||||
logger.info(_('truncating growth to %s') % upper)
|
||||
LOG.info(_('truncating growth to %s') % upper)
|
||||
new_capacity = upper
|
||||
else:
|
||||
logger.warn(_('can not exceed %s') % upper)
|
||||
LOG.warn(_('can not exceed %s') % upper)
|
||||
return
|
||||
if new_capacity < lower:
|
||||
if lower < capacity:
|
||||
logger.info(_('truncating shrinkage to %s') % lower)
|
||||
LOG.info(_('truncating shrinkage to %s') % lower)
|
||||
new_capacity = lower
|
||||
else:
|
||||
logger.warn(_('can not be less than %s') % lower)
|
||||
LOG.warn(_('can not be less than %s') % lower)
|
||||
return
|
||||
|
||||
if new_capacity == capacity:
|
||||
logger.debug('no change in capacity %d' % capacity)
|
||||
LOG.debug('no change in capacity %d' % capacity)
|
||||
return
|
||||
|
||||
# send a notification before, on-error and on-success.
|
||||
@ -698,7 +698,7 @@ class AutoScalingGroup(InstanceGroup, CooldownMixin):
|
||||
})
|
||||
notification.send(**notif)
|
||||
except Exception:
|
||||
logger.exception(_('Failed sending error notification'))
|
||||
LOG.exception(_('Failed sending error notification'))
|
||||
else:
|
||||
notif.update({
|
||||
'suffix': 'end',
|
||||
@ -1060,16 +1060,16 @@ class ScalingPolicy(signal_responder.SignalResponder, CooldownMixin):
|
||||
alarm_state = details.get('current',
|
||||
details.get('state', 'alarm')).lower()
|
||||
|
||||
logger.info(_('%(name)s Alarm, new state %(state)s') % {
|
||||
'name': self.name, 'state': alarm_state})
|
||||
LOG.info(_('%(name)s Alarm, new state %(state)s')
|
||||
% {'name': self.name, 'state': alarm_state})
|
||||
|
||||
if alarm_state != 'alarm':
|
||||
return
|
||||
if self._cooldown_inprogress():
|
||||
logger.info(_("%(name)s NOT performing scaling action, "
|
||||
"cooldown %(cooldown)s") % {
|
||||
'name': self.name,
|
||||
'cooldown': self.properties[self.COOLDOWN]})
|
||||
LOG.info(_("%(name)s NOT performing scaling action, "
|
||||
"cooldown %(cooldown)s")
|
||||
% {'name': self.name,
|
||||
'cooldown': self.properties[self.COOLDOWN]})
|
||||
return
|
||||
|
||||
asgn_id = self.properties[self.AUTO_SCALING_GROUP_NAME]
|
||||
@ -1080,11 +1080,10 @@ class ScalingPolicy(signal_responder.SignalResponder, CooldownMixin):
|
||||
'alarm': self.name,
|
||||
'group': asgn_id})
|
||||
|
||||
logger.info(_('%(name)s Alarm, adjusting Group %(group)s with id '
|
||||
'%(asgn_id)s by %(filter)s') % {
|
||||
'name': self.name, 'group': group.name,
|
||||
'asgn_id': asgn_id,
|
||||
'filter': self.properties[self.SCALING_ADJUSTMENT]})
|
||||
LOG.info(_('%(name)s Alarm, adjusting Group %(group)s with id '
|
||||
'%(asgn_id)s by %(filter)s')
|
||||
% {'name': self.name, 'group': group.name, 'asgn_id': asgn_id,
|
||||
'filter': self.properties[self.SCALING_ADJUSTMENT]})
|
||||
adjustment_type = self._get_adjustement_type()
|
||||
group.adjust(self.properties[self.SCALING_ADJUSTMENT], adjustment_type)
|
||||
|
||||
|
@ -22,7 +22,7 @@ from heat.openstack.common import excutils
|
||||
from heat.openstack.common.gettextutils import _
|
||||
from heat.openstack.common import log as logging
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
LOG = logging.getLogger(__name__)
|
||||
|
||||
|
||||
class ElasticIp(resource.Resource):
|
||||
@ -73,14 +73,14 @@ class ElasticIp(resource.Resource):
|
||||
ips = self.neutron().show_floatingip(self.resource_id)
|
||||
except ne as e:
|
||||
if e.status_code == 404:
|
||||
logger.warn(_("Floating IPs not found: %s") % e)
|
||||
LOG.warn(_("Floating IPs not found: %s") % e)
|
||||
else:
|
||||
self.ipaddress = ips['floatingip']['floating_ip_address']
|
||||
else:
|
||||
try:
|
||||
ips = self.nova().floating_ips.get(self.resource_id)
|
||||
except clients.novaclient.exceptions.NotFound as ex:
|
||||
logger.warn(_("Floating IPs not found: %s") % ex)
|
||||
LOG.warn(_("Floating IPs not found: %s") % ex)
|
||||
else:
|
||||
self.ipaddress = ips.ip
|
||||
return self.ipaddress or ''
|
||||
@ -97,7 +97,7 @@ class ElasticIp(resource.Resource):
|
||||
'floatingip': props})['floatingip']
|
||||
self.ipaddress = ips['floating_ip_address']
|
||||
self.resource_id_set(ips['id'])
|
||||
logger.info(_('ElasticIp create %s') % str(ips))
|
||||
LOG.info(_('ElasticIp create %s') % str(ips))
|
||||
else:
|
||||
if self.properties[self.DOMAIN]:
|
||||
raise exception.Error(_('Domain property can not be set on '
|
||||
@ -109,12 +109,12 @@ class ElasticIp(resource.Resource):
|
||||
with excutils.save_and_reraise_exception():
|
||||
msg = _("No default floating IP pool configured. "
|
||||
"Set 'default_floating_pool' in nova.conf.")
|
||||
logger.error(msg)
|
||||
LOG.error(msg)
|
||||
|
||||
if ips:
|
||||
self.ipaddress = ips.ip
|
||||
self.resource_id_set(ips.id)
|
||||
logger.info(_('ElasticIp create %s') % str(ips))
|
||||
LOG.info(_('ElasticIp create %s') % str(ips))
|
||||
|
||||
instance_id = self.properties[self.INSTANCE_ID]
|
||||
if instance_id:
|
||||
@ -193,16 +193,15 @@ class ElasticIpAssociation(resource.Resource):
|
||||
|
||||
if self.properties[self.EIP]:
|
||||
if not self.properties[self.INSTANCE_ID]:
|
||||
logger.warn(_('Skipping association, InstanceId not '
|
||||
'specified'))
|
||||
LOG.warn(_('Skipping association, InstanceId not specified'))
|
||||
return
|
||||
server = self.nova().servers.get(self.properties[self.INSTANCE_ID])
|
||||
server.add_floating_ip(self.properties[self.EIP])
|
||||
self.resource_id_set(self.properties[self.EIP])
|
||||
logger.debug('ElasticIpAssociation '
|
||||
'%(instance)s.add_floating_ip(%(eip)s)',
|
||||
{'instance': self.properties[self.INSTANCE_ID],
|
||||
'eip': self.properties[self.EIP]})
|
||||
LOG.debug('ElasticIpAssociation '
|
||||
'%(instance)s.add_floating_ip(%(eip)s)',
|
||||
{'instance': self.properties[self.INSTANCE_ID],
|
||||
'eip': self.properties[self.EIP]})
|
||||
elif self.properties[self.ALLOCATION_ID]:
|
||||
assert clients.neutronclient, "Neutron required for VPC operations"
|
||||
port_id = None
|
||||
@ -216,7 +215,7 @@ class ElasticIpAssociation(resource.Resource):
|
||||
port_rsrc = ports['ports'][0]
|
||||
port_id = port_rsrc['id']
|
||||
else:
|
||||
logger.warn(_('Skipping association, resource not specified'))
|
||||
LOG.warn(_('Skipping association, resource not specified'))
|
||||
return
|
||||
|
||||
float_id = self.properties[self.ALLOCATION_ID]
|
||||
|
@ -34,7 +34,7 @@ from heat.openstack.common import log as logging
|
||||
|
||||
cfg.CONF.import_opt('instance_user', 'heat.common.config')
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
LOG = logging.getLogger(__name__)
|
||||
|
||||
|
||||
class Restarter(signal_responder.SignalResponder):
|
||||
@ -88,22 +88,21 @@ class Restarter(signal_responder.SignalResponder):
|
||||
else:
|
||||
alarm_state = details.get('state', 'alarm').lower()
|
||||
|
||||
logger.info(_('%(name)s Alarm, new state %(state)s') % {
|
||||
'name': self.name, 'state': alarm_state})
|
||||
LOG.info(_('%(name)s Alarm, new state %(state)s')
|
||||
% {'name': self.name, 'state': alarm_state})
|
||||
|
||||
if alarm_state != 'alarm':
|
||||
return
|
||||
|
||||
victim = self._find_resource(self.properties[self.INSTANCE_ID])
|
||||
if victim is None:
|
||||
logger.info(_('%(name)s Alarm, can not find instance '
|
||||
'%(instance)s') % {
|
||||
'name': self.name,
|
||||
'instance': self.properties[self.INSTANCE_ID]})
|
||||
LOG.info(_('%(name)s Alarm, can not find instance %(instance)s')
|
||||
% {'name': self.name,
|
||||
'instance': self.properties[self.INSTANCE_ID]})
|
||||
return
|
||||
|
||||
logger.info(_('%(name)s Alarm, restarting resource: %(victim)s') % {
|
||||
'name': self.name, 'victim': victim.name})
|
||||
LOG.info(_('%(name)s Alarm, restarting resource: %(victim)s')
|
||||
% {'name': self.name, 'victim': victim.name})
|
||||
self.stack.restart_resource(victim.name)
|
||||
|
||||
def _resolve_attribute(self, name):
|
||||
@ -367,10 +366,8 @@ class Instance(resource.Resource):
|
||||
elif name in self.ATTRIBUTES[1:]:
|
||||
res = self._ipaddress()
|
||||
|
||||
logger.info(_('%(name)s._resolve_attribute(%(attname)s) == %(res)s'),
|
||||
{'name': self.name,
|
||||
'attname': name,
|
||||
'res': res})
|
||||
LOG.info(_('%(name)s._resolve_attribute(%(attname)s) == %(res)s'),
|
||||
{'name': self.name, 'attname': name, 'res': res})
|
||||
return unicode(res) if res else None
|
||||
|
||||
def _build_nics(self, network_interfaces,
|
||||
@ -752,7 +749,7 @@ class Instance(resource.Resource):
|
||||
raise exception.NotFound(_('Failed to find instance %s') %
|
||||
self.resource_id)
|
||||
else:
|
||||
logger.debug("suspending instance %s" % self.resource_id)
|
||||
LOG.debug("suspending instance %s" % self.resource_id)
|
||||
# We want the server.suspend to happen after the volume
|
||||
# detachement has finished, so pass both tasks and the server
|
||||
suspend_runner = scheduler.TaskRunner(server.suspend)
|
||||
@ -774,10 +771,9 @@ class Instance(resource.Resource):
|
||||
return True
|
||||
|
||||
nova_utils.refresh_server(server)
|
||||
logger.debug("%(name)s check_suspend_complete "
|
||||
"status = %(status)s",
|
||||
{'name': self.name,
|
||||
'status': server.status})
|
||||
LOG.debug("%(name)s check_suspend_complete "
|
||||
"status = %(status)s",
|
||||
{'name': self.name, 'status': server.status})
|
||||
if server.status in list(nova_utils.deferred_server_statuses +
|
||||
['ACTIVE']):
|
||||
return server.status == 'SUSPENDED'
|
||||
@ -808,7 +804,7 @@ class Instance(resource.Resource):
|
||||
raise exception.NotFound(_('Failed to find instance %s') %
|
||||
self.resource_id)
|
||||
else:
|
||||
logger.debug("resuming instance %s" % self.resource_id)
|
||||
LOG.debug("resuming instance %s" % self.resource_id)
|
||||
server.resume()
|
||||
return server, scheduler.TaskRunner(self._attach_volumes_task())
|
||||
|
||||
|
@ -24,7 +24,7 @@ from heat.engine import stack_resource
|
||||
from heat.openstack.common.gettextutils import _
|
||||
from heat.openstack.common import log as logging
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
LOG = logging.getLogger(__name__)
|
||||
|
||||
lb_template_default = r'''
|
||||
{
|
||||
@ -426,7 +426,7 @@ class LoadBalancer(stack_resource.StackResource):
|
||||
client = self.nova()
|
||||
for i in instances:
|
||||
ip = nova_utils.server_to_ipaddress(client, i) or '0.0.0.0'
|
||||
logger.debug('haproxy server:%s' % ip)
|
||||
LOG.debug('haproxy server:%s' % ip)
|
||||
servers.append('%sserver server%d %s:%s %s' % (spaces, n,
|
||||
ip, inst_port,
|
||||
check))
|
||||
@ -437,8 +437,8 @@ class LoadBalancer(stack_resource.StackResource):
|
||||
def get_parsed_template(self):
|
||||
if cfg.CONF.loadbalancer_template:
|
||||
with open(cfg.CONF.loadbalancer_template) as templ_fd:
|
||||
logger.info(_('Using custom loadbalancer template %s')
|
||||
% cfg.CONF.loadbalancer_template)
|
||||
LOG.info(_('Using custom loadbalancer template %s')
|
||||
% cfg.CONF.loadbalancer_template)
|
||||
contents = templ_fd.read()
|
||||
else:
|
||||
contents = lb_template_default
|
||||
|
@ -21,7 +21,7 @@ from heat.engine import scheduler
|
||||
from heat.openstack.common import log as logging
|
||||
from heat.openstack.common import uuidutils
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
LOG = logging.getLogger(__name__)
|
||||
|
||||
|
||||
class NeutronResource(resource.Resource):
|
||||
@ -136,7 +136,7 @@ class NeutronResource(resource.Resource):
|
||||
try:
|
||||
attributes = self._show_resource()
|
||||
except NeutronClientException as ex:
|
||||
logger.warn(_("failed to fetch resource attributes: %s") % ex)
|
||||
LOG.warn(_("failed to fetch resource attributes: %s") % ex)
|
||||
return None
|
||||
return self.handle_get_attributes(self.name, name, attributes)
|
||||
|
||||
|
@ -23,7 +23,7 @@ from heat.openstack.common import log as logging
|
||||
if clients.neutronclient is not None:
|
||||
import neutronclient.common.exceptions as neutron_exp
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
LOG = logging.getLogger(__name__)
|
||||
|
||||
|
||||
class Port(neutron.NeutronResource):
|
||||
@ -287,7 +287,7 @@ class Port(neutron.NeutronResource):
|
||||
|
||||
self._prepare_list_properties(props)
|
||||
|
||||
logger.debug('updating port with %s' % props)
|
||||
LOG.debug('updating port with %s' % props)
|
||||
self.neutron().update_port(self.resource_id, {'port': props})
|
||||
|
||||
def check_update_complete(self, *args):
|
||||
|
@ -19,7 +19,7 @@ from heat.openstack.common import excutils
|
||||
from heat.openstack.common.gettextutils import _
|
||||
from heat.openstack.common import log as logging
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
LOG = logging.getLogger(__name__)
|
||||
|
||||
|
||||
class NovaFloatingIp(resource.Resource):
|
||||
@ -67,7 +67,7 @@ class NovaFloatingIp(resource.Resource):
|
||||
if pool is None:
|
||||
msg = _('Could not allocate floating IP. Probably there '
|
||||
'is no default floating IP pool is configured.')
|
||||
logger.error(msg)
|
||||
LOG.error(msg)
|
||||
|
||||
self.resource_id_set(floating_ip.id)
|
||||
self._floating_ip = floating_ip
|
||||
|
@ -31,7 +31,7 @@ from heat.engine import scheduler
|
||||
from heat.openstack.common.gettextutils import _
|
||||
from heat.openstack.common import log as logging
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
LOG = logging.getLogger(__name__)
|
||||
|
||||
|
||||
deferred_server_statuses = ['BUILD',
|
||||
@ -55,17 +55,17 @@ def refresh_server(server):
|
||||
except clients.novaclient.exceptions.OverLimit as exc:
|
||||
msg = _("Server %(name)s (%(id)s) received an OverLimit "
|
||||
"response during server.get(): %(exception)s")
|
||||
logger.warning(msg % {'name': server.name,
|
||||
'id': server.id,
|
||||
'exception': exc})
|
||||
LOG.warning(msg % {'name': server.name,
|
||||
'id': server.id,
|
||||
'exception': exc})
|
||||
except clients.novaclient.exceptions.ClientException as exc:
|
||||
if ((getattr(exc, 'http_status', getattr(exc, 'code', None)) in
|
||||
(500, 503))):
|
||||
msg = _('Server "%(name)s" (%(id)s) received the following '
|
||||
'exception during server.get(): %(exception)s')
|
||||
logger.warning(msg % {'name': server.name,
|
||||
'id': server.id,
|
||||
'exception': exc})
|
||||
LOG.warning(msg % {'name': server.name,
|
||||
'id': server.id,
|
||||
'exception': exc})
|
||||
else:
|
||||
raise
|
||||
|
||||
@ -331,8 +331,8 @@ def server_to_ipaddress(client, server):
|
||||
try:
|
||||
server = client.servers.get(server)
|
||||
except clients.novaclient.exceptions.NotFound as ex:
|
||||
logger.warn(_('Instance (%(server)s) not found: %(ex)s') % {
|
||||
'server': server, 'ex': ex})
|
||||
LOG.warn(_('Instance (%(server)s) not found: %(ex)s')
|
||||
% {'server': server, 'ex': ex})
|
||||
else:
|
||||
for n in server.networks:
|
||||
if len(server.networks[n]) > 0:
|
||||
|
@ -21,7 +21,7 @@ from heat.engine.resources import nova_utils
|
||||
from heat.openstack.common.gettextutils import _
|
||||
from heat.openstack.common import log as logging
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
LOG = logging.getLogger(__name__)
|
||||
|
||||
|
||||
class OSDBInstance(resource.Resource):
|
||||
@ -235,9 +235,9 @@ class OSDBInstance(resource.Resource):
|
||||
except troveclient.exceptions.RequestEntityTooLarge as exc:
|
||||
msg = _("Stack %(name)s (%(id)s) received an OverLimit "
|
||||
"response during instance.get(): %(exception)s")
|
||||
logger.warning(msg % {'name': self.stack.name,
|
||||
'id': self.stack.id,
|
||||
'exception': exc})
|
||||
LOG.warning(msg % {'name': self.stack.name,
|
||||
'id': self.stack.id,
|
||||
'exception': exc})
|
||||
|
||||
def check_create_complete(self, instance):
|
||||
'''
|
||||
@ -253,9 +253,9 @@ class OSDBInstance(resource.Resource):
|
||||
|
||||
msg = _("Database instance %(database)s created (flavor:%(flavor)s, "
|
||||
"volume:%(volume)s)")
|
||||
logger.info(msg % ({'database': self.dbinstancename,
|
||||
'flavor': self.flavor,
|
||||
'volume': self.volume}))
|
||||
LOG.info(msg % ({'database': self.dbinstancename,
|
||||
'flavor': self.flavor,
|
||||
'volume': self.volume}))
|
||||
return True
|
||||
|
||||
def handle_delete(self):
|
||||
@ -269,8 +269,7 @@ class OSDBInstance(resource.Resource):
|
||||
try:
|
||||
instance = self.trove().instances.get(self.resource_id)
|
||||
except troveclient.exceptions.NotFound:
|
||||
logger.debug("Database instance %s not found." %
|
||||
self.resource_id)
|
||||
LOG.debug("Database instance %s not found." % self.resource_id)
|
||||
self.resource_id_set(None)
|
||||
else:
|
||||
instance.delete()
|
||||
|
@ -20,7 +20,7 @@ from heat.engine import properties
|
||||
from heat.engine import resource
|
||||
from heat.openstack.common import log as logging
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
LOG = logging.getLogger(__name__)
|
||||
|
||||
|
||||
class S3Bucket(resource.Resource):
|
||||
@ -119,9 +119,8 @@ class S3Bucket(resource.Resource):
|
||||
"""Create a bucket."""
|
||||
container = self.physical_resource_name()
|
||||
headers = self.tags_to_headers()
|
||||
logger.debug('S3Bucket create container %(container)s with headers '
|
||||
'%(headers)s' % {
|
||||
'container': container, 'headers': headers})
|
||||
LOG.debug('S3Bucket create container %(container)s with headers '
|
||||
'%(headers)s' % {'container': container, 'headers': headers})
|
||||
if self.properties[self.WEBSITE_CONFIGURATION] is not None:
|
||||
sc = self.properties[self.WEBSITE_CONFIGURATION]
|
||||
index_doc = sc[self.WEBSITE_CONFIGURATION_INDEX_DOCUMENT]
|
||||
@ -151,12 +150,12 @@ class S3Bucket(resource.Resource):
|
||||
|
||||
def handle_delete(self):
|
||||
"""Perform specified delete policy."""
|
||||
logger.debug('S3Bucket delete container %s' % self.resource_id)
|
||||
LOG.debug('S3Bucket delete container %s' % self.resource_id)
|
||||
if self.resource_id is not None:
|
||||
try:
|
||||
self.swift().delete_container(self.resource_id)
|
||||
except clients.swiftclient.ClientException as ex:
|
||||
logger.warn(_("Delete container failed: %s") % ex)
|
||||
LOG.warn(_("Delete container failed: %s") % ex)
|
||||
|
||||
def FnGetRefId(self):
|
||||
return unicode(self.resource_id)
|
||||
|
@ -35,7 +35,7 @@ from heat.openstack.common import uuidutils
|
||||
|
||||
cfg.CONF.import_opt('instance_user', 'heat.common.config')
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
LOG = logging.getLogger(__name__)
|
||||
|
||||
|
||||
class Server(stack_user.StackUser):
|
||||
@ -622,8 +622,8 @@ class Server(stack_user.StackUser):
|
||||
try:
|
||||
server = self.nova().servers.get(self.resource_id)
|
||||
except clients.novaclient.exceptions.NotFound as ex:
|
||||
logger.warn(_('Instance (%(server)s) not found: %(ex)s') % {
|
||||
'server': self.resource_id, 'ex': ex})
|
||||
LOG.warn(_('Instance (%(server)s) not found: %(ex)s')
|
||||
% {'server': self.resource_id, 'ex': ex})
|
||||
return ''
|
||||
if name == self.ADDRESSES:
|
||||
return self._add_port_for_address(server)
|
||||
@ -901,14 +901,14 @@ class Server(stack_user.StackUser):
|
||||
server=self.name)
|
||||
raise exception.StackValidationFailed(message=msg)
|
||||
elif network.get(self.NETWORK_UUID):
|
||||
logger.info(_('For the server "%(server)s" the "%(uuid)s" '
|
||||
'property is set to network "%(network)s". '
|
||||
'"%(uuid)s" property is deprecated. Use '
|
||||
'"%(id)s" property instead.'
|
||||
'') % dict(uuid=self.NETWORK_UUID,
|
||||
id=self.NETWORK_ID,
|
||||
network=network[self.NETWORK_ID],
|
||||
server=self.name))
|
||||
LOG.info(_('For the server "%(server)s" the "%(uuid)s" '
|
||||
'property is set to network "%(network)s". '
|
||||
'"%(uuid)s" property is deprecated. Use '
|
||||
'"%(id)s" property instead.')
|
||||
% dict(uuid=self.NETWORK_UUID,
|
||||
id=self.NETWORK_ID,
|
||||
network=network[self.NETWORK_ID],
|
||||
server=self.name))
|
||||
|
||||
# retrieve provider's absolute limits if it will be needed
|
||||
metadata = self.properties.get(self.METADATA)
|
||||
@ -986,7 +986,7 @@ class Server(stack_user.StackUser):
|
||||
raise exception.NotFound(_('Failed to find server %s') %
|
||||
self.resource_id)
|
||||
else:
|
||||
logger.debug('suspending server %s' % self.resource_id)
|
||||
LOG.debug('suspending server %s' % self.resource_id)
|
||||
# We want the server.suspend to happen after the volume
|
||||
# detachement has finished, so pass both tasks and the server
|
||||
suspend_runner = scheduler.TaskRunner(server.suspend)
|
||||
@ -1003,9 +1003,8 @@ class Server(stack_user.StackUser):
|
||||
return True
|
||||
|
||||
nova_utils.refresh_server(server)
|
||||
logger.debug('%(name)s check_suspend_complete status '
|
||||
'= %(status)s' % {
|
||||
'name': self.name, 'status': server.status})
|
||||
LOG.debug('%(name)s check_suspend_complete status = %(status)s'
|
||||
% {'name': self.name, 'status': server.status})
|
||||
if server.status in list(nova_utils.deferred_server_statuses +
|
||||
['ACTIVE']):
|
||||
return server.status == 'SUSPENDED'
|
||||
@ -1032,7 +1031,7 @@ class Server(stack_user.StackUser):
|
||||
raise exception.NotFound(_('Failed to find server %s') %
|
||||
self.resource_id)
|
||||
else:
|
||||
logger.debug('resuming server %s' % self.resource_id)
|
||||
LOG.debug('resuming server %s' % self.resource_id)
|
||||
server.resume()
|
||||
return server
|
||||
|
||||
|
@ -21,7 +21,7 @@ from heat.engine import resource
|
||||
from heat.openstack.common.gettextutils import _
|
||||
from heat.openstack.common import log as logging
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
LOG = logging.getLogger(__name__)
|
||||
|
||||
|
||||
class SoftwareConfig(resource.Resource):
|
||||
@ -167,7 +167,7 @@ class SoftwareConfig(resource.Resource):
|
||||
try:
|
||||
self.heat().software_configs.delete(self.resource_id)
|
||||
except heat_exp.HTTPNotFound:
|
||||
logger.debug(
|
||||
LOG.debug(
|
||||
_('Software config %s is not found.') % self.resource_id)
|
||||
|
||||
def _resolve_attribute(self, name):
|
||||
|
@ -28,7 +28,7 @@ from heat.engine.resources.software_config import software_config as sc
|
||||
from heat.engine import signal_responder
|
||||
from heat.openstack.common import log as logging
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
LOG = logging.getLogger(__name__)
|
||||
|
||||
|
||||
class SoftwareDeployment(signal_responder.SignalResponder):
|
||||
@ -240,7 +240,7 @@ class SoftwareDeployment(signal_responder.SignalResponder):
|
||||
elif sd.status == SoftwareDeployment.FAILED:
|
||||
message = _("Deployment to server "
|
||||
"failed: %s") % sd.status_reason
|
||||
logger.error(message)
|
||||
LOG.error(message)
|
||||
exc = exception.Error(message)
|
||||
raise exc
|
||||
|
||||
|
@ -20,7 +20,7 @@ from heat.engine import properties
|
||||
from heat.engine import resource
|
||||
from heat.openstack.common import log as logging
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
LOG = logging.getLogger(__name__)
|
||||
|
||||
|
||||
class SwiftContainer(resource.Resource):
|
||||
@ -126,12 +126,12 @@ class SwiftContainer(resource.Resource):
|
||||
if self.properties.get(key) is not None:
|
||||
container_headers[key] = self.properties[key]
|
||||
|
||||
logger.debug('SwiftContainer create container %(container)s with '
|
||||
'container headers %(container_headers)s and '
|
||||
'account headers %(account_headers)s' % {
|
||||
'container': container,
|
||||
'account_headers': account_headers,
|
||||
'container_headers': container_headers})
|
||||
LOG.debug('SwiftContainer create container %(container)s with '
|
||||
'container headers %(container_headers)s and '
|
||||
'account headers %(account_headers)s'
|
||||
% {'container': container,
|
||||
'account_headers': account_headers,
|
||||
'container_headers': container_headers})
|
||||
|
||||
self.swift().put_container(container, container_headers)
|
||||
|
||||
@ -142,13 +142,12 @@ class SwiftContainer(resource.Resource):
|
||||
|
||||
def handle_delete(self):
|
||||
"""Perform specified delete policy."""
|
||||
logger.debug('SwiftContainer delete container %s' %
|
||||
self.resource_id)
|
||||
LOG.debug('SwiftContainer delete container %s' % self.resource_id)
|
||||
if self.resource_id is not None:
|
||||
try:
|
||||
self.swift().delete_container(self.resource_id)
|
||||
except clients.swiftclient.ClientException as ex:
|
||||
logger.warn(_("Delete container failed: %s") % ex)
|
||||
LOG.warn(_("Delete container failed: %s") % ex)
|
||||
|
||||
def FnGetRefId(self):
|
||||
return unicode(self.resource_id)
|
||||
@ -167,7 +166,7 @@ class SwiftContainer(resource.Resource):
|
||||
try:
|
||||
headers = self.swift().head_container(self.resource_id)
|
||||
except clients.swiftclient.ClientException as ex:
|
||||
logger.warn(_("Head container failed: %s") % ex)
|
||||
LOG.warn(_("Head container failed: %s") % ex)
|
||||
return None
|
||||
else:
|
||||
if key == self.OBJECT_COUNT:
|
||||
|
@ -19,7 +19,7 @@ from heat.engine import resource
|
||||
from heat.engine import stack_user
|
||||
from heat.openstack.common import log as logging
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
LOG = logging.getLogger(__name__)
|
||||
|
||||
#
|
||||
# We are ignoring Groups as keystone does not support them.
|
||||
@ -76,22 +76,21 @@ class User(stack_user.StackUser):
|
||||
# ignore the policy (don't reject it because we previously ignored
|
||||
# and we don't want to break templates which previously worked
|
||||
if not isinstance(policy, basestring):
|
||||
logger.warning(_("Ignoring policy %s, must be string "
|
||||
"resource name") % policy)
|
||||
LOG.warning(_("Ignoring policy %s, must be string "
|
||||
"resource name") % policy)
|
||||
continue
|
||||
|
||||
try:
|
||||
policy_rsrc = self.stack[policy]
|
||||
except KeyError:
|
||||
logger.error(_("Policy %(policy)s does not exist in stack "
|
||||
"%(stack)s") % {
|
||||
'policy': policy,
|
||||
'stack': self.stack.name})
|
||||
LOG.error(_("Policy %(policy)s does not exist in stack "
|
||||
"%(stack)s")
|
||||
% {'policy': policy, 'stack': self.stack.name})
|
||||
return False
|
||||
|
||||
if not callable(getattr(policy_rsrc, 'access_allowed', None)):
|
||||
logger.error(_("Policy %s is not an AccessPolicy resource") %
|
||||
policy)
|
||||
LOG.error(_("Policy %s is not an AccessPolicy resource")
|
||||
% policy)
|
||||
return False
|
||||
|
||||
return True
|
||||
@ -116,8 +115,8 @@ class User(stack_user.StackUser):
|
||||
policies = (self.properties[self.POLICIES] or [])
|
||||
for policy in policies:
|
||||
if not isinstance(policy, basestring):
|
||||
logger.warning(_("Ignoring policy %s, must be string "
|
||||
"resource name") % policy)
|
||||
LOG.warning(_("Ignoring policy %s, must be string "
|
||||
"resource name") % policy)
|
||||
continue
|
||||
policy_rsrc = self.stack[policy]
|
||||
if not policy_rsrc.access_allowed(resource_name):
|
||||
@ -211,7 +210,7 @@ class AccessKey(resource.Resource):
|
||||
|
||||
user = self._get_user()
|
||||
if user is None:
|
||||
logger.warning(_('Error deleting %s - user not found') % str(self))
|
||||
LOG.warning(_('Error deleting %s - user not found') % str(self))
|
||||
return
|
||||
user._delete_keypair()
|
||||
|
||||
@ -221,10 +220,10 @@ class AccessKey(resource.Resource):
|
||||
'''
|
||||
if self._secret is None:
|
||||
if not self.resource_id:
|
||||
logger.warn(_('could not get secret for %(username)s '
|
||||
'Error:%(msg)s') % {
|
||||
'username': self.properties[self.USER_NAME],
|
||||
'msg': "resource_id not yet set"})
|
||||
LOG.warn(_('could not get secret for %(username)s '
|
||||
'Error:%(msg)s')
|
||||
% {'username': self.properties[self.USER_NAME],
|
||||
'msg': "resource_id not yet set"})
|
||||
else:
|
||||
# First try to retrieve the secret from resource_data, but
|
||||
# for backwards compatibility, fall back to requesting from
|
||||
@ -241,11 +240,10 @@ class AccessKey(resource.Resource):
|
||||
# And the ID of the v3 credential
|
||||
self.data_set('credential_id', kp.id, redact=True)
|
||||
except Exception as ex:
|
||||
logger.warn(
|
||||
_('could not get secret for %(username)s '
|
||||
'Error:%(msg)s') % {
|
||||
'username': self.properties[self.USER_NAME],
|
||||
'msg': ex})
|
||||
LOG.warn(_('could not get secret for %(username)s '
|
||||
'Error:%(msg)s') % {
|
||||
'username': self.properties[self.USER_NAME],
|
||||
'msg': ex})
|
||||
|
||||
return self._secret or '000-000-000'
|
||||
|
||||
@ -291,7 +289,7 @@ class AccessPolicy(resource.Resource):
|
||||
for resource in resources:
|
||||
if resource not in self.stack:
|
||||
msg = _("AccessPolicy resource %s not in stack") % resource
|
||||
logger.error(msg)
|
||||
LOG.error(msg)
|
||||
raise exception.StackValidationFailed(message=msg)
|
||||
|
||||
def access_allowed(self, resource_name):
|
||||
|
@ -27,7 +27,7 @@ from heat.openstack.common import log as logging
|
||||
|
||||
volume_backups = try_import('cinderclient.v1.volume_backups')
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
LOG = logging.getLogger(__name__)
|
||||
|
||||
|
||||
class Volume(resource.Resource):
|
||||
@ -153,7 +153,7 @@ class Volume(resource.Resource):
|
||||
vol.get()
|
||||
|
||||
if vol.status == 'in-use':
|
||||
logger.warn(_('can not delete volume when in-use'))
|
||||
LOG.warn(_('can not delete volume when in-use'))
|
||||
raise exception.Error(_('Volume in use'))
|
||||
|
||||
vol.delete()
|
||||
@ -210,7 +210,7 @@ class VolumeAttachTask(object):
|
||||
|
||||
def __call__(self):
|
||||
"""Return a co-routine which runs the task."""
|
||||
logger.debug(str(self))
|
||||
LOG.debug(str(self))
|
||||
|
||||
va = self.clients.nova().volumes.create_server_volume(
|
||||
server_id=self.server_id,
|
||||
@ -221,15 +221,15 @@ class VolumeAttachTask(object):
|
||||
|
||||
vol = self.clients.cinder().volumes.get(self.volume_id)
|
||||
while vol.status == 'available' or vol.status == 'attaching':
|
||||
logger.debug('%(name)s - volume status: %(status)s' % {
|
||||
'name': str(self), 'status': vol.status})
|
||||
LOG.debug('%(name)s - volume status: %(status)s'
|
||||
% {'name': str(self), 'status': vol.status})
|
||||
yield
|
||||
vol.get()
|
||||
|
||||
if vol.status != 'in-use':
|
||||
raise exception.Error(vol.status)
|
||||
|
||||
logger.info(_('%s - complete') % str(self))
|
||||
LOG.info(_('%s - complete') % str(self))
|
||||
|
||||
|
||||
class VolumeDetachTask(object):
|
||||
@ -257,7 +257,7 @@ class VolumeDetachTask(object):
|
||||
|
||||
def __call__(self):
|
||||
"""Return a co-routine which runs the task."""
|
||||
logger.debug(str(self))
|
||||
LOG.debug(str(self))
|
||||
|
||||
server_api = self.clients.nova().volumes
|
||||
|
||||
@ -269,7 +269,7 @@ class VolumeDetachTask(object):
|
||||
except (clients.cinderclient.exceptions.NotFound,
|
||||
clients.novaclient.exceptions.BadRequest,
|
||||
clients.novaclient.exceptions.NotFound):
|
||||
logger.warning(_('%s - volume not found') % str(self))
|
||||
LOG.warning(_('%s - volume not found') % str(self))
|
||||
return
|
||||
|
||||
# detach the volume using volume_attachment
|
||||
@ -277,24 +277,24 @@ class VolumeDetachTask(object):
|
||||
server_api.delete_server_volume(self.server_id, self.attachment_id)
|
||||
except (clients.novaclient.exceptions.BadRequest,
|
||||
clients.novaclient.exceptions.NotFound) as e:
|
||||
logger.warning(_('%(res)s - %(err)s') % {'res': str(self),
|
||||
'err': e})
|
||||
LOG.warning(_('%(res)s - %(err)s') % {'res': str(self),
|
||||
'err': e})
|
||||
|
||||
yield
|
||||
|
||||
try:
|
||||
while vol.status in ('in-use', 'detaching'):
|
||||
logger.debug('%s - volume still in use' % str(self))
|
||||
LOG.debug('%s - volume still in use' % str(self))
|
||||
yield
|
||||
vol.get()
|
||||
|
||||
logger.info(_('%(name)s - status: %(status)s') % {
|
||||
'name': str(self), 'status': vol.status})
|
||||
LOG.info(_('%(name)s - status: %(status)s')
|
||||
% {'name': str(self), 'status': vol.status})
|
||||
if vol.status != 'available':
|
||||
raise exception.Error(vol.status)
|
||||
|
||||
except clients.cinderclient.exceptions.NotFound:
|
||||
logger.warning(_('%s - volume not found') % str(self))
|
||||
LOG.warning(_('%s - volume not found') % str(self))
|
||||
|
||||
# The next check is needed for immediate reattachment when updating:
|
||||
# there might be some time between cinder marking volume as 'available'
|
||||
@ -308,12 +308,12 @@ class VolumeDetachTask(object):
|
||||
return True
|
||||
|
||||
while server_has_attachment(self.server_id, self.attachment_id):
|
||||
logger.info(_("Server %(srv)s still has attachment %(att)s.") %
|
||||
{'att': self.attachment_id, 'srv': self.server_id})
|
||||
LOG.info(_("Server %(srv)s still has attachment %(att)s.")
|
||||
% {'att': self.attachment_id, 'srv': self.server_id})
|
||||
yield
|
||||
|
||||
logger.info(_("Volume %(vol)s is detached from server %(srv)s") %
|
||||
{'vol': vol.id, 'srv': self.server_id})
|
||||
LOG.info(_("Volume %(vol)s is detached from server %(srv)s")
|
||||
% {'vol': vol.id, 'srv': self.server_id})
|
||||
|
||||
|
||||
class VolumeAttachment(resource.Resource):
|
||||
|
@ -24,7 +24,7 @@ from heat.engine import scheduler
|
||||
from heat.engine import signal_responder
|
||||
from heat.openstack.common import log as logging
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
LOG = logging.getLogger(__name__)
|
||||
|
||||
|
||||
class WaitConditionHandle(signal_responder.SignalResponder):
|
||||
@ -76,15 +76,15 @@ class WaitConditionHandle(signal_responder.SignalResponder):
|
||||
if self._metadata_format_ok(new_metadata):
|
||||
rsrc_metadata = self.metadata_get(refresh=True)
|
||||
if new_metadata['UniqueId'] in rsrc_metadata:
|
||||
logger.warning(_("Overwriting Metadata item for UniqueId %s!")
|
||||
% new_metadata['UniqueId'])
|
||||
LOG.warning(_("Overwriting Metadata item for UniqueId %s!")
|
||||
% new_metadata['UniqueId'])
|
||||
safe_metadata = {}
|
||||
for k in ('Data', 'Reason', 'Status'):
|
||||
safe_metadata[k] = new_metadata[k]
|
||||
rsrc_metadata.update({new_metadata['UniqueId']: safe_metadata})
|
||||
self.metadata_set(rsrc_metadata)
|
||||
else:
|
||||
logger.error(_("Metadata failed validation for %s") % self.name)
|
||||
LOG.error(_("Metadata failed validation for %s") % self.name)
|
||||
raise ValueError(_("Metadata format invalid"))
|
||||
|
||||
def get_status(self):
|
||||
@ -225,20 +225,20 @@ class WaitCondition(resource.Resource):
|
||||
yield
|
||||
except scheduler.Timeout:
|
||||
timeout = WaitConditionTimeout(self, handle)
|
||||
logger.info(_('%(name)s Timed out (%(timeout)s)') % {
|
||||
'name': str(self), 'timeout': str(timeout)})
|
||||
LOG.info(_('%(name)s Timed out (%(timeout)s)')
|
||||
% {'name': str(self), 'timeout': str(timeout)})
|
||||
raise timeout
|
||||
|
||||
handle_status = handle.get_status()
|
||||
|
||||
if any(s != STATUS_SUCCESS for s in handle_status):
|
||||
failure = WaitConditionFailure(self, handle)
|
||||
logger.info(_('%(name)s Failed (%(failure)s)') % {
|
||||
'name': str(self), 'failure': str(failure)})
|
||||
LOG.info(_('%(name)s Failed (%(failure)s)')
|
||||
% {'name': str(self), 'failure': str(failure)})
|
||||
raise failure
|
||||
|
||||
if len(handle_status) >= self.properties[self.COUNT]:
|
||||
logger.info(_("%s Succeeded") % str(self))
|
||||
LOG.info(_("%s Succeeded") % str(self))
|
||||
return
|
||||
|
||||
def handle_create(self):
|
||||
@ -285,10 +285,10 @@ class WaitCondition(resource.Resource):
|
||||
meta = handle.metadata_get(refresh=True)
|
||||
# Note, can't use a dict generator on python 2.6, hence:
|
||||
res = dict([(k, meta[k]['Data']) for k in meta])
|
||||
logger.debug('%(name)s.GetAtt(%(key)s) == %(res)s' %
|
||||
{'name': self.name,
|
||||
'key': key,
|
||||
'res': res})
|
||||
LOG.debug('%(name)s.GetAtt(%(key)s) == %(res)s'
|
||||
% {'name': self.name,
|
||||
'key': key,
|
||||
'res': res})
|
||||
|
||||
return unicode(json.dumps(res))
|
||||
|
||||
|
@ -23,7 +23,7 @@ from heat.openstack.common import excutils
|
||||
from heat.openstack.common.gettextutils import _
|
||||
from heat.openstack.common import log as logging
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
LOG = logging.getLogger(__name__)
|
||||
|
||||
|
||||
# Whether TaskRunner._sleep actually does an eventlet sleep when called.
|
||||
@ -128,7 +128,7 @@ class TaskRunner(object):
|
||||
def _sleep(self, wait_time):
|
||||
"""Sleep for the specified number of seconds."""
|
||||
if ENABLE_SLEEP and wait_time is not None:
|
||||
logger.debug('%s sleeping' % str(self))
|
||||
LOG.debug('%s sleeping' % str(self))
|
||||
eventlet.sleep(wait_time)
|
||||
|
||||
def __call__(self, wait_time=1, timeout=None):
|
||||
@ -151,7 +151,7 @@ class TaskRunner(object):
|
||||
"""
|
||||
assert self._runner is None, "Task already started"
|
||||
|
||||
logger.debug('%s starting' % str(self))
|
||||
LOG.debug('%s starting' % str(self))
|
||||
|
||||
if timeout is not None:
|
||||
self._timeout = Timeout(self, timeout)
|
||||
@ -163,7 +163,7 @@ class TaskRunner(object):
|
||||
else:
|
||||
self._runner = False
|
||||
self._done = True
|
||||
logger.debug('%s done (not resumable)' % str(self))
|
||||
LOG.debug('%s done (not resumable)' % str(self))
|
||||
|
||||
def step(self):
|
||||
"""
|
||||
@ -174,7 +174,7 @@ class TaskRunner(object):
|
||||
assert self._runner is not None, "Task not started"
|
||||
|
||||
if self._timeout is not None and self._timeout.expired():
|
||||
logger.info(_('%s timed out') % str(self))
|
||||
LOG.info(_('%s timed out') % str(self))
|
||||
|
||||
try:
|
||||
self._runner.throw(self._timeout)
|
||||
@ -184,13 +184,13 @@ class TaskRunner(object):
|
||||
# Clean up in case task swallows exception without exiting
|
||||
self.cancel()
|
||||
else:
|
||||
logger.debug('%s running' % str(self))
|
||||
LOG.debug('%s running' % str(self))
|
||||
|
||||
try:
|
||||
next(self._runner)
|
||||
except StopIteration:
|
||||
self._done = True
|
||||
logger.debug('%s complete' % str(self))
|
||||
LOG.debug('%s complete' % str(self))
|
||||
|
||||
return self._done
|
||||
|
||||
@ -207,7 +207,7 @@ class TaskRunner(object):
|
||||
def cancel(self):
|
||||
"""Cancel the task and mark it as done."""
|
||||
if not self.done():
|
||||
logger.debug('%s cancelled' % str(self))
|
||||
LOG.debug('%s cancelled' % str(self))
|
||||
try:
|
||||
if self.started():
|
||||
self._runner.close()
|
||||
|
@ -50,7 +50,7 @@ cfg.CONF.import_opt('engine_life_check_timeout', 'heat.common.config')
|
||||
cfg.CONF.import_opt('max_resources_per_stack', 'heat.common.config')
|
||||
cfg.CONF.import_opt('max_stacks_per_tenant', 'heat.common.config')
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
LOG = logging.getLogger(__name__)
|
||||
|
||||
|
||||
def request_context(func):
|
||||
@ -197,13 +197,12 @@ class StackWatch(object):
|
||||
# Retrieve the stored credentials & create context
|
||||
# Require tenant_safe=False to the stack_get to defeat tenant
|
||||
# scoping otherwise we fail to retrieve the stack
|
||||
logger.debug("Periodic watcher task for stack %s" % sid)
|
||||
LOG.debug("Periodic watcher task for stack %s" % sid)
|
||||
admin_context = context.get_admin_context()
|
||||
stack = db_api.stack_get(admin_context, sid, tenant_safe=False,
|
||||
eager_load=True)
|
||||
if not stack:
|
||||
logger.error(_("Unable to retrieve stack %s for periodic task") %
|
||||
sid)
|
||||
LOG.error(_("Unable to retrieve stack %s for periodic task") % sid)
|
||||
return
|
||||
stack_context = EngineService.load_user_creds(stack.user_creds_id)
|
||||
|
||||
@ -216,8 +215,8 @@ class StackWatch(object):
|
||||
try:
|
||||
wrs = db_api.watch_rule_get_all_by_stack(stack_context, sid)
|
||||
except Exception as ex:
|
||||
logger.warn(_('periodic_task db error watch rule removed? %(ex)s')
|
||||
% ex)
|
||||
LOG.warn(_('periodic_task db error watch rule removed? %(ex)s')
|
||||
% ex)
|
||||
return
|
||||
|
||||
def run_alarm_action(actions, details):
|
||||
@ -290,7 +289,7 @@ class EngineService(service.Service):
|
||||
self.stack_watch = StackWatch(self.thread_group_mgr)
|
||||
self.listener = EngineListener(host, self.engine_id,
|
||||
self.thread_group_mgr)
|
||||
logger.debug("Starting listener for engine %s" % self.engine_id)
|
||||
LOG.debug("Starting listener for engine %s" % self.engine_id)
|
||||
self.listener.start()
|
||||
|
||||
def start(self):
|
||||
@ -304,7 +303,7 @@ class EngineService(service.Service):
|
||||
|
||||
def stop(self):
|
||||
# Stop rpc connection at first for preventing new requests
|
||||
logger.info(_("Attempting to stop engine service..."))
|
||||
LOG.info(_("Attempting to stop engine service..."))
|
||||
try:
|
||||
self.conn.close()
|
||||
except Exception:
|
||||
@ -315,14 +314,14 @@ class EngineService(service.Service):
|
||||
# Ingore dummy service task
|
||||
if stack_id == cfg.CONF.periodic_interval:
|
||||
continue
|
||||
logger.info(_("Waiting stack %s processing to be finished")
|
||||
% stack_id)
|
||||
LOG.info(_("Waiting stack %s processing to be finished")
|
||||
% stack_id)
|
||||
# Stop threads gracefully
|
||||
self.thread_group_mgr.stop(stack_id, True)
|
||||
logger.info(_("Stack %s processing was finished") % stack_id)
|
||||
LOG.info(_("Stack %s processing was finished") % stack_id)
|
||||
|
||||
# Terminate the engine process
|
||||
logger.info(_("All threads were gone, terminating engine"))
|
||||
LOG.info(_("All threads were gone, terminating engine"))
|
||||
super(EngineService, self).stop()
|
||||
|
||||
@staticmethod
|
||||
@ -491,7 +490,7 @@ class EngineService(service.Service):
|
||||
:param args: Request parameters/args passed from API
|
||||
"""
|
||||
|
||||
logger.info(_('previewing stack %s') % stack_name)
|
||||
LOG.info(_('previewing stack %s') % stack_name)
|
||||
tmpl = parser.Template(template, files=files)
|
||||
self._validate_new_stack(cnxt, stack_name, tmpl)
|
||||
|
||||
@ -519,7 +518,7 @@ class EngineService(service.Service):
|
||||
:param files: Files referenced from the template
|
||||
:param args: Request parameters/args passed from API
|
||||
"""
|
||||
logger.info(_('template is %s') % template)
|
||||
LOG.info(_('template is %s') % template)
|
||||
|
||||
def _stack_create(stack):
|
||||
# Create/Adopt a stack, and create the periodic task if successful
|
||||
@ -533,8 +532,7 @@ class EngineService(service.Service):
|
||||
# Schedule a periodic watcher task for this stack
|
||||
self.stack_watch.start_watch_task(stack.id, cnxt)
|
||||
else:
|
||||
logger.warning(_("Stack create failed, status %s") %
|
||||
stack.status)
|
||||
LOG.warning(_("Stack create failed, status %s") % stack.status)
|
||||
|
||||
tmpl = parser.Template(template, files=files)
|
||||
self._validate_new_stack(cnxt, stack_name, tmpl)
|
||||
@ -570,7 +568,7 @@ class EngineService(service.Service):
|
||||
:param files: Files referenced from the template
|
||||
:param args: Request parameters/args passed from API
|
||||
"""
|
||||
logger.info(_('template is %s') % template)
|
||||
LOG.info(_('template is %s') % template)
|
||||
|
||||
# Get the database representation of the existing stack
|
||||
db_stack = self._get_stack(cnxt, stack_identity)
|
||||
@ -620,7 +618,7 @@ class EngineService(service.Service):
|
||||
:param template: Template of stack you want to create.
|
||||
:param params: Stack Input Params
|
||||
"""
|
||||
logger.info(_('validate_template'))
|
||||
LOG.info(_('validate_template'))
|
||||
if template is None:
|
||||
msg = _("No Template provided.")
|
||||
return webob.exc.HTTPBadRequest(explanation=msg)
|
||||
@ -711,7 +709,7 @@ class EngineService(service.Service):
|
||||
return False
|
||||
|
||||
st = self._get_stack(cnxt, stack_identity)
|
||||
logger.info(_('Deleting stack %s') % st.name)
|
||||
LOG.info(_('Deleting stack %s') % st.name)
|
||||
stack = parser.Stack.load(cnxt, stack=st)
|
||||
|
||||
lock = stack_lock.StackLock(cnxt, stack, self.engine_id)
|
||||
@ -732,8 +730,8 @@ class EngineService(service.Service):
|
||||
elif stack_lock.StackLock.engine_alive(cnxt, acquire_result):
|
||||
stop_result = remote_stop(acquire_result)
|
||||
if stop_result is None:
|
||||
logger.debug("Successfully stopped remote task on engine %s"
|
||||
% acquire_result)
|
||||
LOG.debug("Successfully stopped remote task on engine %s"
|
||||
% acquire_result)
|
||||
else:
|
||||
raise exception.StopActionFailed(stack_name=stack.name,
|
||||
engine_id=acquire_result)
|
||||
@ -764,7 +762,7 @@ class EngineService(service.Service):
|
||||
:param stack_identity: Name of the stack you want to abandon.
|
||||
"""
|
||||
st = self._get_stack(cnxt, stack_identity)
|
||||
logger.info(_('abandoning stack %s') % st.name)
|
||||
LOG.info(_('abandoning stack %s') % st.name)
|
||||
stack = parser.Stack.load(cnxt, stack=st)
|
||||
lock = stack_lock.StackLock(cnxt, stack, self.engine_id)
|
||||
acquire_result = lock.try_acquire()
|
||||
@ -896,8 +894,7 @@ class EngineService(service.Service):
|
||||
|
||||
if cfg.CONF.heat_stack_user_role in cnxt.roles:
|
||||
if not self._authorize_stack_user(cnxt, stack, resource_name):
|
||||
logger.warning(_("Access denied to resource %s")
|
||||
% resource_name)
|
||||
LOG.warning(_("Access denied to resource %s") % resource_name)
|
||||
raise exception.Forbidden()
|
||||
|
||||
if resource_name not in stack:
|
||||
@ -977,7 +974,7 @@ class EngineService(service.Service):
|
||||
Handle request to perform suspend action on a stack
|
||||
'''
|
||||
def _stack_suspend(stack):
|
||||
logger.debug("suspending stack %s" % stack.name)
|
||||
LOG.debug("suspending stack %s" % stack.name)
|
||||
stack.suspend()
|
||||
|
||||
s = self._get_stack(cnxt, stack_identity)
|
||||
@ -992,7 +989,7 @@ class EngineService(service.Service):
|
||||
Handle request to perform a resume action on a stack
|
||||
'''
|
||||
def _stack_resume(stack):
|
||||
logger.debug("resuming stack %s" % stack.name)
|
||||
LOG.debug("resuming stack %s" % stack.name)
|
||||
stack.resume()
|
||||
|
||||
s = self._get_stack(cnxt, stack_identity)
|
||||
@ -1075,7 +1072,7 @@ class EngineService(service.Service):
|
||||
try:
|
||||
wrn = [w.name for w in db_api.watch_rule_get_all(cnxt)]
|
||||
except Exception as ex:
|
||||
logger.warn(_('show_watch (all) db error %s') % ex)
|
||||
LOG.warn(_('show_watch (all) db error %s') % ex)
|
||||
return
|
||||
|
||||
wrs = [watchrule.WatchRule.load(cnxt, w) for w in wrn]
|
||||
@ -1098,13 +1095,13 @@ class EngineService(service.Service):
|
||||
# namespace/metric, but we will want this at some point
|
||||
# for now, the API can query all metric data and filter locally
|
||||
if metric_namespace is not None or metric_name is not None:
|
||||
logger.error(_("Filtering by namespace/metric not yet supported"))
|
||||
LOG.error(_("Filtering by namespace/metric not yet supported"))
|
||||
return
|
||||
|
||||
try:
|
||||
wds = db_api.watch_data_get_all(cnxt)
|
||||
except Exception as ex:
|
||||
logger.warn(_('show_metric (all) db error %s') % ex)
|
||||
LOG.warn(_('show_metric (all) db error %s') % ex)
|
||||
return
|
||||
|
||||
result = [api.format_watch_data(w) for w in wds]
|
||||
|
@ -20,7 +20,7 @@ from heat.openstack.common.gettextutils import _
|
||||
from heat.openstack.common import log as logging
|
||||
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
LOG = logging.getLogger(__name__)
|
||||
|
||||
SIGNAL_TYPES = (
|
||||
WAITCONDITION, SIGNAL
|
||||
@ -65,8 +65,8 @@ class SignalResponder(stack_user.StackUser):
|
||||
secret_key = self.data().get('secret_key')
|
||||
|
||||
if not access_key or not secret_key:
|
||||
logger.warning(_('Cannot generate signed url, '
|
||||
'no stored access/secret key'))
|
||||
LOG.warning(_('Cannot generate signed url, '
|
||||
'no stored access/secret key'))
|
||||
return
|
||||
|
||||
waitcond_url = cfg.CONF.heat_waitcondition_server_url
|
||||
|
@ -24,7 +24,7 @@ from heat.openstack.common.rpc import proxy
|
||||
|
||||
cfg.CONF.import_opt('engine_life_check_timeout', 'heat.common.config')
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
LOG = logging.getLogger(__name__)
|
||||
|
||||
|
||||
class StackLock(object):
|
||||
@ -66,45 +66,45 @@ class StackLock(object):
|
||||
lock_engine_id = db_api.stack_lock_create(self.stack.id,
|
||||
self.engine_id)
|
||||
if lock_engine_id is None:
|
||||
logger.debug("Engine %(engine)s acquired lock on stack "
|
||||
"%(stack)s" % {'engine': self.engine_id,
|
||||
'stack': self.stack.id})
|
||||
LOG.debug("Engine %(engine)s acquired lock on stack "
|
||||
"%(stack)s" % {'engine': self.engine_id,
|
||||
'stack': self.stack.id})
|
||||
return
|
||||
|
||||
if lock_engine_id == self.engine_id or \
|
||||
self.engine_alive(self.context, lock_engine_id):
|
||||
logger.debug("Lock on stack %(stack)s is owned by engine "
|
||||
"%(engine)s" % {'stack': self.stack.id,
|
||||
'engine': lock_engine_id})
|
||||
LOG.debug("Lock on stack %(stack)s is owned by engine "
|
||||
"%(engine)s" % {'stack': self.stack.id,
|
||||
'engine': lock_engine_id})
|
||||
raise exception.ActionInProgress(stack_name=self.stack.name,
|
||||
action=self.stack.action)
|
||||
else:
|
||||
logger.info(_("Stale lock detected on stack %(stack)s. Engine "
|
||||
"%(engine)s will attempt to steal the lock")
|
||||
% {'stack': self.stack.id, 'engine': self.engine_id})
|
||||
LOG.info(_("Stale lock detected on stack %(stack)s. Engine "
|
||||
"%(engine)s will attempt to steal the lock")
|
||||
% {'stack': self.stack.id, 'engine': self.engine_id})
|
||||
|
||||
result = db_api.stack_lock_steal(self.stack.id, lock_engine_id,
|
||||
self.engine_id)
|
||||
|
||||
if result is None:
|
||||
logger.info(_("Engine %(engine)s successfully stole the lock "
|
||||
"on stack %(stack)s")
|
||||
% {'engine': self.engine_id,
|
||||
'stack': self.stack.id})
|
||||
LOG.info(_("Engine %(engine)s successfully stole the lock "
|
||||
"on stack %(stack)s")
|
||||
% {'engine': self.engine_id,
|
||||
'stack': self.stack.id})
|
||||
return
|
||||
elif result is True:
|
||||
if retry:
|
||||
logger.info(_("The lock on stack %(stack)s was released "
|
||||
"while engine %(engine)s was stealing it. "
|
||||
"Trying again") % {'stack': self.stack.id,
|
||||
'engine': self.engine_id})
|
||||
LOG.info(_("The lock on stack %(stack)s was released "
|
||||
"while engine %(engine)s was stealing it. "
|
||||
"Trying again") % {'stack': self.stack.id,
|
||||
'engine': self.engine_id})
|
||||
return self.acquire(retry=False)
|
||||
else:
|
||||
new_lock_engine_id = result
|
||||
logger.info(_("Failed to steal lock on stack %(stack)s. "
|
||||
"Engine %(engine)s stole the lock first")
|
||||
% {'stack': self.stack.id,
|
||||
'engine': new_lock_engine_id})
|
||||
LOG.info(_("Failed to steal lock on stack %(stack)s. "
|
||||
"Engine %(engine)s stole the lock first")
|
||||
% {'stack': self.stack.id,
|
||||
'engine': new_lock_engine_id})
|
||||
|
||||
raise exception.ActionInProgress(
|
||||
stack_name=self.stack.name, action=self.stack.action)
|
||||
@ -114,9 +114,8 @@ class StackLock(object):
|
||||
# Only the engine that owns the lock will be releasing it.
|
||||
result = db_api.stack_lock_release(stack_id, self.engine_id)
|
||||
if result is True:
|
||||
logger.warning(_("Lock was already released on stack %s!")
|
||||
% stack_id)
|
||||
LOG.warning(_("Lock was already released on stack %s!") % stack_id)
|
||||
else:
|
||||
logger.debug("Engine %(engine)s released lock on stack "
|
||||
"%(stack)s" % {'engine': self.engine_id,
|
||||
'stack': stack_id})
|
||||
LOG.debug("Engine %(engine)s released lock on stack "
|
||||
"%(stack)s" % {'engine': self.engine_id,
|
||||
'stack': stack_id})
|
||||
|
@ -22,7 +22,7 @@ from heat.engine import scheduler
|
||||
from heat.openstack.common.gettextutils import _
|
||||
from heat.openstack.common import log as logging
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
LOG = logging.getLogger(__name__)
|
||||
|
||||
|
||||
class StackResource(resource.Resource):
|
||||
@ -103,7 +103,7 @@ class StackResource(resource.Resource):
|
||||
params = self.child_params()
|
||||
except NotImplementedError:
|
||||
not_implemented_msg = _("Preview of '%s' not yet implemented")
|
||||
logger.warning(not_implemented_msg % self.__class__.__name__)
|
||||
LOG.warning(not_implemented_msg % self.__class__.__name__)
|
||||
return self
|
||||
|
||||
self._validate_nested_resources(template)
|
||||
@ -240,7 +240,7 @@ class StackResource(resource.Resource):
|
||||
try:
|
||||
stack = self.nested()
|
||||
except exception.NotFound:
|
||||
logger.info(_("Stack not found to delete"))
|
||||
LOG.info(_("Stack not found to delete"))
|
||||
else:
|
||||
if stack is not None:
|
||||
delete_task = scheduler.TaskRunner(stack.delete)
|
||||
|
@ -19,7 +19,7 @@ from heat.openstack.common.gettextutils import _
|
||||
from heat.openstack.common import log as logging
|
||||
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
LOG = logging.getLogger(__name__)
|
||||
|
||||
|
||||
class StackUser(resource.Resource):
|
||||
@ -80,7 +80,7 @@ class StackUser(resource.Resource):
|
||||
# compatibility with resources created before the migration
|
||||
# to stack_user.StackUser domain users. After an appropriate
|
||||
# transitional period, this should be removed.
|
||||
logger.warning(_('Reverting to legacy user delete path'))
|
||||
LOG.warning(_('Reverting to legacy user delete path'))
|
||||
try:
|
||||
self.keystone().delete_stack_user(user_id)
|
||||
except kc_exception.NotFound:
|
||||
|
@ -20,7 +20,7 @@ from heat.db import api as db_api
|
||||
from heat.engine import plugin_manager
|
||||
from heat.openstack.common import log as logging
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
LOG = logging.getLogger(__name__)
|
||||
|
||||
__all__ = ['Template']
|
||||
|
||||
@ -191,9 +191,9 @@ class Template(collections.Mapping):
|
||||
# check resources
|
||||
tmpl_resources = self[self.RESOURCES]
|
||||
if not tmpl_resources:
|
||||
logger.warn(_('Template does not contain any resources, so '
|
||||
'the template would not really do anything when '
|
||||
'being instantiated.'))
|
||||
LOG.warn(_('Template does not contain any resources, so '
|
||||
'the template would not really do anything when '
|
||||
'being instantiated.'))
|
||||
|
||||
for res in tmpl_resources.values():
|
||||
try:
|
||||
|
@ -20,7 +20,7 @@ from heat.engine import scheduler
|
||||
from heat.openstack.common.gettextutils import _
|
||||
from heat.openstack.common import log as logging
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
LOG = logging.getLogger(__name__)
|
||||
|
||||
|
||||
class StackUpdate(object):
|
||||
@ -76,7 +76,7 @@ class StackUpdate(object):
|
||||
def _remove_backup_resource(self, prev_res):
|
||||
if prev_res.state not in ((prev_res.INIT, prev_res.COMPLETE),
|
||||
(prev_res.DELETE, prev_res.COMPLETE)):
|
||||
logger.debug("Deleting backup resource %s" % prev_res.name)
|
||||
LOG.debug("Deleting backup resource %s" % prev_res.name)
|
||||
yield prev_res.destroy()
|
||||
|
||||
@staticmethod
|
||||
@ -100,18 +100,17 @@ class StackUpdate(object):
|
||||
# Swap in the backup resource if it is in a valid state,
|
||||
# instead of creating a new resource
|
||||
if prev_res.status == prev_res.COMPLETE:
|
||||
logger.debug("Swapping in backup Resource %s" %
|
||||
res_name)
|
||||
LOG.debug("Swapping in backup Resource %s" % res_name)
|
||||
self._exchange_stacks(self.existing_stack[res_name],
|
||||
prev_res)
|
||||
return
|
||||
|
||||
logger.debug("Deleting backup Resource %s" % res_name)
|
||||
LOG.debug("Deleting backup Resource %s" % res_name)
|
||||
yield prev_res.destroy()
|
||||
|
||||
# Back up existing resource
|
||||
if res_name in self.existing_stack:
|
||||
logger.debug("Backing up existing Resource %s" % res_name)
|
||||
LOG.debug("Backing up existing Resource %s" % res_name)
|
||||
existing_res = self.existing_stack[res_name]
|
||||
self.previous_stack[res_name] = existing_res
|
||||
existing_res.state_set(existing_res.UPDATE, existing_res.COMPLETE)
|
||||
@ -131,10 +130,10 @@ class StackUpdate(object):
|
||||
except resource.UpdateReplace:
|
||||
pass
|
||||
else:
|
||||
logger.info(_("Resource %(res_name)s for stack %(stack_name)s"
|
||||
" updated") % {
|
||||
'res_name': res_name,
|
||||
'stack_name': self.existing_stack.name})
|
||||
LOG.info(_("Resource %(res_name)s for stack %(stack_name)s "
|
||||
"updated")
|
||||
% {'res_name': res_name,
|
||||
'stack_name': self.existing_stack.name})
|
||||
return
|
||||
|
||||
yield self._create_resource(new_res)
|
||||
|
@ -23,7 +23,7 @@ from heat.openstack.common import log as logging
|
||||
from heat.openstack.common import timeutils
|
||||
from heat.rpc import api as rpc_api
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
LOG = logging.getLogger(__name__)
|
||||
|
||||
|
||||
class WatchRule(object):
|
||||
@ -75,9 +75,8 @@ class WatchRule(object):
|
||||
try:
|
||||
watch = db_api.watch_rule_get_by_name(context, watch_name)
|
||||
except Exception as ex:
|
||||
logger.warn(_('WatchRule.load (%(watch_name)s) db error '
|
||||
'%(ex)s') % {
|
||||
'watch_name': watch_name, 'ex': ex})
|
||||
LOG.warn(_('WatchRule.load (%(watch_name)s) db error '
|
||||
'%(ex)s') % {'watch_name': watch_name, 'ex': ex})
|
||||
if watch is None:
|
||||
raise exception.WatchRuleNotFound(watch_name=watch_name)
|
||||
else:
|
||||
@ -210,7 +209,7 @@ class WatchRule(object):
|
||||
data = 0
|
||||
for d in self.watch_data:
|
||||
if d.created_at < self.now - self.timeperiod:
|
||||
logger.debug('ignoring %s' % str(d.data))
|
||||
LOG.debug('ignoring %s' % str(d.data))
|
||||
continue
|
||||
data = data + float(d.data[self.rule['MetricName']]['Value'])
|
||||
|
||||
@ -247,14 +246,13 @@ class WatchRule(object):
|
||||
return actions
|
||||
|
||||
def rule_actions(self, new_state):
|
||||
logger.info(_('WATCH: stack:%(stack)s, watch_name:%(watch_name)s, '
|
||||
'new_state:%(new_state)s'), {'stack': self.stack_id,
|
||||
'watch_name': self.name,
|
||||
'new_state': new_state})
|
||||
LOG.info(_('WATCH: stack:%(stack)s, watch_name:%(watch_name)s, '
|
||||
'new_state:%(new_state)s'), {'stack': self.stack_id,
|
||||
'watch_name': self.name,
|
||||
'new_state': new_state})
|
||||
actions = []
|
||||
if self.ACTION_MAP[new_state] not in self.rule:
|
||||
logger.info(_('no action for new state %s'),
|
||||
new_state)
|
||||
LOG.info(_('no action for new state %s'), new_state)
|
||||
else:
|
||||
s = db_api.stack_get(self.context, self.stack_id,
|
||||
eager_load=True)
|
||||
@ -264,8 +262,8 @@ class WatchRule(object):
|
||||
for refid in self.rule[self.ACTION_MAP[new_state]]:
|
||||
actions.append(stack.resource_by_refid(refid).signal)
|
||||
else:
|
||||
logger.warning(_("Could not process watch state %s for stack")
|
||||
% new_state)
|
||||
LOG.warning(_("Could not process watch state %s for stack")
|
||||
% new_state)
|
||||
return actions
|
||||
|
||||
def _to_ceilometer(self, data):
|
||||
@ -285,8 +283,8 @@ class WatchRule(object):
|
||||
dims = dims[0]
|
||||
sample['resource_metadata'] = dims
|
||||
sample['resource_id'] = dims.get('InstanceId')
|
||||
logger.debug('new sample:%(k)s data:%(sample)s' % {
|
||||
'k': k, 'sample': sample})
|
||||
LOG.debug('new sample:%(k)s data:%(sample)s' % {
|
||||
'k': k, 'sample': sample})
|
||||
clients.ceilometer().samples.create(**sample)
|
||||
|
||||
def create_watch_data(self, data):
|
||||
@ -298,8 +296,8 @@ class WatchRule(object):
|
||||
return
|
||||
|
||||
if self.state == self.SUSPENDED:
|
||||
logger.debug('Ignoring metric data for %s, SUSPENDED state'
|
||||
% self.name)
|
||||
LOG.debug('Ignoring metric data for %s, SUSPENDED state'
|
||||
% self.name)
|
||||
return []
|
||||
|
||||
if self.rule['MetricName'] not in data:
|
||||
@ -308,9 +306,9 @@ class WatchRule(object):
|
||||
# options, e.g --haproxy try to push multiple metrics when we
|
||||
# actually only care about one (the one we're alarming on)
|
||||
# so just ignore any data which doesn't contain MetricName
|
||||
logger.debug('Ignoring metric data (only accept %(metric)s) '
|
||||
': %(data)s' % {
|
||||
'metric': self.rule['MetricName'], 'data': data})
|
||||
LOG.debug('Ignoring metric data (only accept %(metric)s) '
|
||||
': %(data)s' % {'metric': self.rule['MetricName'],
|
||||
'data': data})
|
||||
return
|
||||
|
||||
watch_data = {
|
||||
@ -318,8 +316,8 @@ class WatchRule(object):
|
||||
'watch_rule_id': self.id
|
||||
}
|
||||
wd = db_api.watch_data_create(None, watch_data)
|
||||
logger.debug('new watch:%(name)s data:%(data)s'
|
||||
% {'name': self.name, 'data': str(wd.data)})
|
||||
LOG.debug('new watch:%(name)s data:%(data)s'
|
||||
% {'name': self.name, 'data': str(wd.data)})
|
||||
|
||||
def state_set(self, state):
|
||||
'''
|
||||
@ -344,14 +342,14 @@ class WatchRule(object):
|
||||
if state != self.state:
|
||||
actions = self.rule_actions(state)
|
||||
if actions:
|
||||
logger.debug("Overriding state %(self_state)s for watch "
|
||||
"%(name)s with %(state)s" % {
|
||||
'self_state': self.state, 'name': self.name,
|
||||
'state': state})
|
||||
LOG.debug("Overriding state %(self_state)s for watch "
|
||||
"%(name)s with %(state)s"
|
||||
% {'self_state': self.state, 'name': self.name,
|
||||
'state': state})
|
||||
else:
|
||||
logger.warning(_("Unable to override state %(state)s for "
|
||||
"watch %(name)s") % {
|
||||
'state': self.state, 'name': self.name})
|
||||
LOG.warning(_("Unable to override state %(state)s for "
|
||||
"watch %(name)s") % {'state': self.state,
|
||||
'name': self.name})
|
||||
return actions
|
||||
|
||||
|
||||
|
@ -35,9 +35,9 @@ TEST_DEFAULT_LOGLEVELS = {'migrate': logging.WARN}
|
||||
|
||||
class FakeLogMixin:
|
||||
def setup_logging(self):
|
||||
# Assign default logs to self.logger so we can still
|
||||
# Assign default logs to self.LOG so we can still
|
||||
# assert on heat logs.
|
||||
self.logger = self.useFixture(
|
||||
self.LOG = self.useFixture(
|
||||
fixtures.FakeLogger(level=logging.DEBUG))
|
||||
base_list = set([nlog.split('.')[0]
|
||||
for nlog in logging.Logger.manager.loggerDict])
|
||||
|
@ -17,7 +17,7 @@ from heat.engine import stack_user
|
||||
from heat.openstack.common.gettextutils import _
|
||||
from heat.openstack.common import log as logging
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
LOG = logging.getLogger(__name__)
|
||||
|
||||
|
||||
class GenericResource(resource.Resource):
|
||||
@ -29,27 +29,27 @@ class GenericResource(resource.Resource):
|
||||
'Foo': 'Another generic attribute'}
|
||||
|
||||
def handle_create(self):
|
||||
logger.warning(_('Creating generic resource (Type "%s")') %
|
||||
self.type())
|
||||
LOG.warning(_('Creating generic resource (Type "%s")') %
|
||||
self.type())
|
||||
|
||||
def handle_update(self, json_snippet, tmpl_diff, prop_diff):
|
||||
logger.warning(_('Updating generic resource (Type "%s")') %
|
||||
self.type())
|
||||
LOG.warning(_('Updating generic resource (Type "%s")') %
|
||||
self.type())
|
||||
|
||||
def handle_delete(self):
|
||||
logger.warning(_('Deleting generic resource (Type "%s")') %
|
||||
self.type())
|
||||
LOG.warning(_('Deleting generic resource (Type "%s")') %
|
||||
self.type())
|
||||
|
||||
def _resolve_attribute(self, name):
|
||||
return self.name
|
||||
|
||||
def handle_suspend(self):
|
||||
logger.warning(_('Suspending generic resource (Type "%s")') %
|
||||
self.type())
|
||||
LOG.warning(_('Suspending generic resource (Type "%s")') %
|
||||
self.type())
|
||||
|
||||
def handle_resume(self):
|
||||
logger.warning(_('Resuming generic resource (Type "%s")') %
|
||||
self.type())
|
||||
LOG.warning(_('Resuming generic resource (Type "%s")') %
|
||||
self.type())
|
||||
|
||||
|
||||
class ResWithComplexPropsAndAttrs(GenericResource):
|
||||
@ -129,8 +129,8 @@ class SignalResource(signal_responder.SignalResponder):
|
||||
msg = _('Cannot signal resource during %s') % self.action
|
||||
raise Exception(msg)
|
||||
|
||||
logger.warning(_('Signaled resource (Type "%(type)s") %(details)s')
|
||||
% {'type': self.type(), 'details': details})
|
||||
LOG.warning(_('Signaled resource (Type "%(type)s") %(details)s')
|
||||
% {'type': self.type(), 'details': details})
|
||||
|
||||
def _resolve_attribute(self, name):
|
||||
if name == 'AlarmUrl' and self.resource_id is not None:
|
||||
|
@ -177,7 +177,7 @@ class EnvironmentDuplicateTest(common.HeatTestCase):
|
||||
replace_log = 'Changing %s from %s to %s' % ('OS::Test::Dummy',
|
||||
'test.yaml',
|
||||
self.resource_type)
|
||||
self.assertNotIn(replace_log, self.logger.output)
|
||||
self.assertNotIn(replace_log, self.LOG.output)
|
||||
env_test = {u'resource_registry': {
|
||||
u'OS::Test::Dummy': self.resource_type}}
|
||||
env.load(env_test)
|
||||
@ -186,9 +186,9 @@ class EnvironmentDuplicateTest(common.HeatTestCase):
|
||||
# should return exactly the same object.
|
||||
self.assertIs(info, env.get_resource_info('OS::Test::Dummy',
|
||||
'my_fip'))
|
||||
self.assertNotIn(replace_log, self.logger.output)
|
||||
self.assertNotIn(replace_log, self.LOG.output)
|
||||
else:
|
||||
self.assertIn(replace_log, self.logger.output)
|
||||
self.assertIn(replace_log, self.LOG.output)
|
||||
self.assertNotEqual(info,
|
||||
env.get_resource_info('OS::Test::Dummy',
|
||||
'my_fip'))
|
||||
|
@ -259,7 +259,7 @@ class ResourceExceptionHandlingTest(HeatTestCase):
|
||||
None)
|
||||
e = self.assertRaises(self.exception_catch, resource, request)
|
||||
e = e.exc if hasattr(e, 'exc') else e
|
||||
self.assertNotIn(str(e), self.logger.output)
|
||||
self.assertNotIn(str(e), self.LOG.output)
|
||||
|
||||
|
||||
class JSONRequestDeserializerTest(HeatTestCase):
|
||||
|
Loading…
Reference in New Issue
Block a user