本文整理汇总了Golang中github.com/emccode/rexray/errors.New函数的典型用法代码示例。如果您正苦于以下问题:Golang New函数的具体用法?Golang New怎么用?Golang New使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了New函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Golang代码示例。
示例1: Init
func Init(id int32, cfg *module.ModuleConfig) (module.Module, error) {
osdm, osdmErr := osm.NewOSDriverManager(cfg.Config)
if osdmErr != nil {
return nil, osdmErr
}
if len(osdm.Drivers) == 0 {
return nil, errors.New("no os drivers initialized")
}
sdm, sdmErr := storage.NewStorageDriverManager(cfg.Config)
if sdmErr != nil {
return nil, sdmErr
}
if len(sdm.Drivers) == 0 {
return nil, errors.New("no storage drivers initialized")
}
vdm, vdmErr := volume.NewVolumeDriverManager(cfg.Config, osdm, sdm)
if vdmErr != nil {
return nil, vdmErr
}
if len(vdm.Drivers) == 0 {
return nil, errors.New("no volume drivers initialized")
}
return &Module{
id: id,
vdm: vdm,
name: MOD_NAME,
desc: MOD_DESC,
addr: cfg.Address,
}, nil
}
开发者ID:Oskoss,项目名称:rexray,代码行数:34,代码来源:voldriver.go
示例2: NetworkName
// NetworkName will return relevant information about how a volume can be discovered on an OS
func (driver *Driver) NetworkName(volumeName, instanceID string) (string, error) {
log.WithFields(log.Fields{
"volumeName": volumeName,
"instanceID": instanceID,
"driverName": driver.Name()}).Info("returning network name")
volumes, err := driver.sdm.GetVolume("", volumeName)
if err != nil {
return "", err
}
switch {
case len(volumes) == 0:
return "", errors.New("No volumes returned by name")
case len(volumes) > 1:
return "", errors.New("Multiple volumes returned by name")
}
volumeAttachment, err := driver.sdm.GetVolumeAttach(
volumes[0].VolumeID, instanceID)
if err != nil {
return "", err
}
if len(volumeAttachment) == 0 {
return "", errors.New("Volume not attached")
}
volumes, err = driver.sdm.GetVolume("", volumeName)
if err != nil {
return "", err
}
return volumes[0].NetworkName, nil
}
开发者ID:Oskoss,项目名称:rexray,代码行数:36,代码来源:volume.go
示例3: Path
// Path returns the mounted path of the volume
func (driver *Driver) Path(volumeName, volumeID string) (string, error) {
log.WithFields(log.Fields{
"volumeName": volumeName,
"volumeID": volumeID,
"driverName": driver.Name()}).Info("getting path to volume")
if volumeName == "" && volumeID == "" {
return "", errors.New("Missing volume name or ID")
}
instances, err := driver.sdm.GetInstance()
if err != nil {
return "", err
}
switch {
case len(instances) == 0:
return "", errors.New("No instances")
case len(instances) > 1:
return "", errors.New("Too many instances returned, limit the storagedrivers")
}
volumes, err := driver.sdm.GetVolume(volumeID, volumeName)
if err != nil {
return "", err
}
switch {
case len(volumes) == 0:
return "", errors.New("No volumes returned by name")
case len(volumes) > 1:
return "", errors.New("Multiple volumes returned by name")
}
volumeAttachment, err := driver.sdm.GetVolumeAttach(volumes[0].VolumeID, instances[0].InstanceID)
if err != nil {
return "", err
}
if len(volumeAttachment) == 0 {
return "", nil
}
mounts, err := driver.osdm.GetMounts(volumeAttachment[0].DeviceName, "")
if err != nil {
return "", err
}
if len(mounts) == 0 {
return "", nil
}
return mounts[0].Mountpoint, nil
}
开发者ID:Oskoss,项目名称:rexray,代码行数:54,代码来源:volume.go
示例4: getLunMaps
func (driver *Driver) getLunMaps(initiatorName, volumeID string) (xtio.Refs, error) {
if initiatorName == "" {
return nil, errors.New("Missing initiatorName")
}
initiatorGroup, err := driver.Client.GetInitiatorGroup("", initiatorName)
if err != nil {
return nil, err
}
lunMaps, err := driver.Client.GetLunMaps()
if err != nil {
return nil, err
}
var refs xtio.Refs
for _, ref := range lunMaps {
idents := strings.Split(ref.Name, "_")
if len(idents) < 3 {
continue
} else if strconv.Itoa(initiatorGroup.Index) == idents[1] && volumeID == idents[0] {
refs = append(refs, ref)
}
}
return refs, nil
}
开发者ID:robnolen,项目名称:rexray,代码行数:28,代码来源:storage.go
示例5: getVolumeMountPath
func getVolumeMountPath(name string) (string, error) {
if name == "" {
return "", errors.New("Missing volume name")
}
return fmt.Sprintf("%s/%s", mountDirectoryPath, name), nil
}
开发者ID:Oskoss,项目名称:rexray,代码行数:7,代码来源:volume.go
示例6: Remove
// Remove will remove a remote volume
func (driver *Driver) Remove(volumeName string) error {
log.WithFields(log.Fields{
"volumeName": volumeName,
"driverName": driver.Name()}).Info("removing volume")
if volumeName == "" {
return errors.New("Missing volume name")
}
instances, err := driver.sdm.GetInstance()
if err != nil {
return err
}
switch {
case len(instances) == 0:
return errors.New("No instances")
case len(instances) > 1:
return errors.New("Too many instances returned, limit the storagedrivers")
}
volumes, err := driver.sdm.GetVolume("", volumeName)
if err != nil {
return err
}
switch {
case len(volumes) == 0:
return errors.New("No volumes returned by name")
case len(volumes) > 1:
return errors.New("Multiple volumes returned by name")
}
err = driver.Unmount("", volumes[0].VolumeID)
if err != nil {
return err
}
err = driver.sdm.RemoveVolume(volumes[0].VolumeID)
if err != nil {
return err
}
return nil
}
开发者ID:Oskoss,项目名称:rexray,代码行数:46,代码来源:volume.go
示例7: Unmount
func (osdm *OSDriverManager) Unmount(mountPoint string) error {
for _, driver := range osdm.Drivers {
log.WithFields(log.Fields{
"mountPoint": mountPoint,
"driverName": driver.Name()}).Info("unmounting filesystem")
return driver.Unmount(mountPoint)
}
return errors.New("No OS detected")
}
开发者ID:Oskoss,项目名称:rexray,代码行数:9,代码来源:os.go
示例8: Mounted
func (osdm *OSDriverManager) Mounted(mountPoint string) (bool, error) {
for _, driver := range osdm.Drivers {
log.WithFields(log.Fields{
"mountPoint": mountPoint,
"driverName": driver.Name()}).Info("checking filesystem mount")
return driver.Mounted(mountPoint)
}
return false, errors.New("No OS detected")
}
开发者ID:Oskoss,项目名称:rexray,代码行数:9,代码来源:os.go
示例9: Format
func (osdm *OSDriverManager) Format(deviceName, fsType string, overwriteFs bool) error {
for _, driver := range osdm.Drivers {
log.WithFields(log.Fields{
"deviceName": deviceName,
"fsType": fsType,
"overwriteFs": overwriteFs,
"driverName": driver.Name()}).Info("formatting if blank or overwriteFs specified")
return driver.Format(deviceName, fsType, overwriteFs)
}
return errors.New("No OS detected")
}
开发者ID:Oskoss,项目名称:rexray,代码行数:11,代码来源:os.go
示例10: Mount
func (osdm *OSDriverManager) Mount(device, target, mountOptions, mountLabel string) error {
for _, driver := range osdm.Drivers {
log.WithFields(log.Fields{
"device": device,
"target": target,
"mountOptions": mountOptions,
"mountLabel": mountLabel,
"driverName": driver.Name()}).Info("mounting filesystem")
return driver.Mount(device, target, mountOptions, mountLabel)
}
return errors.New("No OS detected")
}
开发者ID:Oskoss,项目名称:rexray,代码行数:12,代码来源:os.go
示例11: GetMounts
func (osdm *OSDriverManager) GetMounts(deviceName, mountPoint string) ([]*mount.Info, error) {
for _, driver := range osdm.Drivers {
mounts, err := driver.GetMounts(deviceName, mountPoint)
if err != nil {
return nil, err
}
return mounts, nil
}
return nil, errors.New("No OS detected")
}
开发者ID:robnolen,项目名称:rexray,代码行数:12,代码来源:os.go
示例12: NewOSDriverManager
func NewOSDriverManager(conf *config.Config) (*OSDriverManager, error) {
drivers, err := getDrivers(conf)
if err != nil {
return nil, err
}
if len(drivers) == 0 {
return nil, errors.New("no os drivers initialized")
}
return &OSDriverManager{drivers, conf}, nil
}
开发者ID:Oskoss,项目名称:rexray,代码行数:13,代码来源:os.go
示例13: GetMounts
func (osdm *OSDriverManager) GetMounts(deviceName, mountPoint string) ([]*mount.Info, error) {
for _, driver := range osdm.Drivers {
log.WithFields(log.Fields{
"deviceName": deviceName,
"mountPoint": mountPoint,
"driverName": driver.Name()}).Info("getting mounts")
mounts, err := driver.GetMounts(deviceName, mountPoint)
if err != nil {
return nil, err
}
return mounts, nil
}
return nil, errors.New("No OS detected")
}
开发者ID:Oskoss,项目名称:rexray,代码行数:16,代码来源:os.go
示例14: NewStorageDriverManager
func NewStorageDriverManager(conf *config.Config) (*StorageDriverManager, error) {
sd, sdErr := getDrivers(conf)
if sdErr != nil {
return nil, sdErr
}
if len(sd) == 0 {
return nil, errors.New("no storage drivers initialized")
}
return &StorageDriverManager{
Drivers: sd,
Config: conf,
}, nil
}
开发者ID:robnolen,项目名称:rexray,代码行数:16,代码来源:storage.go
示例15: getIQN
func getIQN() (string, error) {
data, err := ioutil.ReadFile("/etc/iscsi/initiatorname.iscsi")
if err != nil {
return "", err
}
result := string(data)
lines := strings.Split(result, "\n")
for _, line := range lines {
split := strings.Split(line, "=")
if split[0] == "InitiatorName" {
return split[1], nil
}
}
return "", errors.New("IQN not found")
}
开发者ID:robnolen,项目名称:rexray,代码行数:17,代码来源:storage.go
示例16: NewVolumeDriverManager
func NewVolumeDriverManager(
conf *config.Config,
osDriverManager *osm.OSDriverManager,
storageDriverManager *storage.StorageDriverManager) (*VolumeDriverManager, error) {
vd, vdErr := getDrivers(conf, osDriverManager, storageDriverManager)
if vdErr != nil {
return nil, vdErr
}
if len(vd) == 0 {
return nil, errors.New("no volume drivers initialized")
}
return &VolumeDriverManager{
Drivers: vd,
}, nil
}
开发者ID:robnolen,项目名称:rexray,代码行数:18,代码来源:volume.go
示例17: getLocalDevices
func getLocalDevices() (deviceNames []string, err error) {
file := "/proc/partitions"
contentBytes, err := ioutil.ReadFile(file)
if err != nil {
return []string{}, errors.New(fmt.Sprintf("Couldn't read %s: %v", file, err))
}
content := string(contentBytes)
lines := strings.Split(content, "\n")
for _, line := range lines[2:] {
fields := strings.Fields(line)
if len(fields) == 4 {
deviceNames = append(deviceNames, fields[3])
}
}
return deviceNames, nil
}
开发者ID:robnolen,项目名称:rexray,代码行数:19,代码来源:storage.go
示例18: GetDeviceNextAvailable
func (driver *Driver) GetDeviceNextAvailable() (string, error) {
letters := []string{"a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p"}
blockDeviceNames := make(map[string]bool)
blockDeviceMapping, err := driver.GetVolumeMapping()
if err != nil {
return "", err
}
for _, blockDevice := range blockDeviceMapping {
re, _ := regexp.Compile(`^/dev/xvd([a-z])`)
res := re.FindStringSubmatch(blockDevice.DeviceName)
if len(res) > 0 {
blockDeviceNames[res[1]] = true
}
}
localDevices, err := getLocalDevices()
if err != nil {
return "", err
}
for _, localDevice := range localDevices {
re, _ := regexp.Compile(`^xvd([a-z])`)
res := re.FindStringSubmatch(localDevice)
if len(res) > 0 {
blockDeviceNames[res[1]] = true
}
}
for _, letter := range letters {
if !blockDeviceNames[letter] {
nextDeviceName := "/dev/xvd" + letter
log.Println("Got next device name: " + nextDeviceName)
return nextDeviceName, nil
}
}
return "", errors.New("No available device")
}
开发者ID:robnolen,项目名称:rexray,代码行数:39,代码来源:storage.go
示例19: CopySnapshot
func (driver *Driver) CopySnapshot(runAsync bool, volumeID, snapshotID, snapshotName, destinationSnapshotName, destinationRegion string) (*storage.Snapshot, error) {
return nil, errors.New("This driver does not implement CopySnapshot")
}
开发者ID:robnolen,项目名称:rexray,代码行数:3,代码来源:storage.go
示例20: Start
return nil, errors.New("no volume drivers initialized")
}
return &Module{
id: id,
vdm: vdm,
name: MOD_NAME,
desc: MOD_DESC,
addr: cfg.Address,
}, nil
}
const driverName = "dockervolumedriver"
var (
ErrMissingHost = errors.New("Missing host parameter")
ErrBadHostSpecified = errors.New("Bad host specified, ie. unix:///run/docker/plugins/rexray.sock or tcp://127.0.0.1:8080")
ErrBadProtocol = errors.New("Bad protocol specified with host, ie. unix:// or tcp://")
)
type pluginRequest struct {
Name string `json:"Name,omitempty"`
Opts volume.VolumeOpts `json:"Opts,omitempty"`
}
func (mod *Module) Start() error {
proto, addr, parseAddrErr := util.ParseAddress(mod.Address())
if parseAddrErr != nil {
return parseAddrErr
}
开发者ID:Oskoss,项目名称:rexray,代码行数:31,代码来源:voldriver.go
注:本文中的github.com/emccode/rexray/errors.New函数示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论