func (d *dnetConnection) dnetDaemon(cfgFile string) error { if err := startTestDriver(); err != nil { return fmt.Errorf("failed to start test driver: %v\n", err) } cfg, err := parseConfig(cfgFile) var cOptions []config.Option if err == nil { cOptions = processConfig(cfg) } controller, err := libnetwork.New(cOptions...) if err != nil { fmt.Println("Error starting dnetDaemon :", err) return err } createDefaultNetwork(controller) httpHandler := api.NewHTTPHandler(controller) r := mux.NewRouter().StrictSlash(false) post := r.PathPrefix("/{.*}/networks").Subrouter() post.Methods("GET", "PUT", "POST", "DELETE").HandlerFunc(httpHandler) post = r.PathPrefix("/networks").Subrouter() post.Methods("GET", "PUT", "POST", "DELETE").HandlerFunc(httpHandler) post = r.PathPrefix("/{.*}/services").Subrouter() post.Methods("GET", "PUT", "POST", "DELETE").HandlerFunc(httpHandler) post = r.PathPrefix("/services").Subrouter() post.Methods("GET", "PUT", "POST", "DELETE").HandlerFunc(httpHandler) post = r.PathPrefix("/{.*}/sandboxes").Subrouter() post.Methods("GET", "PUT", "POST", "DELETE").HandlerFunc(httpHandler) post = r.PathPrefix("/sandboxes").Subrouter() post.Methods("GET", "PUT", "POST", "DELETE").HandlerFunc(httpHandler) handleSignals(controller) return http.ListenAndServe(d.addr, r) }
func (d *dnetConnection) dnetDaemon(cfgFile string) error { if err := startTestDriver(); err != nil { return fmt.Errorf("failed to start test driver: %v\n", err) } cfg, err := d.parseConfig(cfgFile) var cOptions []config.Option if err == nil { cOptions = processConfig(cfg) } else { logrus.Errorf("Error parsing config %v", err) } bridgeConfig := options.Generic{ "EnableIPForwarding": true, "EnableIPTables": true, } bridgeOption := options.Generic{netlabel.GenericData: bridgeConfig} cOptions = append(cOptions, config.OptionDriverConfig("bridge", bridgeOption)) controller, err := libnetwork.New(cOptions...) if err != nil { fmt.Println("Error starting dnetDaemon :", err) return err } controller.SetClusterProvider(d) if d.Orchestration.Agent || d.Orchestration.Manager { d.configEvent <- struct{}{} } createDefaultNetwork(controller) httpHandler := api.NewHTTPHandler(controller) r := mux.NewRouter().StrictSlash(false) post := r.PathPrefix("/{.*}/networks").Subrouter() post.Methods("GET", "PUT", "POST", "DELETE").HandlerFunc(httpHandler) post = r.PathPrefix("/networks").Subrouter() post.Methods("GET", "PUT", "POST", "DELETE").HandlerFunc(httpHandler) post = r.PathPrefix("/{.*}/services").Subrouter() post.Methods("GET", "PUT", "POST", "DELETE").HandlerFunc(httpHandler) post = r.PathPrefix("/services").Subrouter() post.Methods("GET", "PUT", "POST", "DELETE").HandlerFunc(httpHandler) post = r.PathPrefix("/{.*}/sandboxes").Subrouter() post.Methods("GET", "PUT", "POST", "DELETE").HandlerFunc(httpHandler) post = r.PathPrefix("/sandboxes").Subrouter() post.Methods("GET", "PUT", "POST", "DELETE").HandlerFunc(httpHandler) handleSignals(controller) setupDumpStackTrap() return http.ListenAndServe(d.addr, r) }
func (d *dnetConnection) dnetDaemon() error { controller, err := libnetwork.New() if err != nil { fmt.Println("Error starting dnetDaemon :", err) return err } httpHandler := api.NewHTTPHandler(controller) r := mux.NewRouter().StrictSlash(false) post := r.PathPrefix("/{.*}/networks").Subrouter() post.Methods("GET", "PUT", "POST", "DELETE").HandlerFunc(httpHandler) return http.ListenAndServe(d.addr, r) }
// NewRouter initializes a new network router func NewRouter(d *daemon.Daemon) router.Router { c := d.NetworkController() if c == nil { return networkRouter{} } var routes []router.Route netHandler := api.NewHTTPHandler(c) // TODO: libnetwork should stop hijacking request/response. // It should define API functions to add normally to the router. handler := func(ctx context.Context, w http.ResponseWriter, r *http.Request, vars map[string]string) error { netHandler(w, r) return nil } for _, path := range []string{"/networks", "/services", "/sandboxes"} { routes = append(routes, networkRoute{path, handler}) } return networkRouter{routes} }
// NetworkAPIRouter implements a feature for server-experimental, // directly calling into libnetwork. func (daemon *Daemon) NetworkAPIRouter() func(w http.ResponseWriter, req *http.Request) { return nwapi.NewHTTPHandler(daemon.netController) }