Skip to content
This repository has been archived by the owner on Apr 1, 2023. It is now read-only.

Added delete node function. Fixed #97 and #98 #96

Merged
merged 4 commits into from
Sep 12, 2022
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 3 additions & 1 deletion services/merak-network/activities/node_register_activity.go
Original file line number Diff line number Diff line change
Expand Up @@ -20,12 +20,13 @@ import (
"sync"

common_pb "github.com/futurewei-cloud/merak/api/proto/v1/common"
"github.com/futurewei-cloud/merak/services/merak-network/database"
"github.com/futurewei-cloud/merak/services/merak-network/entities"
"github.com/futurewei-cloud/merak/services/merak-network/http"
"github.com/futurewei-cloud/merak/services/merak-network/utils"
)

func RegisterNode(ctx context.Context, compute []*common_pb.InternalComputeInfo, wg *sync.WaitGroup, projectId string) (string, error) {
func RegisterNode(ctx context.Context, compute []*common_pb.InternalComputeInfo, wg *sync.WaitGroup, netConfigId string) (string, error) {
log.Println("RegisterNode")
//defer wg.Done()
log.Printf("compute %s", compute)
Expand Down Expand Up @@ -54,6 +55,7 @@ func RegisterNode(ctx context.Context, compute []*common_pb.InternalComputeInfo,
var returnJson entities.NodeReturn
json.Unmarshal([]byte(returnMessage), &returnJson)
log.Printf("returnJson : %+v", returnJson)
database.Set(utils.NODEGROUP+netConfigId, &returnJson)
log.Println("RegisterNode done")
return "", nil
}
28 changes: 27 additions & 1 deletion services/merak-network/activities/vnet_delete_activity.go
Original file line number Diff line number Diff line change
Expand Up @@ -101,7 +101,7 @@ func deleteVpc(vpcId string, projectId string) (returnVpcId string, err error) {
return vpcId, nil
}

func deleteSg(sgId string, projectId string) (returnVpcId string, err error) {
func deleteSg(sgId string, projectId string) (returnSgId string, err error) {
log.Println("deleteSg")
returnMessage, returnErr := http.RequestCall("http://"+utils.ALCORURL+":30008/project/"+projectId+"/security-groups/"+sgId, "DELETE", "", nil)
if returnErr != nil {
Expand All @@ -114,9 +114,35 @@ func deleteSg(sgId string, projectId string) (returnVpcId string, err error) {
return sgId, nil
}

func deleteNode(netConfigId string) (err error) {
log.Println("deleteNode")
values, err := database.Get(utils.NODEGROUP + netConfigId)
if err != nil {
return err
}
log.Printf("NodeGroup %s", values)
var returnJson entities.NodeReturn
json.Unmarshal([]byte(values), &returnJson)
log.Printf("returnMessage %s", returnJson)

for _, node := range returnJson {
_, returnErr := http.RequestCall("http://"+utils.ALCORURL+":30007/nodes/"+node.NodeID, "DELETE", nil, nil)
if returnErr != nil {
log.Printf("returnErr %s", returnErr)
return returnErr
}
}
database.Del(utils.NODEGROUP + netConfigId)
log.Println("deleteNode done")
return nil
}

func VnetDelete(ctx context.Context, netConfigId string, wg *sync.WaitGroup, returnMessage chan *pb.ReturnNetworkMessage) (*pb.ReturnNetworkMessage, error) {
// TODO: when query db, make sure to check if key exist first, other wise could timeout
log.Println("VnetDelete")

deleteNode(netConfigId)

values, err := database.Get(utils.NETCONFIG + netConfigId)
if err != nil {
return nil, err
Expand Down
19 changes: 15 additions & 4 deletions services/merak-network/grpc/service/service.go
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,9 @@ func (s *Server) NetConfigHandler(ctx context.Context, in *pb.InternalNetConfigI
}()

returnNetworkMessage := <-networkInfoReturn
for len(networkInfoReturn) > 0 {
<-networkInfoReturn
}
wg.Wait()
log.Printf("returnNetworkMessage %s", returnNetworkMessage)
if ifAnyFailure {
Expand Down Expand Up @@ -103,7 +106,7 @@ func (s *Server) NetConfigHandler(ctx context.Context, in *pb.InternalNetConfigI
wg.Add(1)
go func() {
defer wg.Done()
var _, err = activities.RegisterNode(ctx, in.Config.GetComputes(), &wg, projectId)
var _, err = activities.RegisterNode(ctx, in.Config.GetComputes(), &wg, netConfigId)
if err != nil {
returnNetworkMessage.ReturnCode = common_pb.ReturnCode_FAILED
returnNetworkMessage.ReturnMessage = err.Error()
Expand Down Expand Up @@ -142,11 +145,14 @@ func (s *Server) NetConfigHandler(ctx context.Context, in *pb.InternalNetConfigI
returnNetworkMessage.ReturnCode = common_pb.ReturnCode_OK
returnNetworkMessage.ReturnMessage = "NetworkHandler: OperationType_CREATE"
returnNetworkMessage := <-networkReturn
for len(networkReturn) > 0 {
<-networkReturn
}
wg.Wait()
if ifAnyFailure {
return nil, currentError
}
log.Printf("returnNetworkMessage %s", returnNetworkMessage)
log.Printf("networkCreateReturn returnNetworkMessage %s", returnNetworkMessage)
return returnNetworkMessage, nil
case common_pb.OperationType_UPDATE:
log.Println("Update")
Expand All @@ -165,16 +171,21 @@ func (s *Server) NetConfigHandler(ctx context.Context, in *pb.InternalNetConfigI
currentError = err
}
networkDeleteReturn <- vnetDeleteReturn
log.Printf("networkInfoReturn: %s", vnetDeleteReturn)
log.Printf("networkDeleteReturn: %s", vnetDeleteReturn)
}()
wg.Wait()
returnNetworkMessage.ReturnCode = common_pb.ReturnCode_OK
returnNetworkMessage.ReturnMessage = "NetworkHandler: OperationType_DELETE"
returnNetworkMessage := <-networkDeleteReturn
for len(networkDeleteReturn) > 0 {
<-networkDeleteReturn
}
wg.Wait()
log.Printf("============== After networkDeleteReturn")
if ifAnyFailure {
return nil, currentError
}
log.Printf("returnNetworkMessage %s", returnNetworkMessage)
log.Printf("networkDeleteReturn returnNetworkMessage %s", returnNetworkMessage)
return returnNetworkMessage, nil
default:
log.Println("Unknown Operation")
Expand Down
22 changes: 11 additions & 11 deletions services/merak-network/test/create_test/network_create_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -137,19 +137,19 @@ func main() {
}
testInternalComputeInfo1 := common_pb.InternalComputeInfo{
OperationType: common_pb.OperationType_CREATE,
//Id: "1",
Name: "YM_node5",
DatapathIp: "192.168.10.15",
Mac: "36:db:23:8c:4a:c5",
Veth: "eth1",
Id: "YM_node5_id",
Name: "YM_node5",
DatapathIp: "192.168.10.15",
Mac: "36:db:23:8c:4a:c5",
Veth: "eth1",
}
testInternalComputeInfo2 := common_pb.InternalComputeInfo{
OperationType: common_pb.OperationType_CREATE,
//Id: "1",
Name: "YM_node6",
DatapathIp: "192.168.10.16",
Mac: "36:db:23:8c:4a:c6",
Veth: "eth1",
Id: "YM_node6_id",
Name: "YM_node6",
DatapathIp: "192.168.10.16",
Mac: "36:db:23:8c:4a:c6",
Veth: "eth1",
}
testInternalStorageInfo := pb.InternalStorageInfo{Info: "InternalStorageInfo"}
testInternalNetConfigExtraInfo := pb.InternalNetConfigExtraInfo{Info: "InternalNetConfigExtraInfo"}
Expand Down Expand Up @@ -181,7 +181,7 @@ func main() {
c := pb.NewMerakNetworkServiceClient(conn)

// Contact the server and print out its response.
ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)
ctx, cancel := context.WithTimeout(context.Background(), 30*time.Second)
defer cancel()
// r, err := c.SayHello(ctx, &pb.HelloRequest{Name: *name})
r, err := c.NetConfigHandler(ctx, &testInternalNetConfigInfo)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@ func main() {
c := pb.NewMerakNetworkServiceClient(conn)

// Contact the server and print out its response.
ctx, cancel := context.WithTimeout(context.Background(), time.Second*10)
ctx, cancel := context.WithTimeout(context.Background(), time.Second*60)
defer cancel()
// r, err := c.SayHello(ctx, &pb.HelloRequest{Name: *name})
r, err := c.NetConfigHandler(ctx, &testInternalNetConfigInfo)
Expand Down
1 change: 1 addition & 0 deletions services/merak-network/utils/constant.go
Original file line number Diff line number Diff line change
Expand Up @@ -22,5 +22,6 @@ const SUBNET string = "subnet:"
const Router string = "router:"
const SECURITYGROUP string = "securityGroup:"
const NETCONFIG string = "netconfig:"
const NODEGROUP string = "nodeGroup:"

const ALCORURL string = "10.213.43.77"
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@yanmo96 Should we get ALCORURL from service-config protobuf?