diff --git a/api-runtime/common-runtime/CommonManager.go b/api-runtime/common-runtime/CommonManager.go index 0e7e35001..0ab713471 100644 --- a/api-runtime/common-runtime/CommonManager.go +++ b/api-runtime/common-runtime/CommonManager.go @@ -1080,14 +1080,14 @@ func DeleteCSPResource(connectionName string, rsType string, systemID string) (b // check empty and trim user inputs connectionName, err := EmptyCheckAndTrim("connectionName", connectionName) if err != nil { - return false, "", err cblog.Error(err) + return false, "", err } systemID, err = EmptyCheckAndTrim("systemID", systemID) if err != nil { - return false, "", err cblog.Error(err) + return false, "", err } cldConn, err := ccm.GetCloudConnection(connectionName) diff --git a/api-runtime/common-runtime/KeyPairManager.go b/api-runtime/common-runtime/KeyPairManager.go index c560ad60e..d371b3620 100644 --- a/api-runtime/common-runtime/KeyPairManager.go +++ b/api-runtime/common-runtime/KeyPairManager.go @@ -14,8 +14,29 @@ import ( ccm "github.com/cloud-barista/cb-spider/cloud-control-manager" cres "github.com/cloud-barista/cb-spider/cloud-control-manager/cloud-driver/interfaces/resources" iidm "github.com/cloud-barista/cb-spider/cloud-control-manager/iid-manager" + infostore "github.com/cloud-barista/cb-spider/info-store" ) +// ==================================================================== +// type for GORM + +type KeyIIDInfo FirstIIDInfo + +func (KeyIIDInfo) TableName() string { + return "key_iid_infos" +} + +//==================================================================== + +func init() { + db, err := infostore.Open() + if err != nil { + panic("failed to connect database") + } + db.AutoMigrate(&KeyIIDInfo{}) + infostore.Close(db) +} + //================ KeyPair Handler // UserIID{UserID, CSP-ID} => SpiderIID{UserID, SP-XID:CSP-ID} @@ -24,84 +45,82 @@ import ( // (3) create spiderIID: {UserID, SP-XID:CSP-ID} // (4) insert spiderIID func RegisterKey(connectionName string, userIID cres.IID) (*cres.KeyPairInfo, error) { - cblog.Info("call RegisterKey()") + cblog.Info("call RegisterKey()") // check empty and trim user inputs - connectionName, err := EmptyCheckAndTrim("connectionName", connectionName) - if err != nil { + connectionName, err := EmptyCheckAndTrim("connectionName", connectionName) + if err != nil { cblog.Error(err) - return nil, err - } + return nil, err + } - emptyPermissionList := []string{ - } - - err = ValidateStruct(userIID, emptyPermissionList) - if err != nil { - cblog.Error(err) - return nil, err - } - - rsType := rsKey - - cldConn, err := ccm.GetCloudConnection(connectionName) - if err != nil { - cblog.Error(err) - return nil, err - } - - handler, err := cldConn.CreateKeyPairHandler() - if err != nil { - cblog.Error(err) - return nil, err - } - - keySPLock.Lock(connectionName, userIID.NameId) - defer keySPLock.Unlock(connectionName, userIID.NameId) - - // (1) check existence(UserID) - bool_ret, err := iidRWLock.IsExistIID(iidm.IIDSGROUP, connectionName, rsType, userIID) - if err != nil { - cblog.Error(err) - return nil, err - } - if bool_ret == true { + emptyPermissionList := []string{} + + err = ValidateStruct(userIID, emptyPermissionList) + if err != nil { + cblog.Error(err) + return nil, err + } + + rsType := rsKey + + cldConn, err := ccm.GetCloudConnection(connectionName) + if err != nil { + cblog.Error(err) + return nil, err + } + + handler, err := cldConn.CreateKeyPairHandler() + if err != nil { + cblog.Error(err) + return nil, err + } + + keySPLock.Lock(connectionName, userIID.NameId) + defer keySPLock.Unlock(connectionName, userIID.NameId) + + // (1) check existence(UserID) + bool_ret, err := infostore.HasByConditions(&KeyIIDInfo{}, CONNECTION_NAME_COLUMN, connectionName, NAME_ID_COLUMN, userIID.NameId) + if err != nil { + cblog.Error(err) + return nil, err + } + if bool_ret { err := fmt.Errorf(rsType + "-" + userIID.NameId + " already exists!") cblog.Error(err) - return nil, err - } + return nil, err + } - // (2) get resource info(CSP-ID) - // check existence and get info of this resouce in the CSP + // (2) get resource info(CSP-ID) + // check existence and get info of this resouce in the CSP // Do not user NameId, because Azure driver use it like SystemId - getInfo, err := handler.GetKey( cres.IID{userIID.SystemId, userIID.SystemId} ) - if err != nil { - cblog.Error(err) - return nil, err - } - - // (3) create spiderIID: {UserID, SP-XID:CSP-ID} - // ex) spiderIID {"vpc-01", "vpc-01-9m4e2mr0ui3e8a215n4g:i-0bc7123b7e5cbf79d"} + getInfo, err := handler.GetKey(cres.IID{NameId: userIID.SystemId, SystemId: userIID.SystemId}) + if err != nil { + cblog.Error(err) + return nil, err + } + + // (3) create spiderIID: {UserID, SP-XID:CSP-ID} + // ex) spiderIID {"vpc-01", "vpc-01-9m4e2mr0ui3e8a215n4g:i-0bc7123b7e5cbf79d"} // Do not user NameId, because Azure driver use it like SystemId systemId := getMSShortID(getInfo.IId.SystemId) - spiderIId := cres.IID{userIID.NameId, systemId + ":" + getInfo.IId.SystemId} - - // (4) insert spiderIID - // insert KeyPair SpiderIID to metadb - _, err = iidRWLock.CreateIID(iidm.IIDSGROUP, connectionName, rsType, spiderIId) - if err != nil { - cblog.Error(err) - return nil, err - } - - // set up KeyPair User IID for return info - getInfo.IId = userIID + spiderIId := cres.IID{NameId: userIID.NameId, SystemId: systemId + ":" + getInfo.IId.SystemId} + + // (4) insert spiderIID + // insert KeyPair SpiderIID to metadb + err = infostore.Insert(&KeyIIDInfo{ConnectionName: connectionName, NameId: spiderIId.NameId, SystemId: spiderIId.SystemId}) + if err != nil { + cblog.Error(err) + return nil, err + } + + // set up KeyPair User IID for return info + getInfo.IId = userIID hideSecretInfo(&getInfo) - return &getInfo, nil + return &getInfo, nil } - // (1) check exist(NameID) // (2) generate SP-XID and create reqIID, driverIID // (3) create Resource @@ -112,21 +131,21 @@ func CreateKey(connectionName string, rsType string, reqInfo cres.KeyPairReqInfo cblog.Info("call CreateKey()") // check empty and trim user inputs - connectionName, err := EmptyCheckAndTrim("connectionName", connectionName) - if err != nil { + connectionName, err := EmptyCheckAndTrim("connectionName", connectionName) + if err != nil { cblog.Error(err) - return nil, err - } + return nil, err + } emptyPermissionList := []string{ - "resources.IID:SystemId", - } + "resources.IID:SystemId", + } - err = ValidateStruct(reqInfo, emptyPermissionList) - if err != nil { - cblog.Error(err) - return nil, err - } + err = ValidateStruct(reqInfo, emptyPermissionList) + if err != nil { + cblog.Error(err) + return nil, err + } cldConn, err := ccm.GetCloudConnection(connectionName) if err != nil { @@ -144,13 +163,14 @@ func CreateKey(connectionName string, rsType string, reqInfo cres.KeyPairReqInfo defer keySPLock.Unlock(connectionName, reqInfo.IId.NameId) // (1) check exist(NameID) - bool_ret, err := iidRWLock.IsExistIID(iidm.IIDSGROUP, connectionName, rsType, reqInfo.IId) + bool_ret, err := infostore.HasByConditions(&KeyIIDInfo{}, CONNECTION_NAME_COLUMN, connectionName, NAME_ID_COLUMN, + reqInfo.IId.NameId) if err != nil { cblog.Error(err) return nil, err } - if bool_ret == true { + if bool_ret { err := fmt.Errorf(reqInfo.IId.NameId + " already exists!") cblog.Error(err) return nil, err @@ -160,20 +180,20 @@ func CreateKey(connectionName string, rsType string, reqInfo cres.KeyPairReqInfo // ex) SP-XID {"vm-01-9m4e2mr0ui3e8a215n4g"} // // create reqIID: {reqNameID, reqSystemID} # reqSystemID=SP-XID - // ex) reqIID {"seoul-service", "vm-01-9m4e2mr0ui3e8a215n4g"} + // ex) reqIID {"seoul-service", "vm-01-9m4e2mr0ui3e8a215n4g"} // // create driverIID: {driverNameID, driverSystemID} # driverNameID=SP-XID, driverSystemID=csp's ID // ex) driverIID {"vm-01-9m4e2mr0ui3e8a215n4g", "i-0bc7123b7e5cbf79d"} spUUID, err := iidm.New(connectionName, rsType, reqInfo.IId.NameId) if err != nil { - cblog.Error(err) - return nil, err - } + cblog.Error(err) + return nil, err + } // reqIID - reqIId := cres.IID{reqInfo.IId.NameId, spUUID} + reqIId := cres.IID{NameId: reqInfo.IId.NameId, SystemId: spUUID} // driverIID - driverIId := cres.IID{spUUID, ""} + driverIId := cres.IID{NameId: spUUID, SystemId: ""} reqInfo.IId = driverIId // (3) create Resource @@ -185,10 +205,10 @@ func CreateKey(connectionName string, rsType string, reqInfo cres.KeyPairReqInfo // (4) create spiderIID: {reqNameID, "driverNameID:driverSystemID"} // ex) spiderIID {"seoul-service", "vm-01-9m4e2mr0ui3e8a215n4g:i-0bc7123b7e5cbf79d"} - spiderIId := cres.IID{reqIId.NameId, spUUID + ":" + info.IId.SystemId} + spiderIId := cres.IID{NameId: reqIId.NameId, SystemId: spUUID + ":" + info.IId.SystemId} // (5) insert spiderIID - iidInfo, err := iidRWLock.CreateIID(iidm.IIDSGROUP, connectionName, rsType, spiderIId) + err = infostore.Insert(&KeyIIDInfo{ConnectionName: connectionName, NameId: spiderIId.NameId, SystemId: spiderIId.SystemId}) if err != nil { cblog.Error(err) // rollback @@ -203,7 +223,7 @@ func CreateKey(connectionName string, rsType string, reqInfo cres.KeyPairReqInfo // (6) create userIID: {reqNameID, driverSystemID} // ex) userIID {"seoul-service", "i-0bc7123b7e5cbf79d"} - info.IId = getUserIID(iidInfo.IId) + info.IId = getUserIID(cres.IID{NameId: spiderIId.NameId, SystemId: spiderIId.SystemId}) return &info, nil } @@ -214,11 +234,11 @@ func ListKey(connectionName string, rsType string) ([]*cres.KeyPairInfo, error) cblog.Info("call ListKey()") // check empty and trim user inputs - connectionName, err := EmptyCheckAndTrim("connectionName", connectionName) - if err != nil { + connectionName, err := EmptyCheckAndTrim("connectionName", connectionName) + if err != nil { cblog.Error(err) - return nil, err - } + return nil, err + } cldConn, err := ccm.GetCloudConnection(connectionName) if err != nil { @@ -233,7 +253,8 @@ func ListKey(connectionName string, rsType string) ([]*cres.KeyPairInfo, error) } // (1) get IID:list - iidInfoList, err := iidRWLock.ListIID(iidm.IIDSGROUP, connectionName, rsType) + var iidInfoList []*KeyIIDInfo + err = infostore.ListByCondition(&iidInfoList, CONNECTION_NAME_COLUMN, connectionName) if err != nil { cblog.Error(err) return nil, err @@ -249,12 +270,12 @@ func ListKey(connectionName string, rsType string) ([]*cres.KeyPairInfo, error) infoList2 := []*cres.KeyPairInfo{} for _, iidInfo := range iidInfoList { -keySPLock.RLock(connectionName, iidInfo.IId.NameId) + keySPLock.RLock(connectionName, iidInfo.NameId) // (2) get resource(SystemId) - info, err := handler.GetKey(getDriverIID(iidInfo.IId)) + info, err := handler.GetKey(getDriverIID(cres.IID{NameId: iidInfo.NameId, SystemId: iidInfo.SystemId})) if err != nil { -keySPLock.RUnlock(connectionName, iidInfo.IId.NameId) + keySPLock.RUnlock(connectionName, iidInfo.NameId) if checkNotFoundError(err) { cblog.Info(err) continue @@ -262,9 +283,9 @@ keySPLock.RUnlock(connectionName, iidInfo.IId.NameId) cblog.Error(err) return nil, err } -keySPLock.RUnlock(connectionName, iidInfo.IId.NameId) + keySPLock.RUnlock(connectionName, iidInfo.NameId) - info.IId.NameId = iidInfo.IId.NameId + info.IId.NameId = iidInfo.NameId hideSecretInfo(&info) infoList2 = append(infoList2, &info) @@ -285,17 +306,17 @@ func GetKey(connectionName string, rsType string, nameID string) (*cres.KeyPairI cblog.Info("call GetKey()") // check empty and trim user inputs - connectionName, err := EmptyCheckAndTrim("connectionName", connectionName) - if err != nil { + connectionName, err := EmptyCheckAndTrim("connectionName", connectionName) + if err != nil { cblog.Error(err) - return nil, err - } + return nil, err + } - nameID, err = EmptyCheckAndTrim("nameID", nameID) - if err != nil { + nameID, err = EmptyCheckAndTrim("nameID", nameID) + if err != nil { cblog.Error(err) - return nil, err - } + return nil, err + } cldConn, err := ccm.GetCloudConnection(connectionName) if err != nil { @@ -313,22 +334,94 @@ func GetKey(connectionName string, rsType string, nameID string) (*cres.KeyPairI defer keySPLock.RUnlock(connectionName, nameID) // (1) get IID(NameId) - iidInfo, err := iidRWLock.GetIID(iidm.IIDSGROUP, connectionName, rsType, cres.IID{nameID, ""}) + var iidInfo KeyIIDInfo + infostore.GetByConditions(&iidInfo, CONNECTION_NAME_COLUMN, connectionName, NAME_ID_COLUMN, nameID) if err != nil { cblog.Error(err) return nil, err } // (2) get resource(SystemId) - info, err := handler.GetKey(getDriverIID(iidInfo.IId)) + info, err := handler.GetKey(getDriverIID(cres.IID{NameId: iidInfo.NameId, SystemId: iidInfo.SystemId})) if err != nil { cblog.Error(err) return nil, err } // (3) set ResourceInfo(IID.NameId) - info.IId.NameId = iidInfo.IId.NameId + info.IId.NameId = iidInfo.NameId hideSecretInfo(&info) return &info, nil } + +// (1) get spiderIID +// (2) delete Resource(SystemId) +// (3) delete IID +func DeleteKey(connectionName string, rsType string, nameID string, force string) (bool, error) { + cblog.Info("call DeleteKey()") + + // check empty and trim user inputs + connectionName, err := EmptyCheckAndTrim("connectionName", connectionName) + if err != nil { + cblog.Error(err) + return false, err + } + + nameID, err = EmptyCheckAndTrim("nameID", nameID) + if err != nil { + cblog.Error(err) + return false, err + } + + cldConn, err := ccm.GetCloudConnection(connectionName) + if err != nil { + cblog.Error(err) + return false, err + } + + handler, err := cldConn.CreateKeyPairHandler() + if err != nil { + cblog.Error(err) + return false, err + } + + keySPLock.Lock(connectionName, nameID) + defer keySPLock.Unlock(connectionName, nameID) + + // (1) get spiderIID for creating driverIID + var iidInfo KeyIIDInfo + err = infostore.GetByConditions(&iidInfo, CONNECTION_NAME_COLUMN, connectionName, NAME_ID_COLUMN, nameID) + if err != nil { + cblog.Error(err) + return false, err + } + + // (2) delete Resource(SystemId) + driverIId := getDriverIID(cres.IID{NameId: iidInfo.NameId, SystemId: iidInfo.SystemId}) + result := false + result, err = handler.(cres.KeyPairHandler).DeleteKey(driverIId) + if err != nil { + cblog.Error(err) + if force == "false" { + return false, err + } + } + + if force == "false" { + if !result { + return result, nil + } + } + + // (3) delete IID + _, err = infostore.DeleteByConditions(&KeyIIDInfo{}, CONNECTION_NAME_COLUMN, connectionName, NAME_ID_COLUMN, nameID) + if err != nil { + cblog.Error(err) + if force == "false" { + return false, err + } + } + + return result, nil +} diff --git a/api-runtime/common-runtime/SecurityGroupManager.go b/api-runtime/common-runtime/SecurityGroupManager.go index dc3efb4a9..a70053d16 100644 --- a/api-runtime/common-runtime/SecurityGroupManager.go +++ b/api-runtime/common-runtime/SecurityGroupManager.go @@ -540,6 +540,10 @@ func GetSecurity(connectionName string, rsType string, nameID string) (*cres.Sec // (1) get IID(NameId) var iidInfo SGIIDInfo err = infostore.GetByConditions(&iidInfo, CONNECTION_NAME_COLUMN, connectionName, NAME_ID_COLUMN, nameID) + if err != nil { + cblog.Error(err) + return nil, err + } // (2) get resource(SystemId) info, err := handler.GetSecurity(getDriverIID(cres.IID{NameId: iidInfo.NameId, SystemId: iidInfo.SystemId})) @@ -620,6 +624,10 @@ func AddRules(connectionName string, sgName string, reqInfoList []cres.SecurityR var iidInfo SGIIDInfo err = infostore.GetByConditions(&iidInfo, CONNECTION_NAME_COLUMN, connectionName, NAME_ID_COLUMN, sgName) + if err != nil { + cblog.Error(err) + return nil, err + } // (2) add Rules // driverIID for driver @@ -700,6 +708,10 @@ func RemoveRules(connectionName string, sgName string, reqRuleInfoList []cres.Se var iidInfo SGIIDInfo err = infostore.GetByConditions(&iidInfo, CONNECTION_NAME_COLUMN, connectionName, NAME_ID_COLUMN, sgName) + if err != nil { + cblog.Error(err) + return false, err + } // (2) remove Rules // driverIID for driver @@ -737,8 +749,11 @@ func DeleteSecurity(connectionName string, rsType string, nameID string, force s return false, err } - var handler interface{} - handler, err = cldConn.CreateSecurityHandler() + handler, err := cldConn.CreateSecurityHandler() + if err != nil { + cblog.Error(err) + return false, err + } sgSPLock.Lock(connectionName, nameID) defer sgSPLock.Unlock(connectionName, nameID) @@ -746,6 +761,10 @@ func DeleteSecurity(connectionName string, rsType string, nameID string, force s // (1) get spiderIID for creating driverIID var iidInfo SGIIDInfo err = infostore.GetByConditions(&iidInfo, CONNECTION_NAME_COLUMN, connectionName, NAME_ID_COLUMN, nameID) + if err != nil { + cblog.Error(err) + return false, err + } // (2) delete Resource(SystemId) driverIId := getDriverIID(cres.IID{NameId: iidInfo.NameId, SystemId: iidInfo.SystemId}) @@ -758,7 +777,7 @@ func DeleteSecurity(connectionName string, rsType string, nameID string, force s } if force == "false" { - if result == false { + if !result { return result, nil } } @@ -773,6 +792,5 @@ func DeleteSecurity(connectionName string, rsType string, nameID string, force s } } - // except rsVM return result, nil } diff --git a/api-runtime/common-runtime/VPC-SubnetManager.go b/api-runtime/common-runtime/VPC-SubnetManager.go index cf0d0afe7..d792d8c17 100644 --- a/api-runtime/common-runtime/VPC-SubnetManager.go +++ b/api-runtime/common-runtime/VPC-SubnetManager.go @@ -294,7 +294,6 @@ func CreateVPC(connectionName string, rsType string, reqInfo cres.VPCReqInfo) (* } // for Subnet list for _, subnetInfo := range info.SubnetInfoList { - // key-value structure: ~/{SUBNETGROUP}/{ConnectionName}/{VPC-NameId}/{Subnet-reqNameId} [subnet-driverNameId:subnet-driverSystemId] # VPC NameId => rsType subnetReqNameId := getReqNameId(subnetReqIIdList, subnetInfo.IId.NameId) if subnetReqNameId == "" { cblog.Error(subnetInfo.IId.NameId + "is not requested Subnet.") @@ -631,7 +630,6 @@ func AddSubnet(connectionName string, rsType string, vpcName string, reqInfo cre // for Subnet list for _, subnetInfo := range info.SubnetInfoList { if subnetInfo.IId.NameId == reqInfo.IId.NameId { // NameId => SS-UUID - // key-value structure: ~/{SUBNETGROUP}/{ConnectionName}/{VPC-NameId}/{Subnet-reqNameId} [subnet-driverNameId:subnet-driverSystemId] # VPC NameId => rsType subnetSpiderIId := cres.IID{NameId: subnetReqNameId, SystemId: subnetInfo.IId.NameId + ":" + subnetInfo.IId.SystemId} err = infostore.Insert(&SubnetIIDInfo{ConnectionName: connectionName, NameId: subnetSpiderIId.NameId, SystemId: subnetSpiderIId.SystemId, OwnerVPCName: vpcName}) @@ -775,20 +773,20 @@ func RemoveCSPSubnet(connectionName string, vpcName string, systemID string) (bo // check empty and trim user inputs connectionName, err := EmptyCheckAndTrim("connectionName", connectionName) if err != nil { - return false, err cblog.Error(err) + return false, err } vpcName, err = EmptyCheckAndTrim("vpcName", vpcName) if err != nil { - return false, err cblog.Error(err) + return false, err } systemID, err = EmptyCheckAndTrim("systemID", systemID) if err != nil { - return false, err cblog.Error(err) + return false, err } cldConn, err := ccm.GetCloudConnection(connectionName) @@ -803,7 +801,7 @@ func RemoveCSPSubnet(connectionName string, vpcName string, systemID string) (bo return false, err } - iid := cres.IID{"", systemID} + iid := cres.IID{NameId: "", SystemId: systemID} // delete Resource(SystemId) result := false diff --git a/api-runtime/rest-runtime/KeyPairRest.go b/api-runtime/rest-runtime/KeyPairRest.go index 35a425eaa..edc6a423b 100644 --- a/api-runtime/rest-runtime/KeyPairRest.go +++ b/api-runtime/rest-runtime/KeyPairRest.go @@ -1,4 +1,3 @@ - // Cloud Control Manager's Rest Runtime of CB-Spider. // The CB-Spider is a sub-Framework of the Cloud-Barista Multi-Cloud Project. // The CB-Spider Mission is to connect all the clouds with a single interface. @@ -10,78 +9,75 @@ package restruntime import ( + cmrt "github.com/cloud-barista/cb-spider/api-runtime/common-runtime" + cres "github.com/cloud-barista/cb-spider/cloud-control-manager/cloud-driver/interfaces/resources" - cmrt "github.com/cloud-barista/cb-spider/api-runtime/common-runtime" - cres "github.com/cloud-barista/cb-spider/cloud-control-manager/cloud-driver/interfaces/resources" - - // REST API (echo) - "net/http" + // REST API (echo) + "net/http" - "github.com/labstack/echo/v4" + "github.com/labstack/echo/v4" - "strconv" + "strconv" ) - //================ Disk Handler type keyRegisterReq struct { - ConnectionName string - ReqInfo struct { - Name string - CSPId string - } + ConnectionName string + ReqInfo struct { + Name string + CSPId string + } } func RegisterKey(c echo.Context) error { - cblog.Info("call RegisterKey()") + cblog.Info("call RegisterKey()") - req := keyRegisterReq{} + req := keyRegisterReq{} - if err := c.Bind(&req); err != nil { - return echo.NewHTTPError(http.StatusInternalServerError, err.Error()) - } + if err := c.Bind(&req); err != nil { + return echo.NewHTTPError(http.StatusInternalServerError, err.Error()) + } - // create UserIID - userIId := cres.IID{req.ReqInfo.Name, req.ReqInfo.CSPId} + // create UserIID + userIId := cres.IID{NameId: req.ReqInfo.Name, SystemId: req.ReqInfo.CSPId} - // Call common-runtime API - result, err := cmrt.RegisterKey(req.ConnectionName, userIId) - if err != nil { - return echo.NewHTTPError(http.StatusInternalServerError, err.Error()) - } + // Call common-runtime API + result, err := cmrt.RegisterKey(req.ConnectionName, userIId) + if err != nil { + return echo.NewHTTPError(http.StatusInternalServerError, err.Error()) + } - return c.JSON(http.StatusOK, result) + return c.JSON(http.StatusOK, result) } // (1) get args from REST Call // (2) call common-runtime API // (3) return REST Json Format func UnregisterKey(c echo.Context) error { - cblog.Info("call UnregisterKey()") + cblog.Info("call UnregisterKey()") - var req struct { - ConnectionName string - } + var req struct { + ConnectionName string + } - if err := c.Bind(&req); err != nil { - return echo.NewHTTPError(http.StatusInternalServerError, err.Error()) - } + if err := c.Bind(&req); err != nil { + return echo.NewHTTPError(http.StatusInternalServerError, err.Error()) + } - // Call common-runtime API - result, err := cmrt.UnregisterResource(req.ConnectionName, rsKey, c.Param("Name")) - if err != nil { - return echo.NewHTTPError(http.StatusInternalServerError, err.Error()) - } + // Call common-runtime API + result, err := cmrt.UnregisterResource(req.ConnectionName, rsKey, c.Param("Name")) + if err != nil { + return echo.NewHTTPError(http.StatusInternalServerError, err.Error()) + } - resultInfo := BooleanInfo{ - Result: strconv.FormatBool(result), - } + resultInfo := BooleanInfo{ + Result: strconv.FormatBool(result), + } - return c.JSON(http.StatusOK, &resultInfo) + return c.JSON(http.StatusOK, &resultInfo) } - // type keyPairCreateReq struct { // ConnectionName string // ReqInfo struct { @@ -123,7 +119,7 @@ func CreateKey(c echo.Context) error { // Rest RegInfo => Driver ReqInfo reqInfo := cres.KeyPairReqInfo{ - IId: cres.IID{req.ReqInfo.Name, ""}, + IId: cres.IID{NameId: req.ReqInfo.Name, SystemId: ""}, } // Call common-runtime API @@ -147,9 +143,9 @@ func ListKey(c echo.Context) error { } // To support for Get-Query Param Type API - if req.ConnectionName == "" { - req.ConnectionName = c.QueryParam("ConnectionName") - } + if req.ConnectionName == "" { + req.ConnectionName = c.QueryParam("ConnectionName") + } // Call common-runtime API result, err := cmrt.ListKey(req.ConnectionName, rsKey) @@ -180,9 +176,9 @@ func ListAllKey(c echo.Context) error { } // To support for Get-Query Param Type API - if req.ConnectionName == "" { - req.ConnectionName = c.QueryParam("ConnectionName") - } + if req.ConnectionName == "" { + req.ConnectionName = c.QueryParam("ConnectionName") + } // Call common-runtime API allResourceList, err := cmrt.ListAllResource(req.ConnectionName, rsKey) @@ -233,7 +229,7 @@ func DeleteKey(c echo.Context) error { } // Call common-runtime API - result, _, err := cmrt.DeleteResource(req.ConnectionName, rsKey, c.Param("Name"), c.QueryParam("force")) + result, err := cmrt.DeleteKey(req.ConnectionName, rsKey, c.Param("Name"), c.QueryParam("force")) if err != nil { return echo.NewHTTPError(http.StatusInternalServerError, err.Error()) }