func (self *version2_0) HandleRequest(requestType string, request []string, m manager.Manager, w http.ResponseWriter, r *http.Request) error { switch requestType { case summaryApi: containerName := getContainerName(request) glog.V(2).Infof("Api - Summary(%v)", containerName) stats, err := m.GetContainerDerivedStats(containerName) if err != nil { return err } return writeResult(stats, w) case statsApi: name := getContainerName(request) sr, err := getStatsRequest(name, r) if err != nil { return err } glog.V(2).Infof("Api - Stats: Looking for stats for container %q, options %+v", name, sr) query := info.ContainerInfoRequest{ NumStats: sr.Count, } cont, err := m.GetContainerInfo(name, &query) if err != nil { return fmt.Errorf("failed to get container %q: %v", name, err) } contStats := convertStats(cont) return writeResult(contStats, w) case specApi: containerName := getContainerName(request) glog.V(2).Infof("Api - Spec(%v)", containerName) spec, err := m.GetContainerSpec(containerName) if err != nil { return err } specV2 := convertSpec(spec) return writeResult(specV2, w) case storageApi: var err error fi := []v2.FsInfo{} label := r.URL.Query().Get("label") if len(label) == 0 { // Get all global filesystems info. fi, err = m.GetFsInfo("") if err != nil { return err } } else { // Get a specific label. fi, err = m.GetFsInfo(label) if err != nil { return err } } return writeResult(fi, w) default: return self.baseVersion.HandleRequest(requestType, request, m, w, r) } }