Initial core functions for AIMLFW Model Management Service 22/12022/1
authorSANDEEP KUMAR JAISAWAL <s.jaisawal@samsung.com>
Tue, 7 Nov 2023 16:08:59 +0000 (21:38 +0530)
committerSANDEEP KUMAR JAISAWAL <s.jaisawal@samsung.com>
Tue, 7 Nov 2023 16:10:46 +0000 (21:40 +0530)
Issue-Id: AIMLFW-64

Change-Id: Idda11ab96ad0da076ed86db30e2240b2546ff74e
Signed-off-by: SANDEEP KUMAR JAISAWAL <s.jaisawal@samsung.com>
apis/mmes_apis.go [new file with mode: 0644]
core/s3_manager.go [new file with mode: 0644]
go.mod [new file with mode: 0644]
go.sum [new file with mode: 0644]
main.go [new file with mode: 0644]

diff --git a/apis/mmes_apis.go b/apis/mmes_apis.go
new file mode 100644 (file)
index 0000000..8aaa5e4
--- /dev/null
@@ -0,0 +1,20 @@
+package apis
+
+type Mmes_apis struct {
+}
+
+func (api *Mmes_apis) getModel() {
+
+}
+
+func (api *Mmes_apis) createModel() {
+
+}
+
+func (api *Mmes_apis) updateModel() {
+
+}
+
+func (api *Mmes_apis) deleteModel() {
+
+}
diff --git a/core/s3_manager.go b/core/s3_manager.go
new file mode 100644 (file)
index 0000000..1492523
--- /dev/null
@@ -0,0 +1,119 @@
+package core
+
+import (
+       "fmt"
+       "io"
+       "os"
+
+       "github.com/aws/aws-sdk-go/aws"
+       "github.com/aws/aws-sdk-go/service/s3"
+)
+
+type S3_manager struct {
+       //Have aws properties, so that they are accessible
+       //to all the function of this file
+}
+
+func (s3manager *S3_manager) getBucketObject(client *s3.S3, objectName string, bucketName string) {
+
+       getInputs := &s3.GetObjectInput{
+               Bucket: aws.String(bucketName),
+               Key:    aws.String(objectName),
+       }
+       result, err := client.GetObject(getInputs)
+       defer result.Body.Close()
+
+       if err != nil {
+               fmt.Println("Error, can't get fetch object..")
+               return
+       } else {
+               fmt.Println("Successfully retrieved object...")
+               fmt.Println(result)
+       }
+
+       outputFile, error := os.Create(bucketName + ".zip")
+       if error != nil {
+               fmt.Println("Could not temp local file ")
+               return
+       }
+       defer outputFile.Close()
+       _, wrerr := io.Copy(outputFile, result.Body)
+
+       if wrerr != nil {
+               fmt.Println("Failed to write bucket object in to a localfile")
+       } else {
+               fmt.Println("Successfully, written bucket object to localfile")
+       }
+       //The file will be responded in getModel rest api
+}
+
+func (s3manager *S3_manager) deleteBucket(client *s3.S3, objectName string, bucketName string) {
+       success := s3manager.deleteBucketObject(client, objectName, bucketName)
+       if success {
+               deleteBucketInput := &s3.DeleteBucketInput{
+                       Bucket: aws.String(bucketName),
+               }
+               client.DeleteBucket(deleteBucketInput)
+               fmt.Println("Bucket deleted successfully..")
+       } else {
+               fmt.Println("Failed to delete the Bucket ...")
+       }
+
+}
+
+func (s3manager *S3_manager) deleteBucketObject(client *s3.S3, objectName string, bucketName string) bool {
+       deleteInput := &s3.DeleteObjectInput{
+               Bucket: aws.String(bucketName),
+               Key:    aws.String(objectName),
+       }
+       _, err := client.DeleteObject(deleteInput)
+       if err != nil {
+               fmt.Println("Can not delete the bucket object")
+               return false
+       }
+       fmt.Println("Object deleted successfully..")
+       return true
+}
+
+func (s3manager *S3_manager) uploadFile(client *s3.S3, fileName string, bucketName string) {
+
+       file, err := os.Open(fileName)
+       if err != nil {
+               fmt.Println("Error is opening the file..")
+       }
+       defer file.Close()
+
+       params := &s3.PutObjectInput{
+               Bucket: aws.String(bucketName),
+               Key:    aws.String(fileName),
+               Body:   file,
+       }
+
+       _, err = client.PutObject(params)
+       if err != nil {
+               fmt.Printf("Error in uploading file to bucket ", err)
+       }
+       fmt.Printf("File uploaded to bucket ")
+}
+
+func (s3manager *S3_manager) listBucket(client *s3.S3) {
+       input := &s3.ListBucketsInput{}
+       result, err := client.ListBuckets(input)
+       if err != nil {
+               fmt.Println(err.Error())
+       }
+       fmt.Println(result)
+}
+
+// Return list of objects in the buckets
+func getBucketItems(bucketName string) {
+
+}
+
+func (s3manager *S3_manager) createBucket(client *s3.S3, bucketName string) {
+       _, err := client.CreateBucket(&s3.CreateBucketInput{Bucket: aws.String(bucketName)})
+       if err != nil {
+               panic(err)
+       }
+       println("Bucket created: ", bucketName)
+}
diff --git a/go.mod b/go.mod
new file mode 100644 (file)
index 0000000..9779658
--- /dev/null
+++ b/go.mod
@@ -0,0 +1,7 @@
+module example.com/mmes
+
+go 1.21.3
+
+require github.com/aws/aws-sdk-go v1.47.3
+
+require github.com/jmespath/go-jmespath v0.4.0 // indirect
diff --git a/go.sum b/go.sum
new file mode 100644 (file)
index 0000000..c6fa902
--- /dev/null
+++ b/go.sum
@@ -0,0 +1,18 @@
+github.com/aws/aws-sdk-go v1.47.3 h1:e0H6NFXiniCpR8Lu3lTphVdRaeRCDLAeRyTHd1tJSd8=
+github.com/aws/aws-sdk-go v1.47.3/go.mod h1:LF8svs817+Nz+DmiMQKTO3ubZ/6IaTpq3TjupRn3Eqk=
+github.com/davecgh/go-spew v1.1.0 h1:ZDRjVQ15GmhC3fiQ8ni8+OwkZQO4DARzQgrnXU1Liz8=
+github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
+github.com/jmespath/go-jmespath v0.4.0 h1:BEgLn5cpjn8UN1mAw4NjwDrS35OdebyEtFe+9YPoQUg=
+github.com/jmespath/go-jmespath v0.4.0/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHWvzYPziyZiYoo=
+github.com/jmespath/go-jmespath/internal/testify v1.5.1 h1:shLQSRRSCCPj3f2gpwzGwWFoC7ycTf1rcQZHOlsJ6N8=
+github.com/jmespath/go-jmespath/internal/testify v1.5.1/go.mod h1:L3OGu8Wl2/fWfCI6z80xFu9LTZmf1ZRjMHUOPmWr69U=
+github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
+github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
+github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
+golang.org/x/net v0.17.0 h1:pVaXccu2ozPjCXewfr1S7xza/zcXTity9cCdXQYSjIM=
+golang.org/x/net v0.17.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE=
+golang.org/x/text v0.13.0 h1:ablQoSUd0tRdKxZewP80B+BaqeKJuVhuRxj/dkrun3k=
+golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE=
+gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
+gopkg.in/yaml.v2 v2.2.8 h1:obN1ZagJSUGI0Ek/LBmuj4SNLPfIny3KsKFopxRdj10=
+gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
diff --git a/main.go b/main.go
new file mode 100644 (file)
index 0000000..bba982c
--- /dev/null
+++ b/main.go
@@ -0,0 +1,19 @@
+package main
+
+import (
+       "fmt"
+       "example.com/mmes/apis"
+)
+
+func main() {
+
+       fmt.Println("Starting api..")
+       //Start apis declared in apis/mmets_apis.go
+       //The mmes_apis will have a structure to hold instance of core/s3_manager
+       //mmes_will use this se3 instance to all other se core functing
+       //s3_manager would have aninstance of s3.session, which will be
+       //confifured with aws credentials
+       mmes_api := &apis.Mmes_apis{}
+
+       fmt.Println(mmes_api)
+}