Make ACI generation consistent across calls
This will ensure that no matter which signature we write for the generated ACI, it is correct for that image.
This commit is contained in:
parent
f02d295dd8
commit
4ec3a6c231
5 changed files with 60 additions and 16 deletions
|
@ -18,10 +18,10 @@ class TarImageFormatter(object):
|
|||
layer_json, get_image_iterator, get_layer_iterator, get_image_json):
|
||||
raise NotImplementedError
|
||||
|
||||
def tar_file(self, name, contents):
|
||||
def tar_file(self, name, contents, mtime=None):
|
||||
""" Returns the TAR binary representation for a file with the given name and file contents. """
|
||||
length = len(contents)
|
||||
tar_data = self.tar_file_header(name, length)
|
||||
tar_data = self.tar_file_header(name, length, mtime=mtime)
|
||||
tar_data += contents
|
||||
tar_data += self.tar_file_padding(length)
|
||||
return tar_data
|
||||
|
@ -33,17 +33,24 @@ class TarImageFormatter(object):
|
|||
|
||||
return ''
|
||||
|
||||
def tar_file_header(self, name, file_size):
|
||||
def tar_file_header(self, name, file_size, mtime=None):
|
||||
""" Returns TAR file header data for a file with the given name and size. """
|
||||
info = tarfile.TarInfo(name=name)
|
||||
info.type = tarfile.REGTYPE
|
||||
info.size = file_size
|
||||
|
||||
if mtime is not None:
|
||||
info.mtime = mtime
|
||||
return info.tobuf()
|
||||
|
||||
def tar_folder(self, name):
|
||||
def tar_folder(self, name, mtime=None):
|
||||
""" Returns TAR file header data for a folder with the given name. """
|
||||
info = tarfile.TarInfo(name=name)
|
||||
info.type = tarfile.DIRTYPE
|
||||
|
||||
if mtime is not None:
|
||||
info.mtime = mtime
|
||||
|
||||
# allow the directory to be readable by non-root users
|
||||
info.mode = 0755
|
||||
return info.tobuf()
|
||||
|
|
Reference in a new issue