Explicitly compare IDs to None

Many database IDs (Resource, WatchRule) are integers, so 0 is a valid ID
and evaluating it in a boolean context may give the wrong result for the
first entry in the table. Even for the ones that aren't (e.g. Stack) it's
better to explicitly compare to None.

Change-Id: Id95eeb5cd0f9cac82937fae48122ce5fa90ca48d
This commit is contained in:
Zane Bitter 2017-05-02 16:29:35 -04:00
parent 5529700be2
commit 8d25c41014
3 changed files with 8 additions and 8 deletions

View File

@ -623,8 +623,8 @@ class Resource(status.ResourceStatus):
def __str__(self):
class_name = reflection.get_class_name(self, fully_qualified=False)
if self.stack.id:
if self.resource_id:
if self.stack.id is not None:
if self.resource_id is not None:
text = '%s "%s" [%s] %s' % (class_name, self.name,
self.resource_id,
six.text_type(self.stack))
@ -2309,7 +2309,7 @@ class Resource(status.ResourceStatus):
:returns: a dict representing the resource data for this resource.
"""
if self._data is None and self.id:
if self._data is None and self.id is not None:
try:
self._data = resource_data_objects.ResourceData.get_all(self)
except exception.NotFound:

View File

@ -360,7 +360,7 @@ class Stack(collections.Mapping):
return resources or None
def db_resource_get(self, name):
if not self.id:
if self.id is None:
return None
return self._db_resources_get().get(name)
@ -461,7 +461,7 @@ class Stack(collections.Mapping):
Includes nested stacks below.
"""
if not stack_id:
if not self.id:
if self.id is None:
# We're not stored yet, so we don't have anything to count
return 0
stack_id = self.id
@ -653,7 +653,7 @@ class Stack(collections.Mapping):
else:
s['raw_template_id'] = self.t.id
if self.id:
if self.id is not None:
if exp_trvsl is None and not ignore_traversal_check:
exp_trvsl = self.current_traversal

View File

@ -111,7 +111,7 @@ class WatchRule(object):
'stack_id': self.stack_id
}
if not self.id:
if self.id is None:
wr = watch_rule_objects.WatchRule.create(self.context, wr_values)
self.id = wr.id
else:
@ -120,7 +120,7 @@ class WatchRule(object):
def destroy(self):
"""Delete the watchrule from the database."""
if self.id:
if self.id is not None:
watch_rule_objects.WatchRule.delete(self.context, self.id)
def do_data_cmp(self, data, threshold):