示例#1
0
    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)
示例#2
0
    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)
示例#3
0
    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)
示例#4
0
    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)
示例#5
0
    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)
示例#6
0
    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)
示例#7
0
 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'))
示例#8
0
    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)
示例#9
0
    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)
示例#10
0
    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)
示例#11
0
    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)
示例#12
0
 def testOmitName(self):
     # Name is required.
     with self.assertRaises(Exception):
         RewriteMetadata({}, MetadataOptions(name=None))