From: SANDEEP KUMAR JAISAWAL Date: Tue, 7 Nov 2023 16:08:59 +0000 (+0530) Subject: Initial core functions for AIMLFW Model Management Service X-Git-Tag: 1.0.0~15 X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=commitdiff_plain;h=a405e8506c3a75933e205036e62083a5b0ada1e3;p=aiml-fw%2Fawmf%2Fmodelmgmtservice.git Initial core functions for AIMLFW Model Management Service Issue-Id: AIMLFW-64 Change-Id: Idda11ab96ad0da076ed86db30e2240b2546ff74e Signed-off-by: SANDEEP KUMAR JAISAWAL --- diff --git a/apis/mmes_apis.go b/apis/mmes_apis.go new file mode 100644 index 0000000..8aaa5e4 --- /dev/null +++ b/apis/mmes_apis.go @@ -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 index 0000000..1492523 --- /dev/null +++ b/core/s3_manager.go @@ -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 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 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 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) +}