예제 #1
0
 def get_pod_volumes(
     self,
     docker_volumes: Sequence[DockerVolume],
     aws_ebs_volumes: Sequence[AwsEbsVolume],
 ) -> Sequence[V1Volume]:
     pod_volumes = []
     unique_docker_volumes = {
         self.get_docker_volume_name(docker_volume): docker_volume
         for docker_volume in docker_volumes
     }
     for name, docker_volume in unique_docker_volumes.items():
         pod_volumes.append(
             V1Volume(
                 host_path=V1HostPathVolumeSource(
                     path=docker_volume['hostPath'], ),
                 name=name,
             ), )
     unique_aws_ebs_volumes = {
         self.get_aws_ebs_volume_name(aws_ebs_volume): aws_ebs_volume
         for aws_ebs_volume in aws_ebs_volumes
     }
     for name, aws_ebs_volume in unique_aws_ebs_volumes.items():
         pod_volumes.append(
             V1Volume(
                 aws_elastic_block_store=V1AWSElasticBlockStoreVolumeSource(
                     volume_id=aws_ebs_volume['volume_id'],
                     fs_type=aws_ebs_volume.get('fs_type'),
                     partition=aws_ebs_volume.get('partition'),
                     # k8s wants RW volume even if it's later mounted RO
                     read_only=False,
                 ),
                 name=name,
             ), )
     return pod_volumes
예제 #2
0
 def test_get_pod_volumes(self):
     mock_docker_volumes = [
         {
             'hostPath': '/nail/blah',
             'containerPath': '/nail/foo'
         },
         {
             'hostPath': '/nail/thing',
             'containerPath': '/nail/bar'
         },
     ]
     mock_aws_ebs_volumes = [
         {
             'volume_id': 'vol-ZZZZZZZZZZZZZZZZZ',
             'fs_type': 'ext4',
             'container_path': '/nail/qux'
         },
     ]
     expected_volumes = [
         V1Volume(
             host_path=V1HostPathVolumeSource(path='/nail/blah', ),
             name='host--slash-nailslash-blah',
         ),
         V1Volume(
             host_path=V1HostPathVolumeSource(path='/nail/thing', ),
             name='host--slash-nailslash-thing',
         ),
         V1Volume(
             aws_elastic_block_store=V1AWSElasticBlockStoreVolumeSource(
                 volume_id='vol-ZZZZZZZZZZZZZZZZZ',
                 fs_type='ext4',
                 read_only=False,
             ),
             name='aws-ebs--vol-ZZZZZZZZZZZZZZZZZ',
         ),
     ]
     assert self.deployment.get_pod_volumes(
         docker_volumes=mock_docker_volumes,
         aws_ebs_volumes=mock_aws_ebs_volumes,
     ) == expected_volumes