func RegisterHandlers()

in pkg/mock/static/static.go [59:87]


func RegisterHandlers(config cfg.Config) {
	server.HandleFunc("/latest/api/token", imdsv2.GenerateToken)

	pathValues := reflect.ValueOf(config.Metadata.Paths)
	mdValues := reflect.ValueOf(config.Metadata.Values)

	// Iterate over fields in config.Metadata.Paths to
	// determine intersections with config.Metadata.Values.
	// Intersections represent which paths and values to bind.
	for i := 0; i < pathValues.NumField(); i++ {
		pathFieldName := pathValues.Type().Field(i).Name
		mdValueFieldName := mdValues.FieldByName(pathFieldName)
		if mdValueFieldName.IsValid() {
			path := pathValues.Field(i).Interface().(string)
			value := mdValueFieldName.Interface()
			if path != "" && value != nil {
				// Ex: "/latest/meta-data/instance-id" : "i-1234567890abcdef0"
				supportedPaths[path] = value
				if config.Imdsv2Required {
					server.HandleFunc(path, imdsv2.ValidateToken(Handler))
				} else {
					server.HandleFunc(path, Handler)
				}
			} else {
				log.Printf("There was an issue registering path %v with mdValue: %v", path, value)
			}
		}
	}
}