move port interface to scsi package

This commit is contained in:
Lei Xue
2016-11-27 17:02:17 +08:00
parent bd7193880e
commit ed47ac5ea0
8 changed files with 59 additions and 158 deletions

View File

@@ -30,17 +30,17 @@ type BaseBackingStore struct {
type BackingStoreFunc func() (api.BackingStore, error)
var registeredPlugins = map[string](BackingStoreFunc){}
var registeredBSPlugins = map[string](BackingStoreFunc){}
func RegisterBackingStore(name string, f BackingStoreFunc) {
registeredPlugins[name] = f
registeredBSPlugins[name] = f
}
func NewBackingStore(name string) (api.BackingStore, error) {
if name == "" {
return nil, nil
}
f, ok := registeredPlugins[name]
f, ok := registeredBSPlugins[name]
if !ok {
return nil, fmt.Errorf("BackingStore %s is not found.", name)
}

View File

@@ -1,5 +1,5 @@
/*
Copyright 2015 The GoStor Authors All rights reserved.
Copyright 2016 The GoStor Authors All rights reserved.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
@@ -16,3 +16,33 @@ limitations under the License.
// Target Driver Interface
package scsi
import (
"fmt"
"github.com/gostor/gotgt/pkg/config"
)
type SCSITargetDriver interface {
Run() error
NewTarget(string, *config.Config) error
}
type TargetDriverFunc func(*SCSITargetService) (SCSITargetDriver, error)
var registeredPlugins = map[string](TargetDriverFunc){}
func RegisterTargetDriver(name string, f TargetDriverFunc) {
registeredPlugins[name] = f
}
func NewTargetDriver(tgtDriver string, s *SCSITargetService) (SCSITargetDriver, error) {
if tgtDriver == "" {
return nil, nil
}
targetInitFunc, ok := registeredPlugins[tgtDriver]
if !ok {
return nil, fmt.Errorf("SCSI target driver %s is not found.", tgtDriver)
}
return targetInitFunc(s)
}