diff options
author | Sam Thursfield <sam.thursfield@codethink.co.uk> | 2014-03-03 16:00:22 +0000 |
---|---|---|
committer | Sam Thursfield <sam.thursfield@codethink.co.uk> | 2014-03-04 14:48:04 +0000 |
commit | 5843afcd9bc657479aca06419d0c0427f73c9ef4 (patch) | |
tree | 89701f1c63a11da664cebd11185bc00f2ab75d32 /morphlib/gitdir.py | |
parent | 25e6196c435dc9f9b71440f22879ea91beca41e6 (diff) | |
download | morph-5843afcd9bc657479aca06419d0c0427f73c9ef4.tar.gz |
deploy: Record deployment information in deployed system
This commit introduces a new requirement: USERS MUST NOT HAVE SENSITIVE
DATA IN THEIR ENVIRONMENT. Otherwise it will be leaked into the system.
Note that configuration fields with 'PASSWORD' in their name are
stripped before writing the /baserock/deployment.meta file, so the
OpenStack OS_PASSWORD field is not leaked.
We want this so that we can run hooks at upgrade-time in the future.
These hooks might need to know how the system was configured and what
releaseuu it was. I'm not quite sure how we will define 'release' yet,
but by using `git tag` and `git describe` we are able to textually label
a time period in the history of the system's source code. We already
have the specific SHA1 of definitions.git stored in the system metadata,
so this should give us enough to be able to implement specific hooks
that work around any awkward upgrade complications we encounter in the
future.
Diffstat (limited to 'morphlib/gitdir.py')
-rw-r--r-- | morphlib/gitdir.py | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/morphlib/gitdir.py b/morphlib/gitdir.py index be2137b2..f5ef0061 100644 --- a/morphlib/gitdir.py +++ b/morphlib/gitdir.py @@ -1,4 +1,4 @@ -# Copyright (C) 2013 Codethink Limited +# Copyright (C) 2013-2014 Codethink Limited # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -610,6 +610,11 @@ class GitDirectory(object): except Exception, e: raise RefDeleteError(self, ref, old_sha1, e) + def describe(self): + version = self._runcmd( + ['git', 'describe', '--always', '--dirty=-unreproducible']) + return version.strip() + def init(dirname): '''Initialise a new git repository.''' |