//
// I intentionally am not using ember-data and the fixture
// adapter. I'm not confident the Consul UI API will be compatible
// without a bunch of wrangling, and it's really not enough updating
// of the models to justify the use of such a big component. getJSON
// *should* be enough.
//

window.fixtures = {}

//
// The array route, i.e /ui/<dc>/services, should return _all_ services
// in the DC
//
fixtures.services = [
    {
      "Name": "vagrant-cloud-http",
      "Checks": [
        {
          "Name": "serfHealth",
          "Status": "passing"
        },
        {
          "Name": "fooHealth",
          "Status": "critical"
        },
        {
          "Name": "bazHealth",
          "Status": "passing"
        }
      ],
      "Nodes": [
        "node-10-0-1-109",
        "node-10-0-1-102"
      ]
    },
    {
      "Name": "vagrant-share-mux",
      "Checks": [
        {
          "Name": "serfHealth",
          "Status": "critical"
        },
        {
          "Name": "fooHealth",
          "Status": "passing"
        },
        {
          "Name": "bazHealth",
          "Status": "passing"
        }
      ],
      "Nodes": [
        "node-10-0-1-109",
        "node-10-0-1-102"
      ]
    },
]

//
// This one is slightly more complicated to allow more UI interaction.
// It represents the route /ui/<dc>/services/<service> BUT it's what is
// BELOW the top-level key.
//
// So, what is actually returned should be similar to the /catalog/service/<service>
// endpoint.
fixtures.services_full = {
  "vagrant-cloud-http":
  // This array is what is actually expected from the API.
  [
    {
      "ServicePort": 80,
      "ServiceTags": null,
      "ServiceName": "vagrant-cloud-http",
      "ServiceID": "vagrant-cloud-http",
      "Address": "10.0.1.109",
      "Node": "node-10-0-1-109",
      "Checks": [
        {
          "ServiceName": "",
          "ServiceID": "",
          "Notes": "",
          "Status": "critical",
          "Name": "Serf Health Status",
          "CheckID": "serfHealth",
          "Node": "node-10-0-1-109"
        }
      ]
    },
    // A node
    {
      "ServicePort": 80,
      "ServiceTags": null,
      "ServiceName": "vagrant-cloud-http",
      "ServiceID": "vagrant-cloud-http",
      "Address": "10.0.1.102",
      "Node": "node-10-0-1-102",
      "Checks": [
        {
          "ServiceName": "",
          "ServiceID": "",
          "Notes": "",
          "Status": "passing",
          "Name": "Serf Health Status",
          "CheckID": "serfHealth",
          "Node": "node-10-0-1-102"
        }
      ]
    }
  ],
  "vagrant-share-mux": [
    // A node
    {
      "ServicePort": 80,
      "ServiceTags": null,
      "ServiceName": "vagrant-share-mux",
      "ServiceID": "vagrant-share-mux",
      "Address": "10.0.1.102",
      "Node": "node-10-0-1-102",
      "Checks": [
        {
          "ServiceName": "vagrant-share-mux",
          "ServiceID": "vagrant-share-mux",
          "Notes": "",
          "Output": "200 ok",
          "Status": "passing",
          "Name": "Foo Healthy",
          "CheckID": "fooHealth",
          "Node": "node-10-0-1-102"
        }
      ]
    },
    // A node
    {
      "ServicePort": 80,
      "ServiceTags": null,
      "ServiceName": "vagrant-share-mux",
      "ServiceID": "vagrant-share-mux",
      "Address": "10.0.1.109",
      "Node": "node-10-0-1-109",
      "Checks": [
        {
          "ServiceName": "",
          "ServiceID": "",
          "Notes": "",
          "Output": "foobar baz",
          "Status": "passing",
          "Name": "Baz Status",
          "CheckID": "bazHealth",
          "Node": "node-10-0-1-109"
        },
        {
          "ServiceName": "",
          "ServiceID": "",
          "Notes": "",
          "Output": "foobar baz",
          "Status": "critical",
          "Name": "Serf Health Status",
          "CheckID": "serfHealth",
          "Node": "node-10-0-1-109"
        }
      ]
    }
  ]
}

//
// /ui/<dc>/nodes
// all the nodes
//
fixtures.nodes = [
    {
      "Address": "10.0.1.109",
      "Name": "node-10-0-1-109",
      "Services": [
          "vagrant-share-mux",
          "vagrant-cloud-http"
      ],
      "Checks": [
        {
          "Name": "serfHealth",
          "Status": "critical"
        },
        {
          "Name": "bazHealth",
          "Status": "passing"
        }
      ]
    },
    {
      "Address": "10.0.1.102",
      "Name": "node-10-0-1-102",
      "Services": [
          "vagrant-share-mux",
          "vagrant-cloud-http"
      ],
      "Checks": [
        {
          "Name": "fooHealth",
          "Status": "passing"
        }
     ],
    }
]

// These are for retrieving individual nodes. Same story as services,
// the top level key is just for the demo.
fixtures.nodes_full = {
  "node-10-0-1-109":
  // This is what would be returned.
  {
    "Services": [
      {
        "Port": 0,
        "Tags": null,
        "Service": "vagrant-share-mux",
        "ID": "vagrant-share-mux"
      },
      {
        "Port": 80,
        "Tags": null,
        "Service": "vagrant-cloud-http",
        "ID": "vagrant-cloud-http"
      }
    ],
    "Node": {
      "Address": "10.0.1.109",
      "Node": "node-10-0-1-109"
    },
    "Checks": [
      {
        "ServiceName": "",
        "ServiceID": "",
        "Notes": "Checks the status of the serf agent",
        "Status": "critical",
        "Name": "Serf Health Status",
        "CheckID": "serfHealth",
        "Node": "node-10-0-1-109"
      },
      {
        "ServiceName": "",
        "ServiceID": "",
        "Notes": "",
        "Output": "foobar baz",
        "Status": "passing",
        "Name": "Baz Status",
        "CheckID": "bazHealth",
        "Node": "node-10-0-1-109"
      }
    ]
  },
  "node-10-0-1-102": {
    "Services": [
      {
        "Port": 0,
        "Tags": null,
        "Service": "vagrant-share-mux",
        "ID": "vagrant-share-mux"
      },
      {
        "Port": 80,
        "Tags": null,
        "Service": "vagrant-cloud-http",
        "ID": "vagrant-cloud-http"
      }
    ],
    "Node": {
      "Address": "10.0.1.102",
      "Node": "node-10-0-1-102"
    },
    "Checks": [
        {
          "ServiceName": "",
          "ServiceID": "",
          "Notes": "Checks if the food is healthy",
          "Output": "foobar baz",
          "Status": "passing",
          "Name": "Foo Healthy",
          "CheckID": "fooStatus",
          "Node": "node-10-0-1-102"
        }
    ]
  }
}

fixtures.dcs = ['nyc1', 'sf1', 'sg1']

fixtures.keys_full = {
  "/": [
    'foobar',
    'application',
    'web/'
  ],
  "application":  {
    'key': 'application',
    'value': 'foobarz'
  },
  "foobar": {
    'key': 'foobar',
    'value': 'baz'
  },
  "web/foo/bar": {
    'key': 'web/foo/bar',
    'value': 'baz'
  },
  "web/foo/baz": {
    'key': 'web/foo/baz',
    'value': 'test'
  },
  "web/": [
    "web/foo/"
  ],
  "web/foo/": [
    "web/foo/bar",
    "web/foo/baz"
  ]
};
