Skip to content

Commit

Permalink
Merge pull request cloud-barista#1234 from ish-hcc/tag_openstack
Browse files Browse the repository at this point in the history
OpenStack: Add TagHandler
  • Loading branch information
powerkimhub authored Jul 10, 2024
2 parents d68e617 + 0c0daa6 commit 493a9ab
Show file tree
Hide file tree
Showing 3 changed files with 838 additions and 3 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -151,5 +151,14 @@ func (*OpenStackCloudConnection) CreatePriceInfoHandler() (irs.PriceInfoHandler,
}

func (cloudConn *OpenStackCloudConnection) CreateTagHandler() (irs.TagHandler, error) {
return nil, errors.New("OpenStack Driver: : not implemented")
cblogger.Info("OpenStack Driver: called CreateTagHandler()!")

tagHandler := osrs.OpenStackTagHandler{
CredentialInfo: cloudConn.CredentialInfo,
IdentityClient: cloudConn.IdentityClient,
ComputeClient: cloudConn.ComputeClient,
NetworkClient: cloudConn.NetworkClient,
NLBClient: cloudConn.NLBClient,
}
return &tagHandler, nil
}
Original file line number Diff line number Diff line change
@@ -1,10 +1,12 @@
package main

import (
"bufio"
"errors"
"fmt"
"io/ioutil"
"os"
"strings"

cblog "github.com/cloud-barista/cb-log"
"github.com/davecgh/go-spew/spew"
Expand Down Expand Up @@ -713,6 +715,8 @@ func getResourceHandler(resourceType string, config Config) (interface{}, error)
resourceHandler, err = cloudConnection.CreateMyImageHandler()
case "regionzone":
resourceHandler, err = cloudConnection.CreateRegionZoneHandler()
case "tag":
resourceHandler, err = cloudConnection.CreateTagHandler()
}

if err != nil {
Expand Down Expand Up @@ -1131,7 +1135,7 @@ Loop:
if inputCnt == 1 {
switch commandNum {
case 0:
testMyImageHandlerListPrint()
testRegionZoneHandlerListPrint()
case 1:
cblogger.Info("Start ListRegionZone() ...")
if list, err := regionZoneHandler.ListRegionZone(); err != nil {
Expand Down Expand Up @@ -1177,6 +1181,261 @@ Loop:
}
}

func testTagHandlerListPrint() {
cblogger.Info("Test RegionZoneHandler")
cblogger.Info("0. Print Menu")
cblogger.Info("1. AddTag()")
cblogger.Info("2. ListTag()")
cblogger.Info("3. GetTag()")
cblogger.Info("4. RemoveTag()")
cblogger.Info("5. FindTag()")
cblogger.Info("6. Exit")
}

func inputToRSType(input string) irs.RSType {
switch input {
case "all":
return irs.ALL
case "image":
return irs.IMAGE
case "vpc":
return irs.VPC
case "subnet":
return irs.SUBNET
case "sg":
return irs.SG
case "keypair":
return irs.KEY
case "vm":
return irs.VM
case "nlb":
return irs.NLB
case "disk":
return irs.DISK
case "myimage":
return irs.IMAGE
case "cluster":
return irs.CLUSTER
case "nodegroup":
return irs.NODEGROUP
default:
return ""
}
}

func testTagHandler(config Config) {
resourceHandler, err := getResourceHandler("tag", config)
if err != nil {
cblogger.Error(err)
return
}

tagHandler := resourceHandler.(irs.TagHandler)

testTagHandlerListPrint()

Loop:
for {
var commandNum int
inputCnt, err := fmt.Scan(&commandNum)
if err != nil {
cblogger.Error(err)
}

if inputCnt == 1 {
switch commandNum {
case 0:
testTagHandlerListPrint()
case 1:
cblogger.Info("Start AddTag() ...")
fmt.Println("=== Enter resource type ===")
in := bufio.NewReader(os.Stdin)
resTypeStr, err := in.ReadString('\n')
if err != nil {
cblogger.Error(err)
}
resTypeStr = strings.TrimSpace(resTypeStr)
result := irs.RSTypeString(irs.RSType(resTypeStr))
if strings.Contains(result, "not supported") {
cblogger.Error(result)
break Loop
}
resType := inputToRSType(resTypeStr)

fmt.Println("=== Enter name of the resource ===")
in = bufio.NewReader(os.Stdin)
resName, err := in.ReadString('\n')
if err != nil {
cblogger.Error(err)
}
resName = strings.TrimSpace(resName)

fmt.Println("=== Enter tag's key ===")
in = bufio.NewReader(os.Stdin)
tagKey, err := in.ReadString('\n')
if err != nil {
cblogger.Error(err)
}
tagKey = strings.TrimSpace(tagKey)

fmt.Println("=== Enter tag's value ===")
in = bufio.NewReader(os.Stdin)
tagValue, err := in.ReadString('\n')
if err != nil {
cblogger.Error(err)
}
tagValue = strings.TrimSpace(tagValue)

if tagKeyValue, err := tagHandler.AddTag(resType, irs.IID{NameId: resName}, irs.KeyValue{Key: tagKey, Value: tagValue}); err != nil {
cblogger.Error(err)
} else {
spew.Dump(tagKeyValue)
}
cblogger.Info("Finish AddTag()")
case 2:
cblogger.Info("Start ListTag() ...")
fmt.Println("=== Enter resource type ===")
in := bufio.NewReader(os.Stdin)
resTypeStr, err := in.ReadString('\n')
if err != nil {
cblogger.Error(err)
}
resTypeStr = strings.TrimSpace(resTypeStr)
result := irs.RSTypeString(irs.RSType(resTypeStr))
if strings.Contains(result, "not supported") {
cblogger.Error(result)
break Loop
}
resType := inputToRSType(resTypeStr)

fmt.Println("=== Enter name of the resource ===")
in = bufio.NewReader(os.Stdin)
resName, err := in.ReadString('\n')
if err != nil {
cblogger.Error(err)
}
resName = strings.TrimSpace(resName)

if tagList, err := tagHandler.ListTag(resType, irs.IID{NameId: resName}); err != nil {
cblogger.Error(err)
} else {
spew.Dump(tagList)
}
cblogger.Info("Finish ListTag()")
case 3:
cblogger.Info("Start GetTag() ...")
fmt.Println("=== Enter resource type ===")
in := bufio.NewReader(os.Stdin)
resTypeStr, err := in.ReadString('\n')
if err != nil {
cblogger.Error(err)
}
resTypeStr = strings.TrimSpace(resTypeStr)
result := irs.RSTypeString(irs.RSType(resTypeStr))
if strings.Contains(result, "not supported") {
cblogger.Error(result)
break Loop
}
resType := inputToRSType(resTypeStr)

fmt.Println("=== Enter name of the resource ===")
in = bufio.NewReader(os.Stdin)
resName, err := in.ReadString('\n')
if err != nil {
cblogger.Error(err)
}
resName = strings.TrimSpace(resName)

fmt.Println("=== Enter tag's key ===")
in = bufio.NewReader(os.Stdin)
tagKey, err := in.ReadString('\n')
if err != nil {
cblogger.Error(err)
}
tagKey = strings.TrimSpace(tagKey)

if tagKeyValue, err := tagHandler.GetTag(resType, irs.IID{NameId: resName}, tagKey); err != nil {
cblogger.Error(err)
} else {
spew.Dump(tagKeyValue)
}
cblogger.Info("Finish GetTag()")
case 4:
cblogger.Info("Start RemoveTag() ...")
fmt.Println("=== Enter resource type ===")
in := bufio.NewReader(os.Stdin)
resTypeStr, err := in.ReadString('\n')
if err != nil {
cblogger.Error(err)
}
resTypeStr = strings.TrimSpace(resTypeStr)
result := irs.RSTypeString(irs.RSType(resTypeStr))
if strings.Contains(result, "not supported") {
cblogger.Error(result)
break Loop
}
resType := inputToRSType(resTypeStr)

fmt.Println("=== Enter name of the resource ===")
in = bufio.NewReader(os.Stdin)
resName, err := in.ReadString('\n')
if err != nil {
cblogger.Error(err)
}
resName = strings.TrimSpace(resName)

fmt.Println("=== Enter tag's key ===")
in = bufio.NewReader(os.Stdin)
tagKey, err := in.ReadString('\n')
if err != nil {
cblogger.Error(err)
}
tagKey = strings.TrimSpace(tagKey)

if tagKeyValue, err := tagHandler.RemoveTag(resType, irs.IID{NameId: resName}, tagKey); err != nil {
cblogger.Error(err)
} else {
spew.Dump(tagKeyValue)
}
cblogger.Info("Finish RemoveTag()")
case 5:
cblogger.Info("Start FindTag() ...")
fmt.Println("=== Enter resource type ===")
in := bufio.NewReader(os.Stdin)
resTypeStr, err := in.ReadString('\n')
if err != nil {
cblogger.Error(err)
}
resTypeStr = strings.TrimSpace(resTypeStr)
result := irs.RSTypeString(irs.RSType(resTypeStr))
if strings.Contains(result, "not supported") {
cblogger.Error(result)
break Loop
}
resType := inputToRSType(resTypeStr)

fmt.Println("=== Enter keyword ===")
in = bufio.NewReader(os.Stdin)
keyword, err := in.ReadString('\n')
if err != nil {
cblogger.Error(err)
}
keyword = strings.TrimSpace(keyword)

if tagKeyValue, err := tagHandler.FindTag(resType, keyword); err != nil {
cblogger.Error(err)
} else {
spew.Dump(tagKeyValue)
}
cblogger.Info("Finish FindTag()")
case 6:
cblogger.Info("Exit")
break Loop
}
}
}
}

func main() {

showTestHandlerInfo() // ResourceHandler 테스트 정보 출력
Expand Down Expand Up @@ -1224,6 +1483,9 @@ Loop:
testRegionZoneHandler(config)
showTestHandlerInfo()
case 11:
testTagHandler(config)
showTestHandlerInfo()
case 12:
cblogger.Info("Exit Test ResourceHandler Program")
break Loop
}
Expand All @@ -1244,7 +1506,8 @@ func showTestHandlerInfo() {
cblogger.Info("8. DiskHandler")
cblogger.Info("9. MyImageHandler")
cblogger.Info("10. RegionZoneHandler")
cblogger.Info("11. Exit")
cblogger.Info("11. TagHandler")
cblogger.Info("12. Exit")
cblogger.Info("==========================================================")
}

Expand Down
Loading

0 comments on commit 493a9ab

Please sign in to comment.