plotter: constraint: don't expose the constraints inside the ConstraintManager

Instead of exposing the "constraints" property of the ConstraintManager,
let other classes deal with the ConstraintManager as an entity which is
a collection of Constraints and can be iterated over or asked for its
length.

Change-Id: I77d859999a3d6962872a07843c92e3189658d4e7
diff --git a/tests/test_constraint.py b/tests/test_constraint.py
index f18a4b7..228b7d8 100644
--- a/tests/test_constraint.py
+++ b/tests/test_constraint.py
@@ -40,9 +40,10 @@
 
         c_mgr = ConstraintManager(dfr, "load", None, AttrConf.PIVOT, {})
 
-        self.assertEquals(len(c_mgr.constraints), 1)
+        self.assertEquals(len(c_mgr), 1)
 
-        series = c_mgr.constraints[0].result[AttrConf.PIVOT_VAL]
+        constraint = iter(c_mgr).next()
+        series = constraint.result[AttrConf.PIVOT_VAL]
         self.assertEquals(series.to_dict().values(),
                           dfr["load"].to_dict().values())
 
@@ -51,9 +52,9 @@
 
         c_mgr = ConstraintManager(self.dfrs, "load", None, AttrConf.PIVOT, {})
 
-        self.assertEquals(len(c_mgr.constraints), 2)
+        self.assertEquals(len(c_mgr), 2)
 
-        for constraint, orig_dfr in zip(c_mgr.constraints, self.dfrs):
+        for constraint, orig_dfr in zip(c_mgr, self.dfrs):
             series = constraint.result[AttrConf.PIVOT_VAL]
             self.assertEquals(series.to_dict().values(),
                               orig_dfr["load"].to_dict().values())
@@ -64,9 +65,9 @@
         cols = ["load", "freq"]
         c_mgr = ConstraintManager(self.dfrs, cols, None, AttrConf.PIVOT, {})
 
-        self.assertEquals(len(c_mgr.constraints), 2)
+        self.assertEquals(len(c_mgr), 2)
 
-        for constraint, orig_dfr, col in zip(c_mgr.constraints, self.dfrs, cols):
+        for constraint, orig_dfr, col in zip(c_mgr, self.dfrs, cols):
             series = constraint.result[AttrConf.PIVOT_VAL]
             self.assertEquals(series.to_dict().values(),
                               orig_dfr[col].to_dict().values())
@@ -79,12 +80,15 @@
         c_mgr = ConstraintManager(self.dfrs, "load", None, AttrConf.PIVOT,
                                   simple_filter)
 
-        num_constraints = len(c_mgr.constraints)
+        num_constraints = len(c_mgr)
         self.assertEquals(num_constraints, 2)
 
-        self.assertEquals(len(c_mgr.constraints[0].result), 1)
+        constraint_iter = iter(c_mgr)
+        constraint = constraint_iter.next()
+        self.assertEquals(len(constraint.result), 1)
 
-        series_second_frame = c_mgr.constraints[1].result[AttrConf.PIVOT_VAL]
+        constraint = constraint_iter.next()
+        series_second_frame = constraint.result[AttrConf.PIVOT_VAL]
         self.assertEquals(series_second_frame.to_dict().values(), [3, 2])
 
     def test_pivoted_data(self):
@@ -92,9 +96,9 @@
 
         c_mgr = ConstraintManager(self.dfrs[0], "load", None, "cpu", {})
 
-        self.assertEquals(len(c_mgr.constraints), 1)
+        self.assertEquals(len(c_mgr), 1)
 
-        constraint = c_mgr.constraints[0]
+        constraint = iter(c_mgr).next()
         results = dict([(k, v.to_dict().values()) for k, v in constraint.result.items()])
         expected_results = {0: [1, 2], 1: [2, 3]}
 
@@ -105,24 +109,26 @@
 
         c_mgr = ConstraintManager(self.dfrs, "load", None, "cpu", {})
 
-        self.assertEquals(len(c_mgr.constraints), 2)
+        self.assertEquals(len(c_mgr), 2)
 
-        constraint = c_mgr.constraints[0]
+        constraint_iter = iter(c_mgr)
+        constraint = constraint_iter.next()
         self.assertEquals(constraint.result[0].to_dict().values(), [1, 2])
 
-        constraint = c_mgr.constraints[1]
+        constraint = constraint_iter.next()
         self.assertEquals(constraint.result[1].to_dict().values(), [2, 2])
 
     def test_pivoted_multiruns_multicolumns(self):
         """Test the constraint manager with multiple runs and columns"""
 
         c_mgr = ConstraintManager(self.dfrs, ["load", "freq"], None, "cpu", {})
-        self.assertEquals(len(c_mgr.constraints), 2)
+        self.assertEquals(len(c_mgr), 2)
 
-        constraint = c_mgr.constraints[0]
+        constraint_iter = iter(c_mgr)
+        constraint = constraint_iter.next()
         self.assertEquals(constraint.result[1].to_dict().values(), [2, 3])
 
-        constraint = c_mgr.constraints[1]
+        constraint = constraint_iter.next()
         self.assertEquals(constraint.result[0].to_dict().values(), [2, 1])
 
     def test_pivoted_with_filters(self):
@@ -132,9 +138,9 @@
         c_mgr = ConstraintManager(self.dfrs[0], "freq", None, "cpu",
                                   simple_filter)
 
-        self.assertEquals(len(c_mgr.constraints), 1)
+        self.assertEquals(len(c_mgr), 1)
 
-        constraint = c_mgr.constraints[0]
+        constraint = iter(c_mgr).next()
         result = constraint.result
 
         self.assertEquals(result[0].iloc[0], 3)