2 // Copyright 2012-2014 The Rust Project Developers. See the COPYRIGHT
3 // file at the top-level directory of this distribution and at
4 // http://rust-lang.org/COPYRIGHT.
6 // Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
7 // http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
8 // <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
9 // option. This file may not be copied, modified, or distributed
10 // except according to those terms.
12 extern crate collections;
13 extern crate serialize;
15 use collections::HashMap;
24 fn lookup(table: ~json::Object, key: ~str, default: ~str) -> ~str
26 match table.find(&key) {
27 option::Some(&json::String(ref s)) => {
30 option::Some(value) => {
31 println!("{} was expected to be a string but is a {:?}", key, value);
40 fn add_interface(_store: int, managed_ip: ~str, data: json::Json) -> (~str, object)
43 &json::Object(ref interface) => {
44 let name = lookup((*interface).clone(), ~"ifDescr", ~"");
45 let label = format!("{}-{}", managed_ip, name);
47 (label, bool_value(false))
50 println!("Expected dict for {} interfaces but found {:?}", managed_ip, data);
51 (~"gnos:missing-interface", bool_value(true))
56 fn add_interfaces(store: int, managed_ip: ~str, device: HashMap<~str, json::Json>)
57 -> Vec<(~str, object)> {
58 match device.get(&~"interfaces")
60 &json::List(ref interfaces) =>
62 interfaces.iter().map(|interface| {
63 add_interface(store, managed_ip.clone(), (*interface).clone())
68 println!("Expected list for {} interfaces but found {:?}", managed_ip,
69 device.get(&~"interfaces"));