// processResource handles resource commands func processResource(stateDriver core.StateDriver, rsrcName, rsrcVal string) error { // Read global config gCfg := gstate.Cfg{} gCfg.StateDriver = stateDriver err := gCfg.Read("") if err != nil { log.Errorf("error reading tenant cfg state. Error: %s", err) return err } // process resource based on name if rsrcName == "vlan" { numVlans, vlansInUse := gCfg.GetVlansInUse() fmt.Printf("Num Vlans: %d\n Current Vlans in Use: %s\n", numVlans, vlansInUse) // see if we need to set the resource if rsrcVal != "" { values, err := parseRange(rsrcVal) if err != nil { log.Errorf("Error parsing range: %v", err) return err } log.Infof("Setting vlan values: %v", values) // set vlan values for _, val := range values { _, err = gCfg.AllocVLAN(val) if err != nil { log.Errorf("Error setting vlan: %d. Err: %v", val, err) } } log.Infof("Finished setting VLANs") } } else if rsrcName == "vxlan" { numVxlans, vxlansInUse := gCfg.GetVxlansInUse() fmt.Printf("Num Vxlans: %d\n Current Vxlans in Use: %s\n", numVxlans, vxlansInUse) // see if we need to set the resource if rsrcVal != "" { values, err := parseRange(rsrcVal) if err != nil { log.Errorf("Error parsing range: %v", err) return err } log.Infof("Setting vxlan values: %v", values) // set vlan values for _, val := range values { _, _, err = gCfg.AllocVXLAN(val) if err != nil { log.Errorf("Error setting vxlan: %d. Err: %v", val, err) } } log.Infof("Finished setting VXLANs") } } else { log.Errorf("Unknown resource: %v", rsrcName) return fmt.Errorf("Unknown resource") } return nil }