def _get_volumes(self) -> List[k8s.V1Volume]: def _construct_volume(name, claim, host) -> k8s.V1Volume: volume = k8s.V1Volume(name=name) if claim: volume.persistent_volume_claim = k8s.V1PersistentVolumeClaimVolumeSource( claim_name=claim) elif host: volume.host_path = k8s.V1HostPathVolumeSource(path=host, type='') else: volume.empty_dir = {} return volume volumes = { self.dags_volume_name: _construct_volume(self.dags_volume_name, self.kube_config.dags_volume_claim, self.kube_config.dags_volume_host), self.logs_volume_name: _construct_volume(self.logs_volume_name, self.kube_config.logs_volume_claim, self.kube_config.logs_volume_host) } if self.kube_config.dags_in_image: del volumes[self.dags_volume_name] # Get the SSH key from secrets as a volume if self.kube_config.git_ssh_key_secret_name: volumes[self.git_sync_ssh_secret_volume_name] = k8s.V1Volume( name=self.git_sync_ssh_secret_volume_name, secret=k8s.V1SecretVolumeSource( secret_name=self.kube_config.git_ssh_key_secret_name, items=[ k8s.V1KeyToPath(key=self.git_ssh_key_secret_key, path='ssh', mode=0o440) ])) if self.kube_config.git_ssh_known_hosts_configmap_name: volumes[self.git_sync_ssh_known_hosts_volume_name] = k8s.V1Volume( name=self.git_sync_ssh_known_hosts_volume_name, config_map=k8s.V1ConfigMapVolumeSource( name=self.kube_config.git_ssh_known_hosts_configmap_name, default_mode=0o440)) # Mount the airflow.cfg file via a configmap the user has specified if self.kube_config.airflow_configmap: config_volume_name = 'airflow-config' volumes[config_volume_name] = k8s.V1Volume( name=config_volume_name, config_map=k8s.V1ConfigMapVolumeSource( name=self.kube_config.airflow_configmap)) return list(volumes.values())
def test_only_mount_sub_secret(self, mock_uuid): mock_uuid.return_value = '0' items = [k8s.V1KeyToPath(key="my-username", path="/extra/path")] secret = Secret('volume', '/etc/foo', 'secret_b', items=items) assert secret.to_volume_secret() == ( k8s.V1Volume( name='secretvol0', secret=k8s.V1SecretVolumeSource(secret_name='secret_b', items=items) ), k8s.V1VolumeMount(mount_path='/etc/foo', name='secretvol0', read_only=True), )