X-Git-Url: https://gerrit.akraino.org/r/gitweb?a=blobdiff_plain;f=mecm%2Fmepm%2Fapplcm%2Fbroker%2Fpkg%2Fhandlers%2Fadapter%2FpluginAdapter%2FpluginAdapter.go;h=822d7cc03045ad57546d990f322091d2b2dd7437;hb=3f907eec199eae9c472039ae1903fd5d5b087b15;hp=d3707f068507bdc7ef7d0f2873b42a222c4c742f;hpb=68e4075a8ba4a80b7727824eb8a91216a18c32dc;p=ealt-edge.git diff --git a/mecm/mepm/applcm/broker/pkg/handlers/adapter/pluginAdapter/pluginAdapter.go b/mecm/mepm/applcm/broker/pkg/handlers/adapter/pluginAdapter/pluginAdapter.go index d3707f0..822d7cc 100644 --- a/mecm/mepm/applcm/broker/pkg/handlers/adapter/pluginAdapter/pluginAdapter.go +++ b/mecm/mepm/applcm/broker/pkg/handlers/adapter/pluginAdapter/pluginAdapter.go @@ -18,81 +18,94 @@ package pluginAdapter import ( "broker/pkg/plugin" "context" - "log" - "os" + "github.com/sirupsen/logrus" "time" ) -func Instantiate(pluginInfo string, host string, deployArtifact string) (workloadId string, error error) { - logger := log.New(os.Stdout, "broker ", log.LstdFlags|log.Lshortfile) - clientConfig := plugin.ClientGRPCConfig{Address: pluginInfo, ChunkSize: 1024, RootCertificate: ""} +const ( + chunkSize = 1024 + rootCertificate = "" +) + +// Plugin adapter which decides a specific client based on plugin info +// TODO PluginInfo to have other information about plugins to find the client and implementation to handle accordingly. +type PluginAdapter struct { + pluginInfo string + logger *logrus.Logger +} + +// Constructor of PluginAdapter +func NewPluginAdapter(pluginInfo string, logger *logrus.Logger) *PluginAdapter { + return &PluginAdapter{pluginInfo: pluginInfo, logger: logger} +} + +// Instantiate application +func (c *PluginAdapter) Instantiate(pluginInfo string, host string, deployArtifact string) (workloadId string, error error) { + c.logger.Info("Instantation started") + clientConfig := plugin.ClientGRPCConfig{Address: pluginInfo, ChunkSize: chunkSize, RootCertificate: rootCertificate} var client, err = plugin.NewClientGRPC(clientConfig) if err != nil { - logger.Fatalf("failed to create client: %v", err) + c.logger.Errorf("failed to create client: %v", err) return "", err } - log.Printf("pluginInfo: ", pluginInfo) - log.Printf("host: ", host) - log.Printf("deployArtifact: ", deployArtifact) + ctx, cancel := context.WithTimeout(context.Background(), 50*time.Second) defer cancel() //Instantiate workloadId, status, err := client.Instantiate(ctx, deployArtifact, host) if err != nil { - logger.Println("server failed to respond %s", err.Error()) - } else { - logger.Println(workloadId, status) - return workloadId, nil + c.logger.Errorf("server failed to respond %s", err.Error()) + return "", err } - return "", err + c.logger.Info("Instantiation success with workloadId %s, status: %s ", workloadId, status) + return workloadId, nil } -func Query(pluginInfo string, host string, workloadId string) (status string, error error) { - logger := log.New(os.Stdout, "broker ", log.LstdFlags|log.Lshortfile) - clientConfig := plugin.ClientGRPCConfig{Address: pluginInfo, ChunkSize: 1024, RootCertificate: ""} +// Query application +func (c *PluginAdapter) Query(pluginInfo string, host string, workloadId string) (status string, error error) { + c.logger.Info("Query started") + clientConfig := plugin.ClientGRPCConfig{Address: pluginInfo, ChunkSize: chunkSize, RootCertificate: rootCertificate} var client, err = plugin.NewClientGRPC(clientConfig) if err != nil { - logger.Fatalf("failed to create client: %v", err) + c.logger.Errorf("failed to create client: %v", err) return "", err } - log.Printf("pluginInfo: ", pluginInfo) - log.Printf("host: ", host) - log.Printf("workloadId: ", workloadId) + ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second) defer cancel() //Query - stats := client.Query(ctx, host, workloadId) + status, err = client.Query(ctx, host, workloadId) if err != nil { - logger.Fatalf("failed to instantiate: %v", err) - return stats, err + c.logger.Errorf("failed to query: %v", err) + return "", err } - logger.Println("query status: ", stats) - return stats, nil + c.logger.Info("query status: ", status) + return status, nil } -func Terminate(pluginInfo string, host string, workloadId string) (status string, error error) { - logger := log.New(os.Stdout, "broker ", log.LstdFlags|log.Lshortfile) - clientConfig := plugin.ClientGRPCConfig{Address: pluginInfo, ChunkSize: 1024, RootCertificate: ""} +// Terminate application +func (c *PluginAdapter) Terminate(pluginInfo string, host string, workloadId string) (status string, error error) { + c.logger.Info("Terminate started") + clientConfig := plugin.ClientGRPCConfig{Address: pluginInfo, ChunkSize: chunkSize, RootCertificate: rootCertificate} var client, err = plugin.NewClientGRPC(clientConfig) if err != nil { - logger.Fatalf("failed to create client: %v", err) - return + c.logger.Errorf("failed to create client: %v", err) + return "Failure", err } - log.Printf("pluginInfo: ", pluginInfo) - log.Printf("host: ", host) - log.Printf("workloadId: ", workloadId) + ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second) defer cancel() //Terminate - ts := client.Terminate(ctx, host, workloadId) + status, err = client.Terminate(ctx, host, workloadId) + if err != nil { - logger.Fatalf("failed to instantiate: %v", err) - return ts, err + c.logger.Errorf("failed to instantiate: %v", err) + return "Failure", err } - logger.Println("termination status: ", ts) - return ts, nil + c.logger.Info("termination success with status: ", status) + return status, nil }