code: func (g *Graph) SetNodeConfigMap(nodeName, configMapName, configMapNamespace string) {
  	g.lock.Lock()
  	defer g.lock.Unlock()
  
  	// TODO(mtaufen): ensure len(nodeName) > 0 in all cases (would sure be nice to have a dependently-typed language here...)
  
  	// clear edges configmaps -> node where the destination is the current node *only*
  	// at present, a node can only have one *direct* configmap reference at a time
  	g.deleteEdges_locked(configMapVertexType, nodeVertexType, "", nodeName)
  
  	// establish new edges if we have a real ConfigMap to reference
  	if len(configMapName) > 0 && len(configMapNamespace) > 0 {
  		configmapVertex := g.getOrCreateVertex_locked(configMapVertexType, configMapNamespace, configMapName)
  		nodeVertex := g.getOrCreateVertex_locked(nodeVertexType, "", nodeName)
  		g.graph.SetEdge(newDestinationEdge(configmapVertex, nodeVertex, nodeVertex))
  	}
  
  }
docs: // SetNodeConfigMap sets up edges for the Node.Spec.ConfigSource.ConfigMap relationship:
  //
  // configmap -> node