From 722de33022cf5a66ac7507c2fe182d1edaa049f7 Mon Sep 17 00:00:00 2001 From: Nicolas Mahe Date: Thu, 22 Aug 2019 17:59:48 +0700 Subject: [PATCH 1/2] Update service sdk to include a interface and rename the current implementation to deprecated --- sdk/event/event.go | 4 +-- sdk/execution/execution.go | 4 +-- sdk/execution/execution_test.go | 2 +- sdk/instance/instance.go | 4 +-- sdk/sdk.go | 4 +-- sdk/service/{service.go => deprecated.go} | 32 +++++++---------------- sdk/service/type.go | 25 ++++++++++++++++++ 7 files changed, 43 insertions(+), 32 deletions(-) rename sdk/service/{service.go => deprecated.go} (73%) create mode 100644 sdk/service/type.go diff --git a/sdk/event/event.go b/sdk/event/event.go index f9e625eee..07d2ff06f 100644 --- a/sdk/event/event.go +++ b/sdk/event/event.go @@ -17,11 +17,11 @@ const ( type Event struct { ps *pubsub.PubSub instance *instancesdk.Instance - service *servicesdk.Service + service servicesdk.Service } // New creates a new Event SDK with given options. -func New(ps *pubsub.PubSub, service *servicesdk.Service, instance *instancesdk.Instance) *Event { +func New(ps *pubsub.PubSub, service servicesdk.Service, instance *instancesdk.Instance) *Event { return &Event{ ps: ps, service: service, diff --git a/sdk/execution/execution.go b/sdk/execution/execution.go index 44396d91f..a69b80493 100644 --- a/sdk/execution/execution.go +++ b/sdk/execution/execution.go @@ -21,14 +21,14 @@ const ( // Execution exposes execution APIs of MESG. type Execution struct { ps *pubsub.PubSub - service *servicesdk.Service + service servicesdk.Service instance *instancesdk.Instance workflow *workflowsdk.Workflow execDB database.ExecutionDB } // New creates a new Execution SDK with given options. -func New(ps *pubsub.PubSub, service *servicesdk.Service, instance *instancesdk.Instance, workflow *workflowsdk.Workflow, execDB database.ExecutionDB) *Execution { +func New(ps *pubsub.PubSub, service servicesdk.Service, instance *instancesdk.Instance, workflow *workflowsdk.Workflow, execDB database.ExecutionDB) *Execution { return &Execution{ ps: ps, service: service, diff --git a/sdk/execution/execution_test.go b/sdk/execution/execution_test.go index ee81113b8..328a40840 100644 --- a/sdk/execution/execution_test.go +++ b/sdk/execution/execution_test.go @@ -49,7 +49,7 @@ func newTesting(t *testing.T) (*Execution, *apiTesting) { serviceStore, err := store.NewLevelDBStore(servicedbname) require.NoError(t, err) db := database.NewServiceDB(serviceStore) - service := servicesdk.New(container, db) + service := servicesdk.NewDeprecated(container, db) instDB, err := database.NewInstanceDB(instdbname) require.NoError(t, err) diff --git a/sdk/instance/instance.go b/sdk/instance/instance.go index 5d29db401..ad4680d78 100644 --- a/sdk/instance/instance.go +++ b/sdk/instance/instance.go @@ -20,7 +20,7 @@ import ( // Instance exposes service instance APIs of MESG. type Instance struct { container container.Container - service *servicesdk.Service + service servicesdk.Service instanceDB database.InstanceDB endpoint string @@ -28,7 +28,7 @@ type Instance struct { } // New creates a new Instance SDK with given options. -func New(c container.Container, service *servicesdk.Service, instanceDB database.InstanceDB, engineName, port string) *Instance { +func New(c container.Container, service servicesdk.Service, instanceDB database.InstanceDB, engineName, port string) *Instance { return &Instance{ container: c, service: service, diff --git a/sdk/sdk.go b/sdk/sdk.go index d235b9dd7..a8ef3b448 100644 --- a/sdk/sdk.go +++ b/sdk/sdk.go @@ -13,7 +13,7 @@ import ( // SDK exposes all functionalities of MESG Engine. type SDK struct { - Service *servicesdk.Service + Service servicesdk.Service Instance *instancesdk.Instance Execution *executionsdk.Execution Event *eventsdk.Event @@ -23,7 +23,7 @@ type SDK struct { // New creates a new SDK with given options. func New(c container.Container, serviceDB *database.ServiceDB, instanceDB database.InstanceDB, execDB database.ExecutionDB, workflowDB database.WorkflowDB, engineName, port string) *SDK { ps := pubsub.New(0) - serviceSDK := servicesdk.New(c, serviceDB) + serviceSDK := servicesdk.NewDeprecated(c, serviceDB) instanceSDK := instancesdk.New(c, serviceSDK, instanceDB, engineName, port) workflowSDK := workflowsdk.New(instanceSDK, workflowDB) executionSDK := executionsdk.New(ps, serviceSDK, instanceSDK, workflowSDK, execDB) diff --git a/sdk/service/service.go b/sdk/service/deprecated.go similarity index 73% rename from sdk/service/service.go rename to sdk/service/deprecated.go index 2edc3ba7c..46480f272 100644 --- a/sdk/service/service.go +++ b/sdk/service/deprecated.go @@ -2,12 +2,10 @@ package servicesdk import ( "errors" - "fmt" "io/ioutil" "net/http" "os" - "github.com/cskr/pubsub" "github.com/docker/docker/pkg/archive" "github.com/mesg-foundation/engine/container" "github.com/mesg-foundation/engine/database" @@ -17,25 +15,22 @@ import ( "github.com/mesg-foundation/engine/service/validator" ) -// Service exposes service APIs of MESG. -type Service struct { - ps *pubsub.PubSub - +// deprecated exposes service APIs of MESG. +type deprecated struct { container container.Container serviceDB *database.ServiceDB } -// New creates a new Service SDK with given options. -func New(c container.Container, serviceDB *database.ServiceDB) *Service { - return &Service{ - ps: pubsub.New(0), +// NewDeprecated creates a new Service SDK with given options. +func NewDeprecated(c container.Container, serviceDB *database.ServiceDB) Service { + return &deprecated{ container: c, serviceDB: serviceDB, } } // Create creates a new service from definition. -func (s *Service) Create(srv *service.Service) (*service.Service, error) { +func (s *deprecated) Create(srv *service.Service) (*service.Service, error) { if srv.Configuration == nil { srv.Configuration = &service.Configuration{} } @@ -91,25 +86,16 @@ func (s *Service) Create(srv *service.Service) (*service.Service, error) { } // Delete deletes the service by hash. -func (s *Service) Delete(hash hash.Hash) error { +func (s *deprecated) Delete(hash hash.Hash) error { return s.serviceDB.Delete(hash) } // Get returns the service that matches given hash. -func (s *Service) Get(hash hash.Hash) (*service.Service, error) { +func (s *deprecated) Get(hash hash.Hash) (*service.Service, error) { return s.serviceDB.Get(hash) } // List returns all services. -func (s *Service) List() ([]*service.Service, error) { +func (s *deprecated) List() ([]*service.Service, error) { return s.serviceDB.All() } - -// AlreadyExistsError is an not found error. -type AlreadyExistsError struct { - Hash hash.Hash -} - -func (e *AlreadyExistsError) Error() string { - return fmt.Sprintf("service %q already exists", e.Hash.String()) -} diff --git a/sdk/service/type.go b/sdk/service/type.go new file mode 100644 index 000000000..651033ec6 --- /dev/null +++ b/sdk/service/type.go @@ -0,0 +1,25 @@ +package servicesdk + +import ( + "fmt" + + "github.com/mesg-foundation/engine/hash" + "github.com/mesg-foundation/engine/service" +) + +// Service is the interface of this sdk +type Service interface { + Create(srv *service.Service) (*service.Service, error) + Delete(hash hash.Hash) error + Get(hash hash.Hash) (*service.Service, error) + List() ([]*service.Service, error) +} + +// AlreadyExistsError is an not found error. +type AlreadyExistsError struct { + Hash hash.Hash +} + +func (e *AlreadyExistsError) Error() string { + return fmt.Sprintf("service %q already exists", e.Hash.String()) +} From 019e0b99149a4375f95c133d949dff2453828812 Mon Sep 17 00:00:00 2001 From: Nicolas Mahe Date: Mon, 26 Aug 2019 11:59:07 +0700 Subject: [PATCH 2/2] fix merge --- sdk/sdk.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sdk/sdk.go b/sdk/sdk.go index d5302e667..1ab472375 100644 --- a/sdk/sdk.go +++ b/sdk/sdk.go @@ -25,7 +25,7 @@ type SDK struct { func New(app *cosmos.App, c container.Container, serviceDB *database.ServiceDB, instanceDB database.InstanceDB, execDB database.ExecutionDB, workflowDB database.WorkflowDB, engineName, port string) (*SDK, error) { ps := pubsub.New(0) initDefaultAppModules(app) - serviceSDK := servicesdk.New(c, serviceDB) + serviceSDK := servicesdk.NewDeprecated(c, serviceDB) instanceSDK := instancesdk.New(c, serviceSDK, instanceDB, engineName, port) workflowSDK := workflowsdk.New(instanceSDK, workflowDB) executionSDK := executionsdk.New(ps, serviceSDK, instanceSDK, workflowSDK, execDB)