Agenda:

BUGS:

1) 1145687 Insert lastModified into WorkerTypes stored
2) 1145692 rename 'overwrites', create userData and secrets keys in workerTypes and store as cascading-overwrite objects
3) 1145695 store secret data for use in workerType
4) 1145685 hard kill nodes which were created >96 hours ago
5) 1145688 hard kill nodes which were created more than one hour since lastModified
6) Store provisionerId/workerType info in UserData.data as well as top level UserData



Example: definition of workerType as we want it:
{
  "workerType": "test",
  "launchSpecification": {
    "SecurityGroups": [
      "default"    // We use this for ssh-only and opening-http
    ],
  },
  // this key is added by provisioner API
  "lastModified": new Date(),
  "userData": {...},
  "secrets": {...},
  "scopes": [...],
  "minCapacity":      1,
  "maxCapacity":      30,
  "scalingRatio":     1.0,
  "minPrice":         0.2, // min price per utility factor
  "maxPrice":         1,   // max price per utility factor
  "canUseOndemand":   false,
  "canUseSpot":       true,
  "instanceTypes": [
    {
      "instanceType":   "m3.medium",
      "capacity":       1,
      "utility": 1,
      "instanceUserData": {...<overwriting keys>...}
      "instanceSecrets" {},
      "instanceLaunchSpec": {
      }
    }
  ],
  "regions": [
    {
      "region": "us-west-1",
      "regionUserData": {...},
      "regionSecrets" {},
      "regionLaunchSpec": {
        "ImageId":         "ami-42908907"
      }
    }
  ]
}

UserData as given to instance:
{
    provisionerBaseUrl  // to get/delete secretData
    secretToken:        // to get/delete secretData  
    data: {} // opaque
    capacity: 
}

SecretData as given with secret token instance:
{
    data: { /* JSON hardcoded in workerType definition*/ },
    credentials: { // temp credentials
      clientId,
      accessToken
      certificate
    },
    spotBid: ...
}


EXISTING:
{
  "workerType": "test",
  "launchSpecification": {
    "SecurityGroups": [
      "default"
    ],
    "UserData": "eyJhIjoxfQ=="
  },
  "minCapacity": 1,
  "maxCapacity": 30,
  "scalingRatio": 1.0,
  "minPrice": 0.2,
  "maxPrice": 1,
  "canUseOndemand": false,
  "canUseSpot": true,
  "instanceTypes": [{
    "instanceType": "m3.medium",
    "capacity": 1,
    "utility": 1,
    "overwrites": {
      "UserData": "eyJhIjoxfQ=="
    }
  }],
  "regions": [{
    "region": "us-west-1",
    "overwrites": {
      "ImageId": "ami-42908907"
    }
  }]
}