github.com/jingruilea/kubeedge@v1.2.0-beta.0.0.20200410162146-4bb8902b3879/cloud/pkg/edgecontroller/messagelayer/util.go (about) 1 package messagelayer 2 3 import ( 4 "fmt" 5 "strings" 6 7 "k8s.io/klog" 8 9 "github.com/kubeedge/beehive/pkg/core/model" 10 "github.com/kubeedge/kubeedge/cloud/pkg/edgecontroller/config" 11 controller "github.com/kubeedge/kubeedge/cloud/pkg/edgecontroller/constants" 12 "github.com/kubeedge/kubeedge/common/constants" 13 ) 14 15 // BuildResource return a string as "beehive/pkg/core/model".Message.Router.Resource 16 func BuildResource(nodeID, namespace, resourceType, resourceID string) (resource string, err error) { 17 if namespace == "" || resourceType == "" { 18 if !config.Config.EdgeSiteEnable && nodeID == "" { 19 err = fmt.Errorf("required parameter are not set (node id, namespace or resource type)") 20 } else { 21 err = fmt.Errorf("required parameter are not set (namespace or resource type)") 22 } 23 return 24 } 25 26 resource = fmt.Sprintf("%s%s%s%s%s%s%s", controller.ResourceNode, constants.ResourceSep, nodeID, constants.ResourceSep, namespace, constants.ResourceSep, resourceType) 27 if config.Config.EdgeSiteEnable { 28 resource = fmt.Sprintf("%s%s%s", namespace, constants.ResourceSep, resourceType) 29 } 30 if resourceID != "" { 31 resource += fmt.Sprintf("%s%s", constants.ResourceSep, resourceID) 32 } 33 return 34 } 35 36 // GetNodeID from "beehive/pkg/core/model".Message.Router.Resource 37 func GetNodeID(msg model.Message) (string, error) { 38 sli := strings.Split(msg.GetResource(), constants.ResourceSep) 39 if len(sli) <= controller.ResourceNodeIDIndex { 40 return "", fmt.Errorf("node id not found") 41 } 42 return sli[controller.ResourceNodeIDIndex], nil 43 } 44 45 // GetNamespace from "beehive/pkg/core/model".Model.Router.Resource 46 func GetNamespace(msg model.Message) (string, error) { 47 sli := strings.Split(msg.GetResource(), constants.ResourceSep) 48 length := controller.ResourceNamespaceIndex 49 if config.Config.EdgeSiteEnable { 50 length = controller.EdgeSiteResourceNamespaceIndex 51 } 52 if len(sli) <= length { 53 return "", fmt.Errorf("namespace not found") 54 } 55 var res string 56 var index uint8 57 if config.Config.EdgeSiteEnable { 58 res = sli[controller.EdgeSiteResourceNamespaceIndex] 59 index = controller.EdgeSiteResourceNamespaceIndex 60 } else { 61 res = sli[controller.ResourceNamespaceIndex] 62 index = controller.ResourceNamespaceIndex 63 } 64 klog.V(4).Infof("The namespace is %s, %d", res, index) 65 return res, nil 66 } 67 68 // GetResourceType from "beehive/pkg/core/model".Model.Router.Resource 69 func GetResourceType(msg model.Message) (string, error) { 70 sli := strings.Split(msg.GetResource(), constants.ResourceSep) 71 length := controller.ResourceResourceTypeIndex 72 if config.Config.EdgeSiteEnable { 73 length = controller.EdgeSiteResourceResourceTypeIndex 74 } 75 if len(sli) <= length { 76 return "", fmt.Errorf("resource type not found") 77 } 78 79 var res string 80 var index uint8 81 if config.Config.EdgeSiteEnable { 82 res = sli[controller.EdgeSiteResourceResourceTypeIndex] 83 index = controller.EdgeSiteResourceResourceTypeIndex 84 } else { 85 res = sli[controller.ResourceResourceTypeIndex] 86 index = controller.ResourceResourceTypeIndex 87 } 88 klog.Infof("The resource type is %s, %d", res, index) 89 90 return res, nil 91 } 92 93 // GetResourceName from "beehive/pkg/core/model".Model.Router.Resource 94 func GetResourceName(msg model.Message) (string, error) { 95 sli := strings.Split(msg.GetResource(), constants.ResourceSep) 96 length := controller.ResourceResourceNameIndex 97 if config.Config.EdgeSiteEnable { 98 length = controller.EdgeSiteResourceResourceNameIndex 99 } 100 if len(sli) <= length { 101 return "", fmt.Errorf("resource name not found") 102 } 103 104 var res string 105 var index uint8 106 if config.Config.EdgeSiteEnable { 107 res = sli[controller.EdgeSiteResourceResourceNameIndex] 108 index = controller.EdgeSiteResourceResourceNameIndex 109 } else { 110 res = sli[controller.ResourceResourceNameIndex] 111 index = controller.ResourceResourceNameIndex 112 } 113 klog.Infof("The resource name is %s, %d", res, index) 114 return res, nil 115 }