Documentation ¶
Overview ¶
* Copyright (c) 2015-2018 Nexenta Systems, Inc. * * This file is part of EdgeFS Project * (see https://github.com/Nexenta/edgefs). * * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License.
* Copyright (c) 2015-2018 Nexenta Systems, Inc. * * This file is part of EdgeFS Project * (see https://github.com/Nexenta/edgefs). * * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to yu under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License.
* Copyright (c) 2015-2018 Nexenta Systems, Inc. * * This file is part of EdgeFS Project * (see https://github.com/Nexenta/edgefs). * * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License.
* Copyright (c) 2015-2018 Nexenta Systems, Inc. * * This file is part of EdgeFS Project * (see https://github.com/Nexenta/edgefs). * * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License.
* Copyright (c) 2015-2019 Nexenta Systems, Inc. * * This file is part of EdgeFS Project * (see https://github.com/Nexenta/edgefs). * * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License.
* Copyright (c) 2015-2019 Nexenta Systems, Inc. * * This file is part of EdgeFS Project * (see https://github.com/Nexenta/edgefs). * * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License.
* Copyright (c) 2015-2018 Nexenta Systems, Inc. * * This file is part of EdgeFS Project * (see https://github.com/Nexenta/edgefs). * * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License.
* Copyright (c) 2015-2018 Nexenta Systems, Inc. * * This file is part of EdgeFS Project * (see https://github.com/Nexenta/edgefs). * * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License.
* Copyright (c) 2015-2019 Nexenta Systems, Inc. * * This file is part of EdgeFS Project * (see https://github.com/Nexenta/edgefs). * * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License.
Index ¶
- Constants
- func DetectEdgefsK8sCluster(segment string, config *EdgefsClusterConfig) (clusterExists bool, err error)
- func PrepareClusterConfigDefaultValues(config *EdgefsClusterConfig, backendType string) error
- type CloneInfo
- type ClusterData
- func (clusterData *ClusterData) FindApropriateServiceData(serviceBalancingPolicy string) (*ServiceData, error)
- func (clusterData *ClusterData) FindServiceDataByServiceName(serviceName string) (serviceData *ServiceData, err error)
- func (clusterData *ClusterData) FindServiceDataByVolumeID(volumeID IVolumeId) (*ServiceData, error)
- type EdgeFS
- func (edgefs *EdgeFS) CreateIscsiVolume(name, sourceSnapshot string, size int64, options map[string]string) (string, error)
- func (edgefs *EdgeFS) CreateNfsVolume(csiVolumeID string, size int, options map[string]string) (string, error)
- func (edgefs *EdgeFS) CreateObjectSnapshot(csiVolumeID, snapName string) (SnapshotInfo, error)
- func (edgefs *EdgeFS) DeleteIscsiVolume(volumeID *IscsiVolumeId) (err error)
- func (edgefs *EdgeFS) DeleteNfsVolume(volumeID *NfsVolumeId) (err error)
- func (edgefs *EdgeFS) DeleteObjectSnapshot(csiSnapshotID string) error
- func (edgefs *EdgeFS) GetClusterConfig() (config *EdgefsClusterConfig)
- func (edgefs *EdgeFS) GetClusterData(serviceName ...string) (ClusterData, error)
- func (edgefs *EdgeFS) GetK8sEdgefsService(serviceName string) (resultService IK8SEdgefsService, err error)
- func (edgefs *EdgeFS) GetSegment() string
- func (edgefs *EdgeFS) IsBucketExists(clusterName, tenantName, bucketName string) bool
- func (edgefs *EdgeFS) IsClusterExists(clusterName string) bool
- func (edgefs *EdgeFS) IsTenantExists(clusterName, tenantName string) bool
- func (edgefs *EdgeFS) ListObjectSnapshots(csiVolumeID, pattern string) ([]SnapshotInfo, error)
- func (edgefs *EdgeFS) ListServices(serviceName ...string) (resultServices []IEdgefsService, err error)
- func (edgefs *EdgeFS) ListVolumes() ([]IEdgefsVolume, error)
- type EdgeFSProvider
- func (provider *EdgeFSProvider) CheckHealth() (err error)
- func (provider *EdgeFSProvider) CloneVolumeFromSnapshot(cloneVolume IscsiVolumeId, ss IscsiSnapshotId) (CloneInfo, error)
- func (provider *EdgeFSProvider) CreateBucket(clusterName string, tenantName string, bucketName string, size int, ...) (err error)
- func (provider *EdgeFSProvider) CreateSnapshot(ss IscsiSnapshotId) (SnapshotInfo, error)
- func (provider *EdgeFSProvider) DeleteBucket(clusterName string, tenantName string, bucketName string, force bool) (err error)
- func (provider *EdgeFSProvider) DeleteSnapshot(ss IscsiSnapshotId) (err error)
- func (provider *EdgeFSProvider) GetService(serviceType string, serviceName string) (serviceOut IEdgefsService, err error)
- func (provider *EdgeFSProvider) IsBucketExist(clusterName string, tenantName string, bucketName string) bool
- func (provider *EdgeFSProvider) IsSnapshotExists(ss IscsiSnapshotId) (bool, error)
- func (provider *EdgeFSProvider) ListBuckets(clusterName string, tenantName string) (buckets []string, err error)
- func (provider *EdgeFSProvider) ListClusters() (clusters []string, err error)
- func (provider *EdgeFSProvider) ListSnapshots(volume IscsiVolumeId, pattern string) ([]SnapshotInfo, error)
- func (provider *EdgeFSProvider) ListTenants(clusterName string) (tenants []string, err error)
- func (provider *EdgeFSProvider) ListVolumes(serviceType, serviceName string) ([]IEdgefsVolume, error)
- func (provider *EdgeFSProvider) ServeBucket(serviceName, k8sServiceName, k8sNamespace string, volume EdgefsNfsVolume, ...) (objectPath string, rr error)
- func (provider *EdgeFSProvider) ServeObject(serviceName, k8sServiceName, k8sNamespace string, volume EdgefsIscsiVolume, ...) (objectPath string, err error)
- func (provider *EdgeFSProvider) SetBucketQuota(cluster string, tenant string, bucket string, quota string) (err error)
- func (provider *EdgeFSProvider) SetServiceAclConfiguration(service string, tenant string, bucket string, value string) error
- func (provider *EdgeFSProvider) UnserveBucket(serviceName, k8sServiceName, k8sNamespace string, volume EdgefsNfsVolume) (err error)
- func (provider *EdgeFSProvider) UnserveObject(serviceName, k8sService, k8sNamespace string, volume EdgefsIscsiVolume) (err error)
- func (provider *EdgeFSProvider) UnsetServiceAclConfiguration(service string, tenant string, bucket string) error
- type EdgefsClusterConfig
- type EdgefsIscsiService
- type EdgefsIscsiVolume
- type EdgefsNfsService
- type EdgefsNfsVolume
- type EdgefsService
- func (es *EdgefsService) GetEntrypoint() string
- func (es *EdgefsService) GetK8SNamespace() string
- func (es *EdgefsService) GetK8SSvcName() string
- func (es *EdgefsService) GetName() string
- func (es *EdgefsService) GetStatus() string
- func (es *EdgefsService) GetType() string
- func (es *EdgefsService) SetEntrypoint(value string)
- func (es *EdgefsService) SetK8SNamespace(value string)
- func (es *EdgefsService) SetK8SSvcName(value string)
- func (es *EdgefsService) SetName(value string)
- func (es *EdgefsService) SetStatus(value string)
- func (es *EdgefsService) SetType(value string)
- func (es *EdgefsService) String() string
- type IEdgeFS
- type IEdgeFSProvider
- type IEdgefsService
- type IEdgefsVolume
- type IK8SEdgefsService
- func GetEdgefsK8sClusterServices(serviceType, k8sEdgefsNamespace string, k8sClientInCluster bool) (services []IK8SEdgefsService, err error)
- func NewK8SEdgefsIscsiService(name, k8sSvcName, k8sNamespace, clusterIP, port string) IK8SEdgefsService
- func NewK8SEdgefsNfsService(name, k8sSvcName, k8sNamespace, clusterIP, port string) IK8SEdgefsService
- type IServiceData
- type ISnapshotId
- type IVolumeId
- type IscsiSnapshotId
- type IscsiVolumeId
- type K8SEdgefsService
- func (svc *K8SEdgefsService) GetClusterIP() string
- func (svc *K8SEdgefsService) GetK8SNamespace() string
- func (svc *K8SEdgefsService) GetK8SSvcName() string
- func (svc *K8SEdgefsService) GetName() string
- func (svc *K8SEdgefsService) GetPort() string
- func (svc *K8SEdgefsService) GetType() string
- func (svc *K8SEdgefsService) String() string
- type NfsVolumeId
- type ServiceData
- func (sd *ServiceData) GetEdgefsVolume(volumeId IVolumeId) (IEdgefsVolume, error)
- func (sd *ServiceData) GetEdgefsVolumeParams(volumeId IVolumeId) (map[string]string, error)
- func (sd *ServiceData) GetService() IEdgefsService
- func (sd *ServiceData) GetType() string
- func (sd *ServiceData) GetVolumesCount() int
- type SnapshotInfo
- type VolumeSettings
Constants ¶
const ( EdgefsServiceType_NFS = "nfs" EdgefsServiceType_ISCSI = "iscsi" )
Variables ¶
This section is empty.
Functions ¶
func DetectEdgefsK8sCluster ¶
func DetectEdgefsK8sCluster(segment string, config *EdgefsClusterConfig) (clusterExists bool, err error)
Will check k8s edgefs cluster existance and will update EdgefsClusterConfig information
func PrepareClusterConfigDefaultValues ¶
func PrepareClusterConfigDefaultValues(config *EdgefsClusterConfig, backendType string) error
Types ¶
type ClusterData ¶
type ClusterData struct {
ServicesData []ServiceData
}
ClusterData represents all available(enabled, has networks e.t.c) services and its NFS and ISCSI volumes on cluster or among the listed in serviceFilter (if serviceFilter option specified)
func (*ClusterData) FindApropriateServiceData ¶
func (clusterData *ClusterData) FindApropriateServiceData(serviceBalancingPolicy string) (*ServiceData, error)
FindApropriateService find service with balancing policy
func (*ClusterData) FindServiceDataByServiceName ¶
func (clusterData *ClusterData) FindServiceDataByServiceName(serviceName string) (serviceData *ServiceData, err error)
func (*ClusterData) FindServiceDataByVolumeID ¶
func (clusterData *ClusterData) FindServiceDataByVolumeID(volumeID IVolumeId) (*ServiceData, error)
type EdgeFS ¶
type EdgeFS struct {
// contains filtered or unexported fields
}
func (*EdgeFS) CreateIscsiVolume ¶
func (edgefs *EdgeFS) CreateIscsiVolume(name, sourceSnapshot string, size int64, options map[string]string) (string, error)
CreateVolume creates bucket and serve it via edgefs service
func (*EdgeFS) CreateNfsVolume ¶
func (edgefs *EdgeFS) CreateNfsVolume(csiVolumeID string, size int, options map[string]string) (string, error)
CreateVolume creates bucket and serve it via edgefs service
func (*EdgeFS) CreateObjectSnapshot ¶
func (edgefs *EdgeFS) CreateObjectSnapshot(csiVolumeID, snapName string) (SnapshotInfo, error)
func (*EdgeFS) DeleteIscsiVolume ¶
func (edgefs *EdgeFS) DeleteIscsiVolume(volumeID *IscsiVolumeId) (err error)
DeleteIscsiVolume remotely deletes object on edgefs service
func (*EdgeFS) DeleteNfsVolume ¶
func (edgefs *EdgeFS) DeleteNfsVolume(volumeID *NfsVolumeId) (err error)
DeleteVolume remotely deletes bucket on edgefs service
func (*EdgeFS) DeleteObjectSnapshot ¶
func (*EdgeFS) GetClusterConfig ¶
func (edgefs *EdgeFS) GetClusterConfig() (config *EdgefsClusterConfig)
func (*EdgeFS) GetClusterData ¶
func (edgefs *EdgeFS) GetClusterData(serviceName ...string) (ClusterData, error)
GetClusterData if serviceName specified we will get data from the one service only
func (*EdgeFS) GetK8sEdgefsService ¶
func (edgefs *EdgeFS) GetK8sEdgefsService(serviceName string) (resultService IK8SEdgefsService, err error)
func (*EdgeFS) GetSegment ¶
func (*EdgeFS) IsBucketExists ¶
func (*EdgeFS) IsClusterExists ¶
func (*EdgeFS) IsTenantExists ¶
func (*EdgeFS) ListObjectSnapshots ¶
func (edgefs *EdgeFS) ListObjectSnapshots(csiVolumeID, pattern string) ([]SnapshotInfo, error)
func (*EdgeFS) ListServices ¶
func (edgefs *EdgeFS) ListServices(serviceName ...string) (resultServices []IEdgefsService, err error)
func (*EdgeFS) ListVolumes ¶
func (edgefs *EdgeFS) ListVolumes() ([]IEdgefsVolume, error)
ListVolumes list all available volumes
type EdgeFSProvider ¶
type EdgeFSProvider struct {
// contains filtered or unexported fields
}
func (*EdgeFSProvider) CheckHealth ¶
func (provider *EdgeFSProvider) CheckHealth() (err error)
func (*EdgeFSProvider) CloneVolumeFromSnapshot ¶
func (provider *EdgeFSProvider) CloneVolumeFromSnapshot(cloneVolume IscsiVolumeId, ss IscsiSnapshotId) (CloneInfo, error)
CloneVolumeFromSnapshot(sourceSnapshot SnapshotID, cloneVolume EdgefsIscsiVolume
func (*EdgeFSProvider) CreateBucket ¶
func (*EdgeFSProvider) CreateSnapshot ¶
func (provider *EdgeFSProvider) CreateSnapshot(ss IscsiSnapshotId) (SnapshotInfo, error)
func (*EdgeFSProvider) DeleteBucket ¶
func (*EdgeFSProvider) DeleteSnapshot ¶
func (provider *EdgeFSProvider) DeleteSnapshot(ss IscsiSnapshotId) (err error)
func (*EdgeFSProvider) GetService ¶
func (provider *EdgeFSProvider) GetService(serviceType string, serviceName string) (serviceOut IEdgefsService, err error)
func (*EdgeFSProvider) IsBucketExist ¶
func (provider *EdgeFSProvider) IsBucketExist(clusterName string, tenantName string, bucketName string) bool
func (*EdgeFSProvider) IsSnapshotExists ¶
func (provider *EdgeFSProvider) IsSnapshotExists(ss IscsiSnapshotId) (bool, error)
func (*EdgeFSProvider) ListBuckets ¶
func (provider *EdgeFSProvider) ListBuckets(clusterName string, tenantName string) (buckets []string, err error)
func (*EdgeFSProvider) ListClusters ¶
func (provider *EdgeFSProvider) ListClusters() (clusters []string, err error)
func (*EdgeFSProvider) ListSnapshots ¶
func (provider *EdgeFSProvider) ListSnapshots(volume IscsiVolumeId, pattern string) ([]SnapshotInfo, error)
func (*EdgeFSProvider) ListTenants ¶
func (provider *EdgeFSProvider) ListTenants(clusterName string) (tenants []string, err error)
func (*EdgeFSProvider) ListVolumes ¶
func (provider *EdgeFSProvider) ListVolumes(serviceType, serviceName string) ([]IEdgefsVolume, error)
func (edgefs *EdgeFSProvider) ListServices(backendType string) (services []IEdgefsService, err error) { c := service.NewServiceClient(edgefs.conn) ctx, cancel := context.WithTimeout(context.Background(), defaultTimeout) defer cancel() protocolType, err := edgefs.getProtocolType(backendType) if err != nil { return nil, err } r, err := c.ServiceList(ctx, &service.ServiceListRequest{ Type: protocolType, }) if err != nil { err = fmt.Errorf("ServiceList: %v", err) log.Error(err.Error) return nil, err } for _,info := range r.Info { var service IEdgefsService service, err = edgefs.NewEdgefsService(backendType, info) if err != nil { return nil, err } services = append(services, service) } return services, nil }
func (*EdgeFSProvider) ServeBucket ¶
func (provider *EdgeFSProvider) ServeBucket(serviceName, k8sServiceName, k8sNamespace string, volume EdgefsNfsVolume, settings VolumeSettings) (objectPath string, rr error)
func (*EdgeFSProvider) ServeObject ¶
func (provider *EdgeFSProvider) ServeObject(serviceName, k8sServiceName, k8sNamespace string, volume EdgefsIscsiVolume, settings VolumeSettings) (objectPath string, err error)
ServeBucket serve object to ISCSI service, returns ISCSI object path lunNumber@cluster/tenant/bucket/lun
func (*EdgeFSProvider) SetBucketQuota ¶
func (*EdgeFSProvider) SetServiceAclConfiguration ¶
func (*EdgeFSProvider) UnserveBucket ¶
func (provider *EdgeFSProvider) UnserveBucket(serviceName, k8sServiceName, k8sNamespace string, volume EdgefsNfsVolume) (err error)
func (*EdgeFSProvider) UnserveObject ¶
func (provider *EdgeFSProvider) UnserveObject(serviceName, k8sService, k8sNamespace string, volume EdgefsIscsiVolume) (err error)
func (*EdgeFSProvider) UnsetServiceAclConfiguration ¶
func (provider *EdgeFSProvider) UnsetServiceAclConfiguration(service string, tenant string, bucket string) error
type EdgefsClusterConfig ¶
type EdgefsClusterConfig struct { Name string K8sClientInCluster bool EdgefsProxyAddr string EdgefsProxyPort string K8sEdgefsNamespaces []string `yaml:"k8sEdgefsNamespaces"` K8sEdgefsMgmtPrefix string `yaml:"k8sEdgefsMgmtPrefix"` Username string `yaml:"username"` Password string `yaml:"password"` Service string `yaml:"service"` Cluster string `yaml:"cluster"` Tenant string `yaml:"tenant"` Bucket string `yaml:"bucket"` // optional bucket name for ISCSI volume creation ForceVolumeDeletion bool `yaml:"forceVolumeDeletion"` ServiceFilter string `yaml:"serviceFilter"` ServiceBalancerPolicy string `yaml:"serviceBalancerPolicy"` MountOptions string `yaml:"mountOptions"` //ISCSI specific options FsType string `yaml:"fsType"` ChunkSize int32 `yaml:"chunksize"` BlockSize int32 `yaml:"blocksize"` }
func LoadEdgefsClusterConfig ¶
func LoadEdgefsClusterConfig(backendType string) (config EdgefsClusterConfig, err error)
func (*EdgefsClusterConfig) GetMountOptions ¶
func (config *EdgefsClusterConfig) GetMountOptions() (options []string)
GetMountOptions
func (*EdgefsClusterConfig) GetSegment ¶
func (config *EdgefsClusterConfig) GetSegment(segment string) (string, error)
func (*EdgefsClusterConfig) GetServiceFilterMap ¶
func (config *EdgefsClusterConfig) GetServiceFilterMap() (filterMap map[string]bool)
type EdgefsIscsiService ¶
type EdgefsIscsiService struct { EdgefsService /* additional Edgefs ISCSI service props */ TargetIqn string }
type EdgefsIscsiVolume ¶
type EdgefsIscsiVolume struct { Cluster string Tenant string Bucket string Object string LunNumber uint32 }
func NewEdgefsIscsiVolume ¶
func NewEdgefsIscsiVolume(cluster, tenant, bucket, object string, lunNumber uint32) *EdgefsIscsiVolume
func ParseEdgefsIscsiVolumeStr ¶
func ParseEdgefsIscsiVolumeStr(volume string) (*EdgefsIscsiVolume, error)
ParseEdgefsIscsiVolumeStr parses volume string : 1@cltest/test/bk1/lun1
func (*EdgefsIscsiVolume) GetObjectPath ¶
func (vol *EdgefsIscsiVolume) GetObjectPath() string
func (*EdgefsIscsiVolume) String ¶
func (vol *EdgefsIscsiVolume) String() string
type EdgefsNfsService ¶
type EdgefsNfsService struct {
EdgefsService
}
type EdgefsNfsVolume ¶
func NewEdgefsNfsVolume ¶
func NewEdgefsNfsVolume(cluster, tenant, bucket, mountPath string) *EdgefsNfsVolume
func ParseEdgefsNfsVolumeStr ¶
func ParseEdgefsNfsVolumeStr(volume string) (*EdgefsNfsVolume, error)
ParseEdgefsNfsVolumeStr parses volume string 2,test/nfs-test@cltest/test/nfs-test
func (*EdgefsNfsVolume) GetObjectPath ¶
func (vol *EdgefsNfsVolume) GetObjectPath() string
func (*EdgefsNfsVolume) String ¶
func (vol *EdgefsNfsVolume) String() string
type EdgefsService ¶
type EdgefsService struct { // Edgefs service name Name string // Edgefs service type [nfs|iscsi] Type string // Nfs mount point for NFS or portal for ISCSI with port Entrypoint string // current Kubernetes Edgefs service namespace K8SNamespace string // Kubernetes Edgefs service name K8SSvcName string // service status [enabled|disabled] Status string }
func (*EdgefsService) GetEntrypoint ¶
func (es *EdgefsService) GetEntrypoint() string
func (*EdgefsService) GetK8SNamespace ¶
func (es *EdgefsService) GetK8SNamespace() string
func (*EdgefsService) GetK8SSvcName ¶
func (es *EdgefsService) GetK8SSvcName() string
func (*EdgefsService) GetStatus ¶
func (es *EdgefsService) GetStatus() string
func (*EdgefsService) GetType ¶
func (es *EdgefsService) GetType() string
func (*EdgefsService) SetEntrypoint ¶
func (es *EdgefsService) SetEntrypoint(value string)
func (*EdgefsService) SetK8SNamespace ¶
func (es *EdgefsService) SetK8SNamespace(value string)
func (*EdgefsService) SetK8SSvcName ¶
func (es *EdgefsService) SetK8SSvcName(value string)
func (*EdgefsService) SetStatus ¶
func (es *EdgefsService) SetStatus(value string)
func (*EdgefsService) SetType ¶
func (es *EdgefsService) SetType(value string)
func (*EdgefsService) String ¶
func (es *EdgefsService) String() string
String implements Stringer iface for EdgefsService
type IEdgeFS ¶
type IEdgeFS interface { /* CSI NFS client methods */ CreateNfsVolume(csiVolumeID string, size int, options map[string]string) (string, error) DeleteNfsVolume(volumeID *NfsVolumeId) error /* CSI ISCSI client methods */ CreateIscsiVolume(name, sourceSnapshot string, size int64, options map[string]string) (string, error) DeleteIscsiVolume(volumeID *IscsiVolumeId) error /* Snapshots */ CreateObjectSnapshot(csiVolumeID, snapName string) (SnapshotInfo, error) DeleteObjectSnapshot(csiSnapshotID string) error ListObjectSnapshots(csiVolumeID, pattern string) ([]SnapshotInfo, error) /* returns all available cluster volumes for current driver type */ ListVolumes() ([]IEdgefsVolume, error) ListServices(serviceName ...string) ([]IEdgefsService, error) IsClusterExists(clusterName string) bool IsTenantExists(clusterName, tenantName string) bool IsBucketExists(clusterName, tenantName, bucketName string) bool GetClusterData(serviceName ...string) (ClusterData, error) GetClusterConfig() (config *EdgefsClusterConfig) GetSegment() string }
IEdgeFS interface to provide base methods for CSI driver client methods
func InitEdgeFS ¶
func InitEdgeFS(config *EdgefsClusterConfig, backendType string, segment string, logger *logrus.Entry) (edgefs IEdgeFS, err error)
InitEdgeFS reads config and discovers Edgefs clusters
type IEdgeFSProvider ¶
type IEdgeFSProvider interface { // common provider methods ListClusters() (clusters []string, err error) ListTenants(cluster string) (tenants []string, err error) ListBuckets(cluster string, tenant string) (buckets []string, err error) //ListObjects(cluster, tenant, bucket string) ([]string, error) IsBucketExist(cluster string, tenant string, bucket string) bool CreateBucket(cluster string, tenant string, bucket string, size int, options map[string]string) error DeleteBucket(cluster string, tenant string, bucket string, force bool) error //ServeObject serve object to NFS/ISCSI service, returns ISCSI object path lunNumber@cluster/tenant/bucket/object ServeObject(serviceName, k8sservice, k8snamespace string, volume EdgefsIscsiVolume, settings VolumeSettings) (objectPath string, err error) UnserveObject(serviceName, k8sservice, k8snamespace string, volume EdgefsIscsiVolume) (err error) //ServeBucket serve bucket to NFS service ServeBucket(service, k8sservice, k8snamespace string, volume EdgefsNfsVolume, settings VolumeSettings) (objectPath string, err error) UnserveBucket(service, k8sservice, k8snamespace string, volume EdgefsNfsVolume) (err error) SetBucketQuota(cluster string, tenant string, bucket string, quota string) (err error) SetServiceAclConfiguration(service string, tenant string, bucket string, value string) error UnsetServiceAclConfiguration(service string, tenant string, bucket string) error /* multi service methods */ GetService(serviceType, serviceName string) (service IEdgefsService, err error) //ListServices(serviceType string) ([]IEdgefsService, error) ListVolumes(serviceType, serviceName string) (volumes []IEdgefsVolume, err error) //CloneIscsiVolume CloneVolumeFromSnapshot(cloneVolume IscsiVolumeId, ss IscsiSnapshotId) (CloneInfo, error) //Snapshot methods IsSnapshotExists(ss IscsiSnapshotId) (bool, error) CreateSnapshot(ss IscsiSnapshotId) (SnapshotInfo, error) DeleteSnapshot(ss IscsiSnapshotId) error ListSnapshots(volume IscsiVolumeId, pattern string) ([]SnapshotInfo, error) CheckHealth() (err error) }
IEdgeFS interface to provide base methods
func InitEdgeFSProvider ¶
type IEdgefsService ¶
type IEdgefsService interface { GetName() string GetType() string GetK8SSvcName() string GetK8SNamespace() string GetEntrypoint() string GetStatus() string SetName(value string) SetType(value string) SetK8SSvcName(value string) SetK8SNamespace(value string) SetEntrypoint(value string) SetStatus(value string) }
represents Edgefs internal service objects
type IEdgefsVolume ¶
type IEdgefsVolume interface {
GetObjectPath() string
}
type IK8SEdgefsService ¶
type IK8SEdgefsService interface { GetName() string GetK8SSvcName() string GetK8SNamespace() string GetClusterIP() string GetPort() string GetType() string }
represents Kubernetes Edgefs service information [nfs|iscsi]
func GetEdgefsK8sClusterServices ¶
func GetEdgefsK8sClusterServices(serviceType, k8sEdgefsNamespace string, k8sClientInCluster bool) (services []IK8SEdgefsService, err error)
func NewK8SEdgefsIscsiService ¶
func NewK8SEdgefsIscsiService(name, k8sSvcName, k8sNamespace, clusterIP, port string) IK8SEdgefsService
func NewK8SEdgefsNfsService ¶
func NewK8SEdgefsNfsService(name, k8sSvcName, k8sNamespace, clusterIP, port string) IK8SEdgefsService
type IServiceData ¶
type IServiceData interface { GetType() string GetService() IEdgefsService GetEdgefsVolume(volumeId IVolumeId) IEdgefsVolume GetVolumesCount() int }
IServiceData interface to operate different service types
type ISnapshotId ¶
type IscsiSnapshotId ¶
type IscsiSnapshotId struct { Cluster string Tenant string Bucket string Object string Name string }
func ParseIscsiSnapshotID ¶
func ParseIscsiSnapshotID(snapshotIDStr string, clusterConfig *EdgefsClusterConfig) (IscsiSnapshotId, error)
func (*IscsiSnapshotId) GetObjectPath ¶
func (snap *IscsiSnapshotId) GetObjectPath() string
func (*IscsiSnapshotId) Validate ¶
func (snap *IscsiSnapshotId) Validate() error
type IscsiVolumeId ¶
type IscsiVolumeId struct { Segment string Service string Cluster string Tenant string Bucket string Object string }
func ParseIscsiVolumeID ¶
func ParseIscsiVolumeID(volumeID string, clusterConfig *EdgefsClusterConfig) (vol *IscsiVolumeId, err error)
func (*IscsiVolumeId) GetCSIVolumeID ¶
func (iscsiVolumeId *IscsiVolumeId) GetCSIVolumeID() string
func (*IscsiVolumeId) GetObjectPath ¶
func (iscsiVolumeId *IscsiVolumeId) GetObjectPath() string
func (*IscsiVolumeId) GetServiceName ¶
func (iscsiVolumeId *IscsiVolumeId) GetServiceName() string
func (*IscsiVolumeId) SetServiceName ¶
func (iscsiVolumeId *IscsiVolumeId) SetServiceName(name string)
func (*IscsiVolumeId) Validate ¶
func (iscsiVolumeId *IscsiVolumeId) Validate() error
type K8SEdgefsService ¶
type K8SEdgefsService struct { Name string K8SSvcName string K8SNamespace string ServiceType string ClusterIP string Port string }
func (*K8SEdgefsService) GetClusterIP ¶
func (svc *K8SEdgefsService) GetClusterIP() string
func (*K8SEdgefsService) GetK8SNamespace ¶
func (svc *K8SEdgefsService) GetK8SNamespace() string
func (*K8SEdgefsService) GetK8SSvcName ¶
func (svc *K8SEdgefsService) GetK8SSvcName() string
func (*K8SEdgefsService) GetName ¶
func (svc *K8SEdgefsService) GetName() string
func (*K8SEdgefsService) GetPort ¶
func (svc *K8SEdgefsService) GetPort() string
func (*K8SEdgefsService) GetType ¶
func (svc *K8SEdgefsService) GetType() string
func (*K8SEdgefsService) String ¶
func (svc *K8SEdgefsService) String() string
type NfsVolumeId ¶
type NfsVolumeId struct { Segment string Service string Cluster string Tenant string Bucket string }
func ParseNfsVolumeID ¶
func ParseNfsVolumeID(volumeID string, clusterConfig *EdgefsClusterConfig) (vol *NfsVolumeId, err error)
Canonical NfsVolumeID is segment:service@cluster/tenant/bucket
func (*NfsVolumeId) GetCSIVolumeID ¶
func (nfsVolumeId *NfsVolumeId) GetCSIVolumeID() string
func (*NfsVolumeId) GetObjectPath ¶
func (nfsVolumeId *NfsVolumeId) GetObjectPath() string
func (*NfsVolumeId) GetServiceName ¶
func (nfsVolumeId *NfsVolumeId) GetServiceName() string
func (*NfsVolumeId) SetServiceName ¶
func (nfsVolumeId *NfsVolumeId) SetServiceName(name string)
func (*NfsVolumeId) Validate ¶
func (nfsVolumeId *NfsVolumeId) Validate() error
type ServiceData ¶
type ServiceData struct { Service IEdgefsService Volumes []IEdgefsVolume }
represents base Edgefs internal service data with related volumes
func (*ServiceData) GetEdgefsVolume ¶
func (sd *ServiceData) GetEdgefsVolume(volumeId IVolumeId) (IEdgefsVolume, error)
func (*ServiceData) GetEdgefsVolumeParams ¶
func (sd *ServiceData) GetEdgefsVolumeParams(volumeId IVolumeId) (map[string]string, error)
func (*ServiceData) GetService ¶
func (sd *ServiceData) GetService() IEdgefsService
func (*ServiceData) GetType ¶
func (sd *ServiceData) GetType() string
func (*ServiceData) GetVolumesCount ¶
func (sd *ServiceData) GetVolumesCount() int