heat : workaround engine error with version code

Work around lack of git sha in vcsversion so we don't get an
engine error if the version dict doesn't contain the sha key

Fixes #259

Change-Id: I25d2cfb008a5a9e0e1a60e7360e58608d2d8e9c0
Signed-off-by: Steven Hardy <shardy@redhat.com>
This commit is contained in:
Steven Hardy 2012-10-10 11:57:33 +01:00
parent a34b9ef5ab
commit efd5294086

View File

@ -13,6 +13,7 @@
# License for the specific language governing permissions and limitations
# under the License.
import os
try:
import git
@ -22,7 +23,7 @@ except ImportError:
try:
from heat.vcsversion import version_info
except ImportError:
version_info = {'sha': ''}
version_info = {}
HEAT_VERSION = '7'
FINAL = False # This becomes true at Release Candidate time
@ -30,29 +31,33 @@ FINAL = False # This becomes true at Release Candidate time
def get_git_sha():
if not git:
return version_info['sha']
return version_info.get('sha', '')
try:
repo = git.Repo('.')
except InvalidGitRepositoryError:
return version_info['sha']
except git.InvalidGitRepositoryError:
return version_info.get('sha', '')
return repo.head.commit.hexsha
def write_git_sha():
if not git:
return
sha = get_git_sha()
vcsversion_path = 'heat/vcsversion.py'
if sha:
with open('heat/vcsversion.py', 'w') as version_file:
with open(vcsversion_path, 'w') as version_file:
version_file.write("""
# This file is automatically generated by heat's setup.py, so don't edit it. :)
version_info = {
'sha': '%s'
}
""" % (sha))
else:
try:
os.remove(vcsversion_path)
except OSError:
pass
def version_string(type='short'):