def test_parse_volume_and_mount(self): volume_config = """host_path=c0,mount_path=/path0; claim_name=c1,mount_path=/path1""" volumes, volume_mounts = parse_volume_and_mount(volume_config, "test") self.assertEqual(len(volumes), 2) self.assertEqual(volumes[0].persistent_volume_claim.claim_name, "c1") self.assertEqual(volumes[1].host_path.path, "c0") self.assertEqual(volume_mounts[0].mount_path, "/path0") self.assertEqual(volume_mounts[1].mount_path, "/path1")
def create_pod(self, **kargs): # Container pod_resource_requests = kargs["resource_requests"] pod_resource_limits = kargs["resource_limits"] pod_resource_limits = ( pod_resource_limits if pod_resource_limits else pod_resource_requests ) container = client.V1Container( name=kargs["pod_name"], image=kargs["image_name"], command=kargs["command"], resources=client.V1ResourceRequirements( requests=parse_resource(pod_resource_requests), limits=parse_resource(pod_resource_limits), ), args=kargs["container_args"], image_pull_policy=kargs["image_pull_policy"], env=kargs["env"], ) # Pod spec = client.V1PodSpec( containers=[container], restart_policy=kargs["restart_policy"], priority_class_name=kargs["pod_priority"], termination_grace_period_seconds=kargs.get( "termination_period", None ), ) # Mount data path if kargs["volume"]: volumes, volume_mounts = parse_volume_and_mount( kargs["volume"], kargs["pod_name"] ) spec.volumes = volumes container.volume_mounts = volume_mounts pod = client.V1Pod( spec=spec, metadata=client.V1ObjectMeta( name=kargs["pod_name"], labels=self._get_common_labels(), owner_references=self.create_owner_reference( kargs["owner_pod"] ), namespace=self.namespace, ), ) if self.cluster: pod = self.cluster.with_pod(pod) return pod