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  }