github.com/Cloud-Foundations/Dominator@v0.3.4/hypervisor/metadatad/api.go (about)

     1  package metadatad
     2  
     3  import (
     4  	"io"
     5  	"net"
     6  	"net/http"
     7  
     8  	"github.com/Cloud-Foundations/Dominator/hypervisor/manager"
     9  	"github.com/Cloud-Foundations/Dominator/lib/constants"
    10  	"github.com/Cloud-Foundations/Dominator/lib/log"
    11  	proto "github.com/Cloud-Foundations/Dominator/proto/hypervisor"
    12  )
    13  
    14  type rawHandlerFunc func(w http.ResponseWriter, ipAddr net.IP)
    15  type metadataWriter func(writer io.Writer, vmInfo proto.VmInfo) error
    16  
    17  type server struct {
    18  	bridges           []net.Interface
    19  	hypervisorPortNum uint
    20  	manager           *manager.Manager
    21  	logger            log.DebugLogger
    22  	fileHandlers      map[string]string
    23  	infoHandlers      map[string]metadataWriter
    24  	rawHandlers       map[string]rawHandlerFunc
    25  	paths             map[string]struct{}
    26  }
    27  
    28  func StartServer(hypervisorPortNum uint, bridges []net.Interface,
    29  	managerObj *manager.Manager, logger log.DebugLogger) error {
    30  	s := &server{
    31  		bridges:           bridges,
    32  		hypervisorPortNum: hypervisorPortNum,
    33  		manager:           managerObj,
    34  		logger:            logger,
    35  	}
    36  	s.fileHandlers = map[string]string{
    37  		constants.MetadataIdentityCert: manager.IdentityCertFile,
    38  		constants.MetadataIdentityKey:  manager.IdentityKeyFile,
    39  		constants.MetadataUserData:     manager.UserDataFile,
    40  	}
    41  	s.infoHandlers = map[string]metadataWriter{
    42  		constants.MetadataEpochTime:   s.showTime,
    43  		constants.MetadataIdentityDoc: s.showVM,
    44  	}
    45  	s.rawHandlers = map[string]rawHandlerFunc{
    46  		constants.SmallStackDataSource:        s.showTrue,
    47  		constants.MetadataExternallyPatchable: s.showTrue,
    48  	}
    49  	s.computePaths()
    50  	return s.startServer()
    51  }