anchor.diff:  #Group Configuration
   Periscope brings in the capability to reconfigure a running cluster - in particular resource properties heavily used.
   These properties currently are mostly related to the Capacity Scheduler configurations, but as we add functionality to Periscope this set of properties will constantly increase.
  +
  +##Scaling [/clusters/{clusterId}/configurations/scaling]
  +###Set the scaling configuration [POST]
  +
  ++ Parameters
  +    + clusterId (required String `clusterID`) ... The id of the cluster.
  +
  ++ Request (application/json)
  +
  +        {
  +          "minSize": 3,
  +          "maxSize": 10,
  +          "cooldown": 30
  +        }
  +
  ++ Response 200 (application/json)
  +
  +        {
  +          "minSize": 3,
  +          "maxSize": 10,
  +          "cooldown": 30
  +        }
  +
  +##Scaling [/clusters/{clusterId}/configurations/scaling]
  +###Retrieve he scaling configuration [GET]
  +
  ++ Parameters
  +    + clusterId (required String `clusterID`) ... The id of the cluster.
  +
  ++ Request (application/json)
  +
  +        {
  +
  +        }
  +
  ++ Response 200 (application/json)
  +
  +        {
  +          "minSize": 3,
  +          "maxSize": 10,
  +          "cooldown": 30
  +        }
   
   ##Update [/clusters/{clusterId}/configurations]
   ###Reload Hadoop YARN configuration [POST]
  
positive.code: + Request (application/json)
  
          {
            "alarms": [
              {
                "alarmName": "pendingContainerHigh",
                "description": "Number of pending containers is high",
                "metric": "PENDING_CONTAINERS",
                "threshold": 10,
                "comparisonOperator": "GREATER_THAN",
                "period": 10
              },
              {
                "alarmName": "freeGlobalResourcesRateLow",
                "description": "Low free global resource rate",
                "metric": "GLOBAL_RESOURCES",
                "threshold": 1,
                "comparisonOperator": "EQUALS",
                "period": 10,
                "notifications": [
                  {
                    "target": [
                      "some1@gmail.com",
                      "other1@gmail.com"
                    ],
                    "notificationType": "EMAIL"
                  }
                ]
              }
            ]
          }
  
  + Response 201 (application/json)
  
          {
            "alarms": [
              {
                "notifications": [],
                "id": 102,
                "alarmName": "pendingContainerHigh",
                "description": "Number of pending containers is high",
                "metric": "PENDING_CONTAINERS",
                "threshold": 10,
                "comparisonOperator": "GREATER_THAN",
                "period": 1,
                "scalingPolicyId": null
              },
              {
                "notifications": [
                  {
                    "notificationType": "EMAIL",
                    "target": [
                      "some1@gmail.com",
                      "other1@gmail.com"
                    ]
                  }
                ],
                "id": 103,
                "alarmName": "freeGlobalResourcesRateLow",
                "description": "Low free global resource rate",
                "metric": "GLOBAL_RESOURCES",
                "threshold": 1,
                "comparisonOperator": "EQUALS",
                "period": 1,
                "scalingPolicyId": null
              }
            ]
          }
  
  ###Add new alarm [PUT]
  
  + Parameters
      + clusterId (required String `clusterID`) ... The id of the cluster.
  
  + Request (application/json)
  
          {
            "alarmName": "unhealthyNodesHigh",
            "description": "Number of unhealthy nodes is high",
            "metric": "UNHEALTHY_NODES",
            "threshold": 5,
            "comparisonOperator": "GREATER_OR_EQUAL_THAN",
            "period": 5
          }
  
  + Response 201 (application/json)
  
          {
            "alarms": [
              {
                "notifications": [],
                "id": 100,
                "alarmName": "pendingContainerHigh",
                "description": "Number of pending containers is high",
                "metric": "PENDING_CONTAINERS",
                "threshold": 10,
                "comparisonOperator": "GREATER_THAN",
                "period": 1,
                "scalingPolicyId": null
              },
              {
                "notifications": [
                  {
                    "notificationType": "EMAIL",
                    "target": [
                      "some1@gmail.com"
                    ]
                  }
                ],
                "id": 101,
                "alarmName": "freeGlobalResourcesRateLow",
                "description": "Low free global resource rate",
                "metric": "GLOBAL_RESOURCES",
                "threshold": 1,
                "comparisonOperator": "EQUALS",
                "period": 1,
                "scalingPolicyId": null
              },
              {
                "notifications": [],
                "id": 102,
                "alarmName": "unhealthyNodesHigh",
                "description": "Number of unhealthy nodes is high",
                "metric": "UNHEALTHY_NODES",
                "threshold": 5,
                "comparisonOperator": "GREATER_OR_EQUAL_THAN",
                "period": 5,
                "scalingPolicyId": null
              }
            ]
          }
  
  ###Retrieve configured alarms [GET]
  
  + Parameters
      + clusterId (required String `clusterID`) ... The id of the cluster.
  
  + Request (application/json)
  
          {
  
          }
  
  + Response 200 (application/json)
  
          {
            "alarms": [
              {
                "notifications": [],
                "scalingPolicyId": null,
                "period": 10,
                "comparisonOperator": "GREATER_THAN",
                "threshold": 10,
                "metric": "PENDING_CONTAINERS",
                "description": "Number of pending containers is high",
                "alarmName": "pendingContainerHigh",
                "id": 50
              },
              {
                "notifications": [],
                "scalingPolicyId": null,
  
negative.code:           ]
          }
  
  ##Time based alarms
  
  ##Add [/clusters/{clusterId}/alarms/time]
  ###Add a new time alarm [POST]
  
  + Parameters
      + clusterId (required String `clusterID`) ... The id of the cluster.
  
  + Request (application/json)
  
      {
        "alarmName": "cron-worktime",
        "description": "Number of nodes during worktime",
        "timeZone": "Europe/Budapest",
        "cron": "0 24 15 ? * MON-FRI"
      }
  
  + Response 201 (application/json)
  
      [
        {
          "id": 152,
          "alarmName": "cron-worktime",
          "description": "Number of nodes during worktime",
          "scalingPolicyId": null,
          "notifications": [],
          "timeZone": "Europe/Budapest",
          "cron": "0 24 15 ? * MON-FRI"
        }
      ]
  
  
  ##Modify [/clusters/{clusterId}/alarms/time/{alarmId}]
  ###Modify a time alarm [PUT]
  
  + Parameters
      + clusterId (required String `clusterID`) ... The id of the cluster.
  