def testNewCmd(self): in_data = { 'config': { 'User': '******', 'WorkingDir': '/usr/home/mattmoor', 'Entrypoint': ['/bin/bash'], } } name = 'deadbeef' parent = 'blah' cmd = ['/bin/bash'] expected = { 'id': name, 'parent': parent, 'config': { 'User': '******', 'WorkingDir': '/usr/home/mattmoor', 'Entrypoint': ['/bin/bash'], 'Cmd': cmd }, 'docker_version': _DOCKER_VERSION, 'architecture': _PROCESSOR_ARCHITECTURE, 'os': _OPERATING_SYSTEM, } actual = RewriteMetadata( in_data, MetadataOptions(name=name, cmd=cmd, parent=parent)) self.assertEquals(expected, actual)
def testAugmentVolumeWithNullInput(self): in_data = { 'config': { 'User': '******', 'WorkingDir': '/usr/home/mattmoor', 'Volumes': None, } } name = 'deadbeef' parent = 'blah' volume = '/data' expected = { 'id': name, 'parent': parent, 'config': { 'User': '******', 'WorkingDir': '/usr/home/mattmoor', 'Volumes': { volume: {} } }, 'docker_version': _DOCKER_VERSION, 'architecture': _PROCESSOR_ARCHITECTURE, 'os': _OPERATING_SYSTEM, } actual = RewriteMetadata( in_data, MetadataOptions(name=name, parent=parent, volumes=[volume])) self.assertEquals(expected, actual)
def testSetWorkingDir(self): in_data = { 'config': { 'User': '******', 'WorkingDir': '/home/bleh', 'Volumes': {} } } name = 'deadbeef' parent = 'blah' workdir = '/some/path' expected = { 'id': name, 'parent': parent, 'config': { 'User': '******', 'WorkingDir': '/some/path', 'Volumes': {} }, 'docker_version': _DOCKER_VERSION, 'architecture': _PROCESSOR_ARCHITECTURE, 'os': _OPERATING_SYSTEM, } actual = RewriteMetadata( in_data, MetadataOptions(name=name, parent=parent, workdir=workdir)) self.assertEquals(expected, actual)
def testPortWithProtocol(self): in_data = { 'config': { 'User': '******', 'WorkingDir': '/usr/home/mattmoor' } } name = 'deadbeef' parent = 'blah' port = '80/tcp' expected = { 'id': name, 'parent': parent, 'config': { 'User': '******', 'WorkingDir': '/usr/home/mattmoor', 'ExposedPorts': { port: {} } }, 'docker_version': _DOCKER_VERSION, 'architecture': _PROCESSOR_ARCHITECTURE, 'os': _OPERATING_SYSTEM, } actual = RewriteMetadata( in_data, MetadataOptions(name=name, parent=parent, ports=[port])) self.assertEquals(expected, actual)
def testLabel(self): in_data = { 'config': { 'User': '******', 'WorkingDir': '/usr/home/mattmoor' } } name = 'deadbeef' parent = 'blah' labels = { 'baz': 'blah', 'foo': 'bar', } expected = { 'id': name, 'parent': parent, 'config': { 'User': '******', 'WorkingDir': '/usr/home/mattmoor', 'Label': [ 'baz=blah', 'foo=bar', ], }, 'docker_version': _DOCKER_VERSION, 'architecture': _PROCESSOR_ARCHITECTURE, 'os': _OPERATING_SYSTEM, } actual = RewriteMetadata( in_data, MetadataOptions(name=name, labels=labels, parent=parent)) self.assertEquals(expected, actual)
def testMultipleVolumes(self): in_data = { 'config': { 'User': '******', 'WorkingDir': '/usr/home/mattmoor' } } name = 'deadbeef' parent = 'blah' volume1 = '/input' volume2 = '/output' expected = { 'id': name, 'parent': parent, 'config': { 'User': '******', 'WorkingDir': '/usr/home/mattmoor', 'Volumes': { volume1: {}, volume2: {} } }, 'docker_version': _DOCKER_VERSION, 'architecture': _PROCESSOR_ARCHITECTURE, 'os': _OPERATING_SYSTEM, } actual = RewriteMetadata( in_data, MetadataOptions(name=name, parent=parent, volumes=[volume1, volume2])) self.assertEquals(expected, actual)
def testOmitParentWithBase(self): # Our input data should be empty when parent is omitted in_data = { 'id': 'you', } with self.assertRaises(Exception): RewriteMetadata(in_data, MetadataOptions(name='me'))
def testEmptyBase(self): in_data = {} name = 'deadbeef' entrypoint = ['/bin/bash', '-c'] cmd = ['my-command', 'my-arg1', 'my-arg2'] size = '999' expected = { 'id': name, 'config': { 'Entrypoint': entrypoint, 'Cmd': cmd, 'ExposedPorts': { '80/tcp': {} } }, 'docker_version': _DOCKER_VERSION, 'architecture': _PROCESSOR_ARCHITECTURE, 'os': _OPERATING_SYSTEM, 'Size': size, } actual = RewriteMetadata( in_data, MetadataOptions(name=name, entrypoint=entrypoint, cmd=cmd, size=size, ports=['80'])) self.assertEquals(expected, actual)
def testStripContainerConfig(self): # Size is one of the few fields that, when omitted, # should be removed. in_data = { 'id': 'you', 'container_config': {}, } name = 'me' parent = 'blah' expected = { 'id': name, 'parent': parent, 'config': {}, 'docker_version': _DOCKER_VERSION, 'architecture': _PROCESSOR_ARCHITECTURE, 'os': _OPERATING_SYSTEM, } actual = RewriteMetadata(in_data, MetadataOptions(name=name, parent=parent)) self.assertEquals(expected, actual)
def testOverrideParent(self): name = 'me!' parent = 'parent' # In the typical case, we expect the parent to # come in as the 'id', and our grandparent to # be its 'parent'. in_data = { 'id': parent, 'parent': 'grandparent', } expected = { 'id': name, 'parent': parent, 'config': {}, 'docker_version': _DOCKER_VERSION, 'architecture': _PROCESSOR_ARCHITECTURE, 'os': _OPERATING_SYSTEM, } actual = RewriteMetadata(in_data, MetadataOptions(name=name, parent=parent)) self.assertEquals(expected, actual)
def testEnvResolveReplace(self): in_data = { 'config': { 'User': '******', 'WorkingDir': '/usr/home/mattmoor', 'Env': [ 'foo=bar', 'baz=blah', 'blah=still around', ], } } name = 'deadbeef' parent = 'blah' env = { 'baz': 'replacement', 'foo': '$foo:asdf', } expected = { 'id': name, 'parent': parent, 'config': { 'User': '******', 'WorkingDir': '/usr/home/mattmoor', 'Env': [ 'baz=replacement', 'blah=still around', 'foo=bar:asdf', ], }, 'docker_version': _DOCKER_VERSION, 'architecture': _PROCESSOR_ARCHITECTURE, 'os': _OPERATING_SYSTEM, } actual = RewriteMetadata( in_data, MetadataOptions(name=name, env=env, parent=parent)) self.assertEquals(expected, actual)
def testOmitName(self): # Name is required. with self.assertRaises(Exception): RewriteMetadata({}, MetadataOptions(name=None))