src/server/pkg/deploy/assets/assets.go
func EtcdVolume(persistentDiskBackend backend, opts *AssetOpts,
	hostPath string, name string, size int) (*v1.PersistentVolume, error) {
	spec := &v1.PersistentVolume{
		TypeMeta: metav1.TypeMeta{
			Kind:       "PersistentVolume",
			APIVersion: "v1",
		},
		ObjectMeta: objectMeta(etcdVolumeName, labels(etcdName), nil, opts.Namespace),
		Spec: v1.PersistentVolumeSpec{
			Capacity: map[v1.ResourceName]resource.Quantity{
				"storage": resource.MustParse(fmt.Sprintf("%vGi", size)),
			},
			AccessModes:                   []v1.PersistentVolumeAccessMode{v1.ReadWriteOnce},
			PersistentVolumeReclaimPolicy: v1.PersistentVolumeReclaimRetain,
		},
	}

	switch persistentDiskBackend {
	case amazonBackend:
		spec.Spec.PersistentVolumeSource = v1.PersistentVolumeSource{
			AWSElasticBlockStore: &v1.AWSElasticBlockStoreVolumeSource{
				FSType:   "ext4",
				VolumeID: name,
			},
		}
	case googleBackend:
		spec.Spec.PersistentVolumeSource = v1.PersistentVolumeSource{
			GCEPersistentDisk: &v1.GCEPersistentDiskVolumeSource{
				FSType: "ext4",
				PDName: name,
			},
		}
	case microsoftBackend:
		dataDiskURI := name
		split := strings.Split(name, "/")
		diskName := split[len(split)-1]

		spec.Spec.PersistentVolumeSource = v1.PersistentVolumeSource{
			AzureDisk: &v1.AzureDiskVolumeSource{
				DiskName:    diskName,
				DataDiskURI: dataDiskURI,
			},
		}
	case minioBackend:
		fallthrough
	case localBackend:
		spec.Spec.PersistentVolumeSource = v1.PersistentVolumeSource{
			HostPath: &v1.HostPathVolumeSource{
				Path: filepath.Join(hostPath, "etcd"),
			},
		}
	default:
		return nil, fmt.Errorf("cannot generate volume spec for unknown backend \"%v\"", persistentDiskBackend)
	}
	return spec, nil
}
func EtcdVolume(persistentDiskBackend backend, opts *AssetOpts,
	hostPath string, name string, size int) (*v1.PersistentVolume, error) {
	spec := &v1.PersistentVolume{
		TypeMeta: metav1.TypeMeta{
			Kind:       "PersistentVolume",
			APIVersion: "v1",
		},
		ObjectMeta: objectMeta(etcdVolumeName, labels(etcdName), nil, opts.Namespace),
		Spec: v1.PersistentVolumeSpec{
			Capacity: map[v1.ResourceName]resource.Quantity{
				"storage": resource.MustParse(fmt.Sprintf("%vGi", size)),
			},
			AccessModes:                   []v1.PersistentVolumeAccessMode{v1.ReadWriteOnce},
			PersistentVolumeReclaimPolicy: v1.PersistentVolumeReclaimRetain,
		},
	}

	switch persistentDiskBackend {
	case amazonBackend:
		spec.Spec.PersistentVolumeSource = v1.PersistentVolumeSource{
			AWSElasticBlockStore: &v1.AWSElasticBlockStoreVolumeSource{
				FSType:   "ext4",
				VolumeID: name,
			},
		}
	case googleBackend:
		spec.Spec.PersistentVolumeSource = v1.PersistentVolumeSource{
			GCEPersistentDisk: &v1.GCEPersistentDiskVolumeSource{
				FSType: "ext4",
				PDName: name,
			},
		}
	case microsoftBackend:
		dataDiskURI := name
		split := strings.Split(name, "/")
		diskName := split[len(split)-1]

		spec.Spec.PersistentVolumeSource = v1.PersistentVolumeSource{
			AzureDisk: &v1.AzureDiskVolumeSource{
				DiskName:    diskName,
				DataDiskURI: dataDiskURI,
			},
		}
	case minioBackend:
		fallthrough
	case localBackend:
		spec.Spec.PersistentVolumeSource = v1.PersistentVolumeSource{
			HostPath: &v1.HostPathVolumeSource{
				Path: filepath.Join(hostPath, "etcd"),
			},
		}
	default:
		return nil, fmt.Errorf("cannot generate volume spec for unknown backend \"%v\"", persistentDiskBackend)
	}
	return spec, nil
}
func EtcdVolume ( persistentDiskBackend backend , opts * AssetOpts , hostPath string , name string , size int ) ( * v1 . PersistentVolume , error ) { spec := & v1 . PersistentVolume { TypeMeta : metav1 . TypeMeta { Kind : " " , APIVersion : " " , } , ObjectMeta : objectMeta ( etcdVolumeName , labels ( etcdName ) , nil , opts . Namespace ) , Spec : v1 . PersistentVolumeSpec { Capacity : map [ v1 . ResourceName ] resource . Quantity { " " : resource . MustParse ( fmt . Sprintf ( " " , size ) ) , } , AccessModes : [ ] v1 . PersistentVolumeAccessMode { v1 . ReadWriteOnce } , PersistentVolumeReclaimPolicy : v1 . PersistentVolumeReclaimRetain , } , } switch persistentDiskBackend { case amazonBackend : spec . Spec . PersistentVolumeSource = v1 . PersistentVolumeSource { AWSElasticBlockStore : & v1 . AWSElasticBlockStoreVolumeSource { FSType : " " , VolumeID : name , } , } case googleBackend : spec . Spec . PersistentVolumeSource = v1 . PersistentVolumeSource { GCEPersistentDisk : & v1 . GCEPersistentDiskVolumeSource { FSType : " " , PDName : name , } , } case microsoftBackend : dataDiskURI := name split := strings . Split ( name , " " ) diskName := split [ len ( split ) - 1 ] spec . Spec . PersistentVolumeSource = v1 . PersistentVolumeSource { AzureDisk : & v1 . AzureDiskVolumeSource { DiskName : diskName , DataDiskURI : dataDiskURI , } , } case minioBackend : fallthrough case localBackend : spec . Spec . PersistentVolumeSource = v1 . PersistentVolumeSource { HostPath : & v1 . HostPathVolumeSource { Path : filepath . Join ( hostPath , " " ) , } , } default : return nil , fmt . Errorf ( " \" \" " , persistentDiskBackend ) } return spec , nil }
// EtcdVolume creates a persistent volume backed by a volume with name "name"
EtcdVolume creates a persistent volume backed by a volume with name name